Polkadot的Substrate基础链简介

如果你关注了Polkadot项目,可能会多次看到“Substrate”这个词。 它是Polkadot项目的重要组成部分,但有关它的信息非常少。 白皮书或黄皮书里找不到, 至少没有专门的介绍“Substrate”。 从较高的层面来看,Substrate是一个可以创建数字货币和其他去中心化系统的框架。 这太笼统了,本文详细说说。
首先,Parity Substrate是独立于Polkadot的项目。 Polkadot是基于Substrate构建的,现在你可以使用Substrate来构建新的区块链项目,而不用等Polkadot开发进度。
那到底什么是Substrate呢? 它是一个框架,类似于Express框架或其他Web应用程序框架,只不过是用于构建分布式或去中心化系统,比如加密货币项目,或消息总线系统。 正如大多数Web应用程序不需要重新实现自己的HTTP一样,我们认为创建新区块链也不需要从头实现网络和共识部分的代码。网络和共识的开发需要密码学专家、网络安全专家、网络工程师、网络运维人员等等,但是其实你应该专注在产品的核心业务逻辑上。 所以如果你使用Substrate,只需要实现非常少量的回调,就能得到这些特性:
·共识机制,不可逆性,出块投票逻辑。 即使你的项目不需要构建加密货币,甚至不是需要区块链的项目,Substrate也可以用于需要拜占庭容错机制的项目,比如网络中部分节点宕机、失效或者被恶意控制,但整个网络仍然可以继续正常工作。
· p2p网络。比如p2p节点的搜索,同步等等。
· 运行时的WebAssembly虚拟机。可以运行智能合约,或者其他基于Substrate开发的项目。 虽然你可以编写自己的虚拟机解释器,但我们坚信使用WebAssembly运行时的好处是,可以让你利用在WebAssembly社区的工作成果;
· 在浏览器中运行一个节点,并与其他节点通信;
· 跨平台的数据库/文件存储系统,还支持浏览器环境;
· 客户端平滑更新。对于可能影响共识的更新,会将代码编译成WebAssembly的执行文件,然后部署时作为网络上的一条消息。 这样的机制提供了这种可能,就是你还可以本地保有多个版本的共识代码,并在本地执行一个与部署环境不同版本的共识,Substrate会去处理本机环境与部署环境的差异。因为WebAssembly有回退机制,所以保证不会有不受控制的硬分叉或其他难以解决的共识导致的问题。
· Polkadot发布时立即接入你的项目。 虽然说使用Substrate构建的项目可以编译出一个独立的客户端程序(就像现有的区块链项目一样),但是把你的项目接入Polkadot就可以共享Polkadot的安全性和链之间的互操作性。 Polkadot本身就是使用Substrate构建的。Polkadot实现了Substrate API,会对Substrate框架中的任何漏洞进行快速反馈,很方便的运行Polkadot测试网,甚至再启动一个Polkadot链作为侧链。 这篇博客比较详细的介绍了Polkadot。https://medium.com/polkadot-network/how-polkadot-tackles-the-biggest-problems-facing-blockchain-innovators-1affc1309b0f
那你需要自己实现哪些东西呢?从本质上讲,Substrate是状态机,可以包括交易等内容。为了使Substrate尽可能通用,它本身没有任何交易。它有我们所谓的“Extrinsic外部交易”,这个“外部交易”是一个二进制BLOB,可以用来存储你想要的任何数据。对于大多数链而言,这些BLOB数据包括了交易,但使用Substrate,你完全可以从网络中去掉货币的概念,然后创建一个分散的Erlang样式的actor模型并发系统,赋予该系统一组受信任的权限,来验证网络行为的正确性。
如果你需要货币和交易,那么可能更简单 , 只要约定一个协议和一个数据库来访问数据。它比其他分布式架构(如微服务)更容易 ,因为运行的代码和数据存储在同一个地方,仅为数据存储提供向后兼容性就可以。对于具有私有交易的链,实现要复杂一些。
下面简要介绍启动并运行一个完整的区块链需要做什么:
1、初始化块的函数。该函数根据前一个块的头创建一个新的块。
块的头包括:1. 块高度; 2.块状态的加密索引,主要用于轻客户端验证块是否正确。 加密索引类似于hash; 3.块中二进制BLOB的加密索引; 4.父块的hash值;
2、块头的自定义数据。轻客户端仅同步块头,更新轻客户端时,注意处理块头中自定义的数据。
3、将交易写入块的函数。 这个函数也更新链的状态(例如,账户余额);
4、生成块的函数。生成一个写好头、写好BLOB数据的块。这个块就可以广播出去了。
5、校验块的函数。 全节点运行这个函数,确认接收到的块在接受之前是有效的。 例如,在资产链中,你可以检查是否有人人花费超过其自身余额的钱。
需要注意的是,块头包含块状态的信息,在生成块的函数里,要把块状态从初始状态设为完成状态,校验块的函数里,要把从完成状态变成校验通过状态。 块状态错了的话可能会导致共识问题。虽然以后可能会用其他方式来处理块状态,但是现在还需要这么做。当前的方式也不会太麻烦,额外写一个校验BLOB数据的工具函数就好了。
此外,你需要自己维护一个公钥集合,用于验证块的签名。块的签名验证与链使用的共识机制无关。 给块签名的私钥所对应的公钥应该放进这个公钥集合, 集合里的公钥可以变化,但每个块都由块创建时选择的集合进行验证。公钥集合里的公钥变化会产生的不同的公钥集合版本,以及由此引出的问题Substrate都会自动处理好。 公钥越少,安全性越低,公钥越多,验证耗费越多,这里要自己衡量。 通过签名验证后,块就被认为是“最终的”(即不可逆的)²。
使用Substrate创建链需要手动的处理POS,不是所有项目都要在链上发行数字货币。比如,测试网的币就没价值,还有消息总线的项目根本不需要数字货币。但是,在Substrate上编写一个库可以很容易地发行数字货币,并自动支持交易和POS共识³。比较推荐的使用Substrate方式,是在Substrate上构建更高级别的库,把Substrate作为项目的模块。随着Substrate的完善,会像编写现代Web应用程序一样轻松构建新链。
现在Substrate还没什么学习资料。 如果不是Polkadot团队的成员,很难学会本文讲的东西。 不过Substrate教程和文档很快就会有了。
补充3点:
你可能希望有向后兼容性,以便外部工具可以轻松地与你的链进行交互,你可以使用protobuf免费获得高效的向后兼容存储。
举一个例子,像比特币或以太坊这样的纯POW链根本不具有终结性,因为可能的验证器集是无限的。
例如,一个简单的POS链可能会在每个区块设置一次验证器,通过选择拥有最多权益的100个账户,并在获得不当行为证明时惩罚它们的权益。
最初于2018年7月9日在paritytech.io上发表,原文 https://medium.com/paritytech/what-is-substrate-29af4231d7e0

