201-说透区块链

开篇词 | 区块链，一种面向未来的思维方式

你好，我是赵铭。欢迎你跟我一起学习区块链。

可能你第一次听说区块链，是从比特币开始的。我与比特币的初次接触，是 14 年初在日本的某个出租屋里。本想着在自己电脑上运行比特币的全节点，但因为网络的速度拖累了我与比特币的深入接触。而第二次，完全是被区块链技术吸引，基于几种已有技术的组合，却创造了一片新的世界，最终使我热情洋溢地投身其中。

这些年我一直处在区块链技术发展的前沿阵地，从事着区块链服务平台的架构及研发工作，最近的主攻方向是区块链跨链技术。我亲眼见证了上一轮数字货币的疯狂与狼藉，不过在我看来，这一次由技术驱动的高光则要理性得多。

上一轮主要依靠的是投机引发的全民参与泡沫。在金钱利诱面前，今日新高也只是明日的最低，就这样击鼓传花般推向顶峰，最终接盘的人站的最高也摔得最惨。而我对区块链的信仰是建立在技术之上，而非币价。

这里我想跟你强调的是，比特币只是区块链的冰山一角，区块链的潜力远不止如此。就像投资人徐小平在 2018 年的时候说的，“区块链革命已经到来。这是一场顺之者昌逆之者亡的伟大技术革命。它对传统的颠覆，将会比互联网、移动互联网来得更加迅猛、彻底。”

这话并不是危言耸听，就像 20 年前我们无法预见到互联网今日的繁荣，现在我们也难以预测区块链到底有多大的潜力。

我相信在未来，区块链不只是一种应用技术，更是一种基础设施，就像现阶段的互联网一样。如果说互联网是信息的载体，那区块链网络就是价值的载体。前些年我们还只是在畅想区块链，而现在时间已经到了万物皆可区块链 + 的十字路口。我们不妨来看几个区块链应用的实际场景。

首先是电子合同。我们无论是买房、就业还是保险等等，都离不开签订合同。我们比较熟悉的传统线下合同，从签订到归档这一系列流程就非常繁琐，让人非常头疼。而有了区块链存证技术加持的电子合同，低效耗时、难以防伪的问题就能迎刃而解。

再说说食品药品安全。估计你也会有同感，每年的 3·15 晚会都好像一部“惊悚片”，一系列的假冒伪劣商品给企业和消费者带来了巨大的伤害。究其原因，很大程度上是因为商品溯源的难度太大，企业打假、防伪成本也居高不下。而区块链技术支撑的商品追溯平台，刚好可以解决这样的难题，通过全程溯源让假货无所遁形，切实保护消费者权益，同时也能保护品牌方利益。

而在金融领域，因为区块链拥有不可篡改、去中心化等特性，所以天然适合金融信任的维系，能够为金融领域带来无限的可能性。就比如资产证券化（简称 ABS），这是一种新型的融资手段，企业可以将缺乏流动性、但能够产生可预见的稳定现金流的资产，通过一定的结构安排，对资产中风险及收益要素进行分离与重组，进而转换成为可在金融市场流通的证券。

如果将 ABS 与区块链结合，多节点构建的区块链网络可以自动在 ABS 多参与方之间同步链上数据，降低各参与方之间的数据交互成本及信任成本。同时，不可篡改特性有助于提升各方对 ABS 资产的监管审计能力，降低因劣质资产导致的系统风险。

其实我刚才说的应用，也只是区块链技术的“牛刀小试”，但已经让我们看到了技术驱动的区块链行业生机勃勃，未来可期。其实这样的判断不是我的一家之言，而是大势所趋。这一轮区块链发展向好的推动力，少不了国家政策的引导。我们看看国家层面的动作，就能发现这再次验证了：区块链发展的源动力就是技术。

现在区块链技术已被列入“十四五”规划，是国家战略的一部分。最近国家各部委也频繁地发布指导政策，引导区块链技术良性发展。与此同时，社会各界也在积极回应，越来越多的企业与个人开始重新理性思考区块链在商业活动中的作用，探索如何将区块链与传统业务相结合，最终实现降本增效。

图片来源：赛迪区块链研究院整理

既然区块链这么重要，我认为你我都有必要懂一点区块链。但是区块链对于初学者并不友好，因为现在网络中充斥着大量杂乱的资料，更多是关于数字货币的讨论，当然也有技术相关的知识，但并不系统，而且更多偏向的是与具体的链的交互，缺少对区块链共性的探讨。

我会结合自己投身区块链行业的经验和思考，以一个先行者的身份帮助你搭建一个科学、系统的区块链学习路径。知海无涯，我们学习的时候需要抓住重点，区块链的学习我认为应该这样入手。

首先是区块链从哪里来，包括区块链核心技术的来龙去脉，以及技术发展历史的关键阶段。区块链技术自萌芽于比特币，不过短短 13 年时间，却为世界的发展奠定了一种未来。看清历史，有助于我们判断未来。

然后是区块链是什么。区块链应该是什么样子的，这个我反而觉得不应该设限。所以我会为你剖析支撑区块链的底层基础技术，让你掌握区块链技术的本质。理解支撑区块链的底层技术很有必要，只有搞懂了原理，你才能更清晰地领会区块链的技术特点。万变不离其宗，即使今后出现更多区块链的新事物，你掌握了底层技术的原理，很快就能对其抽丝剥茧，看透本质。

接着还要关注区块链将往哪里去？我们应该更宏观地看待区块链，尤其是区块链技术如何跟其他行业黏合，实现 1+1 大于 2 的增益效果，比如区块链与前沿科技领域、社会生活等方面的结合点。理解技术与应用的结合，这远比阐述应用本身更有意义。因为区块链不是孤立存在的，它需要跟其他行业打好配合，才能在应用实践中发挥其价值。

具体来说，我将专栏分成了这样四个模块。

历史现状篇

我会通过 2 讲的内容为你梳理区块链技术发展的四个阶段，你会发现每一阶段的起承转合都有他存在的道理。

技术篇

区块链技术的三个鲜明特点是由四种基础技术紧密组合而造就的。在技术篇中，我会对区块链的基础技术进行简明扼要的讲解，剖析其基本技术原理，只为给你一个直观的答案：为什么这些技术的结合，就可以对外表现出区块链的技术特点。

当然，虽说是通识课，但理解这部分的内容还是需要一点点的计算机基础知识。不过不用担心，我会使用大量的图例和形象的例子辅助你理解。

区块链 + 篇

在区块链 + 篇中，我会结合全社会的探索方向以及自身过去几年的经验，为你讲解区块链与物联网、人工智能、电商等领域相结合而带来的发展新契机。有些内容是业内人士都在积极尝试的，而更多的是我对这些领域的独立思考，既有现实，也有畅想。

思考篇

区块链技术虽然是推动社会经济发展的一种新的助推剂，但却因为其思想太过颠覆，导致其发展不是太顺畅。因此，如何将区块链技术嵌入未来世界的发展进程中呢？我将在这个模块与你详细探讨这个问题。

说实话，用通俗易懂的话解释区块链技术是有难度的，所以我会把基础理论以渐进的方式融入每一讲中，并尽可能给你举一些例子，寓教于乐，带给你最顺畅的学习体验。有了这样全方位的理解，你就能知其然，然后知其所以然。我在文稿里还为你准备了一张知识地图，你可以点击查看。随着后面课程的讲解，图里的内容我会为你一一展开。

区块链知识地图

我们都知道，现在互联网已经进入“薄利时代”，那么区块链很有可能就是那片跟你未来 20 年息息相关的蓝海。

我们去理解一门像区块链这样的新技术时，不能只拘泥于表面，也不能只看一面。比如区块链技术之所以能够如此快速地发展，绝不仅仅是因为技术的创新性。如果说技术是跑车，那市场就是赛道。技术发展同样要符合人性对金钱的需求，无利可图则无发展。

所以在学习的过程中，我希望你能够透过技术看本质，把自己带入区块链发展的进程中，想象自己是一名未来世界的规划师，“如果是我，我会如何去设计区块链”？你学习的将不只是一种技术，更是一种面向未来的思维方式。

未来已至，我在前方等你！

01 | 回顾前世：解读区块链技术发展三阶段

你好，我是赵铭。

区块链概念自出现到如今不过短短十几年，却深刻地影响着我们的工作跟生活。

在专栏的第一部分，我想先跟你讲讲区块链技术的发展历史及现状。任何一种技术，在发展过程中，往往会因为各种原因偏离创立者的初衷，区块链技术也一样。

回顾技术发展的历史，能够让我们理清前因后果，更深刻地认识这项技术是怎样演变成现在的样子；而了解技术发展的现状，又可以帮我们更好地看清技术发展脉络及未来方向。

而这一讲，我们重点关注区块链技术的发展历史。

萌芽期

相信说起金融危机，你我都会谈虎色变。最近的一次世界级金融危机就在 2008 年，这次危机让很多先行者对现代金融体系逐渐失望。在这样的时代背景下，比特币应运而生。

比特币的发明者中本聪敏锐地意识到，大部分的互联网贸易结算都依赖可信任的第三方金融机构处理，尽管在大多数时候这些系统的运转是足够好的。可是一旦遇上极端信任危机，信任关系的失衡就会导致现代金融体系的结构性塌陷。

常规的思路几乎失灵，但中本聪却另辟蹊径，提出了一种全新的解决方案，一个自由主义者拯救世界的故事就此拉开帷幕。这个方案最出彩的其实有两点，第一就是还原了支付原来的样子，第二就是创新性地引入了支付脚本，我分别给你说一说。

什么是支付本来的样子呢？你可以这样理解，贸易支付的本质其实是买家与卖家的供需关系，只是由于买卖双方的不信任，才需要引入双方都信任的第三方进行担保，为双方的买卖行为背书。在中本聪看来，这种由信任作为媒介的运行模式是有问题的。

所以，中本聪想到了去掉第三方担保的可能性，设计了一套基于密码学、无需买卖双方彼此信任就可以完成支付的数字货币系统。

在剔除信任纽带之外，比特币还创新性地引入支付脚本用于货币的支付。脚本实质是一段计算机程序代码，如果你可以输入正确的参数，脚本执行成功就意味着你拥有货币的使用权。所以我们可以认为，比特币通过程序脚本，实现了一个完全严格按照计算机逻辑运行的数字货币转移机制。

但是，比特币的脚本功能并不完美，它只支持指令的顺序执行。而一般功能完善的计算机编程语言都支持顺序、分支以及循环。诚然，只基于顺序执行的脚本可以实现比特币的条件支付，但也仅限如此。

这里可以假设你有一个这样的需求：

抵押自己的一套房产，换 10 枚比特币，并约定 1 年以后用 11 枚比特币解压房产；如果未能守约，房产将被法拍。

现在我们将这段描述转换成计算机语言，很容易就能发现，这段逻辑必须要有分支的判断，如果满足条件解压房产，不满足条件，房产将被拍卖。比特币可以实现这个需求吗？

很明显，因为比特币脚本没有分支判断能力，因此实现不了。而现代社会是一个多元融合的世界，任何事物都不可能独立地存在，尤其是在金融支付领域。比特币仅将自身定位为加密货币，在复杂的契约逻辑面前是无能为力的。

有人看到了这种局限，他就是以太坊的创始人，V 神。

诞生期

在研究比特币的过程中，V 神逐渐认识到，比特币背后的区块链技术不光可以用在加密货币中，还有更多可能性，但比特币的架构却阻碍了技术的发展，因此他希望能够扩展比特币的脚本功能，使其更加智能。

如果直接在比特币上打补丁，其扩展能力也极为有限。因此，V 神将他的精力集中到如何创建一个替代比特币的解决方案中，不久就发表了以太坊白皮书《以太坊：一个下一代加密货币和去中心化应用平台》。

在白皮书中，V 神阐述了以太坊构架愿景：在加密货币的基础上，增加智能合约功能，这样开发者就可通过智能合约编程把一切有价值的客观 / 主观事物锚定到以太坊进行交易，实现价值的传递。这也就是区块链发展的最终形态是价值网络这个论调的由来。

智能合约到底是怎样发挥作用的呢，我接着前面房屋产权登记的例子解释一下。有了相关部门的数字证明，业主就可以通过智能合约把房产证等信息转换成可交易的数字资产。当然这个过程是长期的，需要区块链在社会治理领域落地以后才可实施。

2015 年 7 月 30 日，以太坊主网正式启动，以太坊从此走上历史的舞台。

以太坊的核心我们可以认为就是智能合约的加持。而智能合约是软件工程师基于以太坊协议，自主编写的程序代码。不过我们都清楚，天底下几乎不存在没有 BUG 的软件系统，且以太坊智能合约是开源的，任何人都可以随时随地查看部署在以太坊上的智能合约源码，这就给黑客钻漏洞留下了空子。

最著名的一次黑客攻击事件发生在 16 年 4 月，黑客将The DAO合约中锁定的价值约 1.5 亿美元的以太币偷走约 6000 万美元，并立刻在交易所抛售，给整个加密货币市场造成了不可挽回的损失。

黑客事件发生以后，以太坊社区发生了激烈的讨论。一部分人主张将以太坊主网回滚至黑客攻击之前；而另一部分人崇尚无为而治，主张不应该依靠外力干预已被认可的既定事实。可以说这是对区块链信仰的一次重大考验。

然而，经过社区讨论，16 年 7 月 20 日进行以太坊硬分叉，将以太坊主网分裂成两个网络，ETH 以及 ETC。ETH 删除了黑客攻击的一切痕迹，并将被盗走的以太币归还给原始拥有者，现在我们所说的以太坊指的就是回滚的这一分支。而 ETC 则保留了黑客攻击在内的全部交易，以保持区块链赖以生存的去中心化以及不可篡改的基本原则。

正是因为这一事件，直接导致了后续区块链的野蛮生长。

野蛮生长期

软分叉和硬分叉

为什么 The DAO 事件会直接推动后续区块链的野蛮发展呢？且听我慢慢为你道来。

所有的软件系统都会有 BUG。一般情况下，我们会在之前软件版本的基础上修改源码，新版本相比旧版本只有部分逻辑的不同，程序基本规则也没有太大的变化，两个版本的程序之间简单做些适配，就可以互相认知，可以说是无缝兼容的。我们把这种情况称之为迭代。

而另一些时候，因为架构的调整、规则的变更，两个版本的程序之间已经无法兼容。这时我们就无法称之为迭代了，而是用重构指代这种变化。通常情况下，多次迭代叠加的结果就是重构，可以理解为量变引起质变。

而在区块链中，网络是由多个节点彼此相连组成的，节点间必须可以互相通信。几个小版本的软件迭代不影响区块链网络的运行，一些节点升级，而另一些节点继续使用原始版本，是不会引起区块链网络的割裂。这种情况就是所谓的软分叉，其本质就是可兼容的程序版本更新。

而一旦社区决定对区块链协议进行了重构，则必须协调整个网络节点都进行升级。你可以设想一下，如果一半节点继续使用原来的版本，而另一部分节点升级了新版本的程序，在这种情况下，一个区块链网络就被割裂成了两个。虽然他们的数据从属于共同的祖先，但是在某一时刻，他们独自派生出不同的数据走向。这就是硬分叉的逻辑，其本质是不可兼容的程序版本更新。

这就不难解释，为什么每一次区块链网络的升级都是一件大事，需要社区去协调从哪一个区块启用新版本，废弃老版本。

回到 The DAO 事件本身，以太坊通过硬分叉分裂成 ETH 跟 ETC，两个网络都保持独立运营。从逻辑上讲，并没有什么问题，是可以说得通的。

但坏就坏在其凭证是有价值的，在硬分叉前，我拥有 1 枚 ETH，而硬分叉以后，我既有 1 枚 ETH，同时我又拥有了 1 枚 ETC。相当于我在什么都没有操作的情况下，凭空多了一枚有价值的凭证，虽然其价值可能相较原始的 ETH 来说相对较低。

“潘多拉的盒子”被打开了。

一些人的心思被解放了。如果我有理由述说比特币 / 以太坊存在的不足，提出解决方案，写一个白皮书，阐述我的观点及实现路径。我是不是也可以通过硬分叉的方式，创造属于我的区块链呢？

同时，如果我能拉人站台，让他们为我拉票，是不是也会有更多的人认同我的观点？通过这样的操作，是不是也逐渐有人会为我的理想买单，而一旦有人为我买单，我就凭空创造了“财富”泡沫。

一场轰轰烈烈的造链行动就开始了，各类基于硬分叉的旁系网络开枝散叶。最高兴也是最能推动这场行动的人，其实还并不是其创造者，而是在硬分叉前持有 BTC/ETH 的散户，他们得到了数不清的旁系凭证，当然希望其价值更高。所以他们就不断鼓动身边的人进场，进而不断推动这虚假的繁荣。

不可描述的推手

除硬分叉外，野蛮的背后还有不可描述的推手，因为某些众所周知的原因，不宜多说。

自有了这不可描述的推手之后，就像鱼遇到了水，一切都那么的自然。市场迎来了新一轮的疯狂。任何人只要有一些跟区块链沾点边的点子，都可以立马写一篇白皮书，找一群人运营社区，宣传自己的理想，换取投资人的赏识，蛊惑他们用真金白银为自己的“理想”买单。

不可否认，最初确实有很多团队真正在依靠这种融资的方式认认真真做事，但市场并不会因为你的认真给予你等比例的回报，反而是那些牛皮吹上天的赚到了大钱，且扰乱了市场。只有你想不到，没有他们做不到。

疯狂并没有持续太久，泡沫被无情刺穿。自此，市场逐渐冷清。时间就来到了区块链发展的新阶段，也就是现在，在下一讲中我将详细为你描述区块链技术的现状。

总结

在这一讲中，我阐述了我对区块链技术自萌芽到野蛮发展的三个历史阶段的认知。比特币，以太坊是一种现象，而区块链技术是其背后的本质。

区块链技术萌芽于比特币，诞生在以太坊，经历过乱象丛生的爆发，但也正是因为那些疯狂岁月，让千千万万个你我知道并了解到区块链技术。

历史无对错，只有结果。希望你通过我的讲解能够了解区块链技术的历史发展进程，并对区块链技术的未来充满想象及期待。

讨论

你是何时接触比特币，了解区块链技术的呢？在过去的十多年中，你有哪些与区块链的不解之缘？

扩展阅读

我非常建议你可以尝试阅读一下比特币白皮书以及以太坊白皮书，它们可以说是区块链领域的圣经。而且你也可以顺便了解一下中本聪及V 神这两个人，都是颇具传奇色彩的人物。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这节课对你有帮助，也欢迎你把这节课分享给自己的朋友、同事。

02 | 着眼今生：揭秘区块链技术的发展现状

你好，我是赵铭。

在上一讲中，我们回顾了区块链技术自诞生到野蛮生长的三个阶段，自政府主动干预之后，整个市场因为比特币价格的腰斩而萎靡不振，热衷于赚取热钱快钱的投机者逐渐退出，只留下了一片狼藉。

在这样的背景下，区块链的发展逐渐由币价驱动转向技术驱动，投机者的退出意味着留下的都是对区块链技术抱有信心的积极分子，他们推动着区块链技术继续向前，让区块链技术成为现在的样子。而这一讲，我们一起关注区块链技术的发展现状。

圈层的割裂

投机者退出后，继续留在这个领域的人逐渐有了认知的分歧。

虽然大家都认为区块链技术有更广阔的应用空间，但一部分人坚信比特币 / 以太坊是未来自由世界的流通货币，会成为数字黄金 / 白银，并很有可能挑战主权货币的垄断地位，因此他们继续在公链领域探索。

在此期间，陆续涌现了诸多技术应用创新，虽然每一个概念的提出都不免引起新一轮炒作。但总的来说，对于技术的探索一直在向前，这个圈子可称之为公链圈，其研究对象是有币的公有开放区块链网络，比如比特币 / 以太坊，这就跟应用开发者在苹果生态系统中开发应用一样。

而另一部分人意识到，只要比特币 / 以太币等数字货币存在一天，对其币价的市场操纵永远也不可能停歇，短时间内也看不到其与主权货币稳定汇率的可能性，国家政策也是呈现对有币区块链打压的趋势。

与其这样，还不如跳出这个圈子，专注于区块链技术在企业领域的研究，而这个圈子我们称之为联盟链圈，其侧重点是研究如何根据企业自身业务定制联盟区块链，就好比现在各家手机厂商基于安卓开源系统做定制化的系统研发。

不同的圈层就这样建立了，区块链技术自此如同硬分叉一样，割裂成公链圈与联盟链圈，如同两条射线，驱动着区块链技术朝向不同的方向发展。

公链圈的创新

公链圈的发展离不开投资激励，一切的技术应用创新都围绕着如何繁荣交易市场。为什么这么说呢？通过总结归纳，我们可以将公链圈的创新大致可以分为两类，一类是应用层面的，主要包括去中心化金融和去中心化存储；另一类是技术创新层面的，最突出的就是跨链，我们分别来看看。

去中心化金融

去中心化金融，通常我们称之为 DeFi，是 Decentralised Finance 的缩写，这是公链圈最直接的发展驱动力。DeFi 就是运行在区块链网络上的金融服务。

想要理解它，我们必须先搞明白什么是金融，以一个金融小白的视角来看，金融是通过重新分配资产来获得资产增值的一种渠道，它的本质在于信用、风险和杠杆。金融成立的前提就是控制不确定性风险，只是传统金融跟区块链控制风险的手段不同。

如果你有去银行办理抵押贷款的经历，肯定会觉得流程繁琐，叫人抓狂。那你有没有想过，为什么贷款要这么多证明，经过层层审核才能贷到款呢？

这个问题，我们可以从风险控制的角度来理解，传统金融服务对风险的控制主要是考察借贷人的历史信用记录以及抵押物的市场价值，如果借贷人信用不佳或抵押物价值低，可能就无法贷款。像银行这样的传统金融机构，不光要在贷款前严格把关，而且还要承担坏账的风险。

但是 DeFi 就不一样了，它可以通过智能合约来把控风险，其优势在于一切都是由程序代码自动控制。在不满足初始约定条件的情况下，合约会强制平仓，将抵押物没收。而且 DeFi 还有一个重要优势，那就是不存在坏账，几乎不需要风险控制，因此 DeFi 可实现超额抵押，也就是杠杆。

其实，现在数字货币交易所中的合约本质上就是 DeFi，以少量现货作为保证金用来博取数字货币价格上涨下跌带来的额外收益，但在市场价格上下急剧波动的行情中，几乎无人是赢家，庄家除外。

虽然 DeFi 是一个非常新颖的金融创新，但其未来的发展还是不太明朗的，尤其是在国内。DeFi 的主战场在以太坊，而以太坊是匿名的公有区块链网络，匿名意味着无法被金融部门监管 / 审查，传统金融行业在重重监管下都经常出现各种金融丑闻，更不用说不受监管的 DeFi。

对投资人来说，风险是巨大的，此处的风险不同于上面提到的坏账风险，而是要警惕人为造成的投机风口及暗箱交易。

去中心化存储

另一个比较火的创新是去中心化存储，是一种利用分布式存储技术，将文件分块存储在不同存储节点的应用型创新。相较于中心化存储，它拥有更高级别的隐私保护，存储成本也更低，且具备更冗余的数据备份副本，能有效避免单点故障。

其实去中心化存储跟区块链的关联并没有那么密切，区块链在其中的主要作用是作为存储层之上的一种激励计费机制。

拥有空闲硬盘设备的“矿工”将空间贡献出来，通过特殊设计的存储证明机制在区块链中记录贡献度，主要考察维度集中在贡献时长、空间大小以及有效空间利用率等等，贡献度可用于获得等额代币回报；而有存储需求的用户需要支付代币，用于获取更多的数据存储空间。

不过，去中心化存储的发展目前也面临着一些问题，主要有这样三方面。

其一，对其币价的炒作几乎从未停止，真实有存储需求的用户几乎无法忍受因币价波动而导致的成本不确定性。

其二，不同矿工贡献的空间是极度分散的，虽然在全世界各地都可以搭建，但受制于当地网络环境以及硬盘本身的机械素质，整个去中心化网络的存储性能不高，远不如中心化存储，因此只适合冷数据以及个人数据存储。

最后，随着矿工的涌入，大部分项目的存储空间供应规模远远大于真正的需求，已经处于供大于求的局面，数据来源是当前急需解决的问题，怎样解决数据来源是当前重点，否则难有更大的发展。

跨链

前面所列举的 2 类创新都属于应用创新，相较而言，跨链则属于技术创新。不同的区块链网络是独立的，是一个个的数据孤岛，跨链技术就是在这些岛之间构建互通的桥梁，提供不同链之间数据互通的可能性。

最初的跨链是两个链之间的直连，而现阶段的跨链更像是一个中枢，链与链之间的交互不再直接，而是通过中继链进行信息的中转，可以说，跨链技术的发展是其他创新的基础。就比如下图是一张波卡跨链协议的跨链网络示意图，通过中继链把其他的公链嫁接在同一生态系统中。

通过上面对两大类公链圈技术应用创新的简单分析，我们不难看出投资激励对于公有链的推动作用，这也无可厚非，天下没有免费的午餐。

