ChainSafe: 为什么开发者需要波卡

登录波卡世界社区 polkaworld.org 立即加入讨论

本文是 Chainsafe 创始人 Aiden Hyman 在 LongHash 和 HashBang 联合主办的 “Polkadot 中国行上海站” 活动中的演讲内容,PolkaWorld 作为活动的独家合作社区整理和报道活动干货。
Aiden Hyman

大家好,我是 Aiden,Chainsafe System 的联合创始人和 CEO。Chainsafe 是家区块链开发公司,base 在多伦多,我们在过去两年内一直在服务客户去开发各种基础设施,在整个开发过程中,我们发现我们也想把客户所需求的这些基础设施开源给大家使用,让整个社区能够受益。我们也是以太社区的一部分。 这是我们的一些介绍。

Chainsafe 做的项目

简单介绍一下我们所做的一些项目:

第一个要介绍的是 Lodestar。Lodestar 是基于 TypeScript 的信标链实现。信标链是以太坊 2.0 线路图的基础,我们是信标链项目的一部分,希望能让更多人使用,我们在努力实现基于 TypeScript 的信标链实现。这些是我们所做的库: ssz.js(simple serilaize,简单序列化)是一个编码和解码的库,bls.js 是一个信号签名聚合库,gossipsub.js 是我们用于网络的一个库。

第二个介绍一下 Gossamer 。Gossamer 是 Polkadot 运行环境的 Golang 实现。你们看波卡白皮书上面,平行链那个大方块就是可以通过 Gossamer 来实现的。对于我们而言,我们需要做一些可以让大多数开发者可以用的工具,我们认为 JavaScript,TypeScript 还有 Golang 是大多数开发人员都比较容易上手的,并且能够保留组基本的区块链开发需求。这是我们做的一些组建,Grandpa 是一个内置的共识机制,life 是一个 Wasm 的解释器,Go-libp2p 是一个网络协议。

第三个是 Görli 测试网Görli 测试网在几个月前已经发布,是第一个跨客户端的以太坊 POA 测试网。这个的意义在于:以前我们只有一个客户端的测试网络,是单机的,不能满足多客户端的测试需求;现在通过这个测试网,多个客户端可以在同一个测试网进行测试,这个测试网听上去并没有说非常吸引人,但是对于开发人员来说是个非常基础的东西。

第四个是 ChainBrige,它是一个模块化跨链转接桥,能够让不同区块链互相转移数据,目前的方案基本上只能转移 ERC 20 的数据或者代币,我们这个模块化的跨链转接桥可以轻松让开发者自己开发跨链转接桥。

所以我们是如何做到这一切的?我们为什么会做 Polkadot 运行环境的 Golang 实现?

一年半左右之前我们开始研究我们第一次侧链的实现。所以什么是侧链?侧链通常都是以太坊的分叉,为特定场景进行优化。但是侧链需要通过转接桥实现链与链之间的互操性。没有转接桥的话,侧链基本就没有使用案例,它们没法使用别的开发工具等,很难让链跑起来。这是转接桥的比较高阶的想法,首先你可以将任意的代币或者数据(其本质还是代币)存储在一个地方通过一个转接桥的实例,这个实例是一个在某个地方的服务器监控智能合约,然后从另一个链上将代币拿出。反之亦然。

案例一:当地社区自治管理项目

现在我来给你们介绍一下我们在过去一年半载所做的一些案例,来说明为什么波卡对我们很重要,我们为什么需要它。

第一个案例是一个当地社区自治管理的区块链项目。

▶ 客户的需求是什么?

这个客户是多伦多当地的一个交易市场,有两百万用户(注:可以理解为多伦多淘宝),然后他们有三十万用户想通过区块链技术来解决一些交易问题,主要就是讨价还价的整个过程中存在的问题。所以他们需要一个独特的共识机制,那些商家可以持有代币,成为网络的部分持有者,然后他们也希望能够连上以太坊网络具有互操作性,最后他们还需要比较高的 tps