从设计哲学对比波卡与Cosmos

原创:张先生Wetez
前言
初视波卡与Cosmos觉得两个项目挺像的,都是基于中继链/侧链的跨链解决方案,后来为了写这篇对比文章找了很多资料,逐渐的发现设计哲学对项目后续发展不同的影响,得出了一点心得,欢迎大家一起讨论,。
每个人看项目的角度都不一样,安全重要?扩展重要?生态重要?哪一个要先发展?
在波卡与Cosmos开发人员的问答直播里,答案明显呼之欲出,两个项目一致共识从安全出发,这给我很大的体悟,从安全为起点思考这两个项目才是正确的方向。
没有安全就没有根基,为什么早些时候货币是金银,因为很难伪造,为甚么政府要在纸钞上做出这么多花样,因为假钞扰乱了真钞,正如这些货币,区块链上的加密货币一样如此,一条链出现了双花攻击,凭空造币等安全问题,那这条链大概率就声誉全毁,技术及远景再牛逼都是一场空。
以下开始正题:
第一个不同点
Cosmos与波卡两个跨链项目在安全上不同的设计哲学
Cosmos强调自治,希望能有一个更自由更自主的跨链生态,白话说如果一条链是一个国家,Cosmos这个大世界里,每个国家都有自己的军队与主权维护安全,所以在中心Hub和区域Zone上各自的验证人节点不同,自行维护安全。
Polkadot强调团结,希望更多的项目团结来增加跨链生态的安全,白话说在Polkadot这个大世界,大家共同建立一个联合政府,联合政府会指派军队去保护各个区域安全,所以在Polkadot上,中心Relaychain与区域Parachain的验证人节点统一由Polkadot系统分配。
第二个不同点
这样的安全设计理念下两者各自会遇到什么样的恶意攻击呢?
Cosmos下,中心Hub与区域Zone各是不同国家,每个国家负责安全的军队都不同,当跨链场景从ZoneA 到Zone B发生时,外部人怎么知道ZoneA 与Zone B的军队(验证人)是善良诚实的?在高速复杂的跨链场景下,某一个Zone被攻击后,可以发出虚假信息进而扰乱整个Cosmos大系统。
Polkadot下,所有军队(验证人节点)由Polkadot随机挑选并分发到不同区域(Parachain)上,如果随机分配到Parachain上的一群节点,是互相勾结的坏人,那外部人就有理由怀疑上面发生的跨链交互是有问题的。
如何解决呢?两者各有应对方案,在理想情况下
Cosmos本身团队是Tendermint出身,Tendermint团队深耕于在区块链上实现拜占庭容错,拜占庭容错能容许一定节点作恶下,系统依然不崩溃而正常运行,所以Cosmos有底气设计这样的自治生态,同时Cosmos的Hub中心会有一个全局观的代币状态,在最重要币的安全上,中心Hub有责任去检验不同区域Zone上的操作是否真的有这么多数量的代币,如果发现全局观的代币记录与分区上代币记录不一致,可以将中心Zone与区域Hub间的联系中断,有效遏止作恶引起的系统崩溃,具体实现等Cosmos上线后将会有更多的讨论。
Polkadot通过随机挑选验证人节点,维护每一条围绕Polkadot的链,当可以被随机挑选的验证人池子越大,那就会越公平与安全,想作恶的一群人被划分在一起的概率会下降,所以Polkadot官方希望有1000个节点来维护Polkadot这条链, 同时加入钓鱼人Fisherman这项角色,作为系统内警察,通过揪出作恶操作获得奖励来进一步加强系统安全。
PS: 真实的攻击和变化肯定更多,我不是安全专家,只是举了最容易了解的攻击形式
第三个不同点
安全设计哲学下如何影响代币价值与生态发展
币价和安全性有什么关系?
我们都知道比特币里一部分的安全是由矿工运行矿机来保证,算力成本的高低和币价有一定关联性(虽然不是直接因果关系),在PoS共识下,没有实体矿机,大家手中的币就是矿机,币通过委托代理Stake进行挖矿,同时维护链的安全,如果要攻击一条PoS的链,攻击代价就是控制1/2甚至要到2/3比例的代币。
先说Polkadot共享安全shared security的概念(就是前面提到的团结哲学),Polkadot认为不是每一个新的区块链都可以找到这么多节点来维护安全(事实也是如此,很多新公链最大问题就是节点不够,不够就代表不去中心化不够安全),Polkadot说我提供大家安全性,大家的链接入到我整个系统,所以Dot代币将来提供的不仅仅是Polkadot自身安全,还包挂围绕在Polkadot旁Parachain的安全,可想而知Dot用途更广了,价值也扩大了。
Cosmos强调了自治思想,所以每个区域Zone需要自己的验证人节点提供安全,在PoS共识架构下,每个自治Zone的代币都承担了安全保护的功能与价值,但同时Cosmos原生代币Atom的用途也相对Dot减少了。
反过来想Polkadot的模式其实是抢夺了其它链原生代币安全保护的功能与价值,建立在Polkadot上的链就只剩下本身业务场景才能撑起币的市值(打了一个大大折扣),所以我猜测一个希望自己做大(市值高),有自主权的链,会选搭建在Cosmos之上。
当然Cosmos也有在讨论提供共享安全性的想法,以现阶段区块链还在早期的阶段,市场上确实没有足够且去中心化的验证人节点来为新的区块链服务(必须要有足够的经济诱因),我认为共享安全性是一个不错的点子。
第四个不同点
瞄准场景的不同
Cosmos专注在代币流动的领域,还有支持跨链下使用代币进行的物件化模块功能调用。
Polkadot专注在整个信息的流动,其它Parachain的最终共识由Polkadot提供,使Polkadot的中心Relaychain在记录整个网络的所有信息状况更容易,Polkadot上可以做到直接调用其它链上的智能合约。
两个项目其实都可以向外扩展,或是向某个方向专注,特化下自然会形成两者各自的特色而吸引各自的项目开发者与使用者。
最后一些有趣的讨论
1. 不管是Cosmos和Polkadot都要面临验证人节点不足的问题,从我们参与社区的观察,一条链拥有超过100个不同背景的验证人节点现阶段是很难的(短期内区块链还没有发展那么广为人知,可能由基金会自己运行,投资机构运行,或同一个团队运行多个节点来满足)
2. Cosmos, Polkadot及Tezos, 这三个项目的验证人节点有很大一部分重叠,作恶问题,垄断问题可能发生,是一个有趣的事实。
3. 项目开发进度与回应速度,我会比较担心Cosmos,Cosmos项目已经延期,而且从我们递交给官方信息的反馈速度来看,Polkadot远胜Cosmos。
4. 跨链项目不会这么快,观察他们如何完美的解决连接以太坊及比特币再说,这两个最主要的区块链社区,互相连接上了才会有更多的交互的创意与应用,连接以太坊是这两个项目上线后最主要的目标,同时他们也提到连接比特币更困难,但还没有确定时间轴。
5. Cosmos团队提到2019年要开始宣传可组合型Composibility,Cosmos SDK是一个可以节省开发者大量时间的工具包,内置委托代理,治理,跨链等基础功能模块,Polkadot也做了一个类似工具包Substrate。除了设计哲学,谁能更好的说服及宣传自己的工具包,谁就能掌握更多的开发者。