没有创新，就没有投机的爆点，也就不可能有生态的繁荣。相较于前一阶段的野蛮生长，纯投机的项目逐渐消失，DeFi 是传统金融的衍生，而去中心化存储则是共享经济的一次探索，新概念的提出让它更贴近大众生活。

联盟链圈的发展

了解完最近公链圈的创新，我们再来看看联盟链圈的发展。在联盟链圈的这几年，我见证了区块链技术在企业商业活动中的实践，如何使传统业务在区块链技术的加持下降本增效，如何降低企业间合作门槛，当然也碰到了区块链技术现有的发展壁垒。个人对区块链技术在企业的发展，我总结了三个阶段。

数据存证

区块链技术具有时间连续，不可篡改，可回溯等特性，因此非常适合需要留存证据的数据存储。现阶段，像产品溯源、互联网法院、电子证照等应用都属于这一阶段的产物，大多数应用在区块链上存储的也只是数据证明，而非原始数据。

这种做法既与区块链本身的数据承载能力有关，也是业务本身的需求决定的。区块链中的数据从网络的维度来看，对存储及网络带宽的需求会随着数据量的增大呈指数级增长的趋势，因此需合理控制数据的取向，关于这一点我会在技术篇的末尾为你再做一个解读。

数据存证阶段的应用只是将数据存储在区块链上，只有在必要的时候才会利用其中的数据进行取证，绝大多数时候，数据是死的。区块链技术只是这些应用的一种特殊的技术保障，而不是非区块链技术不可。且大多数时候是各家玩各家的，并没有涉及到多方参与。

在此阶段，区块链的可替代性较强。现在大多数企业区块链应用还停留在这一阶段。

数据交换

传统的企业间合作都涉及到了商业数据的交换，一般情况下，数据交换的模式是数据提供方或需求方提供 API 接口的形式或拉或推的形式进行。而一旦涉及到数据的相互需求以及多于两家企业参与的情况，问题就变得更加棘手。

而通过区块链技术可以很方便地解决这个问题，在各家企业内部部署区块链节点，各家只需与自家运维的节点交互，区块链机制自动地将数据同步至其他参与方，任一节点如有新数据上链，区块链的事件通知机制自动通知各企业内部的应用。

在此阶段，企业合作强依赖区块链作为数据交换的枢纽，因此区块链的替代性较低。且现在已有企业应用达到了数据交换的阶段，比如联邦学习与区块链技术的结合。

价值转移

以太坊存在的意义之一，就是提供了一个将现实价值与数字世界锚定的媒介，也让我们看到了信息网络向价值网络转移的可能性。在企业区块链领域，这种意义可被无限放大，企业对外提供的产品无非是商品 / 服务 / 解决方案等。而如果通过区块链技术将企业产品转换成价值网络中的流通资产，在基础价值之外，亦可延伸出多种资产应用的可能性。

而在这个阶段，区块链技术是价值网络的基石，无可替代。当然，现阶段离价值网络还很远，我也无法准确地描述未来的样子。

企业区块链发展的时间较短，总的来说还只处于刚刚起步的阶段。但国家对其未来的前景非常看好，积极出台各类政策从高维度引导区块链在国民社会经济等各个领域的发展。

在“十四五”规划中，首次将区块链列入五年规划中，与人工智能、大数据、云计算、网络安全等共同被列入新基建行列。

政策的出台激起了各行各业对区块链 + 的探索活动，各级政府也带头探索区块链技术在政务领域的内在价值。我对这种态势保持积极的态度，我始终认为政府等职能机构的主动参与是区块链在企业商业活动中能有广大发展前景的最大助推力，只有这样才能打破现在企业间商业合作模式的重重壁垒。

总结

这一讲，我们探讨了区块链技术现在所处的一段平和的探索阶段。因对技术发展的不同看法，业界分成了公链圈跟联盟链圈。公链圈在利益的驱动下，创造出诸多技术应用创新，构建出不同于传统金融体系的未来世界雏形；而联盟链圈在国家政策的引导下，积极探索区块链 +，虽还处在发展的第一阶段，但已有更进一步的趋势。

当然，我们也应该看到，区块链技术的价值在过去的十多年中虽已被逐步验证，但终究是发展时间还较短，技术本身也还不成熟，且所带来的思维模式的变革也足够震撼，区块链技术全面走进我们的工作生活还需要更多时间。

如果有一天，公链的每一个创新都能赋能实体经济，企业间能放下曾经构筑的层层商业壁垒，公链圈与联盟链圈重新相交相融，那就是区块链技术的黄金时代，价值网络触手可及。

讨论

你更看好公链圈还是联盟链圈的发展呢？有没有区块链创新应用为你的工作或者生活带来不一样的体验？

扩展阅读

关于 DeFi 的概念，以及它与传统金融的详细对比，你可以参考这份资料。

如果你想了解现在市面是已经存在哪些去中心化存储项目的话，可以阅读What is Decentralized Storage? (IPFS, FileCoin, Sia, Storj & Swarm)获得更详细的信息。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这节课对你有帮助，也欢迎你把这节课分享给自己的朋友、同事。

03 | 技术特性：用“铁锁连环”直观理解区块链特点

你好，我是赵铭。

可能很多人都觉得区块链是一个多么新颖的技术，其实不然。它不过是旧瓶装新酒，本身并没有创造新的技术，只是将几种已经成熟的技术进行组合，是融合性创新。

而我们初步开始学习区块链的时候，最重要的就是把握其技术特点，并且了解它的技术基础。今天这一讲，我会通过一个现实中的例子带你探索区块链的技术基础，同时帮助你掌握区块链技术最重要的三个特性。

怎样理解区块链

经常有人问我什么是区块链，一般情况下，我的答案是不一样的。如果你是程序员，我大概率会说区块链是一种分布式 KV 数据库。而如果你是小白，我可能会用几个词回答你：三人成虎，人云亦云，少数服从多数等等。

我的回答不一定准确，但一定最能符合当时受众的心理预期。而当我面对你们，面对拥有各行各业背景的受众时，为区块链概念下一个定义，我的内心是拒绝的。因为每个人理解不同，过于纠结定义反而会忽略本质，所以我们更应该把目光放在理解区块链技术基础和特性上。

其实，区块链技术发展到现在，尤其在以太坊将智能合约的概念与区块链技术融合之后，区块链已经变成了现实与网络的媒介，可以说区块链是价值的载体，是一种新型的社会生产关系。

怎么理解这句话呢？我个人的理解是基于区块链技术，我们可以打通现实世界与网络世界的屏障，将物质虚拟化，将价值实体化。未来的互联网流转的不是信息，而是活生生的价值。

未来可期，不过也要始于足下。我们不妨先回归现实世界，前段时间，网上有一张图引起了广泛传播，被网友戏称为“区块链技术实体化”。拿这个例子来说明区块链的技术特性，再适合不过了。

区块链技术实体化

这是辽宁沈阳一小区大门，业主用多把锁串联在一起，形成了一套简单的门禁系统。谁家有车谁就加锁，每把锁都有标识，小区车主只需拿钥匙打开对应锁头，就能打开大门。这样就防止了外来车辆占用小区车位，不得不说，高手在民间。

铁锁连环的具象化

那这个例子是如何具象化表达区块链技术特性的呢？首先，我们需要明确区块链有哪些特性，一般我们认为有 3 点，分别是：

去中心化

可追溯性

不可篡改

结合这个实例，我们来一一理解这几个概念。

去中心化

在这个小区门禁系统中，每把锁代表着一家小区业主，他们不需要物业公司统一管理，只需要管理维护自己的锁就能保证系统的正常运行。

每一把锁有大有小，有贵的有便宜的，业主也可能有多辆车，但在这个系统中他们没有地位上的差别。而且，当有新的业主加入或者有业主搬走，只需要增加或去掉相应的锁就好。

你有没有发现，这里面就蕴含了去中心化的概念，门禁不再由物业公司这个“第三方机构”统一管理，每把锁都是管理的一部分。

同样的道理，区块链存在的初衷就是去除中心化的第三方机构（可以回看第 1 讲），整个网络的数据及状态是由网络中所有的节点共同维护的，他们没有地位上的差别，有的只是可支配的资源的不同，且任一节点离线也不会影响系统的运作。

你可以自己试着先推演一下，想要实现去中心化，应该选取怎样的网络模型和存储模型呢？

没有中心节点的系统从某种角度来讲，可以说每一个节点都是中心，每一个节点都能对外提供服务，同样也能从其他节点请求服务，而这也正是点对点网络模型的特性，可以说，节点互为彼此的数据生产者及消费者。

绝对去中心化示意图

另一方面，因为节点角色对等，因此每一个节点存储的数据应该是一致的，都独立地维持一条完整的区块链链式结构，即便一些节点数据丢失，但只要还有一个节点完好，历史数据就不会丢失。这有效地避免了单点故障带来的系统崩溃，相较于传统的数据灾备模式，其可靠性可以说是万无一失。

当然，去中心化只是一个理想化的状态。现阶段来说区块链去中心化本质上是相对去中心化，我们也可以叫做多中心化。我们在理解概念的时候，不仅需要理性思维，更要学会使用感性思维去接受中间过程的渐变。

相对去中心化示意图

可追溯性

在门禁系统中，每把锁记录了业主的相关信息，是跟业主一一绑定的，这就可以在异常情况下对破坏规则的业主进行追责，比如忘记锁门而导致外来车辆进入小区，这体现了该系统的可追溯性。

在实际区块链运转中，同样是完成信息追溯这件事儿，道理虽然相通，但是更为复杂，我来给你说一说。

对单个节点来说，区块链可以被认为是一个时序数据库。每一次对系统的操作，实质是在每个节点数据库中存储了相应的数据及日志。且每一份数据都不是离散的存储，而是按时间顺序前后关联在一起，新的数据一定是从某一组之前已存在的数据派生而来。

依照这种关联，如果想回溯数据的状态变更历史是很容易的，只需要依次往前查找，一定会找到数据的初始状态。

而这一切都依赖于区块链存储技术，存储主要关注数据结构以及数据关系，包括交易以及区块的数据结构，交易与区块的关联关系，区块状态的存储模式等等。

不可篡改

另一个技术特点是不可篡改，这是一个比较容易被初学者搞混的概念，所谓篡改，就是私自的不被认可的修改，而不是不能修改。

我们回顾例子，可以发现业主手中的钥匙与锁是一一对应的，没有钥匙或者用错误的钥匙，车辆都是进不了小区的。

社会车辆要想进入小区，可能会采取盗用某一业主身份，多配一把钥匙或者添加一把锁，这就是篡改。而只要被业主委员会发现，就会及时纠正错误，将社会车辆清理出去，也就实现了不可篡改。

在区块链中，实现不可篡改需要两种技术来保障。前面例子里“锁”的功能由密码学技术实现，而“业主委员会”的角色则是由共识算法来扮演。

前面我们讲过，单个区块链节点中的数据是按时间的先后顺序串联存储的，而串联的关键就利用了密码学中的哈希算法。

哈希算法可以把一段数据变换成固定长度的数据指纹，而且只要数据有细微变化，得到的指纹也是大不一样的。通过这个方法，我们可以将前一时间段的数据指纹与后一时间段数据整合在一起。周而复始，后一时间段内的数据永远都会包含前一时间段的数据指纹，这样就形成了一条由数据指纹串联的信息链条。

数据指纹串联示意图

如果有一个作恶者想要修改中间某一时间段的数据，那么依照哈希算法原理，其对应的数据指纹则会改变。因此他不得不依次修改后续的每一个时间段的数据，否则数据链条就会在他修改的这一刻断掉，不再具备可追溯性。

篡改数据指纹示意图

我们可以把困难进一步放大，想一想如果作恶者真的把本地节点的所有数据都篡改一遍，又要怎么应对呢？

这时候就要让共识算法出马了，它可以保证整个系统的数据不被篡改。所谓共识，就是在一个分布式系统中保持数据的一致性，而如果出现数据不一致，大多数共识算法都遵循少数服从多数的原则。

区块链网络中的每一个节点的数据都是一致的，作恶者只是篡改了自己维护的单个节点，从整个网络的维度来看，依旧是以大多数节点的数据为正确数据。

最后，我想提醒你，看问题不能只看一面，不可篡改其实是一个辩证的特性。少数服从多数的规则意味着如果作恶者能够控制大多数的节点资源，那么篡改区块链是可能的。

在一个健壮且足够分散的网络中，篡改所要付出的成本是巨大的，几乎不可能成功。而一旦成功，剩下的少数派才是妄图破坏区块链共识的作恶者，以太坊的硬分叉（不熟悉可以回看第 1 讲）就是一个典型。

总结

在这一讲中，我们用一个具象化的例子直观理解了区块链的技术特性，同时我们也在其中穿插着带入了区块链技术基础。

如果从纯技术的角度讲，区块链是新一代信息技术的重要推动力，它利用了存储、密码学、点对点网络及共识算法等基础技术的融合，提供去中心化、可追溯以及不可篡改等特性，可以用来解决互联网中的信任及安全问题，从而推动互联网从信息传递向价值传递的变革。

你可能觉得刚才的解读有点书面化，为了帮助你理解，我再给你分享一个通俗版本的：可以说存储是砖头，密码学是钢筋，点对点网络是混凝土，而共识算法是设计图纸，以他们为基础，揉和在一起，就构建了区块链这座精妙的上层建筑。

我想和你强调的是，区块链技术并不是教条主义地照本宣科。比特币是区块链，以太坊也是区块链，技术本身也并没有规定实现的唯一路径。

我更愿意将区块链技术理解为区块链协议，只要能满足其技术特性，人人都可以设计并实现属于自己的区块链。在后面的几讲中，我会着重为你剖析区块链技术基础，希望你知其然，更要知其所以然。

讨论

在此之前，你是如何理解区块链的呢，能否用一两句话简短地说明？这一讲以后，你对区块链概念的理解有何变化？

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。

扩展阅读

如果你要进一步了解关于区块链技术的定义，我推荐你阅读Blockchain Technology Defined及What is blockchain technology?这两篇文章，里面有更详细的介绍。

好，我是赵铭，我们下一讲见！

04 | 存储：区块链的存储设计有定式吗？

你好，我是赵铭。

上一讲我们从直观的角度，用“铁索连环”的例子和你探讨了区块链技术特性，也顺便引出了区块链技术基础。从今天开始，我会用几讲的时间为你解释每一种技术在区块链中的最核心应用，以点带面，为你勾画出区块链技术体系。

这一讲我会带你深入单个区块链节点，让你了解区块链存储是如何设计的。其实一说到存储设计，我们首先想到的是区块链里如何存储数据，以及要使用哪种数据库这些常规定式内容。但在我看来，这些都只拘泥于存储设计的表面。

想要真正把握住区块链存储的要点，我们更需要把握的是交易、区块还有状态这三个基础概念，有了这些基础，你再去分析区块链存储设计就会驾轻就熟了。

这里我为你准备了一张区块链的存储示意图，现在你可能还不太理解图里的逻辑关系，不过别担心，学完这节课之后，你就能真正理解后面这张图了。

区块链存储示意图

交易

我们首先需要理解的概念就是交易（Transaction），这是区块链中的最小也是最核心的知识点。因为我们最初接触区块链大多从比特币开始，所以我们通常会把交易理解成转账，但其实这个理解比较片面。其实在区块链中，交易的概念已经有所扩展。

从行为的角度解释，交易等同于操作（Operation），我们向区块链网络提交一笔交易实质上是发起了一个操作，而操作的具体内容与特定区块链协议有关，比如在以太坊中，一个操作可能就是执行了智能合约中的一个方法。

而如果我们从计算机技术的角度分析，交易实质就是原子事物，只是翻译的不一样，它们的英文都是 Transaction，交易是区块链网络中数据的最小的组成部分。一笔交易提交后，它只能有两种状态，要么成功要么失败，不可能存在成功了一半的情况。

不同区块链对交易的定义虽然一致，属性字段却有所差异，但却不影响我们抽象出一个通用的交易属性模板。需要注意的是，并不是所有的区块链都遵循下图中的规则，此处只是方便你理解交易主要有哪些属性。

交易属性示意图

从图中我们可以看到，一笔交易通常有 8 个属性（交易哈希本身也是一个属性）。From 跟 To 分别指向交易的发起方及接收方，这个很好理解，比如一笔货币的转账当然需要有转钱的跟收钱的。

跟智能合约相关的属性有三个，智能合约标识的是当前这笔交易要执行智能合约的名称，随后附带了执行智能合约对应的方法以及执行该方法时应该附带的参数列表，不同方法可能有着不同长度不同数据类型的参数，此处统一用参数列表表示。

接下来的时间戳字段表示该交易在客户端构建的时间。这个时间是客户端独立添加的，但是我们也不用担心该时间与标准时间的差异，因为区块链网络在接收这笔交易的时候，会有交易时间的校验，过早与过晚的交易并不会被网络接受，这在一定程度上限制了作假的可能性。

最后一个通用交易字段是签名，一般情况下是 From 字段的账户进行签发的，用于向网络证明这笔交易确实是这个账户构建的，而不是其他人伪造的，主要是使用账户拥有者手中的私钥对交易进行签名，而私钥只有账户拥有者持有。就像我们平常生活中使用的印章，只不过私钥被伪造的几率几乎没有，除非被盗。

有一点需要注意的是，区块链中所有的交易基本上都是从区块链网络外发起的，区块链网络只接收交易而不生产交易，且不对交易做任何改动。也就是说，交易在客户端构建出来以后就固化了。

因此我们可以使用交易内容的哈希值作为交易在区块链网络中的标识，且该标识不在交易的字段内容中，怎么理解呢？可以这样想，身份证可以代表你这个人，但身份证并不是你人的一部分。

另外，你可能还有这样一个疑惑，如果每笔交易都是客户端独立构建的，并没有与网络中的其他参与方进行协商，那这个交易哈希不会重复吗？

这里就要用到哈希算法的性质了，哈希重复意味着产生了哈希碰撞，在我们后续的密码学章节里，我们会讲到哈希碰撞的概率跟使用的哈希算法有关，且几乎不可能碰撞。

区块

理解了交易，我们再讨论一下，要用什么“容器”来存储这些交易数据。其实这个容器就是区块，你可以这样理解交易和区块的关系，交易相当于是货物，而区块则是能够容纳多个交易的集装箱。

在前面我们讲可追溯性的时候，我们提到区块链是时间段的数据前后关联依次串联整合成的信息链条，而每一时间段的数据我们就称之为区块（Block）。

区块是指将节点一段时间内收到的所有（有效）交易打包而形成的一种数据结构，之所以将有效扩起来，是因为有些区块链的设计也包括了无效交易。直接理解概念有些抽象，我们可以参照区块示意图去理解区块的数据结构。

区块示意图

从图中看，区块的设计貌似还比较复杂，不过你也别担心，其实我们只需要理清三个关键点就能领略区块的精髓。

区块结构

第一点我们需要理清的是区块的结构，从图中看，区块分成了区块头跟区块体。

区块头包含该区块的基础属性，重要的属性主要有 4 个：前置区块哈希用于区块间的关联，交易根哈希用于区块与交易的关联，区块高度用于标记当前区块在区块链中的位置，方便定位，而时间戳记录了区块打包的时间。

区块体则只有交易，且交易是有先后顺序的，一般是按照交易的时间戳字段进行排序。

区块间关联

第二个需要关注的点就是区块间的关联关系，这点我们已经多次提到，每一个区块都会包含前置区块哈希作为逻辑关联两个区块的那个锚点。

区块哈希跟交易哈希类似，是区块的外置属性，在区块构建完成后才能得到。如果我们从当前区块一步一步往前追踪，最终会找到创世区块，而创世区块也是有前置区块哈希的，只不过是一个空值。比如你可以通过以太坊浏览器查看创世区块的前置哈希。

以太坊创世区块前置哈希示意图

区块与交易

最后一点就是区块与交易的关联关系。虽然我们前面用了一个形象的比喻，把区块和交易想象成集装箱和货物，但我们并不明白其中的原理。从概念上理解相对复杂一些，这主要是因为引入了一个不常见的数据结构：默克尔树，我们可以先了解一下它。

默克尔树是一种树状结构，一般情况下至少有三层，分别是叶子节点，中间节点以及根节点，中间节点的层数取决于叶子节点的数量，叶子节点的数量越多，默克尔树的深度就越高。

它的构建逻辑是这样的：相邻的叶子节点进行哈希运算，得到的哈希值作为这两个叶子节点的父节点。然后同样的逻辑依次往上，最终倒数第二层仅剩的两个中间节点经过一次哈希运算得到他们的父节点，也就是整棵树的根节点，这样由哈希值构成的默克尔树就构建完成了。

对照前面的区块示意图我们可以发现，区块体中包含的交易所对应的交易哈希，可以作为默克尔树的叶子节点，然后依次往上进行哈希计算，最后得到的根哈希就是区块体所有交易的交易根哈希，这个数据将会记录在区块头中。

看到这里，你可能还有一个疑问，为什么要这么麻烦地引入默克尔树呢？为什么不直接把所有的交易揉在一起，取一个哈希就够了呢？

我们知道，对数据进行哈希计算得到的结果是可以作为数据指纹使用的，那也就意味着，哈希可以作为一种数据校验机制。

你可以想象一下，要是此时区块中有一笔交易被作恶者篡改了，如果我们设计交易根哈希的时候，仅仅对所有交易取一次哈希。那在数据校验不通过的时候，就很难找到被篡改的交易，尤其是在交易数量特别多的时候。

而如果我们使用了默克尔树，叶子节点哈希的任何变化都会传递至其父节点，一层层向上直到根节点，这就意味着根节点的值其实包含了所有叶子节点的哈希，但是却将可能被篡改的交易分开处理了，这样一旦出现问题，我们很容易就能判断出出错的分支。这提高了数据校验的灵活性，减少了很多不必要的资源浪费。

通过以上对区块逻辑上三个关键点的梳理，我们理清了区块设计的脉络。区块链之所以叫区块链，从字面理解，正是因为区块这种特殊的数据结构决定的。

状态

说完交易以及区块，我们再来理解一个经常被遗漏的概念就是状态（State），可能你之前从未听过，但它的作用却不可忽视。

在区块链中执行的每一笔交易都有一个输出，而状态就是交易执行后输出的累积。怎么理解呢？举个简单的例子：

2 + 3 + ( 4 * 7 ) + ( 8 - 9 / 3 ) + 23 = 61

“=”左边的每一个加法旁边的表达式我们可以认为是一笔交易记录，“=”右边的 61 则是交易执行后累积后的状态。

有限状态机

那么我们可以发现，即便丢失了表达式的结果，但是只要我们还记着表达式，我们就可以再重新计算出对应的值，而这就是有限状态机的概念，即在一个封闭的系统中，如果状态起始条件一致，状态改变条件顺序一致，最终一定会得到一致的结果。

而区块链就恰恰按时间顺序记录了所有的交易，因此即便丢失了状态，我们也可以很容易地重放状态，只要我们按照顺序再执行一次交易即可。所以从某种角度来讲，区块链也是一种有限状态机。

那你可能会问了，既然可以重放状态，为什么还要保留状态呢？我们不妨做一个情景假设，如果你现在正在执行一笔交易需要某个输入，而这个输入跟之前中间某个区块里某笔交易的输出有关。

如果不保留状态，你在执行这笔交易之前，就得重新执行相关联的交易，而那笔交易可能又与更早的另一笔交易有关，因此得一直回溯，直到找到源头为止。

所以从理论上来说，不保留状态是可以的，但是这就需要承担这种设计带来的相应后果。

与数据库的异同

如果你还是觉得状态这个概念不好理解，我们还可以从与数据库对比的角度来解释状态。我们与数据库进行 CRUD 交互的时候，在数据库中插入、更新、删除的记录就是所谓的状态，而你执行的每一条语句就是交易。换言之，如果你将从数据库创建到建表，再到插入数据、更新数据、删除数据等操作的所有 SQL 语句导出，换到其他地方，你也可以重放出一个一模一样的数据库出来。

区块链跟数据库都保存了历史操作记录跟状态数据集合。只不过数据库更看重状态，而区块链却以记录历史区块为主，状态为辅。正所谓一个活在当下，一个怀念过去。二者的逻辑并没有什么本质上的区别，只是侧重点不一样。

状态模型

了解了状态的设计理念，那你可能要问了，状态在区块链中是如何表现的呢？根据区块链的定位的不同，我们大致可以将状态模型的设计归纳为三种模型。

一种就是以比特币为首的专注于数字货币的区块链使用 UTXO 模型，即未花费的交易输出（Unspent Transaction Outputs）。在此模型中，每一笔交易都应该有 N 个交易输入，同时产生 M 个交易输出（N 与 M 可以不等）。

其中，交易输入是前序任意交易的未花费的交易输出。如果当前交易成交，该前序交易的输出也就变成了成交的交易输入，也就失去了再次成为交易输入的资格。UTXO 模型能够追踪数字货币的流向：未花费的交易输入告知货币是从哪里来的，未花费的交易输出告知货币往哪里去。

另一种就是以太坊区块链采用的账户模型，通过数字的加减表示账户余额的变化。

每一笔交易的执行，都会实现不同账户间余额的动态平衡，你我之间转账，你支出了 1 块钱，你的账户余额减 1，同时我的账户余额加 1，这种模型更符合我们日常生活的认知。同时，账户模型除表示余额以外，也支持自定义数据的存储，可以在基础账户之上衍生出智能合约数据存储。