独特的共识机制是怎么样的呢?首先它是个需要许可的 PoS(Permissioned Proof of Stake)。现在在加拿大有超过 150 家被许可的商户,只有这些商家可以在网络上进行抵押及验证并支付手续费,共识机制则通过在这些不同商家中的经济激励机制来达成。所以对于用户而言,这些代币只能在这些商家中使用,他们没有拒绝接受代币的理由。

互操作性这块就跟如何把 ERC 20 代币转移到以太坊主网上一样简单。而且因为这个是可信的案例,我们知道这些人都是谁,所以可以大幅度提高 tps。

▶ 在这个案例中我们需要做什么?

我们有一套方案,虽然这些都不是必须的,有些东西是用不到的。我们用了 Parity 转接桥来实现了互操作性,我们编写了独特的 PoS。

▶ 从这个案例中我们学到了什么?哪些东西是我们认为需要带到波卡生态中的?

  1. 我们需要更加模块化的共识机制。我们需要让不同的人选择不同的方法来治理,我们无法教世界如何去管理自己,我们也不应该这么做,而是应该让社区自己选择。我们需要明白:很多人解决问题的方式的确可以解决当下的问题,但是未必能够解决未来会产生的问题。
  2. 一些本地化的区块链是完全可以成功的。在加拿大就有这么一个一年内超过 150 家商铺、30 万用户使用,销售额过百万美金的链。从用户角度而言这是极其成功的。

案例二:可互操作的证明网络

第二个案例是一个可以进行互操作的证明网络。

▶ 客户的需求是什么?

首先他们需要通过操作码来达成证明。同样我们还是需 fork Geth (注:Geth 是 Go Ethereum 开源项目的,它是使用 Go 语言编写且实现了 Ethereum 协议的客户端软件,也是目前用户最多,使用最广泛的客户端),然后我们也需要在上面加一堆东西。同样我们需要考虑实际使用的用户,而无需考虑一个不存在的未来场景。我们也需要互操作性,除了以太坊以外,还需要跟其他很多不同的区块链网络来进行联动。

所以通过操作码达成证明的机制是什么样的呢?通过技术层面来说,其实就在 Geth 上增加操作码,这个其实可以在基本层完成,只需要更新 solc、Solidity + Remix 就能完成。(注:solc 是  Solidity 编写的以太坊智能合约的编译工具,Remix 是以太坊在线的 IDE,拿来写智能合约的)。我们需要让这些东西都能够适配。

其次它也需要独特的共识机制。那共识机制是怎么样的?首先我们研究了Authash。Authash 是一种 PoW 机制,可以通过白名单来选择特定人来挖矿,可以理解为 PoS 的验证人来挖矿。然后我们整合到 Geth 的过程中发现过程中有一堆编译方面的技术难题,最后客户觉得还是算了,选择了单纯的PoW。我们忙活了大半天,如果有更好的编译工具的话其实这些都是比较容易做到,只是 Geth 没有这个功能。

第三点是多种网络的互操作性。我们不仅需要交易 ERC 20 代币,这些数据还需要能够在不同网络上进行交易,这样大家才能在其他区块链的落地场景里进行使用。区块链本身没有这个功能,而波卡通过其他不同的方式来实现这个功能。我们自己做了个转接桥,非常厉害的转接桥,至少我认为是很厉害的。但是这个转接桥还是只是基于区块链之上的一个软件。

▶ 在这个案例中我们需要做什么?

我们需要搭转接桥,fork Geth,然后还写了个我们最后没怎么用的共识机制(Authash)。

▶ 在这个案例中我们学到了什么?

  1. 我们需要更加模块化的区块链组件。从基础设施方面而言,我们需要能从头开始做起的区块链,然后根据大家不同的想法去复刻它,去增加功能来解决他们自己的问题,而不是说以太坊是设计出来来解决这些问题的。
  2. 混合模型是可行的。我们不需要去提前去理解这些个治理方法是怎么样的,我们可以去进行试验,可以有很多有创意的治理方式。
  3. 我们所有这些被 fork 的代码库的合并请求最后都是通过 Remix 的 Ctrl+S 来完成的。原本在 Remix 上通过 Ctrl+S 只能保存页面,后来我们的一个合伙人添加了一个组件可以通过 Ctrl+S 来重新编译智能合约。我们在过去一年在 Github 上面做的这些开源的东西都是,展现给世界的一切都是通过 Ctrl+S 来完成的。这个案例我想说明的点在于,我们在过去一年内开发了整个项目但是到最后我们贡献给整个开发社区的只有区区这个 Ctrl+S 的功能,我们希望我们做的更多的东西能够被大家使用。我们很想在波卡上面能够用我们开发出的这些开源的东西能够被大家演绎使用。