准备好在 Polkadot 上开发吧!

之前我们已大致申明了我们相信 Polkadot 可以吸引开发者的理由:Polkadot 会解决限制区块链普及和创新的最大困难。在这篇博文中,我们会提出一系列的建议,帮助开发者为 Polkadot 的发行做好充足的准备。

我们相信,让开发者继续使用他们已经熟练掌握的技术来开发是有可能的。在可开发性上,我们的目标是尽可能移除开发去中心化技术的障碍,虽然长远来看,切换到使用一门可以编译到 WASM 的语言来开发会更好。其中的推论过程我们会在本文中详细说明。

现在我们要讨论两个主题:(1)部署在 Polkadot 平台上的去中心化应用的开发路径;以及(2)简单介绍开发者如何能够开发一条功能完整的平行链(Parachain),参与到 Polkadot 的多链环境中。

有意愿在 Polkadot 上部署智能合约的 dApp 开发者不是非得创建一条平行链,因为 Polkadot 将会有配备图灵完备状态机的平行链。如果你对开发一条平行链感兴趣,我们来深入了解下你需要实现的东西、你可以用来实现它的工具、以及一旦实现了你可以在链上做些什么。

在 Polkadot 上开发 dApp 和平行链

现在,有些开发者可能会问:“我们可以为 Polkadot 的发行做些什么准备工作吗?”

答案是“当然可以”!

我们非常乐意与想在 Polkadot 原生平行链上开发 dApp 或是开发新平行链的团队接洽。我们的建议是在一种可以编译到 Wasm 的语言上写智能合约以及平行链运行环境。

打造一条基于 EVM 的平行链、让开发者可以继续使用 Solidity 写智能合约也是有可能的。然而,我们并不推荐这样做,因为以太坊也希望在实现分片的时候(将虚拟机)转变为 Wasm。幸运的是,现在人们正在开发一种叫“Yul”的工具(原来叫 Julia),可以将 Solidity 编译到 Wasm。

从长期来看,我们希望 Wasm 对区块链开发者来说变成一种自然而然的选择,这也是为什么我们建议开发者应该开始研究 Wasm 智能合约。要阅读更多关于 Wasm 的材料,请看 Parity 对 Wasm 的解释以及他们的 Wasm 智能合约开发引论。

在 Polkadot 上开发 dApp

创建最终可以被部署到 Polkadot 上的智能合约,可以有两种主要的开发路径:(1)在 Wasm 上写合约,让它可以在原生平行链上运行,或者是(2)使用 Solidity 部署 dApp 在一条基于 EVM 的链上。后者对那些想要用现有可用工具来开发的开发者来说比较有吸引力,但从长期来看,切换到 Wasm 上会更好。

遵循选项(1)会是为平行链在未来启动做的准备措施。在 Wasm 中开发和测试 dApp、以及在 Kovan 测试网 或是一个自己部署的 PoA(权威证明)网络上做测试都是有可能的。来自 Parity 的 Fredrik Harrysson 在 EthCC 上解释了如果在装载 WASM 的 Kovan 测试网上运行 Rust 合约。围绕 Wasm 智能合约的工具有限,可能让测试更加困难,但这一点不重要。更多信息可以看 Parity 博客中关于 Wasm 虚拟机和智能合约的推文。

对那些倾向于遵循选项(2)并继续使用 Solidity 来开发 dApp 的开发者来说,我们建议仿效选项(1)。当然,这要部署在基于 EVM 的 PoA 链上,这也会让开发者可以测试数据流并得到一个具备一定可扩展性的可用产品。当以太坊连接到 Polkadot 之时,现有的 dAPP 便可以从系统提供的新功能中受益,包括扩展以及跨链通信。

调试一条 PoA 链是非常简单的,现在已经有很多教程,并且最终来说,这些链也可以在 Polkadot 创世块构造好之后(预期在 2019 年第 3 季度)连接到 Polkadot。假设切换到 Wasm 的趋势会持续下去,而以太坊会成功地实现分片,我们强烈建议使用 Wasm 作为首选语言。