而最后一类通用模型在账户模型的基础上更进一步，没有内置状态属性，可存储任意自定义数据，被广泛应用在联盟链中。联盟链的定位是支持企业级应用的区块链平台，而企业业务的种类及模式是无法预知的，因此无法在设计中内定状态模型。

既然众口难调，所以干脆将状态的设计工作留给企业应用开发者，状态可以自定义，而链本身只提供通用数据接口。

从三种状态模型的设计及应用场景看，状态模型的选型没有唯一解，只要是能满足应用场景的模型设计就是好的模型。

总结

这一讲我们主要深入到单个区块链节点，侧重了解了区块链存储的要点，主要讲解交易、区块两个数据结构及区块链状态模型。而我也并没有以具体的设计方案作为讲解重点，因为无论多么新颖，多么创新的区块链平台，其最基础的设计都逃不脱这三点。

区块链存储的设计没有定式，而只要你真正理解了交易、区块以及状态，你就是下一个区块链存储架构师。

讨论

1. 通过这一讲，你是否对区块链状态有所共鸣？从你的角度来看，是区块更重要还是状态更重要，为什么？

2. 如果让你设计具体的区块链落盘方案，你会如何组织这三者的数据？

扩展阅读

关于默克尔树的详细解释，我推荐你阅读默克尔树究竟是棵什么树？这篇文章

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你把这节课分享给自己的朋友、同事。

05 | 密码学：为什么说区块链站在了巨人肩膀上？

你好，我是赵铭。

在数字社会的今天，我们的工作生活离不开密码学，可以说离开密码学，我们就像是在网络世界中裸奔，毫无隐私可言。然而普通大众可能对密码学知之甚少，它就像是一位低调的守护者，默默维护着网络世界的安全。

区块链中也大量使用了密码学算法，前面课程里我们就多次提到过。比如哈希算法以及区块链存储中讲过的交易签名，它们都属于密码学算法。那今天这一讲，我就为你详细讲讲区块链中常用到的密码学算法。

密码学与区块链

在深入密码学算法的学习之前，我想先为你理清密码学与区块链的关系。中本聪在比特币白皮书中开篇就说，比特币是基于密码学构建的去信任数字货币。我认为他把密码学与区块链的关系说得很清楚，密码学是因，区块链是果。

怎么理解他们之间的这种因果关系呢？可能有的同学会认为是区块链需要有可追溯，不可篡改等特性，所以中本聪才设计了几种密码学算法去支撑他的构想。但这是完全错误的，属于颠倒黑白的想法。

密码学是先于区块链产生的基础学科，有完备的理论及技术体系。是中本聪及其先行者们在理解及运用密码学的过程中，看到了基于密码学创造数字货币的可能性。正因为哈希算法有校验数据完备性的能力，中本聪才会想到利用区块哈希前后关联形成区块链；也是因为数字签名有证明所有权的能力，所以才会基于数字签名去证明数字货币所有权问题。

基于以上的分析，我想你已经明白区块链之所以有独特的性质，是因为密码学中的某些算法已经有了这些性质的雏形，只不过是区块链是将这些算法加以揉和，最终以一个整体呈现给我们。

理清楚了密码学与区块链是什么关系，我们再来说说区块链中的密码学，区块链用到的密码学算法有很多，且不同的区块链使用的算法也有所差异。

但总的来说，你只需要理解两类基本算法就可以，那就是哈希算法以及非对称加密算法，而且学习密码学跟学习其他技术不太一样，理解密码学原理需要深厚的数学功底。

其实工程师完全可以把密码学当作黑盒，你不需要太关注其技术原理，而只需要理解它的特性以及应用场景就可以了。

哈希算法

我们先一起看看之前提及比较多的哈希算法，哈希算法又称散列函数，它可以将任意长度的数据转换成短的、固定长度的数据指纹。

其实哈希算法不是只有一个固定的实现，而是一类算法的统称，比如常用的有 MD5 跟 SHA-256。要评判一个哈希算法是否足够优秀，我们有 4 个标准：正向快速、逆向困难、输入敏感和避免碰撞。

正向快速

什么是正向快速呢？这点很好理解，如果给定信息和算法规则，可以在有限的时间内计算得到信息的哈希结果。你说你设计了一个优秀的哈希算法，结果一次计算过程就花了好几秒，那只能说你的设计不够优秀，虽然时间有限，但根本没办法在真实场景中使用。

为了能给你更直观的感受，我专门写了一个程序，测试我们常用到的 MD5 跟 SHA-256 这两个哈希算法的计算到底有多快。

package main

import (
    "crypto/md5"
    "crypto/sha256"
    "fmt"
    "sync/atomic"
    "time"
)

func main() {
    data := []byte("极客时间") // 明文数据

    // 两个计数
    md5Count := int64(0)
    sha256Count := int64(0)

    go func() {
        for {
            md5.Sum(data) // MD5哈希计算
            atomic.AddInt64(&md5Count, 1) // 原子计数+1
        }
    }()

    go func() {
        for {
            sha256.Sum256(data) // SHA-256哈希计算
            atomic.AddInt64(&sha256Count, 1) // 原子计数+1
        }
    }()

    time.Sleep(time.Second) // 等待1秒

    // 输出结果
    fmt.Printf("md5 count: %d\n", md5Count)
    fmt.Printf("sha256 count: %d\n", sha256Count)
}

// 计算结果
// md5 count: 10064932
// sha256 count: 5727246

可以看到，最终得到的结果是非常给力的，在大概 1 秒钟的时间内，MD5 计算了 1000 万次，而 SHA-256 算法也计算了 500 万次。

我这里仅仅是用了一台普通的电脑，如果是在服务器上跑，相信结果会更震撼。通过这个测试，相信你对正向快速这个标准的解读应该足够清晰了。当然单纯分析哈希算法的计算速度是没有意义的，还是要将其带入到具体的业务场景中，此处只是给你一个直观的印象。

逆向困难

接下来我们看第二个标准，那就是如果给定哈希结果，在有限的时间内基本不可能逆推出原始信息。也就是说一个优秀的哈希算法是不可能通过密文反推明文的，这也就是不可逆的根源。

我们来举个例子：

# echo "极客时间" | md5sum
e0aac893629b048e8797800294f55004

这是我在电脑的命令行中执行的一条命令，得到了“极客时间”的 MD5 哈希值。

想象一下，如果我不告诉你 e0aac893629b048e8797800294f55004 是“极客时间”的 MD5 哈希结果，你能通过这段字符，反推出它代表的明文是“极客时间”吗？

不光你懵，我想计算机看到这问题也会懵，因为计算机只能通过穷举去猜结果。

当然，并不是说哈希算法就是不能够被破解的。相反，MD5 哈希可以说已经被变相破解了，既然逆向困难，那我提前穷举常见的数据组合存起来，有破解需求的时候我再回头查就好了，简单而又粗暴。

我通过 cmd5.com 查了一下“极客时间”的哈希值，发现还未被收录，说明暂时还是安全的。但现已不推荐使用 MD5，区块链中通常使用的是 SHA-256，它的安全性较高。

输入敏感

我们再看另一个标准，就是原始信息即使发生一丁点的变化，重新计算的哈希值与之前比较都应该有很大的不同。

这个标准主要是降低原始信息被部分推断的风险。如果新产生的哈希值与之前的相差不大，计算机就可以利用差异去推断变化，相比穷举，困难度当然是降低了，而这却是不被允许的。

还是来看一个例子：

# echo "极客时间 " | md5sum
a9dad13b05a8ee28df851dbcb87f3a3b

我通过在“极客时间”后面多加了一个空格，得到的哈希值跟上一个例子中的结果对比，肉眼可见有很大不同。你也可以自己在电脑上试一试，看看结果是否一致。

避免碰撞

你可能就会有疑问，以 MD5 算法为例，任意数据信息经过哈希算法后都可以得到 32 位哈希值，那不会重复吗，毕竟 32 位哈希值能表现的数据量是比较少的？

其实你只说对了一半，32 位在计算机中是用 128 位二进制数表示的值，所以实质上 MD5 哈希能表示的数据有 2128 个那么多，你如果去算一算就会发现，这其实是一个很大的数字。如果你仍然认为不够保险，那还有更高位数的算法可以选择，比如 SHA-256 及 SHA-512 等。

当然，表示的数据量大，并不代表着就不会有两个不同的数据得到相同的哈希值，这确实在实践中已经出现过。所以，在设计哈希算法时，应该避免不同的明文信息产生相同的哈希值。

区块链中的哈希

现在我们了解了优秀哈希算法评判的 4 个标准，相信你对哈希算法的特性已经有所认识了。那区块链中是怎样应用哈希算法的呢？我们接着往下说。

因为哈希算法相当于是对信息提取摘要，是数据的指纹，因此经常被用于数据完整性的校验，而区块链在此基础上又做了适当的延伸。

区块链中用到哈希算法的地方主要是交易哈希和块哈希，主要功能就是校验交易及区块的完整性，以及充当区块链网络中交易及区块的唯一标识。说到这里，你有没有想到上一讲我留下的第二个讨论题？

没错，在区块链数据落盘的时候，我们就可以使用交易哈希、区块哈希分别作为交易及区块的数据主键，只要保持了数据与标识对应索引关系，就可以把交易跟区块存储在任意数据库中。

区块哈希还有另一个作用，区块属性中包含了前一个区块的哈希，从而构建成一条由区块哈希关联的数据链条，所以我们称区块链为哈希链也不为过。利用哈希算法对输入的敏感性，作恶者如想篡改区块链数据，必须从被修改处开始依次修改后续的全部区块，哈希算法的加入增加了作恶者篡改的成本，可以说是哈希算法成就了区块链单节点的不可篡改特性。

非对称加密算法

讲完哈希算法的内容，我们再将目光转向非对称加密算法。说到非对称，肯定有与之对应的对称加密算法。

顾名思义，对称与非对称体现在对密钥的处理上。对称表示加密和解密都使用同一套密钥。而非对称加密却不一样，分为公钥跟私钥，如果使用公钥加密，只有用对应的私钥才能解密，反之亦然。那既然有了对称加密算法，为什么还要发明非对称加密算法呢？

这里我用一个快递的例子帮你解惑。你在外地打拼，给远在老家的父母寄了一份珍贵的礼物，用一个精美的盒子做包装。为了礼物不被破坏，其实最好的方法就是你亲自送回家，但这不现实，你只好发快递。

而父母收到你的礼物非常高兴，他们立马也快递给你一些老家的土特产，用的正是你送礼物的那个盒子。就这样来来回回好几轮，原来精美的盒子已经变得残破不堪，甚至可以透过盒子看到内部的物品，也很容易丢失。

这个例子让我们形象地理解了对称加密的不足。其中礼物跟土特产就是需要交换的信息，而那个起初精美的盒子就是密钥。

对称加密算法要想保证密钥不被泄露，最好的办法是面对面协商，而且即便是面对面协商了密钥，后续也不能多次使用，否则使用次数越多，泄密风险越高，且不能保证中途没有其他人篡改。

还是用快递的例子，为了能保证快递物品不丢失，这次过年回家你给父母买了个快递保险箱，共两把钥匙，父母一把，你留一把。这样后续再寄快递时，就可以把物品放在保险箱中，这样就算用快递运输，也不用怕物品被调包了，因为除了你跟父母之外，没有人可以再打开保险箱。

这里的保险箱就相当于公钥，而钥匙就相当于私钥。这个“保险箱”方案，其实在密码学里就对应着非对称加密算法的思想。

非对称加密算法的密钥是一对，分为公钥跟私钥。公钥可以随便公开，而私钥需要私密保存，而只要私钥不被泄露，信息交换过程就是安全的。当然这个例子还是与非对称加密有所差异，真正的私钥应该只有一份。

非对称加密算法虽然解决了对称加密算法使用过程中遇到的问题，但其加解密的效率是远不如对称加密算法的。因此，在使用过程中常采用混用的方式，即明文数据采用对称加密算法进行加密，然后使用非对称加密算法加密对称加密的密钥和明文数据哈希，对方收到信息后，用匹配成对的另一个密钥解密数据并核对明文数据哈希，混用的方式可很好的平衡安全性与时效性。

非对称加密算法跟哈希算法一样，也是一类算法的统称。现用的比较多的是 RSA 跟 ECC 椭圆曲线加密算法，RSA 多用于互联网信息传输中，比如我们上网用到的 https 通信，而在区块链中基本都使用的是 ECC 类的变种，比如 ECDSA 跟 ED25519 等。相较于 RSA，ECC 密钥较短，在拥有更高安全性的同时还有更好的性能。

非对称加密算法的原理较为复杂，其推导过程是严密的数学推理，此处不再展开，你如果感兴趣，可以参考扩展阅读中的内容。

区块链中的非对称加密

了解了算法的特性，我们再回过头来看区块链中是如何使用非对称加密算法的。你如果之前了解过区块链，就会发现在区块链中，好像并没有哪个地方使用非对称加密对数据进行加解密。的确，区块链中对非对称加密算法的使用并不是直接被用作数据加密，而是利用其具备身份确权的能力，也就是数字签名。

什么是数字签名？顾名思义，其实跟我们平常手写签名的概念及作用是一样的，都是用于证明你的身份，且对所签署的文件或者数据进行确认授权。

在诸如比特币以太坊等公有链中都有类似于地址、账户的概念，我们可以认为这就是区块链中的身份证，这个身份证不同于现实中需要政府统一颁发，而是分散的基于非对称加密算法的公钥的一种形变表示。

这里可以引申一个小知识点，你通过数字货币手机钱包创建了一个账户，此时区块链网络并不知道，只有当你接收到一笔转账之后，网络中才有你这个账户的信息。

那如何确认这个账户是属于你的呢？道理非常简单，只要你能证明你可以花费账户中的余额就可以了，而这证明的关键就在于数字签名。既然账户是公钥的形变表示，那么必定存在与之对应的私钥，且只存在你的手中。

那数字签名到底是怎样的原理呢？我结合上一讲交易结构中的交易签名来给你讲一讲。

交易结构示意图

我们可以将交易结构分成两部分，左边部分是交易的基本属性，而右边只包括签名。

如果我们不看签名，其实左边部分已经能够基本表示交易的内容了，只是缺少了证明。因此我们将左边部分看作一个整体，然后对它进行哈希计算得到交易摘要，接着用你手中的私钥对交易摘要进行加密，而加密的结果就是交易的签名。

而如果要验证交易，只需要按照相反的流程进行就可以了，将交易签名使用对应的公钥解密得到签名中包含交易摘要，同时将明文的交易内容利用哈希算法再计算交易摘要，然后将签名中的交易摘要与自主计算的交易摘要进行对比，如果匹配，则表示交易验证成功。

数字签名示意图

数字签名的本质也是一种加密，只不过针对的是数据的哈希摘要，并不是数据本身。这么做有什么好处呢？主要有两点，一方面证明了确实是你自己构建的这笔交易，因为其他人没有你的私钥，无法假冒。另一方面，因为数字签名是有哈希算法参与的，因此也继承了哈希算法的特性，能保障交易的完整性，确保了交易不会被他人无故篡改。

总结

这一讲我从哈希算法跟非对称加密算法为出发点，为你浅析了区块链中常用到的密码学算法。

哈希算法被用来抽象交易哈希跟区块哈希，除了用于保证数据完整性外，还能用来构建由区块哈希关联的哈希链条，增加作恶篡改的成本。

区块链中使用非对称加密算法并不是直接用于数据加密，而是主要用作交易签名，数字签名集成了哈希算法与非对称加密算法的双重特性，在保证交易完整性的同时，还能证明交易发起者的身份。

区块链中并不是只用到了哈希跟非对称加密，几乎所有的区块链都在此基础上做了些许的衍生，比如追求隐私交易的 ZCash 就引入了密码学中的零知识证明，专注于隐私计算的区块链就引入了同态加密等等。

密码学的知识浩如烟海，现在区块链用到的只是冰山一角。通过今天的学习我们可以发现，正因为有了密码学的加持，区块链就好像站在了巨人的肩膀上。

讨论

你通过数字货币手机钱包创建了一个账户，此时区块链网络并不知道，只有当你接收到一笔转账之后，网络中才有你这个账户的信息。你知道这是为什么吗？

如果说数字签名是公钥对信息摘要加密而产生的，结果会怎么样？还会有现在这种效果吗？

扩展阅读

对于密码学整体发展的历史，你可以参考密码学初探。

这一讲重点讲解了区块链中最常见、最基础的密码学算法，想了解更多关于区块链中涉及的密码学的门类，可以阅读 V 神列的知识清单。

如果你看得还不过瘾，想了解文中介绍的密码学算法原理，可以参考这几篇文章：哈希算法原理，RSA 加密算法原理以及ECC 椭圆曲线加密算法介绍。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

我是赵铭，我们下一讲再见。

06 | 网络：先有去中心化还是先有点对点？

你好，我是赵铭。

你知道么？没有互联网，我们每个人都是信息孤岛，只能过着单机生活。我们现在很方便就能获取信息，正是依赖互联网这样的信息传递纽带。而我们常说的信息量爆炸，也是因为现在的信息并不依赖特定的源头，而是千千万万个普通人独立自主生产出来的。

其实，区块链中的网络也没什么不同，每个节点都是独立平等的信息源头。前面我曾经说过“点对点网络是搭建区块链建筑的混凝土”，但这个网络到底是怎样支撑区块链的呢？

想要理解这背后的原理，我们可以从这样一个问题开始：到底是因为区块链需要去中心化，才选择了点对点网络技术？还是因为点对点网络的启发，区块链才有了去中心化特性呢？

这是一个类似于是先有鸡还是先有蛋的无解思辨，我想将这个问题先留给你，希望你在学完这一讲之后，能有自己独立的理解。不过不管你是什么观点，这个问题里有两个关键词我们先要搞清楚，它们分别是点对点网络模型和去中心化。我们先从网络模型说起。

网络模型

为什么区块链会采用点对点网络模型作为节点间数据传递的纽带呢？要想真正搞懂这种思路，我们做个对比。

不管是点外卖还是买车票，在日常工作生活中，我们接触的大部分网络应用架构都是客户端 - 服务器模型。这个模型的运行机制是这样的：各个客户端向服务器发送请求，而服务端负责接收并处理请求，最终给客户端返回处理结果。为了让你直观理解，我还画了一张示意图。

中心化网络示意图

结合示意图，我们可以清晰认识到这是一个中心化的网络架构，其服务能力完全取决于中心的服务器，如果中心服务器因意外导致宕机，那整个服务就瘫痪了。整个应用的可用性仅依赖于服务器的活性，与客户端无关。

而点对点网络则完全不同，它是一种分布式的网络架构，并不存在单一的中心服务器。网络中每个节点的权利与义务都是一致的。每个节点都拥有向网络中其他节点发起请求的权利，同时也有着必须响应其他节点请求的义务。

点对点网络示意图

你可以想一下，节点权利与义务的对等意味着什么呢？这代表点对点网络的可用性是随着节点数的增多而增强的，网络的运行并不依赖任何单一节点，节点可以任意地加入或者退出。即使一些节点宕机或者遭受攻击，只要还有正常运行的节点，整个系统依旧可以照常运作。

怎么形象地理解二者的区别呢？我们拿银行系统来举例，如果按现有的中心化架构，有一天银行网点大面积停摆，不对外提供服务。原因可能很简单，排除网络的干扰，大概率是银行的总机房出现了问题，这就是中心化架构可能出现的单点故障。

而区块链架构则不同，一家银行就相当于一个区块链网络，每一个银行网点代表一个区块链节点，一个节点无法对外提供服务，我们可以随时切换另一个节点，一两个节点的问题不影响整个网络。当然，这个例子描述得非常极端粗暴，只是为了帮你理解，真正的银行系统架构不会这么脆弱。

我们之前反复提过，区块链是一种摒弃可信任第三方的技术手段，而中心化网络架构俨然就是为第三方中介量身打造。区块链需要摆脱中心节点的束缚，将权利与义务分散到每个节点，而采用点对点网络模型，正好顺应了这一思想。

网络拓扑

从某种角度来说，不管是先有鸡还是先有蛋，点对点网络与区块链都是相互成就的 CP 组合。

前面课程中，我说过区块链的去中心化是相对去中心化，而绝对去中心化只是一个理想状态，如果对应到点对点网络，这其实是由点对点网络的拓扑结构决定的。怎么理解这种对应关系呢？

只有一个节点的网络实质就是中心化网络，此时区块链表现为中心化。而如果网络中所有的节点两两之间建立连接，此时点对点网络可以看作是完美对称的，区块链也就表现出绝对去中心化特性。

但如果我们不那么极端，允许点对点网络在这两个极端理论值间左右摇摆，就会发现区块链网络会一直处于中心化与绝对去中心化之间的动态平衡之中，而对去中心化程度的考量主要依托于对点对点网络拓扑结构的选择。

这么说你可能还是有点懵，别担心，我们来一起理一理这中间的逻辑。相比中心化网络，点对点网络虽然优势明显，但它的不足也同样明显，那就是新的节点加入网络之前，必须知道至少一个已经存在于网络里的节点，不然这个新节点跟整个网络就是脱钩的。

这点非常容易理解：在中心化网络中，客户端要想让服务器响应自己的请求，必须先将自己的请求发送到服务器，而这就要求客户端知道服务器在哪，就像你上网必须要知道网址一样。而点对点网络则不一样，所有节点互为服务器客户端，因此节点必须知道其他节点的地址，才能加入网络。

对节点发现机制处理的不同，也就形成了不同的网络拓扑结构，下面我分别为你分析一下。

第一种结构是引入了一个中心索引节点，用来保存其他所有节点的接入信息。新节点的加入首先将自身信息传入中心节点，从而换取已在网络中其他节点的连接信息，随后与其他节点组成点对点网络，这种结构与我们使用搜索引擎进行信息检索是类似的，但存在单点故障的可能性，一旦中心索引节点宕机，新节点将无法加入网络。

中心索引网络拓扑示意图

第二种结构你可以理解成一种无为而治的结构。新节点选择连接一个已存在网络中的节点，被连接的节点可以告知新节点它连接的其他节点信息，这样新节点可以随机选择再连接到其他节点，这样就形成了一张没有规律的网络拓扑结构。

无为而治网络拓扑示意图

而第三种结构则融合了前两种结构的特点，整个网络由多个种子节点形成主干网络，而其他普通节点则连接到某个种子节点，这样就形成了整体分散局部集中的混合结构。

混合网络拓扑示意图

最后一种网络拓扑是结构化的，它跟上面讲的三种拓扑不同，节点间的连接遵循某种算法，组成了一种有序的结构化网络，比如树形网络结构。大多数结构化网络的算法都是基于分布式哈希表算法实现的，这是一种用于在大量节点的系统中快速定位目标节点的索引算法，具体原理你可以参考扩展阅读。

区块链网络拓扑

了解了这 4 种网络拓扑结构之间的差异，那区块链中到底是如何组织节点拓扑的呢？纵观前面说的比特币跟以太坊网络，你会发现它们的选择是有差异的。

比特币采用的是类似于混合型的网络拓扑结构，一个新节点的加入需要给节点指定几个已在比特币网络中的相邻节点信息，可以是普通节点，也可以是种子节点。

当建立节点间连接以后，新节点将自身信息发送给相邻节点，相邻节点再将新节点的信息依次转发给它们各自的相邻节点，从而保证了新节点信息在网络中被广泛传播。新节点也可以从相邻节点获取该节点的相邻节点信息，从而选择性地连接更多节点，增强节点自身与整个网络连接的稳定性。

比特币中的点对点网络相对简单，也更容易理解，但信息传递的效率不高，并且对网络带宽的负载要求较高，这点你看完后面交易的扩散过程就能明白了。

而以太坊的选择则不太一样，使用的是结构化网络拓扑，打造这种结构，离不开基于分布式哈希表思想的Kademlia 算法（后面简称 Kad 算法）。虽然 Kad 算法的原理比较复杂，但如果你能先理解它干了什么事，就会大大降低学习难度。

简单来讲，Kad 算法定义了一种节点间距离计算的方法，用于新节点的发现。那具体怎么计算呢？我们接着往下看。

Kad算法示意图

节点 A 首先从自身存储节点信息的 K 桶中找出 2 个与自己距离最近的节点，之后请求这 2 个节点，要求他们从各自的 K 桶中分别找出 2 个与节点 A 更近的节点。那么节点 A 最多可以得到 2 × 2 个新节点信息，随后再请求这 2×2 个新节点中距离节点 A 最近的 2 个节点，让它们再分别返回与节点 A 距离更近的 2 个节点，整个过程持续迭代，直到没有新节点被发现。

通过这种办法，节点 A 只与自己距离最近的节点连接，这保持了以太坊网络中节点的有序。但你需要注意，节点间的距离是逻辑距离，而并非是物理距离，也就是说即便两个以太坊节点运行在同一台电脑上，它们之间的逻辑距离也可能无限远，这是算法本身导致的，就比如图中的节点 C 明显离节点 A 更近，但这只是表象，逻辑距离还是 D/E 更近。

通过对比特币以太坊对不同网络拓扑的选择，我们可以发现，区块链中选择网络结构是没有定式的，没有唯一标准。

