-->

后端面试38讲_36_33_区块链技术架构区块链到底能做什么

你好,我是李智慧。

在我的职业生涯中,经历过各种各样的技术创新,见识过各种技术狂热,也看到过各种技术挫折。

但是从来没有一种技术能像区块链技术这样跌宕起伏,富有戏剧性,吸引了各色人等。

区块链为什么能够吸引这么多的钞票?它到底能做什么?它的技术原理是什么?又为何如此曲金?让我们从区块链的起源比特币说起。

二零零八年十一月,由中本聪设计开发的比特币正式上线运行。

我们现在都知道比特币是一种加密数字货币,价格最高的时候呢,每个比特币可以兑换两万美金,一个看不见摸不着的数字货币。

为什么能得到这么多的用户被炒到这么高的价格呢?让我们继续追溯到传统的货币发行与交易系统。

传统的货币,也就是我们日常使用的钞票,是有各个国家的中央银行发行的。

中央银银行根据市场需求决定投放的货币数量。

但是很多时候为了刺激经济发展,中央银行通常会额外多投放一些货币,这样就会出现钱越来越不值钱的情况,即通货膨胀。

甚至有的时候某些政府为了弥补自己的债务,恶意超发货币。

有的国家甚至发行过面额为五十万亿的钞票,导致了恶性通货膨胀。

于是就有人想,能不能发行一种数量有限,不会膨胀的数字货币,通过互联网在全球范围内使用呢?其实发行数字货币很容易,但是得到大家的认可很难。

而且货币在使用的时候如何进行交易,记账是个大问题。

传统上如果通过互联网进行交易转账,必须要通过银行或者支付宝这样的第三方进行交易记账。

但是,通过互联网发行的数字货币必然得不到法定货币的地位,也就不会被银行等官方机构认可。

如果没有受到信任的官方机构记账,又如何能够完成交易呢?所以比特币数字货币首先要解决的问题就是交易记账。

比特币的一个主要思路是构建一个无中心去信任的分布式记账系统。

这个记账系统和传统的银行记账不同,银行的账本由银行自己管理,银行是记账的中心,而比特币则允许任何人参与记账,没有中心,完全分布式的。

此外,传统的银行中心记账必须有一个前提,就是交易者都相信银行。

所以银行不会伪造篡改交易记录。

但是任何人都可以参与记账的比特币不可能得到大家的信任。

所以这个记账系统必须从设计上实现去信任,也就是不需要信任。

记账者的身份,却可以信任这个人记的账。

这些不合常理听起来就难度重重的要求,这是通过区块链技术实现的。

首先,在比特币的交易系统中,所有交易的参与者都有一个钱包地址。

事实上,这个钱包地址正是非对称加密算法中的公钥非对称加密算法。

我在第三十篇安全性架构一篇讲到过进行交易的时候,交易的发起者需要将交易的数字货币和交易的接收方用自己的钱包、私钥进行签名。

记账者可以使用发起者的公钥对签名进行验证,保证交易是真正发起者提交的,而不是其他人伪造的。

交易。

交易签名呢只能保证交易不是他人伪造的,却不能够阻止交易的发起者自己进行多重交易。

即交易的发起者将一个比特币同时转账给两个人,也就是所谓的双花。

比特币的解决方案是,记账者在收到若干个交易后,可以这些交易打包在一起形成一个区块,区块必须严格按照顺序产生。

因此,最新一个区块的记账者可以根据区块顺序得到此前所有的区块,这样记账者就可以检查所有区块中的交易数据是否有双化发生。

至于如何保证区块的严格顺序,比特币的做法是这每个区块的头部记录它的前一个区块,也就是前区区块的哈希值,这样所有的区块就构成了一个链。

我们知道,单项链表使严格顺序的通过哈希值链起来的区块链,就是所谓的区块链。

区块链的严格顺序不可可以避免化,还可以使历史交易难易被篡改,这样由记账者试图修改一笔过去。

区块中记录的交易必然需要改变这个交易所在区块的哈希值。

这样就会导致下个区块头部记录的前区区块块哈西值和它不匹配,区块链就断掉了。

为了不让区块链断掉下改交易的记账值呢,还必须要修改下一个区块的前驱哈希值。

而每个区块的哈希值,是根据所有交易信息和区块头部的其他信息计算出来的。

下一个区块记录的前区哈希值改变,必然导致下一个区块的哈希值也需要重新去算,以此类推,也就是需要重算从篡改交易起的所有区块数哈希值重算。

区块的哈希值必须麻烦。

但是如果串改交易能够获得巨大的利益,就一定会有人去干。

我前面说过,区块链是去信任的,即不需要信任记账者却可以信任他记的账。

因此,区块链必须在设计上保证记账者无法重算出所有区块的哈希值。

比特币的解决方案就是工作量,证明比特币要求计算出来的区块哈希值必须具有一定的难度,比如哈希值的前几位必须是零比体的做法,是在区块头部引入一个随机数nouns值。

记账者通过修改这个nouns值,不断碰撞计算区块的哈希子,直到计算出来的哈希值满足难度要求。

因此,计算哈希子不但需要大量的计算资源,GPU或者专用的芯片,还需要大量的电力支撑。

这样大规模的计算,在比特币最火爆的时候,计算哈希值需要消耗的电量,大约相当于一个中等规模国家的耗电量。

在这样的资源消耗要求下,重算所有区块的哈希子几乎是不可能的。

因此,比特币历史交易难以被篡改。

这里用了几乎这个词,是因为如果有人控制了比特币超过半数的计算资源,确实可以进行交易篡改,即所谓的百分之五十一攻击。

但是这种攻击将会导致比特币崩溃,而能够控制这么多计算资源的记账者,一定是比特币主要的受益者,他没有必要攻击自己。