具体流程如下所示:

  • 部署一条 PoA 链以及一个桥接合约(Bridge Contract)
  • 让 dApp 在 PoA 链上跑起来

桥接合约提供了消息传递功能,让孤立的链可以跟 Polkadot 联系起来。Polkadot 平台会拥有很多不同的链,在类型上也会百花齐放。

开发一条平行链

平行链这个概念一开始是在我们的白皮书中提出的,一篇之前发表的名为《Polkadot: The Parachain》的博文则在细节上进一步阐发了这个概念。

“平行链(Parallelizable Chain,直译为‘可平行化链’)是区块链的一种更简单的形式,它会附加由一条‘中继链(Relay Chain)’提供的安全性,而不是由自己来提供。中继链为附属的平行链提供安全性,也提供平行链之间信息传递的安全保证。”

后者解除了对桥接合约的需要,因为信息传递功能已经被整合进了协议中。

创建一条原生于 Polkadot 的平行链需要理解 Substrate。更多细节请看 Gavin Wood 博士在 Event Horizon 中的演讲以及 Polkadot GitHub 的子目录 Substrate。

Polkadot 多链架构的设计让开发者可以指定他们平行链有效性的概念。要实现一条平行链,开发者要实现一个状态转变验证函数、决定一种状态形式以及一种交易池机制。实现了自己的平行链只要,要将它与 Polkadot 整合起来和需要一系列额外的措施。要做到这一点,你还需要将状态转变验证函数部署到中继链上,然后分发一种包含交易池机制的核对者节点客户端(Collator Node Client)。

创建所有这些部分需要思考:一个核对者节点应该如何构造你的链的区块链、这些区块的有效性又如何能够被验证者节点(Validator Node)检查和验证。这里有两个选项:(1)从头开始编写核对者节点;或是(2)使用一个已有的可以运行各种状态机的核对者节点。在写这篇文章的时候,我们还没有余裕来写一个核对者节点,虽然更多细节会随着 PoC(概念验证)的发布而披露出来。

编写状态机的一个要求是使用一种可以编译到 Wasm 的语言。这是一种设计上的选择,可以保证足够的灵活性,比如为运行环境实时更新。研究在推进,平行链也可以容易地升级以实现最新的技术,比如分片。

我们希望一些热门平行链的代码可以被复制并重用到其他链上,甚至用到独立的区块链上。Web3 基金会邀请开发者们开始创建平行链以及所有其它对 Polkadot 的成功来说关键的通用组件,比如区块浏览器、钱包、中继节点和核对者节点的替代性实现。请移步 Riot以联系团队中的成员。

展望未来

Polkadot 启动以后能为开发者带来的好处是非常有吸引力的。无论是区块链之间和平行链之间的互操作性、可扩展性上的提升、大量执行中的效率提升,还是动态链上治理系统,很多理由值得你考虑在 Polkadot 平台上开发。

我们希望,已经在以太坊上部署 dApp 的开发者们、正试图在 Polkadot 上开发的以及刚刚开始起步的开发者们,能够从本文中得到对必要迁移的更清楚的认识。

我们计划在 2019 年 3 月启动 Polkadot 主网。因为我们正在推进概念验证和测试网,我们欢迎社区成员帮助我们推进项目;加入我们,让 Polkadot 网络落地。

我们邀请所有人下载 Polkadot 的代码,编译一下,连接到全球测试网。安装之后,请记得来 Riot 的聊天频道拿一些测试网的 DOT 代币!

开发快乐!

原文链接: https://medium.com/polkadot-network/preparing-to-build-on-polkadot-349ff5002885
作者: Polkadot
翻译: 阿剑

Gavin Wood: 我与以太坊的二三事

“但如果你真的想改变世界,还是得通过网络来学习和探索。”

序言

如果你是加密世界的技术流,你一定知道圈内的传奇人物Gavin Wood。他被称为以太坊的隐形大佬,人称“隐形大脑”,为人低调、神秘,但他的地位却举重若轻。他编写的《以太坊黄皮书》, 其作用和影响力堪比亚当·斯密的《国富论》。他是以太坊联合创始人,以太坊客户端Parity 创始人,Polkadot 创始人, Web 3 的发起者,他擅长英语、意大利语、法语、西班牙语、逻辑语,喜欢跆拳道、滑雪,也是著名桌游Milton Keynes 的设计者,他还是视觉音乐博士,以及CD RiplnPleace 的编写者。今天我们有幸采访到了Gavin Wood, 看他如何用代码改变世界。

访谈

Q1. 您从小就对经济以及博弈论感兴趣,甚至自己设计过桌游。这段童年经历给你带来了什么?对你后期成为技术大拿有着怎样的作用?
Gavin Wood: 我小的时候是个有逻辑性和创造性的孩子。大概8岁的时候,我开始在朋友的电脑上编程。在此之前,我喜欢乐高积木,但我基本上不看说明书,更喜欢靠自己的想象力拼出我喜欢的东西。

渐渐地我长大了,对这个世界有了更多的了解以后,我迷上了游戏,包括棋盘类游戏和视频类游戏。我很喜欢用编程做游戏,我做的其中一个游戏还在一本杂志上得到了很多好评。我不知道做自己喜欢的东西并努力把它做好这件事是否对我产生了一定影响,或者这种精神本来就在存在于我的血液里。

Q2. 大众都关注比特币作为货币形式的应用,而您却更看重其背后的技术,是独树一帜的技术流。当初是什么吸引了您关注区块链技术的呢? 您为什么选择创建以太坊?您又是为什么后来选择离开以太坊创立Parity呢?
Gavin Wood: 我从来没有对比特币经济产生过兴趣。比特币可能在刚开始火的时候很有里程碑性意义,但我并不是很感兴趣。因此,2011年我第一次听说比特币的时候,我并没有太在意。但是,2013年我再次研究这个协议及其衍生物的时候,我注意到了一些与众不同的东西:一种在不参考信任实体的情况下,在经济层面传递信息的强大手段。不同于通货紧缩的经济学,它的与众不同让我对这项技术着迷。