如果你熟悉联盟链技术体系，就会发现联盟链对点对点网络的重视程度不如公链，主要有两方面原因，一方面联盟链的节点是确定的，很少出现随时加入，随时退出的需求；另一方面联盟链节点个数比较少，并不需要节点发现机制引导新节点的加入。

交易的扩散

有了前面基础知识的铺垫，我们终于可以将交易通过网络流动起来了，接下来我们通过交易的扩散进一步加深对网络的理解。

之前我们讲过，区块链网络不生产交易，而只是交易的搬运工。从区块链网络示意图中可以看到，在区块链网络外围有大量的手机、电脑、汽车等外联设备，这些设备与任意的区块链节点连接，就能从该节点获取与自身相关的信息，诸如余额、历史交易等等。

同时，外联设备所构建的交易会随之发送到与之相连的节点，所以它们是区块链网络的交易源头。

区块链网络示意图

那么外联设备将交易发送至某一区块链节点之后，交易在区块链网络中又是如何扩散的呢？

后面这张简化区块链网络示意图，可以让你直观感受一下这个扩散路径，这里需要着重观察箭头的指向。

交易扩散示意图

我先帮你理一下交易扩散的通用逻辑，当交易被发送至连接节点后，节点随后就将交易发送到了和它连接的、相邻的其他节点，其他节点依次将交易扩散给其连接的节点，而最终会有一个时刻，所有的节点都会收到该交易。

这非常类似于我们传递八卦的场景，一个朋友给你透露了一点小秘密，你没把持住告诉了其他朋友，然后一传十，十传百，最终你们这个小圈子基本上都知道了这个小秘密，是不是非常形象？所以这种模式我们也很生动地起名为八卦（Gossip）协议。

理解这种传播过程是相对容易的，但是我们应该注意到不同网络拓扑对重复接收相同交易处理上的差别。

以太坊网络的节点只与自己最近距离的相邻节点连接，交易的扩散并不存在回路的可能性，它的扩散路径更像是一种单向的持续向外广播，就像水永远只向低处流一样，交易会逐渐远离最初的节点，交易扩散效率较高。

而比特币的交易扩散对此的处理则有所不同。它的网络拓扑是随机的，交易扩散的时候是扩散至与之连接的节点，但扩散前并不知道对方是否已经接收过相同的交易，因此网络扩散的效率是较低的。

随着网络节点规模的扩大，节点间连接关系更为无序，大量的网络带宽浪费在对交易的重复扩散中。节点接收到重复交易并不会再次理会，而是直接丢弃，白白做了无用功。你看，比特币的网络拓扑虽然结构简单，但也为此付出了代价。

对区块的扩散也遵循交易扩散的通用逻辑，只不过此时并不需要外联设备的参与，而是由首先满足共识条件的矿工节点发出，你可以先留下一个印象，等下一讲我们学共识算法的时候，我再详细讲解。

总结

点对点网络是区块链中最常用的网络交互模型，相比于中心架构的客户端服务器模型，每个节点具有对等的权利与义务，与区块链的去中心化特性相得益彰。

但点对点网络节点发现机制比中心化网络复杂得多，对此处理的不同衍生出中心、随机、混合及结构化等不同的网络拓扑结构。不同区块链有不同的选择，影响了区块链网络对交易及区块扩散处理上的不同。

其实，区块链中是先有去中心化思想还是先有点对点网络的启蒙，这个问题其实不是最重要的。讨论这个问题，是因为研究二者的关系可以让你更深刻地理解区块链网络。而在最后，我也想给出我的观点倾向，我认为是点对点网络的思想启发了中本聪，让他想到利用其无绝对中心的特性去构建去除第三方中介的数字货币系统。

讨论

区块链技术到底是因为需要去中心化特性所以选择点对点网络，还是因为点对点网络的启发区块链才有的去中心化特性，你是如何看待二者间的因果关系呢？

扩展阅读

分布式哈希表的知识我并没有展开，但是你可以通过DHT 分布式哈希表以及死磕以太坊源码分析之 Kademlia 算法这两篇文章了解其原理，在我看来里面写的内容也相当精彩。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

07 | 共识（上）：拜占廷将军也讲少数服从多数？

你好，我是赵铭。

在上一讲中，我提到交易扩散的时候，说过交易自连接节点开始逐步向外扩散，最终会有一个时刻，所有的节点都可以收到该交易。这也就意味着去中心化网络中，想要实时保证每个节点数据状态一致比较困难，网络越分散，数据扩散的时间也越久，一致性也越难以达成。更不要说还存在专门搞破坏的作恶者，故意阻碍一致性的达成。

因此，就需要专门有一种机制去协调，使其在一定程度上约束节点的行为，来保证整个区块链网络保持状态的一致性，而这也就是这一讲要学习的共识算法。共识算法可以说是区块链技术的核心思想，是区块链运行的行为准则。

我会通过两讲的内容，带你快速理解区块链里的共识算法。为了让你轻松理解共识算法，这节课我会用一个故事为你解析共识背后的基础知识点，而下一节课再将知识点融入到区块链中，为你详细剖析区块链中是如何解决共识问题的。

拜占庭将军问题

话说在拜占庭帝国，9 位将军分别率领一支军队要共同围困一座城市。但是这座城市军事实力很强大，如果不协调统一将军们的行动策略，部分军队进攻、部分军队撤退会造成围困失败。

因此，各位将军必须通过投票达成一致策略，少数服从多数，要么一起进攻，要么一起撤退。

因为各位将军分别占据城市的一角，他们只能通过信使互相联系。在协调过程中，每位将军都将自己想“进攻”还是“撤退”的消息通过信使分别通知其他所有将军，这样一来每位将军根据自己的投票和其他将军送过来的投票，就可以知道投票结果，然后决定是进攻还是撤退。

但不幸的是，将军中可能出现叛徒，他们可能会选择性地投票，具体来说就是投错误的票，或者干脆不投票。假设 9 位将军中有 1 名叛徒，8 位忠诚的将军中出现了 4 人投“进攻”，4 人投“撤退”，这时候叛徒可能故意给 4 名投“进攻”的将军投“进攻”，而给另外 4 名投“撤退”的将军投“撤退”。

这样在 4 名投“进攻”的将军看来，结果是 5 人投“进攻”，选择发动进攻；而另外 4 名将军看来是 5 人投“撤退”，从而选择撤退。这样，一致性就遭到了破坏，围困城市的计划也就破产了。

另外，因为将军之间需要通过信使交流，即便所有的将军都是忠诚的，但派出去的信使也可能被敌军截杀，甚至被间谍替换，也就是说将军之间进行交流的信息通道是不能保证可靠性的。所以在没有收到对应将军消息的时候，将军们会默认投一个票，例如“撤退”。

以上就是整个故事的描述。如果是你，你会觉得这个问题有解吗？有没有什么办法，可以确保即使有叛徒存在，也能让所有的将军都得到一致的进攻或撤退命令呢？你不妨先想一想。

为解决这个问题，我们可以先简化下模型，因为此处共识的基础是少数服从多数，那么最小化模型的将军数就是 3 个。我们分别以 A、B、C 来指代三位将军，再假设有一位将军是叛徒，且只有一位将军发起投票，我们一起来推演一番。

A 将军分别向 B、C 将军发出“进攻”的命令，B、C 将军分别会收到 A 将军的“进攻”命令。

此时如果 B 将军是叛徒，他可能会告诉 C 将军，他从 A 将军那里收到的是“撤退”命令。那么 C 将军就会发现他收到了自己从 A 将军那里直接得到的“进攻”命令，以及从 B 将军那里间接得到的 A 将军的“撤退”命令，因此 C 将军无法判断 A 将军到底是想要“进攻”还是“撤退”。这种情况是无解的。

我们再来看另一种情况：

我们假设 A 将军是叛徒，他告诉 B 将军我要“进攻”，同时呢，又告诉 C 将军他要“撤退”。而当 B、C 将军交换自己从 A 将军那里得到的命令时，彼此都发现从 A 将军那里得到的是一个“进攻”，一个“撤退”。局面陷入僵局，他们无法就 A 将军的命令达成一致。

通过分析以上的这两种场景，我们可以发现，在最小化模型中只要有一个叛徒，拜占庭将军问题就是无解的。也就是说，这个问题要有解，叛徒的数量不能大于等于所有将军数的 1/3。

如果有一个叛徒，则必须要 4 位将军参与，两个叛徒就必须要有 7 位将军参与。而原本故事中的 9 位将军，要想达成一致，最多只能容忍 2 位叛徒的存在。你可以试着用上面的思路，重新推演一遍，验证下是否准确。

你可能还会有点小疑惑，C 将军从 A 将军那里得到“进攻”的命令，而自己也想“进攻”，那么我已经有了两个“进攻”的命令，何必要理会 B 将军的“撤退”命令呢？

2>1，显而易见，在 C 将军这里已经达成了共识。这其实也是大多数人学习理解共识算法的一个误区，当初我学习的时候也是很难理解，为何要如此纠结地交换信息。

这个问题我们可以从两方面来解释。一方面，在我们日常工作生活中，对问题的表决往往是实时的，要么面对面，要么通过即时通讯软件。实时可以杜绝两面派的可能性，也就是没有叛徒，而且也没有必要互相询问自己收到的是什么命令，因为命令是实时广播，大家接收到的是相同信息，达成共识只需要一次决议就够了。而在这个故事中，将军们之间无法面对面交流，信使传递消息也只能两两将军间定向传播。

另一方面呢，我们并没有真正理解只有一位将军发起投票的意思，此处想要表达的是，这一次的共识针对的只是 A 将军发出的命令，而不是在这一次投票以后就决定整体是“进攻”还是“撤退”。直接用文字描述你可能还是觉得抽象，我们不妨配合图解去形象地理解这种差异。

A将军共识示意图（B将军为叛徒）

这张示意图直接描述了 A 将军就自己想要“进攻”的共识流程，图中 B 将军是一位叛徒，他向 CD 两位将军发出了错误的消息，但因为 ACD 三位将军是忠诚的，所以最后所有的将军都得到了 A 将军想要“进攻”的一致结果。

但如果想要就整体是“进攻”还是“撤退”达成一致，就必须要所有的将军就自己的观点独立发起一个共识流程。可想而知，真正在战场上传递命令投票时，信使是多么的忙碌啊。

共识的必要性

那这个故事对我们了解区块链中的共识算法有什么启发呢？乍一看好像没有什么关联性，但如果我们把将军看作是区块链节点，信使是网络。信使被截杀代表着节点间网络的不可达，而将军的叛变代表着节点想作恶。

这么一解释，有没有感觉豁然开朗呢？如果你还有疑惑，可以试着将类比带入到故事中再重新推演一番。

接下来，在将目光从故事转向区块链中的共识前，我们可以先来讨论一下共识的必要性，就是为什么一定要保持所有节点的状态一致？

我们可以反向考虑这个问题，结合我们对区块链状态的解释，状态是节点接收到交易后执行结果的累积（如果不熟悉可以回看第 4 讲）。如果每个节点接收到的交易是不一致的，那么即便现在不同节点处理同一笔交易，其前置状态也会有所不同，从而在此基础上累积成不同的状态结果。随着更多的交易被提交到区块链网络，这种状态的不一致会进一步加深。

如果我们把目光从单个节点转向整个网络，按照我们前面学习的知识点，一个区块链节点出现问题，我们可以随时切换到任意其他节点继续工作，但如果此时两个节点的状态有差别，无疑会产生不一样的结果。而这影响了区块链去中心化的特性，是不可接受的。因此，我们非常有必要引入共识算法来保证节点间状态的一致。

这里还可以引申一个知识点：为什么区块链中要引入区块的概念呢，直接交易不是更好吗，反正状态是交易执行结果的累积？

其实这就像我前面所说的，交易的扩散是有时间消耗的，最终有个时刻所有的节点都会收到该交易，但会是哪一个时刻呢？在去中心化架构中我们无从知道。

同时，交易的扩散也会受制于网络环境的影响，完全可能出现后发出的交易被某个节点先收到，先发出的交易后被收到，那这样累积的状态也是可能不一致的。

为了避免这些问题的出现，区块链是这样规定的：节点会把一段时间内接收到的所有交易打个包组装成区块。区块的构建是有确切时间点的，这样就可以保证在这个时间点前的交易有序排列，而且区块是有编号的，即便因网络问题区块并未按照编号顺序进行扩散，其接收节点也可以等待前置区块接收到以后，再累积状态。

因此，区块链中对状态的共识实质就是对区块的共识，只要区块一致状态就一定一致。当然，区块的产生是随机性的，任意节点都可以产生区块，那以谁产生的为准呢？而这也就是共识算法需要解决的问题了，我们留着这个问题下一讲解答。

总结

其实拜占庭将军问题这个故事其实并不是我的胡编乱造，而是一篇正儿八经的学术论文，可以说是分布式共识问题的鼻祖。随后，计算机科学界就在此基础上，展开了长达几十年的、关于如何在分布式系统中有节点被故意破坏的情况下达成共识的讨论。

区块链是一种非常典型的分布式系统，讨论拜占庭问题能帮助我们理解区块链共识会面临的情况。在故事之外，我们还通过去中心化特性，反向论证了共识的必要性。区块链中共识的基础是区块，区块有序地包含了交易，从而保证了状态的一致，对区块的共识就是对状态的共识。

理论只是科学，重要的还是要把理论付诸到工程实践中来。下一讲我们将具体剖析区块链中是如何在节点间达成共识的。

讨论

在 A 将军共识示意图中，在“A 要进攻”这个阶段之后，各位将军已经能够得出“A 要进攻”这个共识结果了，为什么还要再有一个“确定 A 要进攻”的阶段呢？

扩展阅读

这一讲提到的拜占庭将军问题出自这篇论文，完整缜密地描述了分布式系统达成共识可能会遇到的种种问题，你如果有时间推荐看看原文。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这节课对你有帮助，也欢迎你把这一讲分享给自己的朋友、同事。

08 | 共识（下）：区块链领域的两类常用算法

你好，我是赵铭。

在上一讲中，我们通过对拜占庭将军问题的描述及推演，引出了分布式共识的基础知识，也论证了区块链共识的必要性。而这一讲，我将为你梳理区块链中常用到的共识算法。

说起对区块链共识最初的认知，我们几乎都能想到比特币中的 PoW，也就是工作量证明算法。

其实它只是众多区块链共识算法中的一个，虽然现在区块链领域中有很多种类的共识算法，但总的来说可以分为两类，一类是联盟链中用到的拜占庭容错算法，而另一类就是公链中用到的类似于 PoW、PoS 之类的算法，而我更愿意将它们统称为激励共识算法。

因为是两类共识，理解起来肯定有差异，但是我们却可以从上一讲故事里提取共识的基础要点来进行对比分析。我大致总结了三个要点。

1. 由谁来生产区块？因为区块链是去中心化网络，节点间权利与义务是对等的，因此在任意一个时刻，任何节点都可以生产区块。但是以谁的为准呢？这是我们在理解区块链共识时需要首先搞清楚的问题。

2.什么时刻可以达成共识？分布式共识其实也蕴含一个前提，那就是需要在有限的时间内达成各节点间区块一致。如果共识过程无限期，那么共识本身就不成立了。

3.有多少节点参与了共识？通过对拜占庭将军问题的解析，我们知道共识的达成跟叛徒的数量息息相关，不同的共识对于叛徒的容忍程度是不一样的，我们常听到的少数服从多数，51% 攻击等等说的就是这一点。

只要按照以上这三点思考和推演，我们理解共识就会显得比较容易。接下来，我就带你分别梳理一番。

拜占庭容错共识

所谓拜占庭容错共识，其实就是直接超脱于拜占庭将军问题的工程实践。

在上一讲的描述中，我们其实已经通过图例说明了达成一次共识需要哪些步骤保证，拜占庭容错共识就是将这些步骤通过缜密论证推理后形成的实践。而其中最著名的成果就是《实用拜占庭容错》算法，简称 PBFT。

这个算法解释起来很深奥，但是如果我们只看示意图，其实与我前面画的 A 将军共识示意图并没有什么太大的不同，都遵循相同的逻辑。只不过我们只是故事的推演，而 PBFT 却能实实在在用在真实场景中。

PBFT示意图，来源于PBFT论文

从图中我们可以看到一个 request 被提交到 0 节点，再通过 0 节点发送给其他参与方节点，随之展开共识后续的流程。在 PBFT 中，节点被赋予主节点与从节点这两个角色，request 都从主节点发起，一次共识有且只有一个 request 存在。图中的 0 就是 request 的发起者，所以 0 是主节点。

如果从区块链角度来看，0 就是区块的生产者，且针对当前区块的共识并不存在潜在的竞争区块，也就是说在拜占庭容错共识中，主节点具有绝对的话语权。

当然，为了防止主节点作恶，节点角色是可以动态进行切换的，其他节点通过共识的结果可以推断出主节点是否是诚实节点，一旦主节点不是，则可以发起投票剥夺主节点的权利，这样就保证了系统的正常运行。

我们再从时间的角度来分析一下共识的流程，从图中可以发现，PBFT 将共识信息的流转划分成 3 步，每一步都包含着多次的信息广播通信。通信虽然需要时间，但是只要能走完整个流程，就代表着共识可以达成，而且一旦达成就不再改变，可以说拜占庭容错共识是强一致共识协议。

你可能对此有点疑问，如果遇上节点间网络通信中断，那共识不就不能够在有限时间内完成了吗？这个问题，如果我们换个角度来看，其实非常容易理解。

网络中断的节点其实可以算做一种作恶节点，虽然它的恶并不是有意的，但确实阻碍了共识的达成。而依据上一讲的结论，只要这个共识网络中作恶节点的数量并未超过总节点数的 1/3，共识依旧可以达成。就比如图中的节点 3，可以看作是因为网络问题，它并未响应任何其他节点的请求，但因为其他节点都是诚实节点，少数服从多数，这次的共识依旧成立。

另一方面，我们已经知道一次共识的达成，PBFT 需要进行多次的网络通信，而图中还仅表示的是只有 4 个节点的情形，如果将节点数进一步扩展，通信的要求就会指数级增加，因此它并不适用于有大量节点参与的场景。

这个问题也并不仅仅是 PBFT 才存在，而是任何类 BFT 的共识算法都要面临的共同问题，虽然它们或多或少都在 PBFT 的基础上作出了改进，但面临像比特币以太坊这类拥有大量节点的公链网络时，基本都束手无策。

所以，BFT 类的共识算法主要是链圈在推动，大多是用在联盟链中，因为联盟链主要参与对象是企业，有准入机制的存在，一条链的参与方不会很多也很少存在动态增删节点的情形，可以说联盟链与拜占庭容错共识是天生一对。

激励共识

然而，如果我们将目光转向公链网络，就会发现事情变得有些棘手了。比特币、以太坊等公链与联盟链除了拥有一致的区块链基本思想，其他方面可谓千差万别。

所谓公链，就代表着这是一个公开的、任何人、任何机构都可以随时随地参与的区块链网络。随时意味着网络中的节点可以任意的上线或者下线，不受任何约束。而随地意味着你可以在世界的任何地方启动节点，不管你是在珠穆朗玛峰，还是在亚马逊丛林，只要有网络，就没有人可以限制你的加入。

那在这样苛刻的分布式系统中，该如何保持节点间数据的一致呢？我以 PoW，工作量证明算法为例为你解析这类算法。

因为公链网络是公开的，没有任何人可以干涉别的节点，所以任意一个节点的动作都可以看作是网络的缩影，那任意一个节点可以生产区块也就意味着网络中所有节点都可以。那同一时刻肯定存在多个候选区块，这给共识的达成造成了不小的困难。

那中本聪干脆这样规定，虽然每个节点都可以独立的将自己一段时间内搜集到的交易打包成区块，但是你创建的区块必须满足一定的条件，否则就算区块被全网广播了，也是一个错误的区块，其他节点会拒绝接受，也就是说无法达成共识。

而这个条件就是利用哈希算法计算区块哈希，使得区块哈希以 N 个 0 开头，N 的多少取决于当前网络区块增长的速度，是一个动态调整的值。这样一来，PoW 就限制了一段时间内网络中区块提案的个数。

当然虽然增加了难度，但并不能保证在一个公开的网络中，不会有多个节点同时计算出满足约束条件的区块，并向外扩散。而且就算区块创建的时间有先后顺序的差别，但网络扩散是无序随机广播的，谁也保证不了谁会被先收到，极有可能一些节点收到了满足条件的区块 A，而另一些节点收到满足条件的区块 B，那到底以谁的为准呢？

这时候骚操作来了，区块链是区块通过区块哈希前后关联形成的链式结构，中本聪规定，比特币网络允许有多条区块链存在，但只认同节点能接收到的最长的那条区块链是全网络共识的链，其余短的区块链都是无效链。

这也就意味着，节点当前所累积的最长链可能并不是最终的结果，在某个时刻它可能收到比节点本地存储更长的链，此时节点就应该切换区块链，否则有很大概率它所维系的区块链并不是全网络共识的结果。

通过以上分析，可以发现在 PoW 共识中，并不存在对某一区块共识结果的实时确认，因为随时都有可能被其他更长链上的竞争区块替换掉。

通过这两条规定，比特币巧妙解决了如何在分布式系统中达成共识的问题。与拜占庭容错共识相比，在无节点角色区分的情况下降低了区块提案的个数，同时将一致性从强一致性放宽到最终一致性，虽然效率有所下降，但却达到了相同的效果。

这里我们还可以顺便从共识的角度，分析一下怎样保证比特币的不可篡改特性。作恶者如果想篡改区块，其目标就是要计算出满足条件的替代区块，并使得该区块所在的链成为全网中最长的区块链。

而区块哈希的计算几乎没有捷径可走，必须老老实实计算，这就要求作恶者必须拥有占比全网总的计算资源的绝大部分，才能有机会将自己篡改的区块链变成全网路中最长的链，因为你在篡改的同时，被大多数节点认可的最长的链，它也在不断地向前延伸。

此消彼长，归根到底，对比特币网络的篡改，实质是对计算资源（算力）的争夺，谁拥有更多的计算资源，谁的话语权就大，这也就是我们通常听到的 51% 攻击。

而其他激励共识算法也遵循相同的道理，比如 PoS，权益证明算法，谁拥有更多的权益，就更有机会去争夺下一个区块的提案权。再比如 DPoS，委托权益证明算法，个人的力量是有限的，但是如果把很多人手中的权益集中起来，就可以以一种联合代表的形式参与到对区块的共识当中。与 PoW 相比，无非是减少了对计算资源的浪费，但本质并无差别。

最后，我还想谈谈激励共识算法中的激励。公链是公开的网络，可以看作是一个小型的社会，所有的参与方都是基于一个共同的目标，参与到社会的建设中，但这必须需要付出一定的成本，比如 PoW 共识的成本就是对计算资源的消耗、对电能的消耗。

如果没有激励，参与者的成本无从分担，就无法保证区块链生态的平稳发展。通过激励机制，使得各参与节点能摒弃信任中介，建立一种无组织、自协作的新型生产关系网络，并以此来吸引更多节点加入，共同维持区块链的正常运转。

总结

区块链中对共识的实现是有差异的，但是其底层逻辑是一致的。在联盟链的实现中，共识基本遵循了拜占庭容错共识算法的思路，这也与联盟链的应用场景有关。

而公链网络因其开放特性，并不十分契合拜占庭容错共识，但却创新性地引入了基于激励的共识算法系列。这不仅体现了对拜占庭容错共识的简化，还革命性地引入了社会治理思想，通过调动节点的参与积极性，共同推动区块链网络的繁荣。

自此，我通过 5 讲内容讲解了区块链中最常用到的四种基础技术，区块链节点把将一段时间内通过点对点网络收集到的交易集合，通过区块这种形式打包在一起，并前后通过区块哈希进行关联，形成一条由哈希构成的链式结构，通过达成区块的共识，在去中心网络中保持各节点状态一致。

讨论

你能否通过这 4 讲的内容，将区块链的三大特性与四种技术基础之间的对应关系，用你个人的理解通俗地概括出来呢？

扩展阅读

实用拜占庭容错共识算法是理论付诸实践的一次伟大尝试，建议你抽空啃一啃这篇论文，对你了解共识算法有很大帮助。

工作量证明与权益证明是公链网络中最常用到的共识算法，其他算法都是在其基础上衍生而来，通过这两篇文章你可以了解更多的知识。

关于区块链中的激励问题，我推荐你阅读中国人民银行数字货币研究所所长姚前写的这篇文章。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你把今天的内容分享给自己的朋友、同事。

09 | 智能合约：虚拟与现实的价值锚定载体

你好，我是赵铭。

不知你对前两年爆火的游戏谜恋猫是否有印象，这是世界首款广为人知的区块链游戏。玩家可以在游戏中购买猫咪，通过配对就可以培育新猫。如果能够培育出稀有特征的猫咪，它的价值也就更高。而且每一只谜恋猫都独一无二，100% 归玩家所有，它无法被复制、拿走、或销毁。

谜恋猫示意图

在我看来，这样的云养猫游戏在某种程度上揭示了未来。这是一款具有革命性的产品，它的革命性不仅体现在扩展了区块链应用方向，而且使我们认识到：价值不仅可以通过数字货币锚定，还可以有任意独特的承载方式。

