这篇文章整理自 Gavin Wood 在 7 月 20 日 Polkadot 中国行上海站上的演讲 「Polkadot 最新开发进展」
。由于时间原因,这部分内容在后来的杭州站和成都站 Meetup 中被省略了。

虽然距离演讲已经过去了快三周,但我们认为这些内容对于 Substrate 开发者和关心波卡发展情况的人来说仍然会有帮助,所以还是将它翻译了出来分享给大家。

在此特别感谢 PolkaWorld 社区超级探员 Charlie Hu 和 lareina 的翻译。

正文:

今天我主要会分享的是 Polkadot 网络最新的一些技术开发方面的进展情况。

交易权重

第一个要分享的点叫做交易权重 (Transaction Weight),代表了一笔区块交易需要占用网络资源的数量问题。

在以太坊网络中,使用的是 Gas 手续费消耗机制。Gas
是以太坊网络的最终确认区块的验证环节,代表着这个区块传输需要使用的网络资源是多少。在以太坊网络中,这个计算过程是比较缓慢的,需要最终计算出一个区块交易使用的存储空间和代码资源。也是因为这个冗长的流程,让以太坊网络的拓展性受到限制。

然而在 Polkadot 的 Substrate 技术框架中,有合约的模块,做动态资源监测。这里的 Substrate 模块提供的是特定 计算
dispatch 交易区块出块功能需要占用的网络资源量 的功能模块,且在区块启动之前就开始监测,换句话说是一个 静态的监测资源消耗数量的方法

这样的监测方法的好处是:可以监测到很多不同类型、不同数量的资源的使用情况,以及资源背后的相关不同特性情况 ——
比如基于什么样的被提供的数据,基于这些链目前不同的状态。

举例来说,如果你使用转账 (Transfer) 的 Dispatch
功能,也就是从某一个账户中转账到另外一个账户,这个行为就会用到不同的资源。你可以根据这个资源的源头来决定使用什么资源,也可以根据这个转账的价值,或者根据目标账户的源头目前是否有一个账户已经部署在链上。Dispatch
功能必须创造新的账户,或删除账户,如果不这样做的话,就会有比较大的资源被使用。

有了这个监测方法之后,在 Dispatch 功能执行时,大家就不需要一个个单独地去测量每一个指令。

在 Rust 中你可以直接给交易权重下特征 (trait) 的定义,你可以直接获得这些特征类型在做特征分类时,可以看到什么样的特征类型跟 dispatch
功能匹配,可以按需进行解析,按需进行交叉状态参考,会始终消耗一个特定值的 gas 交易费或者资源,也可以用一个固定数量来方便设置。

交易的可扩展性

下一个我希望分享的话题是交易的可扩展性。当你在写一个区块链的时候,你会需要去写入额外的功能、额外种类的交易、额外的逻辑到交易本身中。所以如果你熟悉你的交易中会包含
dispatch 功能,那么当触达到链的时候它们会执行一些特定的交易逻辑,比如关于一笔转账,注册一个投票或者是某些平行链的运营工作。

但是这种普通写入区块链模式无法做到的是:比如交易排队上链的时候,他们无法改变交易的优先级顺序;也无法做到制定某一个特定的区块之后,交易会被认定无效,做到全区块链网络传播。然而,我们提供的这些
API 带来的功能是一个新的交互,允许开发者做到上面提到的无法做到的事情,并以很模块化的方式来实现。

这些 API 可以做到的功能分别有列出来的这几点:

  1. 开发者可以加入 交易字段 到交易信息中,来对交易做编码。
  2. 开发者也可以设置 区块创建时间检查 ,可以交易区块被创建的时候的来做验证,在他们进入到区块排序之前。这可以让开发者设置在某一个区块高度之后,这些交易就会被认为无效,就可以无视丢弃相关的所有的东西。
    开发者也可以做一种检查,如果发出者有一个账户但是余额太低无法支付此次交易的时候,那么这个交易是无效的,可以丢弃。

开发者可以做这种类型的监测,完全在 substrate 代码化好的框架之外,以非常模块化的方式自由调用系统功能模块。如果开发者需要使用额外的
substrate 模块,用于在他们接入到链上时引入额外的检查功能,同样也可以实现。

  1. 开发者可以 对交易排序发出指令 ,告诉它们如何去运作,设定交易的依赖因素应该是什么,添加标签和另外一些比较抽象的元素;让开发者能链接所有的交易,以一个类似 DAG 有向无环图的架构那样去创造依赖因素树列;让开发者告诉某个交易不要去传播,指定仅某个特定的节点可以发出交易上链,其他网络节点不允许,比如在某些特定高消耗挖矿区块,需要获得特定区块奖励的情况下。
  2. 开发者也可以做 导入时间的检查 ,当某个交易被导入时,会有一些特定逻辑的文件也会导入。
  3. 开发者也可以 将业务逻辑添加到签名区域 ,添加一个额外的域进入签名支付域而非交易域中。

这些模块功能都可以让开发者无需非常深入地潜入到 substrate 代码中,即可方便地调用和添加相应的逻辑。

这张 PPT 给大家了一个简单的印象,了解 substrate 的功能有多大的普适性。

上面列出的是所有之前在 substrate 交易逻辑,比如检查 Nonce (类似以太坊网络内的防止重放工攻击机制)、CheckEra 检查有效性、设置
TakeFee 交易手续费费用等逻辑,开发者可以根据具体的需要来调用相关模块,不需要则可以完全去掉。目前这些逻辑功能工具已经可以完全模块化地来被开发者使用。

众筹平行链