以太坊是一个有趣的项目,它帮助我自学区块链技术。我通常更喜欢直接去行动、开始使用技术而不是事先先研究。如果这其中有我不懂的地方,我会直接去学习。以太坊就是这样,我做以太坊编程就是把它当成一个练习。其实我并不知道它后来会发展的这么好。

当时我与Jeff还有Vitalik 有个模糊的想法,想一起合作,将以太坊这个平台发展壮大,从基金会发展成为公司。但是最终只有我这样做了 (Vitalik 担任顾问)。在做Parity 期间,我很遗憾没有继续作为生态系统的架构师,但我知道在我2015年底离开时,我还有更多的东西可以为以太坊和整个生态系统做出贡献。我和我的朋友以及程序员Arkadiy和Marek聊天时,他们跟我说了他们的新想法,想要三个人从头开始编写一种新型语言Rust。于我来说,这是学习和专注于新事物的挑战和机会,所以我同意了和他们一起开发。

Q3. 您创立的Parity后来世人皆知,也是第一个用Rust语言编写以太坊客户端的人。 目前市场上DApp层出不穷,从技术的角度来看,您如何看待市面上不断涌现的DApp呢? 同时,您作为很多项目的顾问,您认为好的项目具有哪些必要的DNA 呢?
Gavin Wood: 我曾经给一些项目提供了一些建议,但是近期我不会直接给一些项目做咨询,会通过Parity 间接地给一些建议。我不敢肯定的说,但我想有些项目认为我的经验和愿景可以帮助他们向前迈进。

我觉得人们使用以太坊平台创建DApp 是很好的,但是目前来说我没有看到哪个真正的DApp 是让我印象深刻的。当然,确实有一些很好的想法,比如Gnosis,Melonport,Provenance和Orchid,它们最终会成型,但我也认为平台尚未发展成熟到支持真正伟大的东西出现, 扩展性共识、暗消息传递、数据的快速发布和节源的可访问用户界面也还在发展过程中。所以我希望Web3基金会能够帮助完成部分或者全部的开发,当然,资金也是很重要的环节。

Q4. 您如何看待 Parity“多人签名”钱包漏洞导致数亿以太币被冻结事件?这个事件给您带来哪些影响?智能合约平台是否存在风险呢?您怎么看?您如何看待加密世界里的“安全”呢?
Gavin Wood: 这是很不幸的事件,它向我个人和生态系统强调了我们创造的这把“刀”的真正含义是什么。虽然我并没有直接参与这个有漏洞的软件的开发,但它确实反映出我对周围人的能力过于自信,对于我自己的判断力也是一样。

这些天来,我对于关于信任的技术观点更加的偏执。我将所有运营安全的决策留给有一定经验的人,并倾向于担任顾问角色。Parity本身就能够完成所有“生产”软件进行自上而下的审计需求。

正如对新兴技术的期待一样,平台的本身就充满了风险。虽然我在2015年写的钱包仍在被广泛使用,并且没有发现重大漏洞,但它是一个复杂的软件,也可能存在关键性缺陷。Solidity编译器也可能这样,原则上来说,就像在Devcon 2期间发生的事件一样,协议本身可能会是另一个问题,只有及时发现才能及时止损,这也是人们使用这个改变世界网络软件的代价。

Q5. Polkadot 致力于解决跨链技术,据说可以同时解决跨链和扩展性问题这两个当前区块链领域关注的核心问题。Cosmos 也是支持多链的区块链项目,因此Cosmos 与Polkadot有哪些相同点,哪些不同点呢?
Gavin Wood: Cosmos采用了由PBFT衍生的“Tendermint”算法中的“即时终结”属性,并且通过要求链上有相对小的权限需求来运行、跟踪彼此的权限,从而能够接收到简单的证明来证明行为已经发生。这个系统可能被看作“Tendermint的侧链”并且具有与之相同的问题。

它有待解决三大问题(至少在其原理上),即可扩展性、治理方式以及去信任化消息传递。Polkadot在其中两方面都取得了重大进展。

第一个“可扩展性”围绕着安全性以及扩展方式。正如通常所提到的对侧链的批评(即使是来自作者),如果共享的安全装置无法在不削弱其优势的前提下应用于所有的链上,那么在一个系统内拥有多条链的能力本身并不能解决可扩展性问题。例如,在诸如Tendermint/Cosmos的权益证明(PoS)系统中,添加到系统中的每条新链都必须提供新的经济激励措施,以此来吸引新的验证者来保护自己。如果由于该条新链用户较少,且代币价值低,从而导致该条新链支付不起新的验证者的激励费用,那这条新链将没有安全保障,并容易受到攻击。合并挖矿的方式是有可能实现的,但是如果没有复杂的系统(这可能看起来像Polkadot),数十条或者数百条链不可能成系统地运行。这就引发了下个观点。

让多条链能够彼此沟通是有用的,但前提是它们相互信任彼此。如果每条链具有不同的安全级别,那么一条链的验证和“最终验证”可能不像系统中的另一条链那样有效或者是最终验证。来自安全性较低的链的消息可能是无效的。Cosmos通过一条经过高度验证的“中心”链来解决这个问题,但是它有两个缺点:它引入了中心化的概念,而且它也限制了消息的性质,这些消息只能传递给中心链能够验证的消息。对于Cosmos而言,这仅仅意味着代币转移的消息。由于Polkadot在所有链之间共享安全性,它不会被上述这些问题所困扰:新链共享现有的安全设备,由于绑定到所有链上的DOT代币价值上升,整个系统会变得更强大、更安全。同样,由于所有链都共享相同的安全设备,因此它们完全可以信任从所有链发送过来的消息,而不仅仅是“中心”链发送来的消息。

最后,Polkadot的架构可以实现链上治理。由于Polkadot协议的所有核心部分都是在WebAssembly中编写并存储在链中,因此这些核心部分的升级、补救或更改可以根据参与者决定的任何政治结构进行投票实现。最初,该投票是通过轮换批准投票的公民投票和委托理事会的结合来实现。鉴于此,Cosmos没有可比性。