而支撑这个游戏的就是运行在以太坊上的智能合约。如果你不是立志要成为一名区块链底层架构师，那么在今后的日子里，你与区块链的交集大概率会集中在智能合约层面。

如果将区块链技术分层，智能合约就相当于区块链技术体系架构中的能力层，它是外部世界与区块链网络交互的媒介。更形象地说，如果将区块链比作智能手机操作系统，那么智能合约就是操作系统提供的、用来构建各色各样应用的基础支撑能力。

因为智能合约涉及的模块相当多，一讲内容难以面面俱到。所以, 我是这样安排的，先从原理开始，为你解读智能合约为什么可以成为价值锚定载体。然后在此基础上，用现在区块链领域里的当红炸子鸡 NFT 与元宇宙这两个概念，为你揭开智能合约的面纱。

智能合约基础

你知道么，智能合约并不是区块链的专属，其实早在上世纪 90 年代，就有人提出了“智能合约”的概念，基本可以概括如下。

以数字形式制定的一系列承诺，包括各参与方履行这些承诺的协议。

a set of promises, specified in digital form, including protocols within which the parties perform on these promises

只不过因为当时缺少有效的载体，智能合约未能进一步发展。直到以太坊出现，才将区块链技术与智能合约相结合，最终呈现在我们面前。

怎么理解智能合约的概念呢？我们不妨从“合约”开始联想，利用我们原先熟悉的知识做对比。

想想平时工作生活中的合同和协议，我们就能很清晰地认识到，智能合约跟它们的概念其实是相通的，只不过智能合约是数字形式的。

当然，智能合约跟传统合约还是有差异的。二者约束力的产生机理并不相同，传统意义上的合同协议的约束力来自于权威机构背书，一旦合同签订的多方未履行协议规定的义务，其他参与方是无权对违约方进行私自的追责及惩罚的，必须通过法院等司法渠道进行合理合法的诉求。

但智能合约则有所不同，其约束力的一部分就来自合约本身，智能合约实质就是一段计算机程序代码，因此具有极强的逻辑缜密性，说一不二，代码本身就描述了各参与方的权利及义务，以及各种条件下的处理逻辑流程，可以说代码即法律。

那你可能就有问题了，既然代码即法律，那为什么我们平时所接触到的各类软件应用并不能叫做智能合约呢？这其实就要说到智能合约约束力的另一部分了，那就是为智能合约提供运行环境的区块链网络。

那区块链网络与软件应用提供的运行环境有什么不一样呢？

结合前面几节课对区块链性质及基础技术的讲解，你会发现差异就在于区块链的特性。传统软件应用是由单一的企业机构或个人提供的个性化服务，软件的最终解释权在应用开发者，因此在特殊场景下，很难令用户产生信任感。

另外你使用了应用，其实这相当于你与开发者签订了传统意义的合同协议，约束力还是来自权威机构。而区块链网络是由网络的所有参与方共同维护的，由全体成员共同遵守的区块链协议为智能合约提供信任约束力。

智能合约的执行依靠的是交易的链外发起，一旦上链，其运行可以排除任何第三方的干扰。另外，即便是对合约执行的流程有异议，也能利用可追溯特性对智能合约的执行过程进行追踪。

正是因为约束力的不同，智能合约存在部分落地问题。因为智能合约缺乏权威法律的监管，只受制于代码约束及区块链信任约束。这样就使得在当下这样的一个时间点，普通大众还是缺乏一些对智能合约的信任感，尤其是在涉及重要的合同协定的时候，还是普遍信任权威机构。

当然，这只是新事物在推向市场时都要经历的过渡阶段。随着区块链及智能合约的不断推广，民众对区块链的信任感会加深，智能合约的普及也只是时间问题。

为什么我会这么乐观呢？这是因为以太坊不仅是将智能合约引入到区块链中，为智能合约落地提供运行环境；更是为智能合约的推广及普及提供了通道，而这也就是以太坊改进提案 EIP。

以太坊不仅提供技术能力支撑，还提供了可复用模版。入门难度降低了，对使用体验的提升影响深远。因为全世界的用户都可以提交各类以太坊改进意见稿，如果社区接收了意见，随后的以太坊新版本就会实现这些方案。这相当于在以太坊社区运营者跟用户间搭建了直通的交流通道。少数人的思路毕竟有限，但汇聚群众的智慧，平台的发展潜力就是无穷的。

而在这些改进方案中，有很大一部分方案是对智能合约标准的提议。相较于区块链对智能合约的支持，反而我更看重智能合约标准。

如果你懂一些面向对象程序编程，那么你一定会非常喜欢接口 Interface，因为它可以约束及规范具有相关性的一类行为。而智能合约标准也是类似的，可以说通过通用行为标准去引导智能合约的发展是一种捷径，价值网络的落地离不开智能合约标准的制订。

纯粹的理论描述，可能无法带给你特别深的感受，接下来我就用当前正火的一个智能合约标准 EIP-721 为例（721 就是提案编号，NFT 是提案的名称），为你说明智能合约标准对价值网络的影响。

NFT

前面提到的谜恋猫游戏背后的智能合约其实就是这个标准的由来，全称是非同质化代币，简称 NFT。既然有非同质化代币，那肯定有同质化代币。所谓同质化代币，指的就是互相可以替代，且可以进行拆分的货币。

就比如人民币，你手中的 100 块跟我手里的 100 块的购买力并没有什么区别，而且我们还可以将 100 块钱分成 2 个 50 或者 10 个 10 块。

而非同质化代币则不一样，每一个 NFT 都是独一无二，且不可拆分的。你还记得前面我们用到的房产抵押例子么，你会发现 NFT 似乎为此提供了解决思路。房产信息具有唯一性且不可复制、拆分，如果能够通过 NFT 标记房产的所有权，那么就实现了房产在虚拟世界的锚定，而一旦锚定关系成立，我们就可以在区块链网络中实现对房产的转移，这个过程会像转账一样方便。

而且，NFT 的应用场景并不止于此，我们可以通过 NFT 完成多类资产的绑定，一张照片，一幅画，一首歌，一段文字，一张门票等等，任何具有资产属性的事物都可以将其登记成 NFT，例如 Twitter 的 CEO 就想通过 NFT 将其发布的第一条 Twitter 拍卖。

NFT真实案例图

有了 NFT，我们才能够有一种手段将虚拟与现实的价值锚定。当然这并不是说 NFT 是实现价值网络的唯一手段，价值网络的搭建是离不开所有智能合约标准的支持。但是，标准的制定并不是一蹴而就的，首先市场上必定要先出现一款爆款应用，因其创新的模式引得大家争相模仿，进一步粗暴的推动此类应用达到一个顶峰，随之而来的是泡沫的破灭。

而当市场情绪变得冷静之后，有一些人会静下心来思考泡沫背后的深层逻辑，从而抽象出应用背后的蕴含的共性行为模式，进而将其总结成 EIP 提案，最终为未来类似应用场景提供标准化解决方案。

智能合约标准制定的不易，更凸显了价值网络的可贵。你也许已经迫不及待想要穿越到未来，领略价值网络时代到底多么先进。但别急，虽然现阶段价值网络还并不成熟，但其雏形已经初现端倪，那就是元宇宙，我们可以通过它窥探价值网络。

元宇宙与价值网络

如果你跟我一样曾经都是爱看书的叛逆少年，那你一定看过玄幻小说。上初中的时候，我非常痴迷于网游系列的爽文，被其中描绘的沉浸式游戏座舱深深吸引，真心希望有生之年能够体验一番。我一度以为这只是美好的幻想，但没想到，元宇宙可能会将这一切变成现实。

我第一次听说元宇宙这个词，还以为是哪个中二少年起的名字。但了解以后才知道，其实是科幻小说《雪崩》中描绘的一个称为元宇宙（Metaverse）的多人在线虚拟世界。

这一下子激起了我的兴趣，元宇宙代表的是一个沉浸式的虚拟世界，玩家能在其中进行文化、社交、娱乐等活动。相较于传统游戏，元宇宙拥有可靠的经济系统、虚拟身份与资产、更强社交性、沉浸式体验、开放内容创作等特点。可以说，在元宇宙中，除了物质是虚拟的，其他方面与现实世界无异。

与区块链技术一样，元宇宙并不是单一技术构建的，而是由区块链、游戏、网络和显示四大技术融合而成的虚拟世界。

区块链技术为元宇宙提供了去中心化的资产交易平台，NFT/DeFi 等智能合约为玩家的虚拟资产提供承载的媒介；游戏为元宇宙提供交互内容；5G 网络为数据的传输提供可靠保障；而 AR/VR 等显示技术为玩家带来更加沉浸的交互体验。

可以发现，如果抛开区块链技术不谈，元宇宙所代表的仅仅是一个比传统更加逼真的沉浸式游戏环境，还不能看作一个虚拟世界。但如果有了区块链技术的加持，就能够保障玩家的虚拟资产及身份的安全，从而在这个世界中实现公开透明的资产交易，实现价值的转移。这样看来，区块链才是元宇宙能够成为虚拟世界的关键所在。

我们对元宇宙的痴迷，绝不仅仅是因为它为下一阶段的游戏行业指引了方向，更是因为元宇宙给现实世界的价值网络提供可借鉴的思路。

探索元宇宙，其实就是在摸索价值网络。可以这样说，如同智能合约标准制定过程一样，现阶段的元宇宙就是我们期待的爆款应用，随着其不断发展，泡沫肯定随之而来，而冷静过后的抽象思考，终会为价值网络的搭建提供标准化的解决方案。

总结

没有区块链技术，智能合约仍旧只是个概念。而没有智能合约加持的区块链，在应用上就无法大展身手。为区块链“引荐”智能合约的正是以太坊，而且以太坊不但是智能合约的伯乐，更为智能合约的推广提供了标准化思路，可以说智能合约标准化是价值网络真正落地的前提。

NFT 为现实资产与虚拟价值的锚定提供可行的解决方案，实现了价值网络落地中关键的一步。现阶段，虽然离价值网络还很遥远，但我们却可以通过元宇宙的发展进程去窥探价值网络落地的思路。

讨论

如果价值网络时代真的到来，你最期待的应用场景是什么呢？为什么？

扩展阅读

如果你想了解现阶段已经有多少 EIP，以及每一个 EIP 的详细解读，你可以参考EIP 官网获取更多的内容

关于元宇宙的详细解读，你可以阅读元宇宙：互联网的下一站这篇文章

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。也欢迎你把这一讲分享给自己的朋友、同事。

我是赵铭，我们下一讲见！

10 | 技术迭代：美好背后的遗憾

你好，我是赵铭。

前面几讲我带着你深入了解了区块链技术的基本技术要点，不过我并没有与你提及关于每种基础技术的弊病，但你要知道，世界上并不存在十全十美的事物，技术也一样。

区块链技术是 4 种基础技术加智能合约的融合创新，讨论其弊病其实是很复杂的。既有区块链从基础技术那里继承的“遗传病”，也有因为融合多个技术而导致的冲突，想解决这些问题我们不得不引入新的技术修补、妥协。

技术的发展是一个渐进的平衡过程，并不存在从诞生就能一成不变的技术手段。区块链技术虽然才诞生十几年，但已经进行了多次迭代，每一次的技术更新其实都是服务于实际问题的破解。

这一讲，我会带你去探讨区块链发展过程中 3 个比较典型的共性问题。

存储冗余

还记得我讲的区块链技术特点么，第一个特点就是去中心化。而这个特点的负面作用就是导致了存储冗余，这是怎么回事儿呢？

我们还是延续之前的思路，聚焦到区块链网络节点分析。

要想实现去中心化，就要让区块链网络中所有节点都是平等的，没有服务端客户端的区别，即便其他区块链节点都失效了，只要保留了一个节点，整个网络还是可以恢复的。所以在区块链网络中，是没有绝对集权存在的。

我们推演一下，要想实现只有一个节点也能恢复的目的，就意味着每个节点都要继承区块链网络里的全套“DNA”，也就是保存从创始区块到最新区块的完整数据。这样，随着区块链网络持续运行、交易量不断增加，单节点的存储负载自然越来越多。

以上是从单个节点的角度进行的分析，如果我们将视角转换至整个区块链网络，就会发现，每增加一个节点，整个网络就多了一份数据的备份，整个系统的存储负载会随着区块链节点的增加而线性增长。

我们拿比特币 / 以太坊网络举例。截止到今年 7 月份，比特币网络已经累积超过 350G 的历史数据。这也就意味着，如果你想要在自己的电脑同步全量的比特币历史数据，需要占用至少 350G 的存储空间，而且时间越长，空间使用量就越大。

比特币空间使用量示意图

再来看以太坊的空间使用量，那就更加恐怖了。以太坊在比特币的基础上增加了智能合约，所有的使用者都可以通过智能合约存入自定义数据，所以网络越活跃，产生的数据量也就越多。目前为止，从Etherscan 网站得到的数据，按最全的节点数据统计，单节点已经有超过 7800G 的历史数据了，而且有加快增长的趋势。

以太坊空间使用量示意图

接下来，我们再分析一下数据量增长会带来怎样的影响。虽然随着技术的发展，磁盘的成本在逐渐降低，区块数据的增长不会线性的增加存储成本。站在参与节点的角度来看，每个节点只保留一份区块链数据，成本是分摊给了网络的每一个参与者，并不会因为存储而增加额外的成本。

但终究会有一个时间临界点，会导致独立节点的存储使用量超过现阶段个人电脑的存储上限，而这也就会失去大量的小节点，从而导致去中心化程度的降低，不利于区块链网络的持续长久发展。而且，随着数据量的增多，通过网络同步区块数据也变得越来越困难，有些节点同步区块的速度还跟不上整个网络区块产生的速度，如果这样的情况越来越普遍，同步将变得没有意义。

数据存储冗余的问题急需解决。你可以想想如果是你来解决这个问题，你会如何处理呢？

最直观也是最简单的解决方案就是删除历史数据，完成数据的归档。首先我们可以先思考一个问题，就是区块链为什么要保留区块历史数据？

有了前面学习的基础（不熟悉可以回看第 3 讲），这个问题并不难，区块链是由区块哈希前后关联形成的链式结构，主要目的就是保持数据的持续完整性，让区块链在保持不可篡改特性的同时获得可追溯特性。

而数据归档是将区块链从某历史区块开始，将之前的数据清理掉，但随后的区块还保持原有的顺序不变，因此数据归档的本质是在保持不可篡改的前提下牺牲部分可追溯性。但如果我们能在将区块历史数据清理以后，还提供一种方式将被归档的区块再次读取出来，那数据归档其实是一个比较优秀的解决方案。

数据归档示意图

不过，如果稍微查查资料你就会发现，包括比特币 / 以太坊在内的公有链，几乎都不采用数据归档这种方法，这又是为什么呢？

这主要是因为公有链是公开的，所以你不能预设所有用户的使用场景，有些应用可能赖以生存的根源就在于可追溯性，社区不能剥夺这部分用户的权利。

因此，数据归档方案一般都是联盟链网络在使用，和业务背景一结合就很容易理解了，因为联盟链的业务场景比较单一，而且可以提前预知。如果不太需要可追溯性，就可以将部分历史数据归档，但如果需要时，也可以通过技术手段恢复。

除了数据归档，解决数据冗余还有什么思路呢？如果你是个严谨的人，平时工作的时候通常有分类文档的好习惯。而这里我要分享的第二种解决思路也是这样，核心思想就是分类，这也符合大多数人的思维。

如果我只是一位比特币的持有者，我只关心我的余额以及历史交易记录，其他的信息我一概不关心。因此我并不需要因为这一小小的需求去同步 350G 的存量数据，这些数据对我来说并没有什么意义。

但对于某些大型的节点来说，它就可以同步历史数据，并以此数据作为生产资料，对外提供相关服务，比如挖矿的矿工节点以及区块链浏览器背后的节点。公链普遍采取的就是这种节点角色分类的方案。

比特币节点示意图

比特币网络现在有大概 10000 个全节点，由它们维护完整的区块链数据，而持币者只需要在手机上运行一个钱包节点就可以进行交易。可以发现，虽然节点角色区分是缓解存储冗余的一种有效手段，但这是以牺牲去中心化特性作为前提的，从某种程度来说，这也是一种妥协。

解读了两种不同的存储冗余的解决方案，可以发现我们无法从根源上解决存储冗余的问题，只有通过不同的技术手段缓解数据的增长。联盟链以牺牲区块链可追溯性作为突破口，而公链以牺牲去中心化为前提。

另外，其实我们还可以有另外一种办法解决存储冗余，那就是减少数据量，减缓数据增长的趋势。比如在区块链上存储的是原始数据的哈希，而不是数据本身。当然，这只是一种业务层面的解决方案，并不是一个技术维度上的办法。

量子计算威胁

说完关于存储冗余的问题，我们再看看另一个大家津津乐道的问题，那就是量子计算对区块链的威胁。我们普遍觉得，量子计算机一旦成熟，以比特币为首的区块链系统就会面临崩溃，因为量子计算机的算力与经典计算机相比，不可同日而语。

但事实真的是这样吗？为了更好地帮你理解这个问题，我觉得有必要先为你科普一下什么叫量子计算。当然，我无法为你去解释叠加态 / 量子纠缠等复杂特性，因为太高深了，所以我只能通过一个从《科学声音公众号》借鉴过来的例子帮助你理解。

想象一下，如果让你使用 1 只手，你可以同时表示出几个数字呢？毫无疑问，你只可能同时表示出 1-10 这 10 个数字中的一个，而这也正是我们使用经典计算机存储数据的基本规则，同一时间一个比特位只能存储一个二进制数，要么是 0，要么是 1。

而如果让你将你的手揣入口袋，请问如果让你将手从口袋里拿出来，那么你这只手有可能表达出多少数字呢？答案肯定是 10 种可能，而且在你没将手拿出来前，数字是不确定的。

例子说完了，从这个例子就可以看出经典计算机与量子计算机存储数据的差别，一个是存储具体的值，而另一个是存储值的概率。

什么是存储值的概率呢？其实就是把值的所有可能性叠加在一起存储。比如 5 比特位的经典计算机，同时只能表达一个数字，而同样是 5 比特位的量子计算机则可以同时表示 25 个数字，二者有着 32 倍性能的差距，而且存储的效率也会随着比特位的增多而成倍增长。

而这还仅仅是量子计算机的存储能力，只有强大的存储能力还不足以体现出量子计算机对经典计算机的碾压效应，更重要的是量子计算机的并行计算能力。怎么形容这种并行计算的可怕呢？我还是用例子说明。

假设现在你面前有 64 × 64 根水管分成两列，其中只有一组水管可以联通，那么请问需要多少次尝试，我们才可以找到那唯一一组可以联通的水管呢？

如果按照经典计算机的思路，我们只有一组一组尝试，左侧列的第一个水管与右侧列的第一个水管联通，如果不行，保持左侧列的第一个水管不变，将右侧列水管换成第二个。

这样依次比较下去，直到找到可以联通的两根水管。极端情况下，我们需要尝试 64 × 64 次才可以找到。而量子计算机则大不一样，它可以同时表示 64 根水管，因此一次尝试就可以找到那唯一匹配的结果。

通过以上对量子计算机在存储及计算两方面的解读，你是不是也对量子计算机时代的区块链产生了某种担心呢？不过要我说，这些担心仅仅是杞人忧天，你相信吗？这不仅是因为量子计算机还仅存在实验室环境中，离真正的商业化还很远，或许我们这一代人都不一定能够赶上。

另一方面，量子计算机在发展，区块链难道就会原地踏步吗？这几乎是不可能的，现阶段，我们主要担心量子计算机可以瞬间把以比特币为首的、使用 PoW 共识算法的区块链的奖励都挖完，从而让其他矿工无币可挖；或者使用量子计算机破解比特币的公私钥，盗取其他用户的比特币。

你可以停下来稍加思考，刚才说的担心真的有道理么？其实在我看来也是多余的。先不说现阶段的量子计算机，它能否完成哈希计算或者破解非对称加密算法，而且也这样推理忽略了区块链协议的作用。我们以比特币为例分析一下，你就懂了。

比特币协议中就有这样的规定：不管全网络的算力如何变化，区块的出块速度应保持在平均 10 分钟左右，如果出块间隔较短，则会加大挖矿难度，如果出块间隔较长，则会降低难度。而如果量子计算机加入挖矿，出块间隔势必变短，因此挖矿的难度会增加。即便增加的难度不足以难倒量子计算机，也不过是后续所有的区块奖励都由量子计算机获得，瞬间将比特币挖光的情况并不可能出现。

再者，为什么比特币不能通过硬分叉的方式将现阶段的密码算法换成与量子计算机匹配的抗量子密码呢？量子计算在发展，区块链技术也不会原地踏步。我相信，车到山前必有路，终归会有解决之道。

智能合约安全

最后，我想特别强调的一点是智能合约安全方面的遗憾。相比前面两个问题，或多或少都是因为技术本身或者其他威胁造成的，而智能合约安全完全是人的问题。

智能合约是软件工程师基于以太坊等区块链平台自主编写的程序代码。而我们都清楚，天底下几乎不存在没有 BUG 的软件系统，智能合约当然也不例外。可以说几乎每天都存在因智能合约编写不规范而造成的攻击事件，不过是或大或小的差别罢了。

就比如前面课程中提到的直接造成以太坊分裂的 The Dao 合约攻击事件，我们在这里可以列出该合约中有漏洞的代码，其实逻辑很简单。

function withdrawBalance() {
  amountToWithdraw = userBalances[msg.sender];
  if (!(msg.sender.call.value(amountToWithdraw)())) { throw; }
  userBalances[msg.sender] = 0;
}

结合代码我来给你做个解读，这里要表达的意思是，如果用户需要提款，先给用户打款再将用户的余额清空。然而打款这一步骤会递归调用该方法，因此逻辑一直卡在打款那一步，而用户的余额一直没有被清空，悲剧就此发生。而其实解决方案也很简单，将两步动作调换顺序即可。

function withdrawBalance() {
  amountToWithdraw = userBalances[msg.sender];
  userBalances[msg.sender] = 0;
  if (!(msg.sender.call.value(amountToWithdraw)())) { throw; }
}

所以，后续如果你有机会编写智能合约，就需要时刻谨记要搞懂你写的每一行代码，否则有漏洞的智能合约对黑客来说就是一份诚意满满的馈赠。

总结

这一讲我们通过三个例子，说明了区块链技术虽然已经发展了十多年，仍然存在不成熟的地方。

但问题的出现也仅代表着当前所处的困境，并不是无法改变，技术总是在不断的迭代向前，每一次的技术更新其实都是服务于实际问题的破解，当前的遗憾并不代表着后续无法美好。

当然，区块链技术存在的问题也不仅仅是这三点，比如区块链不可能三角还无法突破等。如果你感兴趣，后续我可以通过加餐的方式为你解析相关的知识点。

讨论

你认为区块链技术要想有更大的发展，还有哪些地方需要改进呢？

扩展阅读

关于比特币跟以太坊节点的分类，这两篇文章中做了详细解读。

关于量子密码对比特币的威胁，你可以参考科学声音的公众号文章。

如果你对智能合约安全攻防感兴趣，可以参考蚂蚁安全实验室出品的智能合约安全系列。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

11 | 区块链+5G物联网：万物互联不止鸿蒙

你好，我是赵铭。

通过前面区块链技术篇的讲解，相信你已经对区块链技术有了更加深刻的理解。当然，正如我开篇词所说，我并没有以具体的区块链网络入题，而是为你抽象总结区块链技术的共性。

有了对区块链共性的把握，你不仅可以在后续接触区块链新事物时得心应手，不被特定技术束缚；还可以在面对具体业务时，切实找到可以与区块链技术结合的切入点。

从这一讲开始，我会带着你进入区块链 + 的篇章，从几个比较大的领域方向为你抛砖引玉，感受区块链与其他行业要怎样结合。

当然，如果你所处的行业并不在课程的介绍范围，也不必过于担心，因为我主要讲的是区块链技术与业务的契合点。虽然行业不同，但究其共性，不会脱离于我之前介绍的区块链技术在企业发展的三个阶段。

那么这一讲，万里长征第一步，我们就从数据上链开始说起。区块链虽然可以保证链上数据不被篡改，但却不能保证链外数据本身的真实性，所以我们需要用其他技术辅助来达到这个目的，而 5G 跟物联网就是我们要找的好帮手。

可信上链

为什么区块链不能保证数据本身的真实性呢？

如果我们将区块链网络看作一个整体，那么在数据通过交易提交到区块链网络之前，其本身是游离于网络整体之外的，对于链外的世界，区块链特性无法覆盖，自然对数据的真实性也就无法辨认。

从数据上链这一刻开始，区块链的特性自然可以提供保障，确保上链数据的所有操作都处于监控中。那这个监控者是谁呢？它并不是个体，而是区块链网络所有节点共同遵守的共识协议。

通过刚才分析，问题已经很清楚了。只要上链数据“保真”，后续并无后顾之忧。所以区块链技术在现实应用场景落地的第一个拦路虎，就是如何确保区块链上链数据的真实性。