互操作性的前提是可用性。这些技术不仅我们可以使用,整个生态都能够使用它们,这样我们作为开发人员才能致力于这样的生态环境同时能够吸引更多人来贡献,吸引别的优秀开发者来成为我们这个生态的一部分,我们不希望我们开发的开源项目只能够由我们自己来使用而别的开发没法使用,这样的开源是没有意义的。

我们怎么看待波卡

对于波卡,我有几个观点不同于白皮书中所展现的内容,通过我这些经历我想让大家看清楚波卡是什么样的,至少从我的角度来说希望大家是这么看波卡的。

那首先,波卡是一个对异构多链框架的一个设想

这是一个非常强有力的宣言,这跟以太坊 2.0 有非常大的区别。以太坊 2.0 是个同构的分片场景,这些分片是一模一样的,可能在治理上会有点不同,但是从技术上来说是一模一样的。波卡异构设想是:你作为一个开发或者创业者,你能够建造一个非常不可思议的东西而不被几年前的大家所决定的这些技术所限制,被这些技术所限制然后还参与到生态中是不合理的,整个生态会由于技术不足给大家带来很多限制。

以太坊作为平行链,大家其实可以把它看做波卡是以太坊扩展性的一个解决方案,这不仅是给以太坊增加扩展性,还同样提供了互操性,我们现在有 Zcash 的平行链,有以太坊的平行链,通过跨链的消息传输,我们可以部署智能合约可以同时与 Zcash 、以太坊和比特币一起联动,这也是大家之前想做的事情之一。

去信任化的比特币转接桥是怎么样的呢?去信任化比特币转接桥其实通过简单的双向锚定就能实现。这个白皮书上都有,如果你们没读过,我强烈建议你们去读一读,这些内容也非常易懂。我们通过简单的比特币的多签钱包来完成,通过证明和波卡的一部分相结合完成。这都是些非常令人兴奋的技术,我们可以通过这些方案通过波卡来打通比特币,以太坊, Zcash 等等其他的链。

这些是白皮书上的一些答疑,我认为写的非常酷。

波卡是否被设计来代替其他链?答案是绝对否定的。波卡的目标是能够让不同的区块链社区成为更大的生态系统的一部分,建立一个异构的世界,你不会被自己的专业知识所限制,拘泥于自己的生态,而是助力于整个区块链生态,并让整个生态所有人都能够接触到你的区块链。

那波卡的 DOT 是否被设计来代替其他加密货币?答案同样也是否定的。DOT 无意也没有被设计成作为货币使用,DOT 是需要被大家流通使用的,被用到像我之前描述的那些功能一样。能够和不同区块链联动是很重要的。我们也对此非常的兴奋,我们原来所开发的这么多功能组件能被大家使用成为更大生态的一部分。

如果作为货币,DOT 将会是非常糟糕的货币。原因在于大多数代币都会抵押在系统中,流通性很差,而且代币流通需要支付较高的手续费。波卡的代币 DOT 主要目的还是在于直接代表在波卡网络中的抵押。从现在开始,我们可以直接为客户们还有合作伙伴开发很多平行链,而不用像以前一样,纠结于为每个独立的项目开发不同的链,然后再开发不同的组件把他们连起来。

翻译:Kobby(LongHash)

编辑:KIKO

查看更多波卡中国行干货:

W3F:波卡和 Web 3 生态

Edgeware:Polkadot 智能合约平台

更多干货会陆续在 PolkaWorld 独家首发,敬请期待。