接下来我需要讨论的是一个 Polkadot 上的额外模块 —— 众筹平行链
。这个是接着上一次我来上海活动的简短分享中提到的拍卖机制功能做的延伸,即平行链如何可以被提名选举和部署进入 Polkadot 网络中。

当时的想法是每两周会有一次拍卖,竞拍 4 个平行链插槽,每个插槽有 6 个月到 2
年的有效期限,竞拍中最高的拍者赢得插槽。这个机制的问题是,可能某个很有潜力和价值的项目,手上并没有足够的流动的 DOT 代币能让他们获得拍卖插槽获胜。

这边提出的这个 (众筹)模块 ,就是如何让这些 有潜力的团队去融资 DOT 代币,来让他们也可以获得插槽的机会

因此,这边引入的这个模块就是跟拍卖模块紧密无缝对接的功能:允许各种团队来提出他们的平行链开发建议,提交特定的会被部署的平行链代码。

假设他们获得了足够多的 DOT 代币的借贷支持者,那么这些参与众筹投资的支持者们,可以获得一定的投资保障,即一旦他们支持的 平行链有效期过了
,退休不再占用某个插槽了的话,投资支持者 可以收回他们的 DOT 代币
。所以说,这个机制是对投资人保本,不会有损失的,且他们支持的平行链项目最终提交部署的代码会跟他们成功融资时候的代码是同样的。

正因为这个代码是不会变动的,这个模块也会提供一个默克尔树到平行链中,让平行链去抓取了所有参与众筹支持者的账户 ID,支持的 DOT
代币数量,来让平行链可以来辨别这些支持者,来让平行链给特定支持者有相应额外奖励、答谢和回报等。

利益群体

接下来我希望讨论的是 Substrate 基础之上的附加模块,也就是治理模块。

目前行业内,针对治理这块有很多的创新在做。我看待 Substrate 框架,认为它是一个很好的针对下一代区块链去中性化网络内治理机制的建模
(prototype) 工具。这个对于建立去中心化的区块链网络非常的重要。

我认为产品研发都需要迭代,通过不断地迭代更新来改善。而 Substrate 框架就是一个基于 Webassembly
语言基础的,可以让开发者不断更新,重新部署新版本代码的技术框架。

然而,这些还是需要有一个关于什么模块需要被迭代,什么时候被更新的决策机制。治理就是来做这个方面的决策工作。

这一页 PPT 中就是一个 治理的模块组件 ,一个由各个独立个体组成的,但以集体形式来行为的 组织 。在 Substrate
框架中,集体行为的方式具体代表,就是这些 EusureOrigin API,他们允许 dispatch 功能去决策具体是谁来发出 dispatch
指定。开发者可以做的是,有一些可以定制化的 dispatch 功能,修改这些不同的 Origin (起源),插入新的 Origin
要求以及新的定义方式,如果某些特定的 Origin 被授权去做某些特定的制定任务的情况下。

这里面,治理群体就是这些 Origin,他们的成员选择方式可以被设计,算法化,且可以随着时间推演和改变。比如目前已经有了的理事会 (Council)
群体,他们被一个利益方们用许可投票的方式来投票决定。原则上来说,网络中可以有很多不同类型不同的利益群体,他们可以互相协作,且接入到那些需要特定要求的行为系统。

这边是部分代码的案例显示,我们可以希望确保至少三分之二的某特定利益群体的成员,会去为某个特定的动议去投票是否批准该条款。当然也可以设置成,我们需要全有的利益群体的人,都必须一致投票同意某个动议才可以批准通过,或者只需要超过 4 个投票者即可通过等等。很多投票的元素和规则,都可以很方便地通过这个新治理模块来设定和编码。

最后一个我希望介绍的是额外的 Polkadot 治理系统的主体,一个简单的群体,其中会员的特点和要求是由议会 Council 来决定。

技术委员会

我想分享的最后的两个点,一是关于技术委员会,这是波卡内的另一个组织,主旨在于促进波卡生态的发展。就像我刚才所说的那样,这是一个非常简单的组委会,他的会员资格由理事会根据个体的素质决定。

对此比较好的理解是把它认为是一个由实现团队构成的第二治理主体,最初可能主要由 Web3 基金会和 Parity
的实现成员构成,但是当越来越多的人研究波卡的底层架构,并在波卡的底层架构上创建并完成开发,他们也将有可能进入这个委员会。委会员并没有什么很大的权利。他们只是可以加快对合理提案的支持或者拒绝不太理想的方案。

隐继链

为了能给新材料留下更多时间,另一个是关于未来发展方向的分享是关于隐继链。关于中继链最大的一个特征是隐继链不会跟任何人对话。

中继链会响应各种用户和各种理由进行交易。而隐继链则会移除这些普通的交易。特许这些平行链向中继链发送特权消息。

其结果就是这些交易会绑定很多的资源,具体的转账过程大致是这样的。有人从一个账户内转了 5 个 dot 到另一个账户内。治理说,我并不想对此进行投票或者是
staking,通过从中继链中拿掉这些交易,我们就可以为更重要的信息节省下资源。

分享者:Gavin Wood 博士

译者: Charlie Hu & lareina (PolkaWorld
超级探员

更多精彩文章:

Gavin Wood:Kusama
的推出和治理

每条平行链才 10 个验证人,波卡网络真的安全吗?

干货 | 听 Gavin Wood
亲自解读波卡新设计“平行线程”

Gavin Wood:波卡发展的 5 个里程碑和 Kusama
网络介绍

扫码关注公众号,回复 “1” 加入 PolkaWorld 波卡群