那有没有什么方法可以解决这个大问题呢？依照我们直观而朴素的情感，要想确保数据的真实性，无非有两种途径，一是相信权威机构的信息发布，二是摆脱数据的人为干预。

对于第一点，相信权威机构的信息发布，这点非常容易理解。就比如最近我们热衷于吴某凡与都某竹的瓜，对于吃瓜群众，每天都能够从多个小道消息的渠道获得大量八卦，看得那叫一个津津有味。但如果没有警方的权威发布，我们不会知道，原来真实的事件经过比小道消息更狗血。

这里不得不提一下预言机，这是区块链领域里的一个专门探索方向，它的作用就是将外界真实的信息输入到区块链网络中，实现链外与链内的数据互通。

更具体地说，预言机为智能合约提供真实数据的输入，从而指导智能合约根据提前约定的条件触发预定的动作。比如某些 DeFi 智能合约，它需要实时根据以太坊价格来决定是否需要平仓，而预言机就能为此提供稳定且实时的以太坊价格数据。

当然，虽然预言机的概念是好的，但是在实际的应用过程中，还是存在着诸多问题。

最重要、也是最难解决的就是关于预言机的信任问题。区块链无法确认链外数据的真实性，同样，预言机也无法给予人足够的信任。

比如前面提到的价格获取，就无法保证数据源的数据实时、准确，即便确实从真实的数据源获取了数据，也很难保证在数据源与区块链交互的过程中不被篡改。

因此，预言机虽然是数据可信上链的一种解决方案，但仍任重而道远，需要更多时间去探索。

接下来我们将目光锁定在第二点，摆脱数据的人为干预。数据不是凭空产生的，必定存在数据生产源，如果我们能够在数据生产源与区块链网络之间构建直通的数据采集通道，减少人为干预步骤，就能够极大提高数据的真实性。

而这种解决思路，自然而然让我们想到区块链 + 物联网的可能性。

5G 物联网

物联网可以说是互联网的发展与延伸，在人与信息的基础上，将部署在端上的设备也纳入网络的范围。传统物联网通过部署在终端的传感器监测采集数据，并定时将数据上传至平台数据中心。

那么，如果我们有能力替换数据中心或者增加区块链入口，是否就能提高区块链数据上链的真实性呢？

我们可以先看一个例子，不知你是否曾经买过跑步鸡，没有的话建议你试一试。

其中有一段介绍特别打动我，每一只跑步鸡，都佩戴防伪溯源脚环，并有唯一的身份识别信息。当你购买跑步鸡以后，就可以通过扫描脚环二维码获取你购买的这只跑步鸡的所有情报，包括一生跑了多少步，生长环境，屠宰，检疫，物流等等信息。

跑步鸡示意图

是不是觉得有些不可思议呢？你能查看的不只是一类产品的介绍信息，更能看到送到你手上的这只鸡一生的情况。通过安装在鸡脚上的计步传感器，平台就能够实时地监测鸡的运动信息，并将此信息通过数据网关记录在区块链上，而只有运动步数达到标准才能出栏。

而这也正是区块链 + 物联网的一个典型应用，通过传感器监测商品自原材料，到生长、加工、检疫、物流、售卖等过程的基准数据，并将商品的各阶段流转信息及时录入区块链中，实现对于该商品的全流程追溯。

一旦因产品质量等问题导致纠纷，也可基于区块链技术提供的可追溯性对流程进行回溯，找到问题，解决问题。这在无形中提升了对商品的认同感，增加了品牌的内在价值。

当然，这个例子并不能很好地说明，区块链 + 物联网就能够解决数据上链的真实性问题。这是因为流程中还存在数据网关，并不是传感器数据直接上链，只是部分减少了人为的干预。这其实是有两方面的原因。

一方面受制于传感器设备本身的机械素质。基于对成本的考量，传感器设备一般计算资源少，且设备电池供电受限，因此很难将区块链通信协议内置在传感器设备中，所以不得不通过数据网关做数据的转接，将与区块链通信的能力集成在网关中。

另一方面网络是一个大问题，传感器设备一般处在远离互联网的终端中，简陋的网络环境使之无法与区块链网络建立稳定连接，且传感器与控制中心的网络通信协议也与一般我们熟知的不同，所以不得不使用数据网关进行桥接。

因此，如果我们能够提升传感器的机械素质，同时为传感器辅助健壮的网络环境，区块链上链数据的真实性问题就能有效解决。可以看到，如果不考虑成本，传感器的机械素质其实并不是瓶颈，而更难解决的其实是网络通信问题。

5G 的出现，让我们看到了问题解决的可能性。5G 依托于全新的网络架构，具备高速率、低延时、高可靠性、大带宽等优势，不仅可以满足人与人之间的通信需求，也能解决物与物的通信连接问题。可以说有了 5G，物联网的发展就此走上了高速公路，区块链也能够因此获益。

通过以上的分析，我们可以看到，5G 物联网能够使得传感器数据源生产的数据，在不经过数据网关等第三方中枢设备的情况下，直接与区块链进行数据的输入，这样就摆脱了人为的干预，保证了上链数据的真实性，进而就能基于区块链 +5G 物联网实现更多的联动应用。

当然，现在这个阶段，还仅仅是在探索，并未有成熟的结合应用方案落地。但这并不妨碍我们畅想可能的场景。接下来，我就开个脑洞，从新能源汽车这个物联网终端切入区块链 +。

新能源汽车社区新玩法

近年来，新能源汽车在国家政策加持下蓬勃发展，在节能减排的同时，也有利于我国汽车产业跨越式发展，传统汽车领域我们处于落后的局面，但在新能源汽车方面，有望实现“弯道超车”。

即便是不谈政策加持，新能源汽车的发展也呈现出对传统汽车的碾压，这主要表现在车机系统及社区运营两个方面。

过去的一个时代，汽车是否叫卖，决定性因素是机械素质跟舒适性配置，而现在汽车的卖点很大程度取决于车机的智能化水平。

由特斯拉引领的大屏时代，车机系统及交互方式发生了革命性的变化，这不仅为用户带来了全新的智能化体验，也为汽车提供了强大的终端计算能力，再加上 5G 的辅助，这就贯通了汽车与区块链间数据传输通路，为区块链 + 汽车创造了可能。

另一方面，新能源汽车的销售模式也从传统的 4S 店模式转向基于用户社区运营的直销模式，这极大拉近了汽车厂家与消费者的距离。对车主来说，汽车不仅仅是代步工具，更有另外一个家的感觉。

从媒体及用户的口碑来看，蔚来的用户社区化运营无疑是做得最好的。在品牌创建的初期，可以说是不计成本的去推行 NIO Life 理念，虽然遭到诸多质疑，但不可否认蔚来的品牌形象就这样建立起来了。

NIO Life

那么在此基础上，蔚来等新能源汽车的用户社区能否做的更好呢？在我看来可以从挖掘数据价值跟增加激励这两方面入手。

作为汽车，每天在使用的过程中，无形就产生了大量的历史使用数据。比如总行驶里程，单次行驶里程，充电里程，充电时间，地理位置打卡等等，这些数据对于厂家来说，可以作为大数据分析的数据来源，用于优化产品。但对车主来说，这些却是可有可无的历史无用数据。

那我们是否能够将这部分“无用”数据利用起来，提升车主的参与感呢？

基于对公链以及激励共识算法的解读（不熟悉可以回看第 8 讲）可以发现，我们能够设计一套基于历史数据的用户社区激励系统。人是渴望竞争的生物，如果能让原本每天就必须行驶或充电的过程变得“有利可图”，这无疑有很大的吸引力，这会进一步促进车辆使用率。

接下来，我就从四个方面阐述我对于系统的架构设想。

为什么一定要用区块链？

看到这里，你可能有疑问，为什么一定要使用区块链呢？厂家直接根据每天的数据设计激励方案不可以么？

这点如果你已经充分理解区块链的特性，就很好回答。区块链网络是去中心化的，是一套天然的公平系统，参与节点越多，造假的成本也就越高。而且根据前面的分析，智能化车机系统能够在汽车与区块链网络间建立直通的数据传输通道，保证上链数据的真实性。

另一方面，区块链还是一个不断发展的产物，虽然现阶段可能产生的用户效益小于中心化激励模式。但随着区块链技术的发展，用户社区会不断进化，从而充分享受区块链技术带来的红利。

激励的形式

现阶段的用户社区运营方案，往往使用积分作为激励，基于区块链的方案当然可以延续积分的做法。但我必须强调的是，以比特币为首的数字货币之所以被禁止，一方面原因是在缺乏监管的情况下，它能够与法币进行双向兑换，且无固定汇率。在暴涨暴跌的行情下，这无疑是对法定金融市场的一种冲击。

所以，该方案实施的前提必须是积分与法币维持固定汇率，且无双向兑换的渠道。这就类似于腾讯公司推出的 Q 币，只能单向兑换且只能用在特定范围里。

激励的用途

车主将每日产生的无用历史数据通过系统转换成积分以后，有什么用途呢？这是一个经济系统的闭环问题，如果只能产生积分，而不能消费积分，那无疑是没有任何价值的。

这时候车机交互系统的能力就凸显出来了。基于积分，厂家可以提供更多的车载娱乐付费内容，包括但不限于流量、游戏、商品等。另一方面还可以提供 OTA 升级奖励、充电奖励、换电奖励等常规的付费折扣福利。

经济模型的设计

最后一点需要强调的就是经济模型的设计，车主通过历史无用数据累积产生的积分，并不是凭空产生的，而是厂家对用户社区运营投入的映射。虽然，积分无法直接变现，但是厂家也必须要有足额的准备金以备不时之需。

在比特币中，矿工通过计算满足条件的区块获得挖矿奖励，且大概每 4 年一次减半，按照现在这个速度，大概会在 2140 年左右矿工们就无法通过挖矿获得比特币，因为那时候的挖矿奖励因减半规则而趋近于零。可以看出，比特币的货币供应量随着时间而逐渐减少，是一种通缩型数字货币。

而此方案则有所不同，因为积分是与法币固定汇率，所以积分的发行是通胀还是通缩完全取决于厂家对于社区运营的投入。当然，在一个健康的发展模式中，厂家对于社区的运营预算应该是逐渐增加的，也就是说积分的发行是通胀的。

但是对于单个车主，获得积分的困难度跟参与者的数量密切相关。在总量不变的情况下，参与者多了，竞争会加剧，车主的积分是逐渐通缩的。换句话说，在车主每日正常使用车辆的情况下，每日能获取到的积分是逐渐减少的。

以上我通过 4 个方面的解读为你展开我对于新能源汽车社区新玩法的畅想，也仅仅是畅想，并不是一个成熟的可落地的方案。主要是为了让你看到，区块链 +5G 物联网在汽车领域的可能性。

总结

通过这一讲我们了解到，纯粹只采用区块链技术，无法解决上链数据的真实性，因此我们需要与链外数据生产源进行协同。

协同主要有两种方式，一种是相信权威机构的信息发布，预言机就是这种思路下诞生的产物，但因为无法很好的解决预言机本身的信任问题，现再还处于摸索阶段。另外一种就是借助 5G 物联网，在数据源与区块链网络间构建数据的直通路径，确保无人工干预，增强数据的真实性。

为了让你对区块链 + 应用有更直观的认识，我通过新能源汽车社区新玩法这个例子，带你畅想了区块链 +5G 物联网 + 汽车的可能性，主要依托的是车机系统强大的边缘计算能力以及用户社区激励模式的构建。虽不成熟，但足以说明问题。

讨论

关于新能源汽车社区的新玩法，你还有哪些建议呢？我们可以一起完善。

扩展阅读

关于预言机的知识点，你可以参考这篇文章。

更多关于区块链 + 物联网应用方向的解读，可以参考中国通信标准化协会发布的白皮书。

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你把这讲内容分享给自己的朋友、同事。

12 | 区块链+数字人民币：怎样理解数字人民币体系架构？

你好，我是赵铭。

随着比特币的问世，关于数字货币的讨论屡见不鲜。其中有一种猜想，就是各个国家能否基于区块链技术将国家主权货币数字化。

委内瑞拉成为全球首个推出数字货币的国家。该国经济脆弱不堪，所以想通过数字货币稳定经济。但因其随意操纵货币价格，可以说主权数字货币的第一次尝试最后以失败告终。

与此同时，美国互联网巨头 Facebook 公司试图基于区块链技术，主导发行一种服务于全球数十亿民众的无国界数字货币，Libra。虽然 Libra 的提出对区块链技术发展有较大的推动作用，但是却遭到美国监管部门否定，短时间内无法落地。

那我国又是什么情况呢？其实早在 2014 年，央行就成立了数字货币研究小组，对我国发行数字货币的技术体系、发行流通环境等指标展开了专项研究。

7 年时间过去了，我国数字货币的发展已经从调研、原型构建到试点测试阶段，距离全面推行数字人民币也越来越近。

而伴随着数字人民币的发展，总有声音将数字人民币跟区块链技术联系起来，都在猜想数字人民币是否是基于区块链技术发行的。这一讲，我就结合央行最近发布的《中国数字人民币的研发进展》白皮书，为你详细讲讲区块链 + 数字人民币的那些事儿。

数字人民币基础

我们想弄明白区块链与数字人民币有哪些关系，就要先掌握数字人民币的相关基础知识。

首先我们要明白它的定义，数字人民币是中国人民银行发行的法定货币的数字化，是由国家信用在背后作支撑，其发行权属于国家。

而我们通常熟悉的比特币、以太坊等数字货币，其背后的支撑是我们对区块链技术的信任，货币的发行权属于共同维护区块链网络正常运行的矿工。也就是说，虽然都是信任产生价值，但数字人民币与加密货币的信任源不一样，货币的生产机制也不一样，而这也是二者之间最大的两点不同。

另外，数字人民币的定位是现金类支付凭证。这代表什么呢？意思就是数字人民币跟纸币、硬币的定位是一致的。虽然移动支付流行以后，我们现在几乎很少有机会使用现金，但终归我们还是熟悉现金。

那么当你理解数字人民币有困难的时候，其实就可以把它想象成是一种现金，这样你理解起来就会简单得多。

那我们现在就想一想，现金有哪些性质呢？通过总结归纳，我总结了三点性质。

首先，它不计利息。这点想必你深有体会，你手里的 100 元纸币，如果不使用，那么它永远都是 100 元，无论如何也不可能变成 200 元或者 90 元的。而如果你把这 100 元存入银行，即便是活期存款，1 年到头，还是有少量的利息的。同样，如果将数字人民币放在钱包中不使用，它的面额是不变的，但它的购买力却是随着时间而变化的。

其次是无手续费。你不妨回想下从银行柜台存取现金的过程，你取出或者存入的数量跟你银行账户中的余额是一一对应的，并不存在差额，也就是手续费。那数字人民币也一样，不管你是在银行柜台还是通过手机钱包，中间转移过程是没有费用支出的。因此我们就可以推断，如果后续微信支付接入数字人民币，当你需要提现时，微信是不可以向你收取服务费的，否则可能违法。

第三就是可控匿名。所谓可控匿名，用白皮书的话说，就是“小额匿名、大额依法可溯”。揣在你兜里的纸币，如果你财不露白，别人无法知道你持有多少现金。但如果你拿着 1 个亿去银行存款，那么首先迎接你的将是严格的资金来源审查。

数字人民币也可以有相同的效果，只不过手段却不一样。用户可以按照不同身份识别强度开设不同等级的钱包，根据实名强弱程度赋予各类钱包不同的单笔、单日交易及余额限额。比如说，最低权限的钱包不需要提供任何身份信息，当然限制也是最严格的。

通过以上三点的分析，我想你已经对数字人民币的定位有所认识。当然，虽然数字人民币与现金共享诸多性质，但还是有部分差异，最直观的一点就是纸币、硬币是固定面额的，而数字人民币是可变面额。

什么意思呢？简单地讲，你永远也不可能拥有一张面额为 500 元的纸币，但是你却可以有面额为 500 元的数字人民币。

可变面额示意图（来自网络）

说完数字人民币的基础概念，我们接下来一起探讨下数字人民币的体系架构。

数字人民币架构

要理解数字人民币的体系架构，其实也非常简单，我们只需要吃透什么叫做“一币，两库，三中心，N 终端”就可以了。

这里“一币”指的就是数字人民币，“两库”指数字人民币发行库和银行库，而“三中心”指认证中心、大数据分析中心与登记中心，最后的 N 终端就对应着分散在用户手中的手机钱包等存储数字人民币的终端软件及设备。

接下来我就带你一起看看它们各自的概念和作用。

数字人民币体系示意图

一币最容易理解，它对应着央行发行的数字人民币，整体体系都是围绕着这“一币”构建的。而数字人民币发行库是人民银行存放数字货币发行基金的数据库，可以这么说，央行通过发行库控制数字人民币的发行，是央行行使货币发行权的依赖。

另外，由银行库负责记录通过特定商业银行渠道分发的数字人民币。也就是说，当某商业银行有数字人民币的需求时，央行将数字人民币从发行库转移到该商业银行的银行库，从而实现数字人民币从央行到商业银行的转移。

而且，从现有的资料来看，数字人民币的分发渠道不仅包含商业银行，未来还可以推广到拥有支付牌照的机构，比如微信跟支付宝等，所以广义的银行库实质是指任何有资质的分发机构。

认证中心是系统中对用户身份信息的管理组件，这是整个数字人民币系统的安全中心。前面所说的可控匿名性质，就要依赖这个组件实现。登记中心是数字人民币转账的核心系统，用于将数字人民币与用户身份进行绑定，完成所有权的登记。同时，数字人民币的转账记录等信息也通过该组件进行记录。

大数据分析中心的作用也显而易见，基于前面几个子系统采集的数据完成各类指标分析，比如能够对可疑转账记录进行反洗钱分析，通过用户支付行为的分析优化数字人民币投放策略等。这也非常像区块链网络中的区块浏览器，可以直观感受到网络整体的运行情况，例如你可以通过EtherScan 网站监控以太坊网络的实时状态。

前面所说的“一币两库三中心”隶属于数字人民币的核心系统组件，而在此之外，则是由数字人民币钱包构建的使用生态，也就是所谓的“N 终端”。

数字人民币从核心系统发行之后，经过投放，就分散到了用户手里的钱包。数字人民币的钱包其实跟区块链中的数字货币钱包功能很像，都有类似于储值，交易等功能。

另外，钱包的形式也同样包括软件钱包跟硬件钱包（如银行卡、钱包），软件钱包相对使用更加便捷，比如在手机中安装一个应用程序就可以直接使用，但是其安全性不如硬件钱包。

数字人民币生命周期

前面我们通过概念以及架构两个方面了解了数字人民币，接下来，我们还可以从生命周期这个角度看一看数字人民币的运营模式。

数字人民币生命周期示意图

通过数字人民币生命周期示意图，我们可以直观地感受数字人民币的生命周期共有 4 个阶段。

首先，由中国人民银行进行数字货币的发行，存放在发行库中。随后，由任意分发机构根据自身需求进行申请，申请的同时需要向央行缴纳 100% 的准备金。

这里要如何理解呢？因为数字人民币跟纸币等都属于现金类支付凭证，在总量控制的前提下，分发机构要想获得数字人民币，就只能将手中的纸币等现金以 1:1 的方式换成数字人民币。也就是说，数字人民币与纸币等现金是等价的，只是形式不同而已。发行数字人民币并不意味着市场上流通的货币多了，而只是形式进行了切换。

等分发机构缴纳了准备金之后，央行就将数字人民币从发行库转移到银行库。而用户兑换数字人民币时，数字人民币就从银行库进入到市场流通环节，被用户手中的数字货币钱包接收。而在此之后的环节，实质就是数字人民币在多个用户钱包间进行转移，用于交易支付。

通过以上的分析，你有没有想过，为什么央行要采用双层模式运营数字人民币呢？直接由央行直接向公众发行数字人民币这样不好吗？

这其实是有一定原因的，双层运营模式可以充分利用分发机构现有的基础设施、人才及技术等优势，而且也能在不改变用户使用习惯的前提下，促进数字人民币的普及，达到花小钱办大事的效果。

区块链 + 数字人民币

以上我们通过不少篇幅剖析了数字人民币的相关知识，看似跟区块链技术关系并不大。

数字人民币是基于区块链技术发行的吗？这个你我都非常关心的问题还是没有解决，白皮书中也没有直接回答这个问题，但我找到了这样一句话。

数字人民币的技术路线选择是一个长期演进、持续迭代、动态升级的过程，以市场需求为导向定期开展评估，持续进行优化改进。指定运营机构可根据自身实际需求及技术优势自行选取技术路线，充分保持对未来技术的洞察力和前瞻性。

这也就意味着，数字人民币的流通没有指定必须使用哪种技术，而是由分发机构自行选择。注意，我这里着重强调的是流通，而不是发行。数字人民币的发行权在于央行，其发行模式是集中式的，因此我们可以认为数字人民币的发行是不必使用区块链技术的。

那数字人民币的流通可以使用区块链技术吗？要回答这个问题，我们可以先分析一下数字人民币的流通可能出现的情况，以微信支付为例。

1. 用户 A 通过微信将 100 元余额兑换成数字人民币（取款场景）；

2. 用户 A 通过发红包的形式给用户 B 转了 20 块数字人民币（同一分发机构内交易的场景）；

3. 用户 B 将收到的 20 块数字人民币转给自己在支付宝中开设的数字人民币账户中（不同分发机构间交易的场景）；

4. 用户 A 将自己剩余的 80 块数字人民币充值到微信余额中（存款场景）。

当然，可能出现的情况还有很多，这里只列举了 4 个典型的场景。我们来一一分析各种场景是否可以使用区块链技术解决。

取款存款场景其实涉及到存款类资产与现金类资产的双向兑换，这关系到两个金融体系的交互，因此单纯在数字人民币侧使用区块链技术，无法更有效率地解决问题。

而关于在同一分发机构内部的数字人民币交易这个场景，结合前面技术篇的讲解，很容易就可以得出结论，区块链技术非常适合分发机构内部技术架构的选型。

分发机构内部流转示意图

分发机构每一次向央行申请数字人民币，可以理解为是区块链网络中数字货币的来源。用户间的转账可以采用类似以太坊的账户状态模型，作为用户的数字人民币的记账单位。

利用区块链技术不仅可以解决最基本的记账需求，还可以继承区块链的不可篡改及可追溯特性。因为这个场景里，去中心化特性不那么重要，所以还可以采用联盟链技术体系。

而不同分发机构间的数字人民币交易的场景，情况就稍微复杂一些，因为可能涉及到与央行银行库中记录的协同。

例子里用户 B 将微信渠道流通的数字人民币转移到支付宝流通渠道，其实可以理解为微信流通渠道的钱总量减少 20 块钱，而支付宝渠道的钱总量增加 20 块钱，如果使用常规手段，就需要额外的对账过程以保持数据的协同。但采用区块链跨链技术，就能实现数字人民币在不同分发机构间的原子转移，不需要额外的对账过程。

总结

这一讲我们通过对数字人民币基础、架构及生命周期的学习认识到，数字人民币与纸币、硬币一样，都属于现金类支付凭证，具有不计利息、无手续费、可控匿名等特点。

数字人民币由央行发行，分发机构自主申请，然后用户自由通过各分发机构进行兑换，随之实现在用户钱包间的交易转移。其体系架构遵循“一币，两库，三中心，N 终端”的规律。

然后，我通过畅想在数字人民币普及以后可能出现的 4 种最常见的应用场景，为你剖析了区块链技术路线实施的可能性。在单个分发机构内部，可以基于区块链技术构建数字人民币的流通环境，而分发机构间的转账可以依赖区块链跨链技术实现。

当然，课程中关于区块链与数字人民币的结合也只是我的个人猜想。现阶段各分发机构也并未披露更多关于数字人民币流通的技术细节说明。技术选型是一个严肃的过程，尤其是涉及到货币的流通，因此需要多方面的考量。希望区块链技术能与数字人民币更好地融合，也期待数字人民币能尽早落地。

另外，关于白皮书中提到的数字人民币的可编程性，我文中并未提及。主要原因是现阶段资料太少，央行也并未过多披露细节。我无法确定基于数字人民币的智能合约运行在哪个环节。

主要疑惑点在于，数字人民币的流通是分发机构自主技术选型，那是否智能合约也是这样呢？还是说智能合约是运行钱包终端？暂时还无法确定，等到后续出现更多资料时，我再通过加餐的方式为你解读。

讨论

数字人民币出现以后，有一种论调就是：有了数字人民币，微信支付跟支付宝等第三方支付工具就危险了。你是如何理解数字人民币跟第三方支付工具之间的关系呢？

扩展阅读

关于数字人民币的详细说明，你可以参考央行近期发布的《中国数字人民币研发进展白皮书》

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

13 | 区块链+新基建：数字社会的四驾马车

你好，我是赵铭。

在国家的“十四五”规划中，区块链技术首次被列入数字产业新基建行列，与之并列的还有云计算、大数据、人工智能以及网络安全等，这里面每一项都对应着数字社会基础设施建设的特定方向。

虽然它们是相对独立的特定领域，但这不代表它们之间毫无关联。其实，这四个方向对应着数字网络构建的不同侧重模块，只有彼此组合在一起形成技术结合体，才能挥动新基建这杆大旗。

