33 | 区块链技术架构:区块链到底能做什么?
下载APP
关闭
渠道合作
推荐作者
33 | 区块链技术架构:区块链到底能做什么?
2020-02-07 李智慧 来自北京
《后端技术面试 38 讲》
课程介绍
讲述:李智慧
时长13:45大小11.03M
在我的职业生涯中,我经历过各种各样的技术创新,见识过各种技术狂热的风潮,也看过各种技术挫折,但从来没有一种技术能像区块链技术这样跌宕起伏,具有戏剧性,吸引了各色人等。
区块链为什么能吸引这么多的关注?它到底能做什么?它的技术原理是什么?又为何如此曲折?
让我们从区块链的起源——比特币说起。
比特币与区块链原理
2008 年 11 月,由中本聪设计、开发的比特币正式上线运行。我们现在都知道,比特币是一种加密数字货币。价格最高的时候,每个比特币可兑换近两万美金。一个看不见、摸不着的数字货币为什么能得到这么多的拥护,被炒到这么高的价格?
让我们继续追溯到传统的货币发行与交易系统。
传统的货币,也就是我们日常使用的钞票,是由各个国家的中央银行发行的。中央银行根据市场需求决定投放的货币数量,但是很多时候为了刺激经济发展,中央银行通常会额外多投放一些货币,这样就会出现钱越来越不值钱的情况,即通货膨胀。甚至有的时候,某些政府为了弥补自己的债务,恶意超发货币,有的国家甚至发行过面额为 50 万亿的钞票,导致了恶性通货膨胀。
于是就有人想,能不能发行一种数量有限、不会膨胀的数字货币,通过互联网在全球范围内使用呢?其实发行数字货币容易,但是得到大家的认可很难,而且货币在使用的时候,如何进行交易记账是个大问题。
传统上如果通过互联网进行交易转账,必须通过银行或者支付宝这样的第三方进行交易记账。但是通过互联网发行的数字货币必然得不到法定货币的地位,也就不会被银行等官方机构认可。如果没有受信任的官方机构记账,又如何完成交易呢?
所以比特币数字货币首先要解决的问题就是交易记账。比特币的主要思路是,构建一个无中心、去信任的分布式记账系统。这个记账系统和传统的银行记账不同,银行的账本由银行自己管理,银行是记账的中心,而比特币则允许任何人参与记账,没有中心,完全分布式的。
此外,传统的银行中心记账必须有个前提,就是交易者都相信银行,信任银行不会伪造、篡改交易。但是任何人都可以参与记账的比特币不可能得到大家的信任,所以这个记账系统必须从设计上实现去信任,也就是不需要信任记账者的身份,却可以信任这个人记的账。
这些不合常理,听起来就难度重重的要求,正是通过区块链技术实现的。
交易
首先,在比特币的交易系统中,所有交易的参与者都有一个钱包地址,事实上,这个钱包地址正是非对称加密算法中的公钥。非对称加密算法我在第 30 篇,安全性架构一篇讲过。进行交易的时候,交易的发起者需要将要交易的数字货币(一个 hash 值)和交易的接受方用自己的钱包私钥进行签名。
记账者可以使用发起者的公钥对签名进行验证,保证交易是真正发起者提交的,而不是其他人伪造的交易。
如下图:
区块链
交易签名只能保证交易不是他人伪造的,却不能阻止交易的发起者自己进行多重交易,即交易的发起者将一个比特币同时转账给两个人,也就是所谓的双花。
比特币的解决方案是,记账者在收到若干交易后,会将这些交易打包在一起,形成一个区块(block)。区块必须严格按照顺序产生,因此最新一个区块的记账者可以根据区块顺序得到此前所有的区块。这样,记账者就可以检查所有区块中的交易数据,是否有双花发生。
至于如何保证区块的严格顺序,比特币的做法是,在每个区块的头部记录他的前一个区块,也就是前驱区块的 hash 值,这样所有的区块就构成了一个链。我们知道,单向链表是有严格顺序的。
通过 hash 值链起来的区块就是所谓的区块链,如下图:
工作量证明
区块链的严格顺序不但可以避免双花,还可使历史交易难以被篡改。如果有记账者试图修改一笔过去区块中记录的交易,必然需要改变这个交易所在区块的 hash 值,这样就会导致下一个区块头部记录的前驱区块 hash 值和它不匹配,区块链就断掉了。
为了不让区块链断裂,篡改交易的记账者还必须要修改下一个区块的前驱 hash 值,而每个区块的 hash 值是根据所有交易信息和区块头部的其他信息(包括记录的前驱区块 hash 值)计算出来的。下一个区块记录的前驱 hash 值改变,必然导致下一个区块的 hash 需要重算。以此类推,也就是需要重算从篡改交易起的所有区块 hash 值。
重算所有区块的 hash 值虽然麻烦,但如果篡改交易能获得巨大的收益,就一定会有人去干。我前面说过,区块链是去信任的,即不需要信任记账者,却可以相信他记的账。因此,区块链必须在设计上保证记账者几乎无法重算出所有区块的 hash 值。
比特币的解决方案就是工作量证明,比特币要求计算出来的区块 hash 值必须具有一定的难度,比如 hash 值的前几位必须是 0。具体做法是在区块头部引入一个随机数 nonce 值,记账者通过修改这个 nonce 值,不断碰撞计算区块 hash 值,直到算出的 hash 值满足难度要求。
因此,计算 hash 值不但需要大量的计算资源,GPU 或者专用的芯片,还需要大量的电力支撑这样大规模的计算,在比特币最火爆的时候,计算 hash 值需要消耗的电量大约相当于一个中等规模的国家消耗的电量。
在这样的资源消耗要求下,重算所有区块的 hash 值几乎是不可能的,因此,比特币历史交易难以被篡改。这里用了“几乎”这个词,是因为如果有人控制了比特币超过半数的计算资源,确实可以进行交易篡改,即所谓的 51% 攻击。但是这种攻击将会导致比特币崩溃,而能控制这么多计算资源的记账者一定是比特币主要的受益者,他没有必要攻击自己。
矿工
前面讲到,比特币的交易通过区块链进行记账,而记账需要花费巨大的计算资源和电力,那为什么还有人愿意投入这么多资源去为比特币记账呢?
事实上,比特币系统为每个计算出区块 hash 的记账者赠送一定数量的比特币。这个赠送不是交易,而是凭空从系统中产生的,这其实就是比特币的发行机制。记账者为了得到这些比特币,愿意投入资源计算区块 hash 值。
由于计算出 hash 就可以得到比特币,计算 hash 值的过程也被形象地称作“挖矿”,相对应的,进行 hash 计算的记账者被称作矿工,而用来计算 hash 值的机器被称作矿机。
当“矿工们”为了争夺比特币,争相加入“挖矿”大军时,比特币区块链就变成一个分布式账本了。这里的分布式有两层含义:“矿工”记账时需要进行交易检查,所以需要记录从第一个区块开始的、完整的区块链,也就是说,完整的账本分布在所有的矿工的机器上;此外,每个区块是由不同矿工挖出来的,也就是说,每次交易的记账权也是分布的。
比特币虽然取得巨大的成功,但一直没有得到主流国家的官方支持。但是比特币使用的区块链技术却得到越来越多的认可,在企业甚至政府部门间的合作领域里,得到了越来越多的应用。
联盟链与区块链的企业级应用
比特币应用的区块链场景也叫做公链,因为这个区块链对所有人都是公开的。除此之外,还有一种区块链应用场景,被称作联盟链。
联盟链是由多个组织共同发起,只有组织成员才能访问的区块链,因此有时候也被称作许可型区块链。传统上,交易必须依赖一个中心进行,不同的组织之间进行交易,必须依赖银行这个中心进行转账。那么银行之间如何进行转账呢?没错,也需要依赖一个中心,国内的银行间进行转账,必须通过中国人民银行清算中心。
跨国的银行间进行转账则必须依赖一个国际的清算中心,这个中心既是跨国转账的瓶颈,又拿走了转账手续费的大头。所以当区块链技术出现以后,因为区块链的一个特点是去中心,各家银行就在想:银行之间能不能用区块链记账,而不需要这个清算中心呢?最初的联盟链技术就是由银行推动发展的。
目前比较知名的联盟链技术是 IBM 主导的 Hyperledger Fabric。主要架构如下:
Peer 节点负责对交易进行背书签名,Ordering 节点负责打包区块,Peer 节点会从 Ordering 节点同步数据,记录完整的区块链。而所有这些服务器节点的角色、权限都需要 CA 节点进行认证,只有经过授权的服务器才能加入区块链。
最近两年,随着区块链技术的火爆,联盟链技术也开始从银行扩展到互联网金融领域,甚至非金融领域。2018 年支付宝香港和菲律宾一家互联网金融企业通过区块链进行了跨国转账,而香港和菲律宾的外汇管理局也作为联盟成员加入了区块链,使得转账和监管在同一个系统中完成。
在互联网 OTA(在线旅行代理)领域,酒店房间在线销售是一块非常大的业务,但是一家酒店不可能对接所有的 OTA 网站,而一家 OTA 网站也不可能获得所有的酒店资源,于是就催生了第三方的酒店分销平台,这个平台负责对接所有的酒店,酒店房间通过该平台对外分销,而 OTA 网站通过该平台查找酒店房间以及预定房间。
于是这个平台就成为一个全行业不得不依赖的中心,一方面产生了巨大的瓶颈风险,另一方面酒店和 OTA 也不得不给这个中心支付高昂的手续费。
事实上,我们可以利用联盟链技术,将酒店和 OTA 企业通过区块链技术关联起来,酒店通过区块链发布房间信息,而 OTA 通过区块链查找房间信息以及预订房间。如下图所示,左边是传统的酒店分销模式,右边是基于区块链的酒店分销模式。
上面讲到的 Hyperledger 联盟链技术部署和应用都比较复杂。目前在区块链领域,社区资源比较丰富,更为易用,也更被广泛接受的区块链技术是以太坊。但是以太坊是一个公链技术,不符合联盟链受许可才能加入的要求,因此,我和一些小伙伴对以太坊进行了重构,使其符合联盟链的技术要求,你可以点击源码地址看一下,也可以看看相关文档。
如果你感兴趣的话,欢迎你参与开发与应用落地。
小结
应该说,区块链能吸引到这么多的关注,产生这么大影响,和加密数字货币的炒作是分不开的。正因为数字货币的炒作,才使得区块链技术吸引了大量的资源,更多的人才投入研发区块链相关技术,区块链技术进步与应用也吸引了大量的关注。
但是数字货币的投机属性又使得人们对区块链技术抱有急功近利的想法,希望区块链技术能快速带来回报。
在我看来,互联网技术的快速发展是生产力革命,使得生产力数以十倍、百倍的增加。而区块链技术是生产关系革命,传统上,所有的交易和合作都必须依赖法律以及信任。而法律的成本非常高,很多场合无法支撑起用法律背书的成本;而跨组织,特别是互为竞争对手的组织之间又不可能产生信任。区块链的出现,使得低成本,去信任的跨组织合作成为可能,将重构组织间的关系,这个关系既包括企业间的关系,也包括政府和企业间的关系,还有政府部门间的关系。
互联网使得这个世界变得更加扁平,信息流动更加快速,但无法弥合这个世界割裂的各种关系,而区块链可以打通各种关系,将这个世界更加紧密联系在一起,使全人类成为真正的命运共同体。
思考题
今天我讲了一下区块链技术,它虽然火爆,但仍然处在发展之中。你能想到的利用区块链技术的场景有哪些呢?
欢迎你在评论区写下你的思考,也欢迎把这篇文章分享给你的朋友或者同事,一起交流一下。
分享给需要的人,Ta购买本课程,你将得18元
生成海报并分享
赞 5
提建议
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
32 | AI与物联网架构:从智能引擎到物联网平台
下一篇
答疑丨互联网需要解决的技术问题是什么?
精选留言(14)
- 蓝魔丶2020-02-09在抗击 2019 新型冠状病毒(2019-nCoV)的斗争中,众多热心人积极参与公益捐助活动。由于公益活动信息管理意识和技术手段落后,捐助活动信息的传递经常出现混乱,信任危机频繁发生。这既伤害了捐助者的善心,也为慈善组织带来不必要的麻烦。可以通过区块链技术搭建捐赠服务平台来提供信任服务。
作者回复: 👍
共 2 条评论28 - 丁丁历险记2020-02-07假如武汉的肺炎可以基于区块链来去记录和追踪政府那些科学家的每一项决策,我觉得文明就开始了。共 1 条评论13
- 虢國技醬2020-02-07好像懂了,又好像没懂,脑子笨,准备多研读几遍6
- escray2020-10-16之前也特意学习过区块链技术,还在极客时间看过《深入浅出区块链》 专栏,其实区块链本身也不是什么新技术,新瓶装旧酒,不过确实跌宕起伏。 我觉的区块链面临最大的问题就是应用场景,除了比特币之外,目前似乎没有特别成功的应用。而且即使是比特币,也面临着币值不稳定、耗电量太大的问题…… 之前也认真考虑过区块链在追踪溯源上的应用,留言里面也有同学提到了农产品溯源、药品安全等等,但是如果使用区块链的话,成本问题始终没有办法解决,谁来把电费交一下。 最近入职的公司在做二维码溯源,就是扫码之后,可以看到产品的整个生产和流通过程,我觉的这个其实就可以算作是成本较低的溯源防伪吧。 至于说区块链可以去除中介、降低成本,那么建议参考一下滴滴打车,或者是各大二手车平台,之前的淘宝似乎也是打着降低中介费用的招牌。 区块链还有一个问题,就是它只是一个“电子账本”,如果和实体经济挂钩,比如说在区块链上写着你欠我一辆汽车,但是你不给我,我怎么办?就是说区块链本身是没有执行力的。 是的,有困难找民警,可是,如果你欠我一个苹果呢? 去看了老师重构的以太坊,最近一次代码更新似乎已经是两年以前了。展开共 1 条评论4
- tongyang2020-02-22老师你好,我想问一个问题,既然区块链技术能够提供去中心的记账服务,做到去除中间商,那么开发和提供区块链服务的公司又该去向哪种盈利趋势呢?
作者回复: 非常好的问题,你套入一个具体的交易场景,就比如文中提到酒店分销的例子,如果在区块链中完成交易,思考下具体的细节和过程有哪些,答案就自动浮现,答案非常有意思,非常吸引人,你可以继续思考下~~~
共 3 条评论4 - 蚂蚁内推+v2020-02-10老师比特币是怎么发行的呢,怎么保证发行总数不增加,不通货膨胀
作者回复: 这块因为篇幅原因没写😿 具体是这样的: 最早的时候,每挖出一个区块奖励矿工50个比特币,然后每四年奖励减半,当比特币总数达到2100万个时候,停止奖励。矿工靠交易手续费维持挖矿记账。 也就是说,比特币代码控制发行总数,最多2100万个。
4 - Geek_David2021-08-17在隐私数据保护领域,个人数据目前无法被标定位自己的私有资产而被滥用,可以使用区块链技术进行唯一性标注。 比如支付宝需要使用我的人脸信息,我在手机上录入之后使用公安局给每个人的凭证算一串唯一标识并且与人脸信息绑定,然后再提供给支付宝。这样支付宝就能够知道是不是我的人脸,我也能像支付宝支付使用人脸得费用1
- ghimi2022-12-16 来自浙江好文,学到了
- Rainbow福才2020-11-11老师您好!请教下,文中提到的酒店分销例子,实时结算是通过什么货币进行结算的?投票准入又是什么意思?如果一家酒店需要分销到多家OTA只需要上链就可以了吗?酒店为什么要选择上链?OTA又是怎么样获取收益的?问题有点多,辛苦老师了。
作者回复: 1 联盟链可以自己发行数字货币用于链上交易 2 参考文中提到的相关文档 3 是的 4,5去中心,就是去中心的费用和瓶颈,文中有讲
- 而立斋2020-06-11农产品质量安全溯源
- 千米完结2020-04-02现在的药品食物的安全 可以采用区块链追踪
- ant2020-03-26老师你好,我看您在介绍比特币解决双花问题的方案是在达到一定交易次数后打包成区块时检查这样错误的交易不是已经发生了嘛,也就是说一个比特币被交易給了多个人啊
- 靠人品去赢2020-03-10文物收藏或者像最近炒鞋,或者限量潮品奢侈品一些有炒作空间但是真伪确定相对复杂(毕竟有些东西,正品质量还不如赝品,而且门店也不支持真伪,所谓的一些鉴定师真的是自学成才),除了获得一个真假,还可以追溯过程。 这个把它应用到捐款这个想法,真的是太棒了,哪怕是增加点成本也无所谓,毕竟很多机构管理费也收得不低,而且钱去向不明,物资也烂在库里。
- 不记年2020-02-24暂时想不出有什么,但我提供一个思路哈,看下我们社会目前存在的生产关系,应该基本上都是基于中心化权威保证的,如果将这些生产关系切换为基于去中心去信任,并且能够带来更多好处,那么可能就是区块链技术的用武之地~