Q6. Polkadot 在2017年完成了众筹并锁定两年,到目前为止,有哪些技术突破吗? 在哪一阶段呢?
Gavin Wood: 我们最近发布了PoC-1,它引入了基本的权益证明(PoS)PBFT衍生共识算法,网络/链同步以及具有治理结构的WebAssembly核心运行时间。

我们正在快速研发PoC-2,这是一个初始的平行链环境,允许多个平行链之间共享安全,也是一个更好的权益证明(PoS)机制, 包含了缩减、奖励和网络遥测技术。

展望未来,我们的目标是在今年年底之前完成所有共识和平行链原型设计,明年将致力于改进、工具化、审计、搭建、平行链,并最终的平台发布。

Q7. 目前来看,您认为合理的治理方式是怎样的?
Gavin Wood: 治理方式是任何系统在不断变化的环境中生存下来应具备的功能。治理是在以太坊网络被设计出来之后而出现的想法。目前来说,治理在很大程度上没有什么作用(虽然也没有像比特币那样糟糕),而且耗费网络成本。
虽然链下治理足以让系统获得认可,但是链上治理从根本上改变了我们在透明度和包容性方面可以实现的目标,为社会构建打开了大门,否则这些结构不仅不切实际而且无法实施的。所以我们应该大胆做实验。

Q8. 您怎样评价EOS? 您如何看待越来越多的人关注EOS?
Gavin Wood: EOS是一个典型范例,它很好的说明了当低迷的技术与过度营销相结合时会发生什么,特别是当针对的是无知和最脆弱的人。我不认为监管对于以太坊生态系统来说是一件好事,但如果有一个项目可以改变我的想法,那也是可以的。

我不知道为什么有越来越多的人关注EOS,但是从纯粹的技术圈来看,我没有看到很多技术的东西。

从技术上讲,我知道EOS没有任何有趣或开创性的“DNA”。EOS对外的声称相当高级,但据我所知,它似乎是技术人员将之前的代码库在EVM(以太坊虚拟机)中进行翻新和克隆。这在我看了并不是创新。

Q9. 最后,您有哪些话想要对正在学习以及即将要学习区块链的程序员们说吗?由于区块链是一项开源的技术,您是建议他们进入大学继续深造还是通过网络自学呢?
Gavin Wood: 我很享受的我大学时光,大学为个人成长和社交提供了一个绝佳的环境。我觉得上大学是一件非常棒的事情,并建议大家都应该去大学提升自己。但如果你真的想改变世界,还是得通过网络来学习和探索。

结语

以上是我们此次对Gavin Wood的采访,非常感谢他对Unitimes的大力支持。如果您有更多的问题,可以在评论区留言或发邮件给 Contact@unitimes.media,也可以添加我们的微信服务号unitimes2017提交问题,我们会将重要问题转达给Gavin Wood进行解答。感谢您关注Unitimes,我们将成为您最有价值的伙伴。

采访及翻译:Shuyue Yang

校对:Xiaoqing, Hulin

Gavin Wood的故事:神级黄皮书、出走以太坊、乱世成名与三代区块链

这个世界从来不缺乏希望用代码改变世界的程序员。
笔者很早就想写一写Dr. Gavin Wood的故事,此人是以太坊名副其实的「隐形大脑」,然而江湖甚少关于他的新闻或报道,因为此人甚是低调。相比时常出席世界各大区块链峰会的神童Vitalik,Dr. Gavin显得低调而神秘。但是凡是了解以太坊项目发展历程的人对于Gavin Wood肯定不陌生。Vitalik发起了以太坊项目,初步构思了白皮书并完成初稿,同时进行了以太坊的众筹(如今称为ICO),但是直到Gavin加入以太坊项目后,以太坊的技术实现才走上正轨,可以说Gavin博士奠定了以太坊的技术基石。

神级黄皮书

在以太坊项目之中,其开创性的立身之本「以太坊虚拟机」(Ethereum Virtual Machine), 以下简称EVM就是Gavin博士于其写作的《以太坊黄皮书》中定义的,曾有大神感叹「此黄皮书全世界能直接看懂的加起来估计也不超一百个」,由此可见,以太坊黄皮书对于以太坊如同亚当·斯密的《国富论》之于英国资本主义萌芽、马克思《资本论》之于社会主义大潮的重要性一般。虽然以太坊的最初构想来源于Vitalik,但是毕竟在技术细节的实现和落实上,一个20岁的年轻人依旧有所技术局限,因此以太坊的协议细节很大一部分是Gavin博士设计规划的。据说当时以太坊遇到Edge Case边界问题时,VB和Geth都没法解决此难,最后的定夺都是Gavin主导。

那么,以太坊和Gavin写作的《以太坊黄皮书》中定义的以太坊虚拟机究竟是什么?

以太坊(Ethererum):是一个开放的去中心化的区块链自治系统,更确切的说,是一个可编程的区块链系统。任何人都可以基于以太坊构建和使用运行其上的去中心化应用程序,即DAPP。
以太坊虚拟机(Ethereum Virtual Machine):以下简称EVM,可以执行任意算法复杂度的代码。开发者可以使用语法上类似JavaScript和Python的编程语言(Solidity)创建运行于EVM上的应用程序。
简单说,以太虚拟机和在此基础上的「智能合约」是以太坊系统的一大创新和杀器。
Gavin在2011年第一次听说比特币,和很多故事中的主角一样,一开始对比特币并不感兴趣,据他自己所说,比特币是一种太关注于区块链货币形态的试验,而不是关注其背后的技术。但他在2013年重新审视这个划时代的试验时,却深深迷上了区块链技术,于是属于Gavin和Vitalik共同的一个新时代拉开了序幕——他通过朋友介绍认识了Vatalik。Gavin在自己的个人主页上这么形容这次相识:
“And Ethereum has dominated my life since” 「此后以太坊主宰了我的生活」。
随后Gavin开始了一个天才程序员的代码开挂旅程,一气呵成了包括以太坊早期C++版本客户端和以太坊Python原型展示客户端,以及基于Go语言的官方客户端Geth在内的一系列开发任务。两年间Gavin主导了以太坊的原型设计、系统开发以及最后版本的测试发布。在这两年中,这位硕士和博士都毕业于英国约克大学计算机科学系的天才程序员一直默默敲着代码,但也因此在区块链历史上留下了浓重的一笔。