这一讲，我们就一起探讨云计算、大数据、区块链及人工智能，看看这四驾马车是如何拉动社会数字前进的。

云计算

如果现在有人问你双 11 是什么日子？我想你会毫不犹豫地回答：购物狂欢节。

的确，这已经成为了我国的一个约定俗成的节日。每当临近双 11，我们都会往购物车中疯狂加购，而在双 11 的凌晨，所有的人都争先恐后地下单并完成支付。那你有没有想过，平台方是如何应对这突如其来的下单请求的呢？

电商平台之所以能够支撑海量的业务请求，背后离不开云计算技术作为基础支撑。如果要投票选择，过去 10 年里全世界任意领域中最重要的基础设施建设，我会毫不犹豫给云计算投上一票。

云计算利用虚拟化技术将物理服务器、存储和网络等硬件设备以服务的形式提供给用户使用，用户只需要通过互联网，以按需服务的形式购买计算资源，无需自行采购、配置或者管理这些硬件资源，只需要为实际使用的资源付费。

同时，借助云计算，我们不需要过多考虑业务峰值来临时，因资源不够而造成的服务崩溃。我们可以根据业务需求的变化立即扩展或者缩减这些资源，用最小化的成本抵抗住最凶猛的业务请求。依托于云计算平台庞大的计算资源池与自动伸缩技术，双 11 时我们才能狂欢购物。

因此我们可以说云计算技术是数字社会的生产工具，是数字社会新基建中的基建。

区块链 + 云计算

了解完云计算的基础知识，你想到区块链要怎样跟云计算结合了么？云计算技术主要可以支撑起区块链的网络部署。

区块链节点这个概念，虽然貌似听上去有种很大很复杂的感觉，但如果从服务部署的角度讲，其实一个区块链节点实质就是几个应用程序而已，它与一般化的网站服务也并没有什么不同，都需要一定的计算、存储及网络资源。

对于公有链，情况要稍微简单些，网络中的节点间的关系相对松散，你部署你的节点并不需要考虑我的节点是如何部署的，我与你两个节点间的联系仅限通过网络通信进行数据传递而已。换句话说，公有链的节点部署并不需要统一标准，只需满足最低资源要求，就可以在任意时间、任意地点部署。

但联盟链的部署就大不一样了，因为技术选型的原因，联盟链网络部署的初期就需要协调各节点程序，使其保持步调的一致，是典型的分布式系统构建方式。

比如前面讲过联盟链中用到的拜占庭容错共识算法，就需要至少 4 个节点才能构建一个区块链网络。云计算的出现，让区块链复杂的组网过程有了统一简化的可能，通过统一协调制定节点资源的使用，规范制定区块链参数配置，就能快速部署联盟链网络。

在此基础上，为了不仅能够快速标准化部署多种类联盟链网络，还能够对其进行管理，监控等运维操作，区块链与云计算的结合催生出区块链即服务平台，也就是 BaaS，Blockchain as a Service 的缩写，灵感来源于云计算中的 IaaS、PaaS、SaaS 的理念。

比如腾讯云的 TBaaS，华为云的 BCS等，都是国内现在比较优秀的公有云 BaaS 平台。

大数据

讲解完云计算在区块链里的应用，我们再来看看大数据。大数据我们常常挂在嘴边，到底是什么是大数据呢？

其实它指的是非常庞大、复杂且大量非结构化的数据集，其规模之大，我们用传统的处理手段已经无法处理，因此需要借助新的技术辅助，以便帮助我们解决棘手的业务难题。

另外，大数据的特性我们可以用 5 个 V 来概括，V 取自于每个特性的英文首字母，我们一起来看一看：

大量（Volume）：所谓大数据，首先肯定是数据量大，在实际场景中，大数据的数据量通常是以 TB，PB 来计算，什么概念呢？我们的手机现在一般能存储 128G 的数据，而 1024G 数据才等于 1TB，1024TB 才等于 1PB。

高速（Velocity）：大数据需要用较高的速度接收甚至是处理数据。数据通常是直接在内存中，而不是写入磁盘，这样就可以满足实时数据分析的需求。

多样化（Variety）：多样化是指大数据的数据源很多，且大多数属于非结构化的数据，比如图片、音频、视频等等，因此需要经过预处理才能发挥数据的价值。

价值（Value）：大数据所面对的数据是海量的，但并不是所有的数据都有价值，因此我们需要通过数据清洗，过滤出有价值的数据。

真实（Veracity）：与价值特性一样，需要保证数据的真实性、准确性，才能提高数据质量，这样最终的结果才值得信赖。

现阶段，大数据技术已经被广泛应用。移动互联网、社交网络、物联网等领域的兴起，都产生了源源不断的大数据样本，而云计算又为大数据提供了稳健的计算及存储资源支撑，通过对不同数据源的数据采集、预处理、分析及挖掘，最终将结果反馈输出至数据源，进而反向指导应用的发展。

比如，我们现在每天刷抖音津津有味，越喜欢什么越给你推荐什么，这背后其实就有大数据的功劳。大数据的运用，无疑可以创造巨大的经济及社会价值。可以说，大数据是数字社会的生产资料。

区块链 + 大数据

那区块链与大数据的结合又能碰撞出什么样的火花呢？总的来说，我们可以有两类融合的切入点。

回想区块链 +5G 物联网课程中的知识，要想解决区块链上链数据的真实性问题，我们可以通过在数据源与区块链节点间建立直通的数据上链通道，最大限度排除人为的干扰。5G 物联网为我们提供了一种解决办法，而大数据技术又为我们提供了另一种思路。

细心的你或许已经发现了解决思路，面对海量杂乱无序的原始数据，我们可以利用大数据技术进行预处理清洗，分析挖掘出其中真实的具有特定价值的数据，之后再将处理后的数据通过区块链节点以交易的形式上链，这会在很大程度上解决数据真实性的问题。

另一个切入点，对于已经上链的区块链数据，我们可以用大数据技术分析，以此评估区块链的真实运作情况。那可供分析的数据有哪些呢？毫无疑问，结合区块链存储章节的知识点，数据不外乎是交易、区块及状态。

交易跟区块是固定格式的数据，相对来说比较容易分析，而状态对于不同的区块链来说，对应着不同的状态模型，且智能合约更加剧了状态数据的不确定性，分析难度较大。但是我们还是可以分析标准智能合约产生的相对结构化的数据，对大数据技术来说，无非是需要增加新的数据采集规则。

讲到这里，你是否已经能够猜到基于区块链的大数据分析应用呢？不卖关子，这其实就是区块链浏览器的技术原理。

通过对区块链数据的分析，为用户提供直观的、可以查看区块链网络运行的平台，比如我们经常提到的以太坊的区块浏览器EtherScan，通过它，你可以实时了解以太坊网络的运行状况。

EtherScan示意图

人工智能

要说最近几年什么技术最火，80% 的人估计都会回答人工智能。从谷歌的 AlphaGo 战胜韩国围棋世界冠军李世石开始，关于人工智能的讨论不绝于耳。人工智能试图了解人类智能的本质，并以此为基础，期望能够制造出一种能以人类智能相似方式做出反应的行为模式系统，包括但不限于与之匹配的软件及硬件系统。

这无疑是一个很宏伟的目标，但从现阶段看，任重而道远，能够完全模拟人类智能的系统暂时还不存在。因此，现阶段人工智能采用逐个击破的方式，分别探索不同的领域，包括语言识别、图像识别、自然语言处理等等。随后将各个领域的成果加以整合，形成相对智能的产品推向市场，比如最近大火的自动驾驶技术等等。

其实人工智能技术能有如此快速的发展不仅是技术的优越，同时也依赖多种技术的协同。

云计算技术将 GPU 等资源整合，为人工智能提供强有力的资源辅助，提升人工智能在训练阶段的效率，同时也为人工智能应用面向用户提供了便捷的途径；而依托于大数据技术，我们才能在海量繁杂的数据中通过采集、处理、分析等过程，获得有价值的数据，为人工智能的训练提供足够多的样本，提升机器学习的精准度。可以说人工智能有云计算及大数据等技术的辅助，极大提升了数字社会的生产力。

区块链 + 人工智能

我们知道，在数字社会数据作为一种新型的生产资料已成共识，但区别于其他生产资料的一点就是个人数据隐私需要被保护，这是法律层面的约束；但数据又需要开放共享才能与人工智能结合，使得价值最大化。这时就产生了新问题，如何在数据隐私保护与开放共享之间寻求平衡呢？

为此，人工智能领域诞生了一种新的机器学习模式，那就是联邦学习。在数据足不出户的情况下（简单说就是数据源不离开原来的企业），也能让各企业的人工智能学习平台联合起来进行模型训练及预测。可以看到，联邦学习涉及到了多企业间的分工协助，而一旦涉及多方协作，区块链就有了用武之地。

那区块链的加入具体可以给联邦学习带来何种优势呢？我认为主要有两点：

其一，利用区块链的不可篡改特性及可追溯性，对恶意参与方进行跟踪惩罚。联邦学习平台可以利用区块链技术作为学习阶段的元数据共享通道，当发现遭受恶意或者惰性攻击时，就可以依据区块链历史数据对相关责任方进行确认，从而采取有效惩罚措施，保持联邦学习平台的平稳健康发展。

其二，利用区块链的去中心化特性可以积极拥抱监管。在实际参与联邦学习的合作方之外，可将相关的监管审查机构作为独立自主的第三方节点，接入区块链网络，因此监管审查机构就可以实时地监控联邦学习平台的运作情况，如有违规操作，可以在短时间内制止。

总结

在数字社会的今天，每一种技术并不是孤立地存在，而是彼此依存的有机组合。云计算技术是数字社会的生产工具，是新基建中的基建，为其他技术的应用提供稳固的底层支撑。而大数据技术从繁杂无序的海量数据中挖掘真实且有价值的数据，为数字社会提供生产资料。而在云计算及大数据等技术的加持下，人工智能释放了巨大的生产力。

数字社会示意图

而区块链技术自公链圈与联盟链圈割裂以后，联盟链技术也逐渐与主流技术体系融合，迸发出激烈的火花。可以说，区块链技术是数字社会的生产关系，只要涉及到多方协助，区块链就有存在的价值。

云计算是生产工具，大数据是生产资料，区块链是生产关系，人工智能是生产力。他们齐力协同，共同组成数字社会的四驾马车，推动数字社会的发展。

讨论

关于区块链与云计算、大数据及人工智能的结合切入点，你认为还有哪些呢？

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

14 | 区块链+电商：如何实现在线购物新体验？

你好，我是赵铭。

区块链的最终发展形态是价值网络，这是贯穿专栏的中心思想，但现实是我们离价值网络还很遥远。凡事不可能一蹴而就，总要有一个逐渐演进的过程，那你有没有想过，在现实与价值网络之间该如何过渡呢？

在联盟链这边，我似乎找到了一条可行的实现路径，那就是行业链。所谓行业链，就是在这个行业内，所有的商业活动都围绕同一条区块链网络展开。而这一讲，我们就这一主题进行畅想，并以电商行业为例，看看区块链 + 电商到底为什么能够提供在线购物新体验。

行业链

其实电商只是一种具象化的行业链表达，想要畅想而非幻想，就需要先分析一下行业链会如何演变。我们需要明确，行业链的形成并不是一个自上而下的政策性产物，而是逐渐由小变大的顺势而为，是联盟链发展的必然结果。怎么解读这句话呢？

现阶段具有某些业务往来的企业，因为区块链的某种特性正好契合他们之间的需求，因此逐渐就联合起来形成小范围的联盟链试点。不过我们必须认识到，联盟链的试点不应该是漫无目的地套用区块链技术，而应该是利用区块链技术特性定向需求优化。

我想提醒你注意这里的“定向”，意思是有需求才需要区块链技术，否则就是伪需求，试点永远也只是试点，不可能孵化出一种新的商业模式。

而且，随着业务链的规模扩大，区块链的作用也应该更加明显，不然使用区块链只是多此一举。现在大多数的应用其实都还在这个误区中徘徊，如果无法跳出这个坑，行业链乃至价值网络，都只能是空中楼阁。

现在我们明确了业务链中区块链要起到明显作用，那么又要如何顺势而为呢？我是这样想的，加持了区块链技术的新型业务蒸蒸日上以后，就会吸引其他相关企业申请加入。那么最初的小联盟就会逐渐发展壮大，慢慢形成以核心企业为主导的业务联盟链。

从联盟试点到业务联盟链的形成，从全社会的角度来看，肯定不是一枝独秀，而是百花齐放。为什么这么说呢？这主要是因为，最初的联盟试点是由同行业的不同龙头企业各自寻找合作伙伴运营起来的，这是现代商业环境的必然。

相同行业的不同业务联盟链，随着各自的影响力变大，监管的需求也就愈发强烈。在传统的商业活动中，监管机构的作用是保障市场公平竞争，防止企业恶意利用手中资源野蛮生长、无序扩张。

而在此基础上，基于国家政务机关特定的约束力，以核心企业为首的多条业务联盟链最终会在监管机构的协调推动下，统一成一条超级业务联盟链，也就是他们的最终归宿：行业链。

当然，随着区块链跨链技术的发展，最终行业链的形态可能会有所差异。以核心企业为首的业务联盟链，也可以不必在监管的需求下统一成一条链，而是通过跨链技术让数据可以在多条超级业务联盟链间进行协同。因此，由跨链技术围拢的多条业务联盟链的生态，也可以称之为行业链。

从某种意义上讲，行业链不仅汇聚了区块链技术所带来的信任感，同时也叠加了国家权力赋予的公信力。在下一讲，我还会和你讨论区块链在社会治理中的应用，那时你会进一步认识到，行业链与国家权力机关的协同是一种必然。

那在行业链形成以后，后续该如何发展呢？就拿数据这一点来说，在现代社会，数据的价值无从估量。可以说谁拥有数据，谁就拥有了话语权，但这是一种畸形的发展模式，久而久之就会出现诸如利用大数据杀熟这样的恶性事件。

而有了行业联盟链，就意味着数据对于参与方企业来说都是透明的，企业间的竞争逐步变成拥有相同数据情况下的差异化服务竞争。

行业链的出现，为行业的发展营造了公平、公正、公开的商业环境，而这对监管及用户来说，无疑是向好的。同时，行业链是巨头粉碎机，对于同行业的诸多小企业来说，也将拥有更多的机会，依靠数据实施垄断的商业行为将不复存在。

当然，行业链并不是适用于所有的行业以及这个行业里的所有业务，它只是一种泛称。

区块链 + 电商

通过前面的解读，我们已经对行业链这个概念建立了初步认识。接下来，我会从区块链 + 电商这个角度，设想一下行业链到底要如何运作。开始具体内容前，我需要先给你打一剂预防针，接下来的内容纯粹是我自己的脑洞大开，而且在未来，也不太可能会出现去中心化电商行业链，毕竟牵扯面太广。

之所以还是要讲，是因为区块链的发展，或者说区块链的推广不能仅靠墨守成规，应该勇于去突破思维定式。希望你也一样，不要被现实束缚。

电商行业链和传统电商最主要的区别是什么呢？用一句话概括，就是利用智能合约的标准化思路，规范电商行业流程。

具体怎么理解呢？我们可以将电商行业中的流程进行抽象，形成智能合约标准，每个标准可以有不同的实现，最终呈现的效果就是，电商行业的参与者可以任意组装跟自己角色相关流程的不同智能合约实现。

举个简单的例子，用户可以采用阿里的商品聚合服务进行商品的搜索并下单，使用微信支付进行付款，指定京东物流进行配送。听到这里，你是不是有些向往呢？

为了给你更直观的感受，我以书籍这类商品为例带你展望下电商行业链的设计思路。现阶段，在电商领域，区块链应用做得最成功的案例无疑是商品追溯平台。利用区块链技术的不可篡改及可追溯特性，可以实现对单个特定商品自原材料到用户手中，整个生命周期全流程的追溯。我们可以基于商品追溯应用，顺着追溯的思路，分析一下行业链的特点。

电商链示意图

这里我们先忽略准备原材料这个环节，这个环节涉及到原材料分割、整合，以及供应链上下游协调，这会让问题变得更加复杂。为了让你专注于核心思路，我们暂且把这一环节排除在外。

出版印刷

在将原材料准备妥当以后，出版社就可以在印刷车间对书籍进行印刷出版。除了印刷用于标记一类商品的 ISBN 编码以外，我们还要为每一本书籍印刷专属于这本书的资产编码，这样就可以在区块链网络中唯一标识这本书，实现现实资产与虚拟价值的锚定。

而这其中描述的书籍印刷的过程，我们就可以抽象出商品生产智能合约，如果你还记得智能合约章节中的NFT，就会发现其实已经有了实现路径。

商品的生产商在行业链的流程中，每生产一个商品，就将该商品对应的资产信息（包括但不限于商品基础信息，比如资产编码、出厂价格、分类等等）进行上链，之后商品就可以由此进入市场进行流通。

这是行业链和现有商品生产模式最基础的差异，现有商品生产基于流水线进行批次化生产，比如批量生产一万册书，每册书的商品编码可能都是一个。但在行业链上流转的不是商品类别，而是一个个独立的唯一商品，可以做到一物一码。

那这样有什么好处呢？行业链是价值网络的前置阶段，如果其上流转的也是资产，也便于后续价值网络的普及。所以简单来说，行业链是特定行业的价值网络，而价值网络是所有行业链的集合。

渠道分发

出版社把书籍印刷出来以后，就可以根据不同的电商渠道分发不同数量的书籍。在行业链中，这一过程其实并不是必须的，这是为什么呢？

通过前面对行业链的解读可以发现，行业链其实是在弱化企业的存在感，也就是在淡化渠道的概念。渠道主要是为商品生产商与用户间建立买卖的平台，而区块链去中心化特性恰恰是在抑制中间商。

而在这个阶段，我们可以抽象出商品分发智能合约，可以简单的理解为批发。在链下，是将商品从生产商转移到渠道商仓库，而链上是将商品的所有权从生产商转移到渠道商。

但要注意，这里要做到链下商品的仓储周转与链上所有权的协同转移，什么意思呢？行业链中的每件商品都是具备资产属性的，并不能简单以数量进行商品的调拨，而是链上的资产与链下的商品要匹配，否则就有串货的风险。

书籍聚合搜索

在出版商将书籍资产信息上链以后，在行业链中的其实就有了该书籍的信息。不过对用户来说，在商品种类繁多的行业链中，搜寻书籍无疑是大海捞针，因此就有必要抽象出商品聚合搜索智能合约标准，方便用户浏览、搜索商品。

此时平台的作用，就是基于聚合搜索合约，将行业链中的商品个性化地呈现给用户。而用户根据自己的喜好选择不同的平台进行浏览，也可以根据自己的需求定制合约，比如只关注特定书籍类别。

看到这里你可能有所疑惑，这似乎跟现在的电商平台区别不大，并没有什么新的体验？

那我们就用前面说的大数据杀熟这个问题来说明，现在电商平台之所以能够杀熟，基本上是依靠用户历史购买记录推断出用户的购买意愿，再利用平台与用户间的信息不对称和用户对平台的依赖性，使用户在无形中被带节奏，从而以较高的成本购买商品。

而行业链支撑的电商平台则有所不同，首先用户的历史购买记录属于个人隐私，用户可以使用智能合约对数据进行定向授权，在用户未授权平台获取这部分数据之前，平台无法提前得知用户的购买倾向，进而也就无法进行商品推荐。

另外，关于商品的这部分信息在链上应该是公开的，任何人都可以查看，因此也就不存在平台与用户间的信息不对称。只是平台更有技术实力能够将商品从繁杂的商品库中聚合出来而已，而一旦用户对平台的聚合服务不满意，也可以随时切换另一个智能合约实现，抛弃原有平台。也就是说，电商行业链对平台是苛刻的，但却可以为用户带来较好的体验。

书籍订购

而在用户找到想要的书籍后，就到了下单进行订购支付这一环。在这个阶段，我们可以抽象出很多智能合约标准，比如库存扣减合约，支付合约，物流合约等等。

其实这些合约都从属于同一个订单合约。从业务逻辑分析，购买商品的本质就是用户跟其他各参与方签订了合同协议，合约内容可以理解为如果商品所有权转移给用户，之后选择某某物流公司送达以后，用户就会把锁定在合约中的货币按商品价格组成，分别释放给平台，商家及其他参与方。

通过刚才的讲解，我简要为你梳理了书籍生产到用户订购的过程，描述了我对于电商行业链生态的理解。描述的内容并不专业，你也不必过于纠结其中的细节，比如商品该如何划拨，又该如何退货退款等等。你只需要理解，在电商行业链中，商品信息在同一条区块链网络中共享，电商平台的竞争逐步就表现为对链上数据的聚合、分类及差异化营销。

总结

在现实与价值网络之间，还存在着巨大的鸿沟，因此我们需要一种途径去填补空白。在我看来，行业链是实现价值网络的一种途径。

现阶段具有某些业务往来的企业逐渐联盟起来形成小范围的联盟链试点，一旦新型业务模式形成，势必会有其他企业加入，小联盟逐渐壮大，从而形成以核心企业为主导的业务联盟链。

而随着核心企业业务联盟进一步扩大，多个核心企业所围拢的多条联盟链也会因为业务需求、监管要求统一成一条超级行业链。其最终形态是业务流程的标准化以及实现的差异化，企业间的竞争，将会逐步变成拥有相同数据情况下的差异化服务竞争。

行业链的形成并不是一个自上而下的政策性产物，而是逐渐由小变大的顺势而为，是联盟链发展的必然结果。可以说，行业链是特定行业的价值网络，而价值网络是所有行业链的集合。

讨论

你认为现阶段如果想要实现价值网络，除了行业链还有什么实现途径呢？

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这节课对你有帮助，也欢迎你把这一讲分享给自己的朋友、同事。

15 | 区块链+社会治理：区块链如何为治理提供新方案？

你好，我是赵铭。

从 2019 年 10 月 24 日这天起，国家陆续出台了多份针对区块链技术在国内发展的利好政策，社会各界积极回应，各行各业对区块链 + 的探索热情都在上升。

在上一讲，我们讨论了企业应用区块链技术的相关内容，联盟链试点的最终结果是行业链，而行业链的集合可能就是价值网络的雏形。

而在政府这边，各级政府也带头摸索区块链技术在社会治理领域的内在价值。政府等职能机构主动参与区块链社会的探索，不仅能够推动政务管理模式的革新、提升办事效率，更可以与行业链进行协同，共同推进价值网络的建设。这一讲，我们就从区块链 + 社会治理这个角度，看看区块链可以为社会治理提供怎样的新方案。

社会治理

社会治理是指由政府、社会组织、社区、企业等参与主体分工协作，共同管理解决社会事务，维护社会治安秩序，保障社会稳定。

从概念上就可以看出，社会治理需要多参与方主体分工合作，这其实跟区块链的思想不谋而合，区块链在联盟链的体系中，去中心化的特性其实更多的是想表达多方协作的意思，因此我们也可以用多中心化替换。

社会治理涉及面其实非常广，但为了帮你把握重点，我们可以把社会治理简单分为政务跟公益两个部分。

政务的主体参与方上至国家各部委机关，下至各乡镇办事处，主要处理与人民群众工作生活息息相关的事务，比如户籍管理、社保公积金管理等等，在此基础上搭建的区块链网络，我们可以称之为政务链。而公益的参与主体主要是社会性非营利组织，比如孤儿院、红十字会等等，主要接洽的是社会事务以及对外援助工作等，与之对应的区块链网络叫做公益链。

而无论是政务还是公益，在与区块链技术的结合方面，二者有着诸多相似之处，因此可以作为一个整体进行分析。为了能让你对它们有整体的认识，我们可以从三个维度解析政务链 / 公益链，你可以想象成三维空间的 X、Y、Z 三个方向。

X：机关间的业务协同

关于这一点，我想你应该并不陌生。就拿政务来说，政府机关其实分成了很多的职能部门，比如市级部门就有公安局、民政局、劳动和社会保障局等等，他们分别分管社会治理事务中的一部分。

通常情况下，他们是独立进行工作的，但是在某些时候，一些公众事务就需要各部门间的协同，就比如我们现在基本上办理任何事务都需要身份证、户口本等材料证明你的身份，这其实就涉及到公安系统与具体办事部门间的业务协作。

那现在他们是如何协作的呢？就拿身份证明这件事来说，最糟糕的情况就是让你回到原户籍地派出所开具证明材料，这对于常年奔波在外的打工一族非常不友好。在信息技术如此发达的今天，就身份证明这件事来说，为什么还如此困难呢？归根到底，还是因为各机关的数据并未共享，也没有提供一种实时的在线查询服务。

而利用政务链，我们就可以基于区块链技术实现跨机关的数据共享，达到业务协同的效果。具体的讲，就是可以在需要共享数据的部门间搭建一条政务联盟链，每个部门维护自己的区块链节点，并通过该节点将需要被共享的数据上链，通过区块链网络的扩散，自然而然同步至其他部门的区块链节点，这样需要数据的部门就可以从自己维护的节点中获得相应的数据。

Y：同机关的上下级数据共享

在上一讲我们讲到，行业链的形成并不是自上而下的政策性产物，而是依靠行业龙头企业发起的联盟链试点，先进行小范围的探索，然后吸引其他企业的加入进而逐渐壮大，最终在监管等需求的促使下，形成统一的行业链。可以说，行业链的形成是自下而上的顺势而为，而政务链 / 公益链的形成方式却正好相反。

