这依然是一篇科普性质的文章,文章的主角就是我本人在区块链工程领域的偶像,文中介绍了他到目前为止的主要贡献。希望这篇文章也能帮助你认识他、了解他。完整阅读全文约需要 6 分钟。
Gavin Wood 是谁?
Gavin Wood 出生于 1980 年,英国人,是英国约克大学(University of York)的计算机科学博士,是一位杰出的软件工程师,一个实干家。
Gavin 最初是在 2011 年看到了比特币,和当时的很多技术人员一样,他也没有意识到由比特币系统引入的“区块链”有着何等改变世界的潜力。到了 2013 年,他开始意识到可编程区块链的价值,并在年底时经共同的朋友介绍,认识了 Vitalik Buterin,看到了以太坊白皮书。他很快就决定帮助这个当时只有 19 岁的年轻人来实现以太坊这个伟大构想——一个可编程的区块链、一个智能合约和去中心化应用平台(关于以太坊是什么,请参考我的上一篇文章)。而这也彻底改变了他的事业发展轨迹。
Gavin Wood 博士是以太坊早期在工程上贡献最大的人:
- 2014 年 1 月,他完成了以太坊的 PoC-1(Proof of Concept-1),这也是 C++ 版本的以太坊客户端的最初原型。
- 2014 年 3 月,他完成了以太坊黄皮书。这份文献的水平和价值已无须多言。
- 2014 年 8 月,他发明了为智能合约开发设计的高级语言——Solidity。而 Solidity 也几乎成了此后几年内智能合约开发的事实标准。
以太坊项目早期的几乎所有重要技术决策都是他来做的,所以我们可以毫不夸张地说,Gavin Wood 博士是工程上的“以太坊之父”。
Web 3.0 的构想
Gavin Wood 博士在 2014 年 4 月,也就是刚刚完成以太坊黄皮书之后,就发表了一篇论文来阐述他对“Web 3.0”的构想。
在这篇论文中,他提出了“后斯诺登”时代的 Web 形态,也就是他所设想的 Web 3.0 的 4 个组成部分:静态内容发布(static content publication)、动态消息(dynamic messages)、无需信任的交易(trustless transactions)和集成的用户界面(an integrated user-interface)。
- 静态内容发布,指的是一种去中心化的、基于密码学构造的信息发布系统。它与传统的基于 HTTP(S) 和 FTP 协议构造的信息发布系统的最大区别就是信息的公开透明且不可篡改、不可伪造。这也是类似于比特币和以太坊这样的区块链系统所提供的基本特性。
- 动态消息,指的是一种基于身份标识的伪匿名底层消息服务。(参考以太坊中的 Whisper 协议。)在 P2P 网络中,是可以实现一种真正的“点对点消息”的,而不像我们目前绝大多数消息应用那样采用通过中心化的“服务器”来连接通信双方的“转发模式”。
- 无需信任的交易,指的是由比特币创造出来的基于公共账本的共识系统。基于这种公开的共识系统,可以从技术上确保交易双方“无需信任”(由密码学和分布式共识保证),也就是不再需要使用目前传统的必须依赖可信的第三方机构才能完成交易的业务模式。
- 集成的用户界面,指的就是集合了能基于以上三种新形式的服务来为最终用户提供操作界面和实际业务功能的所谓“去中心化应用程序(DApp)”。
他所设想的这种 Web 3.0 实际上就是基于 P2P 协议来从软件层面重塑互联网。当然,“去中心化”、“隐私”等概念天然地与目前已经被广为接受的互联网模式有一些冲突,是需要进行“权衡”或者“妥协”的,这里就不做更多讨论了。
目前看来,Web 3.0 其实并不是简单地取代或者消灭目前主流的 HTTP(S)、SMTP、FTP 这些中心化的互联网信息协议模式,而是要基于 P2P 协议构造新的网络架构以提供去中心化的网络服务,来与人们已经熟悉和接受的模式共同提供互联网信息服务。
自立门户
对 Web 3.0 的构想而言,以太坊仅仅是一个初级的实验品,从整体设计和代码结构上都有很多不尽人意的地方。当然,以太坊是成功的,其实际价值也不可否认。但已经成型的客户端代码架构以及社区共同维护的模式使大规模的代码重构和再设计变得非常困难。于是,Gavin Wood 博士在 2015 年下半年离开了以太坊社区,创立了 Parity Technologies,由他自己主导后续的技术和设计方向。
Parity Technologies 最出名的项目当然就是 Parity(用Rust 语言编写的以太坊客户端),其优秀的代码结构正是出于对早期设计实现以太坊客户端的经验总结。而 Gavin 自己则将大部分精力投入到了他自己所设想的 Web 3.0 通用基础服务系统——Polkadot 项目中。
Polkadot 和 Web3 基金会
到 2016 年,Polkadot 的白皮书草案完成。在 Polkadot 项目中,Gavin Wood 博士提出了所谓“中继链(Relay Chain)”和“平行链(Para Chain)”的概念。用平行链来承载具体的业务,用中继链来使平行链之间的消息可以进行协议级的交互以构造完整的基于 P2P 网络的区块链生态。
Polkadot 得到了一定的关注和初始资金,但并没有过度炒作。Gavin 为这个项目设立了两年的封闭开发周期,并在 2017 年成立了 Web3 基金会(Web3 Foundation),主要资助 Polkadot 和与其生态相关的部分项目,Gavin 自己担任了 Web3 基金会的主席。
Substrate
Substrate 则是 Gavin Wood 博士在工程层面对区块链领域的又一个巨大贡献。这个项目是 2017 年底才在 Github 上立项的,Gavin Wood 也是最主要的代码贡献者。它是由 Polkadot 的 PoC(Proof of Concept)原型逐步演化而来的。
在开发 Polkadot 的过程中,核心开发者发现可以通过模块化和解耦设计将支撑一个区块链系统的网络层(P2P 协议)、共识层和应用层(数据模型和智能合约)分离开,以提供最大的灵活性,而不是像以太坊那样将数据模型和共识逻辑耦合绑定。
从技术角度讲,以太坊客户端的一大设计问题就是共识逻辑和基础数据模型的耦合。目前业内有很多项目是基于现有的以太坊客户端代码来进行改造的,包括一些许可链(联盟链)项目。那么共识逻辑和基础数据模型的耦合就成了在定制客户端时最复杂的、改动量最大、风险最高的工作。对于开发者来讲,这个问题是躲不过的。
将网络协议、共识和业务逻辑解耦的特性对于需要大量或者大幅度定制开发的区块链系统来讲极其重要,是影响工程效率和质量的关键特性,而 Substrate 就是提供了这种特性的一个项目。它本身没有任何业务逻辑,属于一个高度抽象的用于开发区块链系统的底层基础架构。它提供了基础的 P2P 网络协议的实现,一个独立的、可替换的共识层模型和一套可定制数据模型的智能合约开发接口。从代码结构看,它是高度模块化、高度灵活的区块链开发框架,可以说是到目前为止最好的可定制区块链基础框架。
基于 Substrate,软件工程师可以结合自己项目的具体业务需求来快速定制区块链系统。Polkadot 就是一个基于 Substrate 的定制化区块链系统,而未来所有基于 Substrate 定制的区块链系统都可以简单地接入 Polkadot 构造的多链/跨链生态。Substrate 可以用来定制独立的公链、定制能够与 Polkadot 的中继链交互的平行链,也可以用来定制许可链(联盟链)。从工程技术上讲,这能够快速定制区块链系统的特性当然有非常重要的意义,也符合“不重复造轮子”的工程原则。
小结
Gavin Wood 博士可以说是构建 Web 3.0 生态的伟大践行者,Polkadot 和 Substrate 就是为实现他自己提出的 Web 3.0 构想所进行的工程实践。这两个项目,尤其是 Substrate 在工程实践上对区块链技术发展落地的贡献是非常巨大的,其技术价值毋庸置疑。
最后需要明确的是,Polkadot 和 Substrate 都属于通用基础技术框架,本身并没有具体的业务功能,它们的设计目的也不是要承载特定的功能。它们是要提供一种基础技术服务,让定制化的区块链能更简单地实现并使这些定制化的区块链可以进行相互通信来逐步构成完整的 Web 3.0 业务生态。这也是 Gavin 本人的伟大构想。
虽然在区块链技术得到广泛应用之前,作为全新的 Web 3.0 基础技术框架的 Polkadot 和 Substrate 恐怕不会得到太多关注,但 Gavin Wood 博士作为开源区块链技术领域的杰出工程师、实干家和开拓者,他在工程上的贡献有目共睹,也配得上所有的赞誉。
也许懂技术的朋友可能会觉得不过瘾,所以最后附上文中内容涉及到的一些原始资料的链接,如果你有兴趣,可以自行学习。友情提醒:Gavin Wood 写的技术 paper 都有相当的难度,要真正啃下来需要很多时间和精力,但收获也同样很多。相信我!
参考文献:
Gavin 的个人网站,包含了文中提到的论述其 Web 3.0 构想的论文:http://gavwood.com
以太坊黄皮书:https://ethereum.github.io/yellowpaper/paper.pdf
Polkadot Lightpaper:https://polkadot.network/Polkadot-lightpaper.pdf
Polkadot Whitepaper:https://polkadot.network/PolkaDotPaper.pdf
Substrate:https://github.com/paritytech/substrate#documentation