出走以太坊与乱世成名

随后由于种种原因,Gavin Wood离开了以太坊,原因不详,但是听闻涉及到团队成员对未来方向的分歧和人员内部矛盾。毕竟这样奠定以太坊底层技术的神级CTO工资是很高的,据说在以太坊COO Stephan Taul离开时就曾表达了对其高薪的强烈不满。然而Gavin出走的真正原因也许没人说的清了,但是Gavin离开后做了一款世人皆知的以太坊客户端:Parity。Parity用Rust语言编写,应该使用过的人都知道,后期一度接近垄断了以太系钱包市场。Gavin 是第一个用Rust语言编写以太坊客户端的人,其性能上是Geth和C++客户端数倍。

据说还有个故事,以太坊DevCon2.0开发大会前夕,黑客利用Geth的漏洞发起了攻击,导致 Geth客户端全线崩溃,加上随后以太坊遭遇大容量垃圾信息攻击,只有Parity由于Gavin优秀的架构设计强势幸存,而Geth表现差强人意。于是经此一役,Parity一战成名,矿池节点纷纷倒戈切换到了Parity,至此基本奠定了其在以太坊体系中的江湖地位。

在与Geth的较量中,以Gavin为首的Parity开发团队可以说对以太坊的弱点异常清楚,随后在随之而来的2017年ICO爆发大纪元时代,Gavin开始走上了一条“乱世之路”,先后支持和作为顾问参与了众多开发项目,但是也背上了一个“黑锅”——站台的项目代币很多难逃剧烈波动的魔咒,先后充当了Ambrosus,Omise,Melonport,Grid Singularity等项目的顾问。因此江湖中对他涉猎的项目褒贬不一,甚至有责怪其有不顾身份,随意站台之嫌。

三代区块链

2015年Gavin开始掀开自己的第三次历史大幕,在同年的Parity Tech大会上宣布发起Polkadot项目,也即是我们称之为的第三代区块链,主要解决的是跨链通信和数据传递的问题。经过两年理论研究和项目准备,即将在2017年10月15日正式启动ICO计划。(注:ICO,即Initial Coin Offering缩写,意为首次代币发行,源自股票市场的首次公开发行IPO概念,是区块链项目首次发行代币,募集比特币、以太坊等通用数字货币作为发展资金的融资行为)
那么,究竟什么是垮链,以及Polkadot如何实现这些功能或者说有什么意义呢?
官方定义:Polkadot is a heterogeneous multichain technology. 即Polkadot是一个异构多链技术。
简单说,现有的大部分区块链都是相互独立的网络,万链不互联。而Polkadot想做的就是用其协议和跨链技术将这些各自独立的区块链连接起来,并且彼此之间可以进行通信和数据传递。

是不是有点抽象?让我们来打个比方:就像我们的操作系统,你可以使用苹果系统,也可以使用Windows系统,或者你可以使用IOS系统,也可以使用安卓系统,但是通过互联网协议或者移动网络实现彼此之间的信息互通和数据传输。Gavin设计了一套中转和并行的协议来处理这个问题:比如,当IOTA物联网协议上有一个节点需要传输一个数据到以太坊网络,首先它会通过Polkadot的一个桥接器(Bridge)接入到Polkadot的网络中,然后通过一个中转链(RelayChain)找到恰当的并行链(ParaChains)进行处理,随后通过验证来处理信息。

是不是有一些抽象,背后的原理和逻辑我们不深入讨论,这边再举一个现实生活场景中的例子来帮助理解:有两个并行的网络,比如还是举例IOTA物联网和以太坊网络。当你家的电灯坏了需要更换,而你的电灯又接入了智能家居的物联网网络。所以在发生电灯损坏的情况下,物联网网络将通过Polkadot网络这个中介传递这一信息给以太坊智能合约网络,并执行“购买新电灯的智能合约”,也就是实现了信息从IOTA网络到以太坊网络的传递并最终执行了一个智能合约。
一个很重要的点,之前很多区块链网络只是实现了虚拟世界信息传递,但是Polkadot却实现了从现实世界读取数据。这一点是超越以太坊的一个重要创新。以太坊是一台计算机跑所有应用的架构,公有链要像以太坊一样能够经得起世界范围大规模部署,实属不易。
所以Polkadot解决了两个核心问题,一个是互联,一个是扩展,而扩展又是通过互联实现的,本质其实又是一个问题。

一位大神曾这么对比Polkadot和Cosmos(注:Cosmos也是一个支持多链的区块链项目):
“Polkadot跟Cosmos相比,Polkadot完胜。因为Cosmos只支持价值转移,至少没法做到扩展以太坊,而Polkadot可以支持智能合约的跨链互调。所以,理论上来讲,以太坊上的Dapp完全可以做成独立的链,然后通过Polkadot互联,这对于以太坊的扩展性来说,是釜底抽薪的。Cosmos是币本身的价值跨链转移,别的跨链项目基本如出一辙。”
关于Polkadot这个项目的原理我们这边就不累述了,感兴趣的可以移步Polkadot官网:www.polkadot.network
既然这个项目愿景这么大,那么我们这些吃瓜群众是否有参与或者说投资的机会呢?也许这就是下一个以太坊呢。答案是,有的。然而如果你是中国人或者美国人,那么就只能很遗憾地说句抱歉了—— Polkadot不接受美国和中国的投资人。当然,这个和两国对ICO的监管有关,也是无奈之举。Polkadot的全球ICO将在2017年10月15日下午18点开始,并采取荷兰式拍卖的方式进行。