前面提到比特币的交易,通过区块链进行记账,而记账需要花费巨大的计算资源和电力。

那为什么还有人愿意投入这么多资源去为比特币记账呢?事实上,比特币系统为每个计算出区块哈希值的记账者赠送一定数量的比特币。

这个赠送不是交易,而是凭空从系统中产生的这其实就是比特币的发行机制。

记账者为了得到这些比特币愿意投入资源计算区块哈希值,由于计算成哈希值,就可以得到比特币计算哈希值的过程,也被形象的称作为挖矿。

相对应的进行哈希计算的记账者被称为矿工,而用来计算哈希值的机器被称作矿机。

当矿工们为了争夺比特币争相加入挖矿大军的时候,比特币区块链也就变成一个分布式账本了。

这里的分布式有两层含义,去为记账时需要进行交易检查,所以需要记录。

从第一个区块开始的完整的区块链,也就是说完整的账本分布在所有矿工的机器上。

此外,每个区块都是由不同矿工挖出来的,也就是说啊每次交易的记账权也是分布的。

比特币虽然取得了巨大的成功,但是一直没有得到主流国家的官方支持,但是比特币使用的区块链技术却越来越得到认可。

在企业甚至政府部门间的合作领域得到了越来越多的应用。

比特币应用的区块链场景也叫攻链。

因为这个区块链对所有人都是开放的。

除此之外,还有一种区块链应用场景被称作联盟链。

联盟链是由多个组织共同发起,只有组织成员才能够访问的区块链,因此有时候也被称作是许可型区块链。

传统上,交易必须依赖一个中心,进心不同的组织之间进行交易,必须依赖银行这个中心进行转账。

那么银行之间如何进行转账呢?没错,也需要依赖一个中心。

国内的银行间进行转账,必须通过中国人民银行清算中心。

跨国的银行间进行转账,则必须依赖一个国际的清算中心。

这个中心即使跨国转账的瓶颈,又拿走了转账手续费的大头。

所以当区块链技术出现以后,因为区块链的一个特点就是区中心各家银行就在想,银行之间能不能用区块链进账,而不需要这个清算中心呢?最初的联盟链技术就是由银行推动发展的。

目前比较知名的联盟链技术是ABM主导的h yp DE ger f中心,这个节节负责对交易进行背诉,签签名、order rin节负责打包区块p二节点会从order rain节点同步数据记录完整的区块链。

而所有这些服务器节点的角色权限都需要CA节点进行认证,只有经过授权的服务器才能加入区块链。

最近两年,随着区块链技术的火爆,联盟链技术也开始从银行扩展到互联网金融领域,甚至非金融领域。

二零一八年的时候呢,支付宝、香港和菲律宾一家互联网金融企业就通过区块链进行了跨国转账。

而香港和菲律宾的外汇管理局也作为联盟成员加入了区块链,使得转账和监管在同一个系统中完成。

在互联网OTA领域,酒店房间在线销售是一块非常大的业务,但是一家酒店不可能对接所有的OTA网站,而一家OTA网站也不可能获得所有酒店的资源,于是就催生了第三方的酒店分销平台。

这个平台负责对接所有的酒店酒店房间,通过该平台对外分销,而OTA网站通过该平台查找酒店房间以及预定房间。

于是这个平台就成为一个全行业不得不依赖的中心,一方面产生了巨大的瓶颈风险。

另一方面,酒店和OTI也不得不给这个中心支付高昂的手续费。

事实上,我们可以用利用联盟链技术,将酒店和OTA企业通过区块链技术关联起来,酒店通过区块链发布房间信息,而OTI通过区块链查找房间信息以及预定房间。

我在文章中给了一张图,这张图的左边是传统的酒店分销模式,右边是基于区块链的酒店分销模式。

上面讲到的hiylegier联盟链技术部署和应用都比较复杂,目前的区块链领域社区资源比较丰富,更为易用,也更被广泛接受的区块链技术是以太坊,但是以太坊是一个工链技术,不符合联盟链受许可才能加入的要求。

因此,我和一些小伙伴对以太坊进行了重构,使其符合联盟链的技术要求。

你可以点击源码地址看一下,也可以看看相关文档链接。

我在文章中都已经改出来了。

如果你感兴趣的话,欢迎你参与开发与应用落地。

应该说啊区块链能够吸引这么多的关注,产生这么大的影响和加密,数字货币的炒作是分不开的。

正是因为数字货币的炒作,才使得区块链技术吸引了大量的资源,更多的人才投入研发区块链技术。

区块链技术进步与应用也吸引了大量的关注。

但是数字货币的投机属性又使得人们对区块链技术抱有急功近利的想法。

希望区块链技术能够快速带来回报。

在我看来,互联网技术的快速发展是生产力革命,使得生产力数以十败百倍的增加。

而区块链技术是生产关系革命,传统上所有的交易和合作都必须依赖法律以及信任,而法律的成本非常高,很多场合无法支撑起用法律倍数的成本,而跨组织特别是互为竞争对手的组织之间,又不可能产生信任。

区块链的出现,使得低成本去信任的跨组织合作成为可能。

将重构组织间的关系。

这个关系既包括企业间的关系,也包括政府和企业间的关系,还有政府部门之间的关系。

互联网使得这个世界变得更加扁平,信息流动更加快速,但是无法弥合这个世界割裂的各种关系。

而区块链可以打通各种关系,将这个世界更加紧密的联系在一起,使全人类成为真正的命运共同体。

今天我讲了一下区块链技术,它虽然火爆,但仍然处于发展之中。

你能想到的利用区块链技术的场景有哪些呢?欢迎你在评论区写下你的思考,也欢迎把这篇文章分享给你的朋友,或者同事一起交流一下。