我们可以这样认为，政务链是在国家指导政策的基础上，由上级部门自上而下进行推动而逐步搭建的区块链网络体系。

这其实也很容易理解，主要是由行政管辖权决定的，同机关的上级部门比下级机构的权力的管辖范围更广泛，因此能够有力推动多个直属下属部门的技术体系变革。这就非常类似于我们之前提到的默克尔树对应的树形结构，父节点可以统辖归属于该节点的所有子节点事务。

另外，政务链的搭建过程是自上而下，而不是自顶到底。什么意思呢？一棵树有根节点与叶子节点，中间可能还有很多层级的中间节点，同样，管理同类事务的政府部门也有从部到厅，从厅到局，从局到分局等的分级。

如果政务链的搭建从一开始就要从部延伸到分局，那无疑是巨大的工作量，因此需要采用分而治之的方法，局部自上而下，然后再逐步贯通，而最终形成的政务链应该就能呈现出自顶到底的完整链条。

上面我阐述了同机关上下级之间搭建政务链的过程，那具体有什么作用呢？其实政务链主要用于数据的共享，或者可以说是用于数据的汇总。

同机关上下级意味着政务业务范围是一致的，只是管辖范围的不同，上级机关需要根据下级单位的数据做出业务决策。如果不采用区块链技术，上级部门就需要从业务层面入手，提供数据汇总的途径。

而区块链技术为此提供了另一种解决方案，在上级与多个下属部门间构建联盟区块链网络，彼此维护不同的区块链节点，下级部门的数据通过自己维护的区块链节点上链，这样上级部门就能获得所有下属部门的数据，在不影响现有业务系统的前提下实现数据的共享汇总。

Z：行业链的公信力背书

在上一讲，我说过行业链与国家权力机关的协同是一种必然。为什么这么说呢？接下来我们就这个问题展开讨论。

我们之前多次提到区块链的技术特点，由去中心化、不可篡改及可追溯性构建的区块链网络天然能给人带来信任感，而这是其他技术无法做到的。此时，如果你的业务仅仅是因为缺乏用户对平台的信任，迟迟无法得以突破，就可以采用区块链技术。

就比如公益，我们通过公益平台募捐以后，其实是很关注后续社会性援助的过程及结果的。但通常缺乏这样的渠道，就只能通过有限的对外通报获得捐赠物资的流通情况，久而久之，信任感缺失，我们可能便不再通过该平台进行援助。

如果采用公有区块链技术记录捐赠物资的使用情况，并能让任何人都可以加入到这条公益链中，物资流转从此变得公开透明、可追溯，这能让民众对公益平台的信任感倍增，也能变相促进公益事业的发展。

而如果更进一步分析，行业链所对应的业务不仅仅是有与用户间的信任问题，其实更主要的一点就是需要与政府等部门进行业务的协同，需要获得政府部门的授权或者接受监管机构的监督。也就是说，单纯的使用区块链技术是无法做到这一点的，行业链的运作还必须要有国家权力赋予的公信力。

而政务链正好可以提供行业链需要的公信力，当然，这时候的公信力并不是区块链技术提供的，还是国家权力机关本身的属性。只不过是复用在 X、Y 维度已经建立的政务链网络，而且随着跨链技术的发展，链与链的交互相比链与业务系统的交互要更加和谐、便捷。

互联网法院

接下来，我会通过互联网法院这个例子，为你进一步说明区块链 + 社会治理的作用。不同于其他“区块链 +”的例子，这种应用并不是我的畅想，而是已经实实在在存在的事物。互联网法院，意思就是将案件的受理到案件宣判等一系列诉讼环节都通过互联网完成。

现阶段，杭州、北京及广州互联网法院已经开通，这是司法系统顺应互联网发展趋势的重大举措。那互联网法院是如何为行业链提供公信力背书的呢？

其实可以用 4 个字概括，那就是证据先行，提前将后续可能会发生维权等司法纠纷的证据，上传至互联网法院的司法区块链进行证据公证，以便在将来可能发生纠纷时快速取证，提升维权效率。

现在很火的区块链电子合同、存证等行业链雏形项目，背后都有互联网法院的身影。

另一方面，不同互联网法院的区块链网络数据互联互通，也展现了机关间的业务协同能力，合同版权等司法证据在最初上传的时候是在一家互联网法院，但是在真正诉讼的时候却可能是在另一家互联网法院，甚至是一般线下的法院。如果无法做到数据融合共享，就并不能体现出区块链 + 司法的优越性，但毫无疑问，区块链技术是可以做到这一切的。

为什么要选择区块链 + 社会治理？

通过以上对 X、Y、Z 三个维度的描述，我想你已经对政务链 / 公益链有了一定的认知，三位一体，方为全貌。

但是，你会发现如果任意一个维度单拎出来，其实都可以用传统技术来解决。那为什么我们一定要采用区块链技术呢？我想这是大部分人首先会想到的问题，区块链 + 社会治理到底是不是伪需求呢？

其实，在联盟链的技术体系中，区块链的作用不是替换业务系统的流程处理方式，也不是替代数据库用做数据的存储，而是在充分利用区块链技术特性的同时提供一种可被信任的，便捷的数据共享方式。怎么理解这句话呢？

互联网信息技术已经出现了快 30 年，我国的信息化建设的年头也不短了。期间各行各业已经基于当时最先进的技术，搭建出了大量的信息化平台。但是这些平台却并未随着技术的发展而逐步更替，因此就逐渐落后了，这是选择业务优先的必然结果，而这种情况在政务领域更加明显。

怎么解决这种情况呢？全部推翻重来肯定不现实，相比前一个时代的业务优先，数据优先是新时代的选择，如何以最小化的成本实现最大化的数据共享，就是最主要的矛盾。

而通过对专栏的学习，你会发现区块链技术就是最好的解决方案，在不大规模改变现有技术架构的同时，实现数据在区块链网络中共享，而上层业务系统只需要极小部分的改动（与区块链 SDK 对接），即可实现对数据的上链以及利用其中的数据，在降本增效的同时，也能连带享受区块链技术带来的额外优势。

总结

这一讲，我们一起探索了区块链 + 社会治理的新方案，我分别从机关间的业务协同、同机关的上下级数据共享及行业链的公信力背书这三个维度，和你探讨了政务链 / 公益链的搭建过程及作用。

另外，我还通过互联网法院这个例子阐述了区块链与社会治理的结合应用，这确实能够提升司法维权效率，解决司法数据的融合共享问题。实际案例证明，区块链 + 社会治理并不是一个伪命题，而是一种切实可行的、从业务优先到数据优先的跨时代转型解决方案。

在上一讲，我说过行业链是特定行业的价值网络，而价值网络是所有行业链的集合。而这一讲讲完，可以说这句话其实还并不完整，行业链、政务链、公益链三者合为一体，才能称得上是联盟链价值网络的完整形态。

讨论

行业链、政务链、公益链组成联盟链价值网络的这个说法你是否同意呢？

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这节课对你有帮助，也欢迎你把这一讲分享给自己的朋友、同事。

16 | 困境与展望：区块链技术如何嵌入未来世界？

你好，我是赵铭。

通过前面区块链 + 篇章中的内容，我为你勾勒了未来在联盟链的体系架构中，价值网络可能的样子。

5G 物联网能够实现区块链的可信上链，尽可能的排除人为干扰，保证链上数据的真实性；数字人民币能够成为价值网络中的支付结算单位，是价值网络与现实资产兑换的定价介质；新基建四驾马车的有机结合，能够为价值网络提供强有力的技术支撑，为价值网络赋予强大的生命力；而行业链、政务链与公益链的相辅相成，将会构建出价值网络的骨干网络。

然而，现实却是我们才刚刚起步，区块链技术虽然是社会经济发展的一种新的助推剂，是价值网络的实现基石，但却因为其思想太过颠覆，导致发展不是太顺畅。因此，如何将区块链技术嵌入未来世界的发展进程中呢？这一讲我们就这个问题展开讨论。

区块链能力

在整个专栏的讲解过程中，我一直在将区块链的技术能力嵌入到每一讲的内容中，在我们就区块链整体的发展前景展开讨论前，我们同样要先了解，区块链技术在现代社会商业活动中发挥了怎样的作用。

接下来，我们就重点从两个方面看看区块链技术是如何改变社会生产关系的。

改变信任主体

现在我们使用的应用服务多是传统技术支撑的，除了应用本身契合我们需求，我们的选择也代表信任开发该应用服务的企业主体。

但基于这种模式建立的信任关系其实很脆弱，一旦发生恶性事件被推上热搜，就会出现对应用服务的抵制，信任关系土崩瓦解。所以我们可以这么说，传统用户与企业间的信任关系其实是对用户使用习惯的培养，但却被误以为是信任。

那真正的信任关系如何建立呢？我对基于区块链技术构建的行业链模式满怀期待。

区块链具有去中心化特性，应用服务的数据由全体区块链网络的维护者共同保存，所以这个体系中没有明显的企业等第三方中介存在。这就意味着，对第三方企业（中介）的信任转换成对区块链网络的信任。而区块链网络依赖客观的技术实现，极少夹杂主观情绪，即使存在也会被共识协议抹平，也就是我们前面课程中所说的防止作恶。

粉碎垄断巨头

前段时间我在刷抖音的时候，无意中看到韩教授在《韩秀云讲经济》中提到关于垄断的话题，她大致是这么说的。

不知你是否已经发现，最近 1 年多来国家出台了一系列超乎寻常的政策，从反垄断和防止资本的无序扩张，到打击教育培训机构，从数据安全到打击学区房。表面上看是在整治富者越富，遏止穷者越穷，但背后是国家正在进行一场重大的战略转向，就是从效率优先转向公平优先，在确保做大蛋糕的同时解决如何分好蛋糕，来保证效率和公平。

我非常赞同韩教授的观点，我们以互联网行业为例，无论是早些年的 BAT，还是近些年的 TMD，他们就像是压在所有互联网创业者头上的几座大山，几乎永远也无法跨越。

“我有一个点子，现在就差个程序员了”的时代一去不复返。这几大巨头几乎覆盖了我们工作生活的方方面面，数据被他们牢牢攥在手里，而在这个时代，谁拥有了数据，谁就有绝对的话语权。

而区块链技术有望粉碎垄断巨头，甚至可以说，公司这种明显带有边界性质的机构可能会在新的时代被削弱。在行业链模式下，每一条链都是一条行业业务生态，竞争已不再是数据与用户习惯培养的竞争，而是在相同数据基础上的个性化差异服务竞争，因此可以由此来保证效率和公平。

矛盾点

通过以上两点对区块链技术在商业活动中的能力总结，我们可以看出区块链技术的发展潜力巨大。但既然区块链技术能力如此强大，为何在联盟链领域没有呈现爆发式的增长呢？我们可以从两个关键矛盾点加以分析。

去中心化与中介巨头的博弈

在生产力相对稳定的前提下，不同的人掌握的生产资料有限，但人的生存发展往往需要依赖各种生产资料。所以社会分工应运而生，每个人凭借自己的一技之长产生额外价值，以此换取他人手中的生产资料。

久而久之，我们都成为了一种“中介”，因为我们不用任何事都亲力亲为，只需要靠自己作为中介赚取的劳动所得去购买生活所需要的物资即可。

而区块链技术的去中心化特性则不太一样，区块链网络中的单个成员既是个体也是中介，可以说是人人为我，我为人人。把这种概念放在公链网络中是可行的，因为它能阻止单个中介造成的信任黑洞， 把对第三方中介的信任转移到对区块链的信任，一小撮黑中介作恶，并不会影响整个生态的稳定。

但如果把这种理念推向联盟链，使其为商业业务赋能，就会发现矛盾点的对立。前面的课程中我们指出，行业链的建立是基于行业龙头企业的小范围的联盟试点，之后逐步发展壮大，最终才会演变成行业链的形态。因此可以这么说，行业链乃至价值网络要想落地，离不开企业的支持，尤其是行业巨头的影响力。

然而通过对区块链能力的总结，我们可以发现区块链技术能够粉碎垄断巨头，行业链发展到最后，企业间的竞争是在相同数据基础上的差异化服务竞争。也就是说，龙头企业发展区块链，虽然能够获得中短期的收益，但最终结果其实是损害了自己作为中介的长远利益，所谓搬起石头砸自己的脚。

所以现在很多企业基于自身业务场景做的联盟试点，并没有进一步扩大，这种情况也就不难理解了。这也就是区块链去中心化与中介的博弈，核心还是企业缺乏利他及共赢精神，当然我们并不能为此说什么，资本的本质就是追逐利益。

那如何去化解这对矛盾呢？我们当然不能期望资本大发善心，而是需要更积极地探索行业链的盈利模式，一旦成功，标杆作用会使得联盟链的发展速度加快，从而进入价值网络的风口。

能力与使用的对立

区块链在技术层面的能力毋庸置疑，在联盟链中，区块链更倾向于是一种能在不借助外力的情况下，在多方互不信任的环境中，撮合商务合作达成。但就是这样实用的技术手段，在真正的使用过程中却有着诸多困难，难以真正将能力发挥出来。能力与使用的对立，我总结了三点原因。

思维转换困难

我们刚刚接触区块链技术的时候，时常被区块链的技术特性所迷惑，为什么去中心化的网络能够达成多方信任？为什么区块链技术可以实现不可篡改？区块链如何做到追溯历史记录的？这一系列问题让大部分人感到困扰。

即便能在概念层面模糊理解了，在真正动手的时候又会犯难，根本不知道该如何走出第一步。

这其实是一个思维转换的问题，在宏观理解概念的时候，区块链是一个整体，是分布式的网络。而在实现业务的时候，我们就不能以宏观的角度看问题，而是要将目光聚焦在某一个区块链节点上，这时你会发现，区块链节点其实就是一个可编程的数据库，与区块链的交互就是与这个节点以交易的形式进行智能合约的调用，仅此而已。

所以，想要用好区块链，要从宏观理解概念，从微观实现业务。

商业环境掣肘

在讲行业链的时候，我说过最初的联盟试点是由同行业的不同龙头企业各自寻找的合作伙伴运营起来的，这是现代商业环境的必然。其实很容易理解，资本在能垄断的领域几乎是排他的，因此互不信任（或相互竞争）的多方几乎没有核心业务的合作可能，因此就直接断送了区块链能发挥作用的可能性。

如何解决这个问题呢？说实话，这不是一个用技术手段就能解决的问题，而是大环境的现状。但是你会发现，政府等职能部门对区块链的推动，可能会打破现在企业间商业合作模式的重重掣肘，我们静观其变。

智能合约浅尝辄止

在以太坊将智能合约引入区块链领域以后，区块链的应用能力才被极大扩宽，可以说智能合约是外部世界与区块链网络交互的媒介。

虽然说智能合约的能力是强大且灵活的，但是真正在项目的实施过程中，却显得有些鸡肋。现阶段的联盟链项目中 PoC 的占比是巨大的，既然是试验项目，那注定不可能是核心业务的合作，或者说是不可能对核心业务进行大刀阔斧地改造，更多是在现有业务逻辑的基础上，扩展出一个口子，将部分数据上链，进行“形而上学”般的落地。

而且，虽然智能合约有可编程性，是具备业务承载能力的，但是试点项目更多的是将区块链作为数据存证的载体，因此是未将具体业务下放到智能合约。那可想而知，这样的业务试点无法充分发挥智能合约及区块链的价值，也就无法达到试点的目的，因此绝大多数联盟链试点就此止步，没有更进一步的发展，想实现行业链愿景当然困难重重。

突破口

我们通过对区块链能力以及对现有的区块链落地的矛盾点的分析，就会发现这似乎陷入了死循环。浅尝辄止无法充分体现区块链的价值，而深入探索又会损害到探索者的利益，可谓前怕虎，后怕狼。

那有什么办法可以作为突破口呢？虽然现实有不少困难要克服，但未来却是光明美好的，在现实与未来间的巨大鸿沟，我们可以从两个方面实现跨越。

明确区块链应用场景

现在有很多公司都在积极拥抱区块链技术，用自身的业务场景进行试点尝试，这是一个好的开端。但因为对技术以及未来前景的不明确，往往试点的结果是令人不甚满意，因此还需要对业务试点进行引导，找到适合区块链技术的场景。

我们首先要明确，不能为了区块链而区块链，在联盟链领域，除了技术平台，区块链并不足以独立成为一种业务。区块链更像是是空气，一种粘合剂，它本身是由四种基础技术组合而形成的融合性创新技术，同样的道理，区块链技术也需要与业务相结合才能发挥价值。

那什么样的业务场景适合区块链技术呢？一句话概括：需要多方协作的业务，才适合使用区块链技术。这里的多方是一个比较宽泛的概念，并不仅仅是指企业间的合作才叫做多方协作，企业与用户之间，企业内部各部门间，企业与政府的合作等等都可以叫做是多方协作。

因为只有这样，才会有去中心化（多中心化）存在的意义，才会有数据共享的可能性，单独一方搭建区块链网络是没有任何意义的，是伪需求。

加强智能合约与业务的融合

在公链领域中用户基于应用方提供的应用界面，通过手机钱包或浏览器钱包直接和区块链智能合约交互，中间并不存在第三方服务作为数据的中转流程。我们可以这样理解，公链应用的业务逻辑全部包含在了智能合约中，这样就能把智能合约的能力最大化地开发利用。

然而联盟链领域却不是这样，大多数的联盟链试点项目只是将数据上链，而并不是将业务上链，因此业务与区块链网络间始终隔着一层。诚然，这是因为业务系统先于区块链而存在，不能因为技术优越就完全推翻之前的努力。

但我们可以试着将项目试点更进一步，将部分相对独立的业务逻辑及流程用智能合约的形式实现，这势必会将试点推向下一个阶段。一旦区块链的价值凸显，融合过程将会成为大势所趋。

总结

这一讲，我们从区块链的能力入手，着重从信任主体及垄断抑制两个方面分析了区块链技术为什么契合企业商业活动。

虽然技术愿景很美好，但是在落地的过程中，因为固有思维的桎梏以及使用方面的诸多问题，导致区块链技术在联盟链领域还没有呈现爆发性增长。

但是如果我们都明确区块链的应用场景，减少伪需求，并加强智能合约与业务的融合，将区块链技术充分融入企业业务逻辑及流程中，联盟链的试点将会迎来一个高潮，行业链也会快步迈进，价值网络的达成指日可待。

思考题

关于区块链在联盟链体系推广的过程，你有没有发现其他的矛盾点呢？有什么解决办法吗？

欢迎你在留言区跟我互动，主动思考、积极交流会让你更有收获。如果这一讲对你有帮助，也欢迎你分享给自己的朋友、同事。

结束语 | 未来已至，赢在区块链思维

你好，我是赵铭。

时间过得飞快，这个专栏从筹备到完结，不知不觉已经过去了三个月的时间。回顾这个过程，我感慨良多。

最需要感谢的就是订阅专栏的你，我虽然有很多想法想要去表达、去释放，但如果没有观众，那只能是我的独角戏。专栏的完结并不代表着这一段关系的结束，我们还是可以通过课后讨论、课程交流群这些方式保持联系。

最初我是因为被区块链的技术所吸引，所以才会充满热情地投入其中。而交付这样一个专栏，我也同样充满热情，虽然经历了诸多挑战，但终究算是开花结果，这让我觉得不虚此行。

现在课程要完结了，最后一课，我想跟你聊聊我的心里话。

每次技术分享，都是提升自己的好机会

技术分享无外乎两种，一种是写，一种是讲，这两方面我对自己都还挺有信心的。但建立这样的信心，过程漫长而曲折，甚至可以追溯到我小时候。

作为一名农村留守儿童，我原先的性格非常内向。不过我从小就喜欢写点东西，不管是记录流水账，还是转载他人的经验总结，凡是重要的知识点，我在学习过程中都会试着用自己的理解进行记录、整理。

这阶段我只是关起门来自己写，还没有更多勇气听取别人的反馈。一直到了大学，我决心做出改变，让自己变得外向。所以我厚着脸皮去竞选班长，还很幸运地成功了。大学期间，我为同学服务了三年，虽然没有直接变成很外向的人，但已经相对没那么内向了。

这样的经历成就了我对机会的态度：有机会就上，所有的怯懦不过是对自己的不认可，或者准备不足，而这些都可以靠行动来克服。

等到工作以后，凡是有做技术分享的机会我都会努力把握，也会借机来细心打磨自己的观点。不过相比原先单纯的写作输出，对外分享的难度又上了一层。我的经验就是，把每次分享都当作提升自己能力的机会。

我现在沉淀下来的技术见解，可以说是我一路写过来的。从最初的 CSDN，再到近几年的知乎专栏，以及跟 InfoQ 等平台的合作。文笔不够华丽，但胜在足够朴实，这也比较契合技术文章的需求。也正是有了这么多的积累，才有了你现在看到的这个专栏。

但这事真正干起来没那么简单，第一个难题就是怎么讲？

定位是通识课，面向的受众群体又广泛，结合调研以及反复思考、打磨后，我决定把基础理论以渐进的方式融入到每一讲，尽可能为你呈现完整系统的区块链学习框架，为你今后深入学习建立导航。

接着我又开始思考怎么拆解理论，才能很好地把区块链技术体系呈现给你。

其实我以往研究的方向更偏向联盟链体系，这个体系更多是研究如何在企业业务中嵌入区块链技术，而你大部分人初步了解区块链是通过比特币以太坊的，虽然都是区块链技术体系，但侧重点还是有所差别，只讲其中任何一个方面，都容易以偏概全。

为此，我不得不查阅大量的资料，每周都会定期和我行业内的朋友交流，获得公有链最新的资讯，这里也非常感谢他们，帮助这个专栏往精益求精的方向发展。

而从我自身来说，我也感谢勇于挑战舒适区的自己。整理到区块链技术与应用结合的部分，我最初的构想是深入每一个领域，探讨与区块链技术结合带来的新机会，但有那么一瞬间，灵感迸发。为什么我不能试着建立价值网络实现的路径呢？能否把课程中的应用方向，抽象出完备的技术应用理论框架呢？

正是沿着这样的思路，我通过短短 5 讲就系统搭建起了我的理论框架：

5G 物联网能够实现区块链的可信上链，尽可能排除人为干扰，保证链上数据的真实性；数字人民币能够成为价值网络中的支付结算单位，是价值网络与现实资产兑换的定价介质；新基建四驾马车的有机结合，能够为价值网络提供强有力的技术支撑，为价值网络赋予强大的生命力；而行业链、政务链与公益链的相辅相成，将会构建出价值网络的骨干网络。

这个专栏倒逼我不断前进，虽然我现在都觉得被催稿是一件很可怕的事儿，但付出与收获终成正比。在挑战面前，机会的价值越发宝贵。

区块链的思维：独乐乐不如众乐乐

而关于机会，我想每个人都有他独特的选择方式，就像你选择通过这门课学习区块链而非其他渠道一样。那么到了结课的这天，不知道我所表达的区块链思维你是否完全 get 了呢？

还记得开篇词里的知识地图么？我们在这个专栏里探讨了区块链的来龙去脉，聊了支撑它的基础技术，也谈到了技术跟应用的结合点等诸多内容。当你学完整个课程，再回顾这张地图，相信你会有不一样的感受。

其实，这个专栏里我最想交付给你的就是怎样科学、理性地理解区块链。也许你不会因为学了这门课，就像我一样决定投身区块链行业，但如果能让你领略区块链的风光，学习到一种新的思维方式，那也不虚此行。

我前面提到的分享，这跟区块链的思维方式其实异曲同工。由去中心化思想构建的区块链技术体系，必定会产生由多家企业围拢的新生代商业生态，依靠过去那种设置竞争壁垒从而脱颖而出的商业模式在未来注定是行不通的。

独乐乐不如众乐乐，我们需要转换思路，“我为人人，人人为我”才是真正的区块链思维。只有通过分享，营造开放、互赢、利他的商业合作环境，才能跨越现实与价值网络之间巨大的鸿沟，将价值网络的宏伟图景照进现实。

如果 10 年、20 年以后，价值网络真能如我所想的方式进行落地，我可能会开心得像个孩子。这其实也并非我的个人臆想，在当下这个大环境下，国家已经出台了一系列政策进行重大的战略转向，从效率优先转向公平优先。

这其实是区块链技术大展身手的好机会，由区块链技术促使的行业链发展模式可以很好地在公平与效率间取得平衡，而这就需要考验企业的技术前瞻性，谁能占得先机，谁就可能在未来走得更远。而如果企业不能放下曾经构筑的层层商业壁垒，那最终只能在这场转型中落后，甚至被淘汰。

另外，关于公链体系与联盟链体系的走向，我个人认为数字人民币是关键点，如果能将数字人民币与公链体系彻底融合，公链圈与联盟链圈就能重新相交相融，或许行业链乃至价值网络时代将会提前到来，那可能就是区块链技术的黄金时代吧。我期待着！

未来已至，你我已在路上！

最后，我为你准备了一份毕业问卷，希望能占用你 2 分钟的时间填写一下，我十分期待得到你的反馈，听你说说对这门课程的想法和建议。