火星财经编者注:本文为2019年王峰十问中王峰与Gavin Wood两小时闭门对话全文实录。DOT自上线以来一路飙,总市值已空降至TOP10,是什么让波卡如此广受期待被热捧?这场对话将Polkadot、Web 3.0和跨链机制娓娓道来,相信读者能有所收获。
9月24日上午,Polkadot(波卡)及WEB3基金会创始人Gavin Wood博士做客“王峰十问”访谈,围绕Web 3.0、跨链机制、程序设计及“一键发链”等相关话题,与火星财经及共识实验室发起人王峰在清华大学附近进行对话。二人相谈甚欢以致忘记午餐,原计划的一小时对话也延至两小时。
Gavin Wood出生于1980年,英国人,英国约克大学计算机科学博士和音乐可视化博士。2013年加入以太坊团队,分别编写了以太坊技术规范“黄皮书”及用于智能合约设计开发的高级语言Solidity。2014年,发表《去中心化应用:Web3.0是什么样子》一文,首次系统阐述了Web3.0的概念。2016年,完成Polkadot白皮书草案,提出“中继链(Relay Chain)”和“平行链(Para Chain)”概念。2017年成立了Web3基金会(Web3 Foundation),主要资助Polkadot和与其生态相关的部分项目。
以下为本次现场闭门对话原文:
第一问
王峰:我们为什么需要Web 3.0?
Gavin Wood:我认为区块链是实现Web 3.0拼图的关键部分,但我不认为它代表全部。如果我们坚持Web 3.0应该是分布式的,认为网络应该自主运转而不是由某个坐在椅子中间的权威人士指手画脚,那么我们就无法绕过这样一个事实——为了消除权威,我们需要达成什么?
如果没有对真相的共同看法,没有让不同节点达成某种共识,我们就无法在决定世界经济的重要细节上达成一致。资产余额、身份、保险甚至金融合同,其实都不重要,关键是人们需要形成某种共识。比如像BitTorrent这样的分布式内容分发工具,就是在执行Web 3.0的理念。
如果将Web 3.0定义为去中心化网络,那么我们确实需要以一种去中心化的方式来打造一个信任网络,这可能需要网络中建立分布式的节点,另外还要形成共识,这样才可能建成。
王峰:我身边一些互联网行业资深人士偶尔也会提及Web 3.0,但他们不太相信区块链。你认为区块链是实现Web 3.0的唯一途径吗?
Gavin Wood:即便形成了分布式的节点和共识,我们打造出来的也只是“相对真理”,而不是“绝对真理”。但如果没有区块链提供的共识机制,连“相对真理”都很难打造出来。原因在于,每个人都是一个独立个体,只对他自己的交易和行为负责。因此他需要一个去中心化组织来输出一个达成共识的结果。
王峰:所以你认为实现Web 3.0不一定全部通过区块链,但区块链是不可缺少的一部分。
Gavin Wood:我想是这样。区块链是一种技术,是一种解决特定问题的方法。将来可能有更好的解决方案,但目前,在没有中心化权威的情况下促成全世界达成共识,区块链是最佳手段。
第二问
王峰:莎士比亚说,一千个人眼中有一千个哈姆雷特,一定意义上,我们今天所谈论的Web 3.0很可能就如同哈姆雷特一样,每个人都有不同的理解。那么,什么是你心中那个“完美的哈姆雷特”呢?
Gavin Wood:我认为Web 3.0是一个从必须信任运营者到自己成为运营者的过程。没有中心,只有边际。简而言之,就是“less trust, more truth”。想说明什么是Web 3.0?这就是一种非常简单的方式。
人们对于Web 3.0有着不同理解。这个概念在不同人中千差万别,与权力下放无关。所以,我决定暂时忽略这些。在Polkadot的生态体系中,Web 3.0意味着分布式。分布式也意味着可以减少对它的依赖。
第三问
王峰:从前端来看,今天的Web 3.0和Web 2.0同样遵循了HTML5的书写规则以及CSS文件格式,但实际上,后端的技术思路完全不同。比如你认为Web 3.0时代,浏览器会成为“钱包”或“密钥存储器”,对应了用户在网上的资产和身份。
那么,可否这样认为,相较于Web 2.0,Web 3.0不仅仅是生物界所说的“自然进化”,更像是迟早要来一场“基因突变”?
Gavin Wood:其实在用户层面,他们不会特别关注Web 3.0的概念。他们可能更多会留意到用户体验的简化。从Web 1.0到Web 2.0,带来Facebook、即时通讯软件、实时游戏等用户体验发生显著变化的产品。但在后端,改变其实并不大。
不过到了Web 3.0,后端会出现比较显著的变化,后端开发的变化尤其显著。过去一些可能无法完成的事情,现在都有办法实现。当然,这是一个逐步进化的过程,不太可能突然发生。
王峰:如果从这个角度来看,我觉得现在提出的所有Web 3.0概念和它所展现的用户体验,其实用户理解起来都更困难。比如Web 3.0提倡的密钥和钱包,相较Web 2.0的密码和账号,比如邮箱账号,用户理解起来还是比较困难的。
Gavin Wood:大规模用户的参与,只有等到Web 3.0的产品或服务的界面变得非常直观、非常好用后才会开始。比如说,用户可以把私钥存在智能手表等可穿戴设备上,然后通过它与其它设备交互解锁。这时用户理解Web 3.0就会很简单。
王峰:你认为这个过程大概需要多久?
Gavin Wood:我觉得可能至少需要5年。预测一个比较准确的时间点非常困难,但我觉得未来正在朝着这个方向发展。
类似的事情,中心化组织也可以做。比如说把私钥保存在终端设备上,再用它去解锁其它设备。毫无疑问,智能解锁的设备肯定会触及这些数据。如果中心化组织采用去中心化的做法去保存数据,监管机构肯定会不满,因为这样就没有办法监控使用者的记录。
第四问
王峰:我注意到Web3 Tech Stack规划了一整套协议和技术栈,而Polkadot把工作重点放在了其中安全可信的互操作性平台的设计上。你认为这是Web3技术栈中最核心的组件?
Gavin Wood:我认为它是Web 3.0拼图的重要部分,但不是中心元素。最终,Web 3.0的实现依赖两方面发展:一是技术发展,二是互操作性。
Web 3.0依赖于构成它的不同组件相互通话。目前Polkadot正在朝着上述两方面发展迈进,通过组件隔离来帮助进行。例如在以太坊中,智能合约的执行效率会因为其执行环境而受到很大限制,但Polkadot的限制则要小很多。
除此之外,Polkadot更广泛的愿景则是通过提供特定的基础设施(如密钥存储)和智能合约来定义潜在货币。我们可以想象各种各样的潜在用例,它们非常实际和具体。对于Web 3.0,这些都很有必要。
第五问
王峰:让我们来谈谈区块链的可开发性(Developability),Substrate的技术路线规划最初是如何产生的?
Gavin Wood:我很喜欢抽象化模型,感觉规划Substrate技术路线像经历了一个抽象化的过程。Substrate有两点比较重要:第一是模块化,第二是支持重复使用。
在开发Polkadot的过程中,我们开发了很多可以给其他程序员使用的功能。Substrate是一个尝试,它把可重复性推到了极致,很多功能允许开发者抽离出来给别人使用。
尽管我很喜欢抽象化的过程,不过在做其他项目的时候,我也因此遇到了一些矛盾点。例如,我希望在保持可重复使用的同时,同时保证高性能和高效率。在设计Polkadot的过程中,我也在思考如何兼顾这两点。一方面,我希望保证可重复性,另一方面希望同时兼顾高性能。这是我们在Substrate里揭示的问题。
王峰:这很有意思,让我想起了PC应用软件开发的历史。回溯应用软件的发展历史,例如在DOS时代,哪怕修改一个Config参数文件,我们都需要到古老的文本编辑环境去。但到了Windows时代,不仅有可视化环境、有面向对象的编程,还有足够多的代码资源库可以嵌入到开发集成环境里来,开发变得容易多了。
我之前确实没有想到,原以为很困难的区块链开发与设计居然还有这样的方案可以解决,这让我想起了整个软件开发历史。你觉得可以按照这样的思路去理解吗?
Gavin Wood:历史是非常精彩的重演。
王峰:那我也可以去试试看,再去学习写一个(笑)。我听说在柏林Web3峰会上,你用30分钟还是10几分钟演示了如何用Substrate协议构建可行的区块链。
Gavin Wood:是的,30分钟。
王峰:还可以更快吗?(笑)
Gavin Wood:15分钟。(笑)
王峰:如果是熟练的工程师来写一个像EOS这样基于DPoS共识机制的公链,你认为需要多长时间?
Gavin Wood:如果你特别牛的话,可能需要3个月时间。不然可能要一年。一个人一年。
王峰:你是指用Substrate吗?
Gavin Wood:不是用Substrate。用Substrate的话,只需要15分钟。没有Substrate之前,你可能需要花费一年时间;有了Substrate,只需要半小时。当然,前提是你是一个拥有一定技术能力的工程师。
王峰:继续讨论这个问题。在以太坊的设计理念中,开发者可以通过掌握ERC20协议和编写智能合约来实现“发币”功能。而今天,在Substrate的设计理念中,开发者可以用简单的方式构建自己的区块链项目。相比过去以太坊的“一键发币”,Substrate主张的“一键发链”有何好处?
Gavin Wood:其实它们没有什么可比性。但智能合约和平行链还是有一定可比性的。ERC20为部分小型区块链项目解决了遇到的一些问题,比如小型区块链项目没人用,网络也不太安全,然后因为不安全就更没有人用……这是一个恶性循环。而ERC20的安全性是由以太坊来保证的。
王峰:你认为会有那么一天,我们看到“万链齐发”的局面吗?
Gavin Wood:与以太坊所提供的安全性相比,Polkadot和Substrate可以提供更高的自由度。在以太坊上,用户可以设计智能合约;而在Polkadot上,用户不仅可以设计自己的链,还可以设计自己的经济模型,拥有更多探索空间。而这可能之前在以太坊上是无法实现的。这就是两者之间的区别,和它相比,币本身是没有可比性的。
王峰:你应该知道,中国有“链圈”和“币圈”的说法。看来,以太坊之前属于币圈,Polkadot现在属于链圈(笑)。
Gavin Wood:关于“链”和“币”,对比以太坊和Polkadot,得承认通过以太坊发一些垃圾币确实比较容易。哪怕项目没有什么太多实际途用,但也可以发币。但在Polkadot上,情况就有所不同。
在以太坊上发垃圾币比较容易,但如果想在Polkadot上发一条链,你会遇到一些限制——你需要先质押一些代币,也就是说发无价值的项目需要先付出一定成本。之后发行方会发现这更耗费资源,就不会再尝试。
当然,Polkadot的平行链也可能会被人用来发垃圾币。但Polkadot本身是为那些有着更复杂逻辑的链而设计的。如果你用它来发垃圾币,其实会发现浪费的是自己的资源,很不值得。
王峰:目前有多少开发者在使用Polkadot测试网去写自己的平行链呢?我是指在中国。
Gavin Wood:在杭州的黑客松活动上,已经有20支团队在使用Polkadot测试网来开发自己的项目。(Polkadot中国社区负责人补充:Polkadot目前还未正式测试)
第六问
王峰:你过去对Substrate的智能合约ink语言介绍不多,是否可以详细介绍下ink语言以及它和Rust语言的关系?
Gavin Wood:现在还在开发过程中,我不是特别满意,所以不知道怎么说。基本上它和Rust是完全一样的,能用Rust开发环境就能用ink。
我们在设计ink时就希望它可以尽量地接近Rust,这样用户就可以直接使用,例如编译器等等。最初,我们想把ink视为一个完全不同的编程语言,因为在我们看来,写智能合约和写其它的软件有很大区别。
王峰:完全理解。
Gavin Wood:不过,它跟JavaScript有点像,但并不完全相同。总的来说,在设计相关工具时,我们花了很多时间,最终决定用一个跟Rust非常接近的语言。这样就能获得很好的支持,因为很多人在用这种编程语言。
王峰:我猜想,当时以太坊推荐用Solidity这样类似JavaScript的语言来开发智能合约,是因为用它来编写智能合约可能相对简单,比做一个Blockchain(区块链)要简单,所以他们选择了一种解释型语言。但实际上,你们选择的Rust其实是一种更加工程化的语言,一种工程能力更强的语言。进一步说,类似于JavaScript这样的语言,可能并不能很好地开发复杂的区块链应用。
Gavin Wood:现在是使用了JavaScript的语法,我个人比较熟悉。我如果建立一个新的技术堆栈的话,会让更多的人熟悉这种语法。
但是这个编程语言的语义,在功能性上跟JavaScript没有特别大的相似性,只是使用了JavaScript的语法。只要你知道怎么使用JavaScript,上手速度就会很快。
因此,我们采用了Rust,目的是让更多开发者使用。如果你本来就会写JavaScript,而Rust在语法上更像JavaScript,所以开发者使用Rust的难度可以降低很多。
在Rust的基础上,我们对ink做了一个比较微小的修改。之前,开发者也可以通过Rust写智能合约,但这其中有很多重复性工作。现在,我们相当于从这些重复性工作中抽离出来做了一个工具包,方便开发者直接使用,这是ink和Rust的唯一区别——ink更适合写智能合约。
王峰:可否在VScode等常用的IDE(集成开发环境)上编写基于ink的程序吗?
Gavin Wood:现在就可以用VScode来写Rust,因为它就是一个Rust,可以在电脑主机里自己执行(智能合约)。但是以太坊Solidity是一个新的语言,它执行合约会用到EVM(以太坊虚拟机),这是很复杂的,因为你不能直接在本地执行,也不能够支持一些本来就有的环节,例如IDE。
ink就是Rust经过微小改动后的版本。理论上来说,开发者原本的执行环境都还可以用。我最近也赞助了一个开发团队,他们主要在开发Rust项目。
王峰:Substrate是否提供了类似Remix的以太坊原生开发环境?
Gavin Wood:在VScode上做优化就行。因为ink有一些标签,跟智能合约相关,所以不需要再开发一个新平台。
第七问
王峰:在白皮书中,Polkadot将自己称为可伸缩的“异构多链系统”。能否在这里简单介绍一下,异构的设计思想和实现跨链后的好处呢?
Gavin Wood:与以太坊相比,Polkadot可以为开发者提供更高的自由度。
最初,Polkadot的设计逻辑并没有直接联想到互操作性。我们在等以太坊的分片技术推出。但分片一直没有实现,现在也没有推出。因此,我想自己做一个扩展性更强的“以太坊”,在设计过程中将分片概念推到了一个比较极端的程度,就干脆不要分片了,设计独立的链就行。
这样设计的话,不同链之间就可以互相传递信息,最终的结果是通过一个共享的共识层面来实现通信。
王峰:突然想问你一个问题,为什么基于分片及PoS共识机制的以太坊2.0的研发速度会如此缓慢?Without you?(笑)
Gavin Wood:(笑)不能这么认为,以太坊应该有他们自己的理由。我认为,这或许是在对冲未来的风险。我在设计Polkadot的过程中,也一直在思考这个问题。造成这种情况的原因在于:
首先,有很多新的底层技术出现,例如一些新的原生密码学;
其次,在开发的过程中,一方面需要确保技术之后还会被采用,另一方面还要保证项目能跟上行业发展。
因此,Polkadot支持开发者在Polkadot上面发链,同时也设计了很多兼容其它技术的部分。就像我刚才说的,很多人在等以太坊2.0推出,但一直等不到。所以我决定做Polkadot。
王峰:Cosmos将自己定位为Internet Of Blockchains,业界也常常比较你们。你介意在这里谈谈Polkadot和Cosmos各自的优势和不足吗?
Gavin Wood:这个问题我不太好回答。Polkadot和Cosmos其实是两个不同的项目。不过我跟Cosmos创始人Jae Kwon关系很好。你问的这个问题没有出现在两个项目的创始人之间,但常常出现在社区中。如果人们对Polkadot的技术开发没有什么信心,就可能会更加关注别的项目。此外,也有某些投资者为了宣传自己的项目,而说别的项目坏话。
第八问
王峰:按照现在的开发进度,可不可以进一步明确Polkadot主网在什么时候发布,是否会像以太坊那样一推再推?另外,能否请你介绍一些具体的Milestone(里程碑)?
Gavin Wood:我们不可能像以太坊2.0那样推迟那么久,几个部分的共识算法已经很成熟,而且运行环境十分良好。
王峰:不如你告诉我,最近的一个Milestone什么时候发布吧。
Gavin Wood:我们三周前完成了Kusuma测试网的一些测试,可能需要2~3周才能正式公布。共识协议也还存在一些安全性问题。我们没有完全想好这些模型,很多时候也需要更多人测试节点,才能够保证共识的安全性。
另外,我们还在设计一些经济模型。接下来几个月我们要做的是给Polkadot上的验证节点设计一些惩罚措施以防节点作恶,另外还会增加经济激励模型。
现在还有一些网络传输协议,比如平行链。我们开发了一个新的概念,可以把平行链划分的更细一些。因为大家都知道平行链上节点是有限的,只有这么多,所以我就把这个进行细分。
还有一个关键节点是我们正在开发的一项功能。它能分为两条链,两条链进行升级时,可以把一部分核心逻辑放到一个特定部分。当涉及到一些重要交易时,可以直接使用这部分参与交易,而不是通过正常的链。由于这两条链升级时,这部分核心逻辑没有发生改变,因此可以保证两条链在升级时,一些重要的交易依旧能够进行。这是我们下一步要做的事情。
王峰:现在有多少人在从事这些工作呢?我具体指的是这个版本目前的开发人数。
Gavin Wood:只有4~5个人在完全从事Polkadot的工作。Polkadot智能合约的核心开发者是3个人,剩下的人在做Substrate的开发环境。我们需要编写的代码内容相对比较少,大部分都是做其它部分,比如一些开发环境,一些共识算法之类。
我认为,30个人每人开发一天,比不上一个人连着开发3天。
王峰:这我想起一个问题,去年Vitalik和我交流时曾提到,他很推崇DAO,一个分布式自治组织。你认同DAO吗?可是用这样的方式进行开发,效率会不会比较低?
Gavin Wood:我认为DAO是很好的想法,未来可能会出现很多类似DAO的自发组织,但目前它还存在很多问题,需要通过很多设计才能实现。就目前而言,DAO不太可能有很实际的用处。
另外,我觉得DAO不适合创造一个新东西。说起创造新事物,还是一个人效率更高。进行创造时,一个人的大脑里拥有所有构思,然后可以把构想的东西做出一个初步框架。这是第一个阶段。
第二个阶段,也是我们所组建3-5人小团队。我们每个人都非常清楚对方在想什么,合作起来完全没有障碍。我认为10个人的团队沟通成本已经非常高。在我们把这个东西的主干创造出来以后,可以让外部的人再来做一些帮助的事情,之后有几百人甚至几千人参与协作。
第九问
王峰:目前的规则是,任何团队想在Polkadot上面创建平行链,需要经过Dot 持有者投票同意,这个做法会不会有点类似于EOS?Polkadot会不会在一定程度上相对远离去中心化这一思想?它会不会可能变成类似EOS超级节点那样的大型竞赛?业界朋友很担心这点,希望我询问这个问题。
Gavin Wood:这也取决于EOS网络中心的想法,我们第一次上线时就出售了70%的Dot代币。Dot要么卖了,要么分散到大家手里。经过两次公募,我们开放了60%的市场份额。
我的意思是,尽管你有很多Dot,可以保证你在Polkadot上创建一个平行链。但如果你只有一个平行链,而链上没有做任何东西,其实对你也没有任何经济上的好处。而且Dot本来可以拿去做质押(Stake),质押还会带来一些其他的用处。但如果你只是把Dot锁在平行链上,这个链就没有任何用处。非但不能从中赚钱,而且相当于你在亏钱。因为别人把Dot质押后,就可以抵抗通胀了。Polkadot网络存在一定的通胀。
所以,我认为Polkadot与EOS不同。EOS超级节点能够分到更多钱,但Polkadot不是。虽然有些人可以拥有很多Dot,但如果他的平行链没有什么本质用途,依然赚不到钱。
很多人质疑Polkadot平行链的数量有限,可能开始时会有100个、200个,但我们会把每一个平行链再分成平行线。比如说平行链,我们可以把每一个出块相当于拍卖出去,因为你可能不需要一整条平行链,只需要几个区块。另外每个人可以使用一条平行链的不同区块,也可以轮流使用几个区块,这样就可以让更多人来使用这个平行链。
另外,开发者也可以从平行线开始做起,只做几个区块。如果做得好就可以转换成做一整条平行链,如果觉得没必要做平行链,也可以只做平行线。
第十问
王峰:你最初的编程启发来自何处?我听说你7岁开始编程,能否谈谈你在编程上的一些体会?
Gavin Wood:当时我家里条件不太好,一开始在别人的电脑上编程。后来我家人花了40美金给我买了台电脑。这台电脑上有3个游戏。后来我玩游戏玩够了,就开始学习编程。
我在学校学的大部分都是偏理论性的东西,没有具体学习如何写一个软件。在英国读大学时,只有一部分时间和学习有关,更多时间是在玩。比如我练了跆拳道。
读硕士时,我研究了一些音乐和神经网络的东西。到了读博士的时候,则是在研究音乐的可视化。后来学心理学,我常常会思考社会是怎么运转的,觉得编程是表达自己一种很好的方式。
王峰:说到音乐,在你学习时,有没有感觉数学和音乐有很多相通之处?比如音乐有音阶、音程和调式转换,而数学也有很多运算、公式和函数。
Gavin Wood:我特别喜欢电脑游戏,也看到有人独自一人开发游戏持续了7年。所以毕业后,我的第一份工作就是去开发电脑游戏。我还记得开发第一款游戏是3D游戏。
王峰:那时候你用什么游戏引擎在做呢?
Gavin Wood:是我自己开发的一个游戏引擎,叫做“Ordio Engine”(音译)。我曾经对自己开发的项目撰写了一篇学术文章,但当时团队的人不允许发表。所以工作一年后,我就离开了。
由于我认为自己不太适合给别人工作,就开始做一些自由职业,做一些咨询工作。刚开始我给微软研究院做一些咨询工作,同时也在做一些项目,做一些可视化编程语言。
我还在意大利住了一段时间,在一家学校里教数学和音乐。真的需要一份工作时,我才会去工作,其它时候更多是在满足自己的好奇心和享受生活。比如当时我做了一个桌游。后来,我看到了一篇Vitalik的白皮书,我觉得这个挺有意思,于是就开始参与这方面的事情。
王峰:所以你和Vitalik认识,是先读了他的以太坊白皮书,是吗?
Gavin Wood:我和Vitalik在上海认识。一起吃饭时,他还向我介绍了一个Core,比特币核心开发者。
王峰:你会给正准备入门的区块链开发者们什么建议?
Gavin Wood:我第一个建议是——远离数字货币,远离币市。要认清自己做的事情,不要被正在做的事所限制,要对这个世界有一个比较整体的认知,比如区块链、经济模型,然后有很多方面的事情可以去做。
最重要的是,你要持怀疑态度去质疑和挑战现有方式和方法。而且应该用“第一性原理”去理解很多事情。遇到问题时,要自己思考这个事情应该怎么做,而不是让别人来告诉你怎么做。
王峰:这真是一次非常令人愉快的聊天。感谢Gavin Wood的分享,谢谢。