Gavin给Polkadot定下了至少两年的开发期,也就是哪怕你参与投资这个项目,也至少要等两年才有结果。这和2017年5月滋生的群魔狂舞ICO风景形成了鲜明对比,摆明意思就是,我们只和长期的价值投资人玩,等不起的还是别打扰我们默默开发了吧,团队还在官网列出了14条风险提示参与者。其实,这才是区块链开发团队应有的态度。
这次Gavin是否可以续写以太坊和Parity之后的神话呢,一切都在2年后。

Polkadot(波卡)简介

Polkadot is a blockchain technology, a heterogeneous multi-chain.
这里最需要理解的就是:heterogeneous这个词。
在朗文英英5中heterogeneous的意思被表述为:
consisiting of parts or members that are very different from each other.
翻译过来就是:由全然不同的部分/成员组合而成,由此我们才能理解polkadot的真正的概念:
融合多种不同公链的区块链技术,并且各种不同的公链可以任意消息通信,兑换代币。
所以我们知道polkadot主攻的是跨链任意消息通信。其解决的问题有:
1、BTC、ETH公链处理交易过慢,无论是BTC在11月的升级,还是V神发布ETH的Plasma项目,其目的都是解决扩容问题。而polkadot项目,一开始在底层架构处理上,就会解决这个问题。
2、不同的公链之间无法进行价值互换,BTC想换成ETH,必须依赖于交易所,而polkadot项目同时解决跨链代币兑换的问题。
不同于其它的区块链技术,polkadot本身不会有各种的应用,其实polkadot本身就相当于一个基础设施,如果说,以太坊是一条公链,目前的各类基于以太坊的ICO是基于这条公链的应用,EOS是操作系统,在EOS上面可以建设公链,那么polkadot就是提供带宽数据交换的电信运营服务商。
还有一个很好的类比:
移动、电信、联通相当于一条条公链,那么polkadot就相当于打通网关接口的协议。没有polkadot之前,移动只能给移动打电话,联通只能给联通打电话,有了polkadot,移动、电信、联通就能互相通信了。
由此可见polkadot的目标是多么伟大。
polkadot存在的目的:
目前的区块链技术并没有在现实世界中进行大范围商用的原因,是没有较好的解决以下几个问题:
扩展性:全球计算、带宽和存储的资源,用于处理单个事务的交易和在高峰条件下能处理的交易?
隔离性:在同一框架下,多方对于应用程序的不同需求能否达到最佳满足?
开发性:工具有多好? API是否符合开发者的需求? 是否提供教材? 是否集成权力?
治理性:网络能否随着时间的流逝而变化和适应? 决策是否具有充分的包容性,合法性和透明度,可以有效地领导分散制度?
适用性:该技术是否实际上适用于刚性需要? 是否需要其他“中间件”来嫁接真实的应用?
区块链世界中牛逼的大咖无不在为了彻底解决上述问题,尤其是前两个问题而绞尽脑汁:
DM的EOS.io就是为了解决第一个问题既可扩展性,同时使用了DPOS,作为其治理哲学;V神的新项目Plasma,也是为了解决以太坊的扩容问题。看看DM和V神天天互掐就知道在这个问题上谁彻底解决,谁就占领了未来的先机。
Cosmos也在扩容和为实现跨链而努力,但其跨链通信仅限于转移数字资产(也就是代币),而不是任意信息。
那么由Gavin Wood主导的polkadot,则声称要在扩展性和隔离性中提供出有意义的改进。
polkadot的技术
区块链技术在现实中的问题表现为可扩展性,既是否能满足海量以及高峰的商业化使用,而产生这个问题的原因,则是因为现有的区块链技术把一致性(canonicality)和有效性(validity)绑定得太紧密了。
Polkadot就是在确保安全和传输的基本功能之下,通过非信任节点的激励机制,弱化他们的内生绑定关系。在polkadot的架构中,支持众多高度差异化的共识系统在非信任完全去中心化的联邦内交互操作,允许去信任地相互访问各区块链。从而能够实用性地支持全球商业级别的可伸缩性和隐私性。
在Polkadot网络:有四种角色,分别是收集人(collator)、钓鱼人(fisherman)、提名人(nominator)、验证人(validator)。
收集人,简单的说就是负责收集平行链各种信息,并把信息打包给验证人。
钓鱼人,说白了就是钓鱼执法,专门检查恶意行为,检查出后获取奖励。
提名人,其实是一个权益群体,验证人为其代表,他们将押金委托给验证人。
验证人,帮助在Polkadot网络里打包新区块。其必须抵押足够多的押金,并在高可用和高带宽的机器上运行一个中继链的客户端。可以理解为矿池。
中间的七边形就是中继链,中继链旁边的四边形就是不同的平行链,下面的灰色是以太坊,右边的五边形是二级中继链。
Polkadot网络的跨链流程就是:由外部的交易广播进入到平行链社区(绿色区域),先由收集人(collator)打包交易信息,中间经过钓鱼人的执法检查,然后提供给平行链,平行链的区块头包含在中继链中,经过验证人打包,再转移到另一条平行链中。
而对接以太坊或者比特币时,需要由Polkadot网络先提供一个平行链转接桥,来保证收集人角色。今年ParityTech用Rust重写了比特币的客户端,同时以太坊Parity客户端也在紧锣密鼓地为Polkadot进行改造应该就是在为做好对接而做准备。
在中继链旁边,还可以链接二级中继链,而二级中继链还可以配套很多平行链,这样的话一条中继链就可以链接上百条平行链,从而实现可扩展性。
此图说明,不同的平行链之间,通过梅克尔树传递,来保证数据真实,中继链只是把交易从来源平行链的出口队列转移到目的平行链的入队列。已转发的交易会在中继链上被引用,而不是中继链自身的交易。
以上只是Polkadot网络中的一部分技术,在Polkado的官网中,可以清楚的看到Polkado的路线图,敲定机制——并行分散候选人选择机制——股权证链——网络子系统——Parachain实现——事务处理子系统——事务路由子系统——中继链——独立校对机
由此我们可以看到,在经过了大致1年左右时间的开发,Polkadot正在有条不紊的按照白皮书中所说的功能逐步实现。