2021-08-20 03:46

科普 | 深入了解 Kusama 资产枢纽「Statemine」

加入 PolkaWorld 社区,共建 Web 3.0!

Statemint/Statemine 是波卡/Kusama 生态的公共利益平行链,用于创建和管理资产,包括同质化资产和 NFT。

8 月 5 日更新的「Relay Chain」播客中,主持人 Parity Support 工程师 Jorrin Bruns,和 Web3 基金会技术集成负责人和 Statemint 项目的贡献者 Joe Petrowski 一起,带着大家深入解析了 Statemint。

PolkaWorld 将这期播客的部分精华内容整理成了文字版,本文主要内容有:

  • 什么是 Statemint/Statemine?
  • 把交易从中继链上拿下来
  • Statemine 作为第一条公共利益平行链
  • 在多条链之间传送资产
  • 实现 Statemint 的治理
  • 谁在开发公共利益平行链?
  • 怎样激励验证人
  • Statemint 和 Statemine 未来会怎样

Jorrin:欢迎大家收听 Relay Chain 播客,很荣幸这次又请到了 Joe Petrowski。这次我们会聊聊 Joe 最近几个月参与的项目之一 “Statemint”。你们很多人应该听说过,它是 Kusama 上上线的第一条平行链。其实在 Kusama 上它叫 “Statemine”,不过在接下来的播客中我们都会用 “Statemint” 来指代它,因为上波卡的主网名字就叫 Statemint。所以说 “Statemine” 和 “Statemint” 这两个名字其实是可以互换的。

接下来我们就正式开始吧。我们先从一个比较高的角度来看,什么是 Statemint?

Joe:Statemint 其实是一条非常简单的链,没有太多很花哨的东西。它不像中继链或者智能合约链那么复杂,它只是一条用于创建和管理资产的链,既包括同质化资产,也包括非同质化资产(NFT)

Statemint 其实主要是由两个模块组成,一个是处理同质化代币的 Assets 模块,一个是管理非同质化代币 NFT 的 Unique 模块。剩下的都是一些运行层面的东西,比如账户和余额。账户可以存放资产,还有一些跨链消息、代理、多签等这些你在 Substrate 链里经常看到的实用性的功能。

不过总的来说,Statemint 的主要功能就是在链上创建和管理资产。

Jorrin:我们刚刚说到了 token 和 NFT 等。为了帮助熟悉以太坊生态的人理解,Statemint 是不是代币标准,或者说是一条做代币标准的平行链,类似于 ERC20 或者 ERC 721 那样的?

Joe:是的,没错。这两个模块(pallet)其实和 ERC20 和 ERC721 的接口很相似。最大的区别在于,当我们说到 ERC20 和 ERC721(为了方便,后面我就直接说 ERC20 了),它是一个接口, 它只是说你的合约里要有这几个函数。但是实际上,每一个以太坊 ERC20 都是用了不同的接口,所以你可以有某些函数,比如转账。某个合约可以比另一个合约用掉多得多的 gas,我们发现用不同的 ERC20 代币来做同样的操作,会有非常大的 gas 费差距。

而在 Statemint 里,这些是直接写在 Runtime 里的,这个链上有一个函数叫做 Transfer,另一个函数叫 Create,用来创建资产。所有这些逻辑都是在链上的,好处就是我们进行了基准测试(benchmark)。这个是通过我们标准的 Substrate 基准测试流程,通过使用某些已知的硬件,来对执行不同的函数估算时间。

我们不是在交易进行的过程中计算 gas,而是可以进行预调度(pre-dispatch)收费,也就是说我们可以在执行这个 Transfer 函数之前就收取一笔交易费,这样做不仅更便宜,而且还更快。因为你想想,gas 计费是怎么回事儿呢,有点像是说 “这个合约的下一步是什么?是加法。那么要花多少钱呢?5 个单位。那付完还剩多少 gas 呢?100 万。好的,那么 100 万减去 5 是多少?是 999995。好的,那现在可以进行加法运算了。” 所以你其实一直有追踪和测量 gas 费的日常开销。

但是如果你去想想 “测量” 这个词在现实中的意思的话,它其实是去量一个你原本不知道其数值的东西。在以太坊中,某个特定的合约,可能就有数百万计的 ERC20 代币转账。然后大家就不禁要问了,如果某个东西你已经测算过、已经知道它的复杂性了,那么为什么还要去测量它呢?你知道它并没有包含什么循环。其实好像 gas 测量系统只是一种心理安慰而已,让大家可以去部署不受信任的代码。但是如果你已经对代码进行了审计、评审,并且知道它不包含永久循环,而且知道它的复杂度,大概是你需要做两个数据库的读取,和三个数据库的写入,和几个数学运算。那么我们可以直接得出这个交易需要花费多少,而不需要每次都测量。

这让我们可以更快地处理事情,因为我们知道这个转账实现过程是什么样的,所以我们可以直接得出一个区块里面放几笔交易,而不是去做 gas 测量。

Jorrin:太棒了,你做了一个很全面的总结。现在我们很清楚,是出于效率方面的原因要做 Statemint。但是还有其他的什么原因,让我们要创造一条单独的平行链来做这件事吗?为什么不直接放在中继链上?

Joe:长期来讲,我们其实希望把几乎所有东西从中继链上卸下来,我们不希望任何东西出现在中继链上。可能有人听说过 “隐形中继链” 这个术语,在中继链上没有任何的交易,一切都转移到平行链上。所以说,与其只去单独聊资产这一块,我们不如把范围扩大一点来聊聊。

所以,如果你看看平行链验证的工作方式,所有验证人都会被放到一些子组中去,我们最初的想法是每条平行链有 10 个验证人,现在我们觉得甚至可以低至每条平行链 5 个验证人。也就是说,如果你的网络中有 1000 个验证人,你就可以有 200 条平行链,至少就子组而言是这样。

所以还有一些其他问题,如网络和其他可能成为瓶颈的问题。但是为了理论验证的东西,我们假设 5 个平行链的验证人,这 5 个验证人执行每条平行链的状态转换函数,然后他们在网络上分发这些东西,还有一些其他验证人会进行一些双重检查,所以大概是每条平行链总共有 20 个验证人执行状态转换函数。而在中继链中,每个验证人都要去执行中继链的状态转换函数。

总结一下,如果你把一样东西放到平行链上,只需要 20 个验证人来执行它;如果你把它放到中继链上,100% 的验证人都需要去执行它。

所以这个问题在于,如果我们将东西放到中继链上,它其实上会冻结验证人资源。因为如果我们有 1000 个验证人,并且其中只有 20 个需要执行一些平行链交易,这就意味着它们中的 980 个可以做其他事情,我们希望它们能去验证其他平行链。所以我们不想用类似资产交易这样的东西来阻塞验证人,我们希望它们能够验证其他东西。

所以我们的想法是把所有东西都放到平行链上去,我们还在计划治理平行链、Staking 平行链,好让这些事不要发生在中继链上。

Jorrin:好的。所以说我们不只是在 token 标准方面提高效率,其实也在交易、验证人计算资源方面提高效率。

那么,如果我们把计算都下放到平行链去,这会对使用 Polkadot 的人产生什么影响吗?对于日常用户来说,这种做法会让交易更便宜、更快吗?

Joe:是的。实际的交易费用大概是中继链费用的 1/10,这也包括存款和各种东西。如果你之前用过代理或者多签的话,你可能发现比如说要存入 0.3 KSM 作为存款才能使用多签,但是在 Statemine 上可能是 0.03 KSM 就够了。大概是所有的东西(各类费用)都是中继链的 1/10 左右,所以省下了一笔相当可观的钱。

但其实不会更快。它只能以与中继链最终确定的速度相同的速度确定其区块,所以它不会更快,不过在交易费用方面肯定便宜得多。

而且老实说,1/10 其实是一个我们拍脑袋定的数值,因为我们不知道它用得多不多,所以先设为 10%,但我们其实觉得再过一段时间,随着时间的推移,等我们有更多平行链的时候,我们其实可以把这个数降到大概 1/50。所以说费用和押金等等还有五倍的减少空间,因为把这些东西放在平行链链上比放在中继链上效率要高得多。

Jorrin:太棒了。我总是很乐意听到更便宜的交易费,那太棒了。你之前提到了一个公共利益平行链(common good parachain)的概念。Statemint 是第一个公共利益平行链,可以展开讲讲吗?聊一聊它到底是什么意思。

Joe:好的。所以大概来说,公共利益平行链,是通过中继链的治理来添加的。所以,正如大家知道的那样,Polkadot 和 Kusama 的治理其实都有很强的治理功能,有一个叫做 Root Origin 的东西,它就像系统中的超级用户。只有治理才能访问这个超级用户权力,和访问特权功能,它的其中一个功能就是注册平行链。

对于一条链是通过拍卖成为平行链,还是直接作为公共利益平行链注册,很多人其实感到很困惑,就是谁可以调用 “注册平行链” 的这个函数呢?其实只有治理可以调用。所以其实两种情况调用的是同一个函数,只不过一种方式是直接通过治理,另一种是作为拍卖逻辑本身的结果,而拍卖是通过治理发起的。

所以其实我没办法真的控制治理的行为,治理可能会注册一些他们觉得是公共利益平行链,但我觉得不是的链。所以这里我只能说说我个人对公共利益平行链的想法。我觉得可以分为两类。第一类是系统级的平行链;另一类就是公共物品(public good)平行链,Statemint 就是这一类。

系统级平行链,比如 DOT 或 KSM 的余额、staking 或治理的之类的东西,只是把这些东西从中继链拿下来放到平行链而已。这样做就可以给平行链腾出更多的空间,就是我们之前说到的把中继链的计算资源释放出来。我们最初的白皮书说 Polkadot 大约可以支持 100 条平行链,但其实这只是一个预计,一些研究人员甚至觉得可以支持 1000 条。

另一类是公共物品平行链,这些都是新的功能,和系统级平行链略有不同。它们主要是一些没必要有代币模型的链,或者有必要但是可以直接用 DOT 或 KSM 作为代币。而且它们是很多人都想要使用,但是却可能不想自己来构建的链。比如说使用 DOT 或 KSM 作为 gas 费,使用 Statemine 来管理资产的智能合约链。还有甚至像桥,比如如果大家都同意波卡到以太坊的桥很有用,那么就可以拿出一个插槽来做这个桥。

Jorrin:你刚刚说到有一类公共利益平行链的特征就是,可能没有自己的代币。Statemint 其实就是这样,它没有自己的代币,而是使用中继链的代币,Statemine 链用 KSM,Statemint 链用 DOT。所以这种方式具体是怎么运作的呢?

Joe:我们有一类特殊的跨链消息叫做 Teleport(传送)。所以在 Statemine 这边,它信任自己的中继链(Kusama),应该说很多平行链也是这样,它们应该信任中继链,因为中继链为它们提供最终确认。基本上就是说,如果中继链向我们 Statemine 发送一条包含一些 KSM 的消息,我们不是在 Asset 模块里去铸造一个资产,而是把它铸造在 Balances 模块的一个账户里。

其他链可能会做不同的事。比如一些社区链是某种智能合约平台。如果你中继链发送 KSM 过去,它们在 Balances 模块已经有了自己的本地代币,所以他们可能会把 KSM 铸造成其他类型的代币,甚至可以是 ERC20 代币。

相应地,从 Statemine 回到 Kusama 链的过程会更复杂一些。因为 Kusama 中继链其实并不会相信所有的平行链,因为平行链有自己的治理。虽然说 Statemine 是个特例,它的治理和 Kusama 是同一个,但是其他一些平行链可能有 Sudo(注:类似于治理中的超管权限)。

所以说 Kusama 中继链并不一定会信任来自平行链的 KSM,它可能会一直在记录 “好的,我给平行链 A 发送了 1000 个 KSM,给平行链 B 发送了 2000 个”,中继链不会允许平行链发送回来更多的数量,因为这些平行链,比如在使用 sudo 的平行链,会铸造出更多其他类型的 KSM,然后又发送回来,而中继链其实不想接收超过它发送出去的数量的 KSM。所以中继链其实会记录存在多少 KSM,分布在哪里。

对于 Statemine 来说,因为它和中继链是同一个治理主体,同一批利益相关者,所以 Kusama 中继链其实是信任 Statemine 的。中继链会说,来自 Statemine 的 KSM 我都是信任的。所以这就叫做受信任的传送口(Trusted Teleporter),在 Runtime 中会把某些平行链 ID 设置为受信任的传送口,并且接受来自这些链的 KSM。所以从某种程度上讲,中继链上的  KSM 和 Statemine 上的 KSM 是一样的。

Jorrin:Cool,所以说是用 KSM 来作为在 Statemine 上操作的交易手续费吗?

Joe:现在是这样的。但是在未来,你其实可以使用一些其他资产来支付交易费,甚至都不需要有任何的 KSM。

Jorrin:这太强了。这个是要比较久之后才能实现吗?还是很快就能实现?

Joe:快了,这个其实很快就能实现了。

Jorrin:到时候我们可能得再请你回来讲讲是怎么实现的。我们之前聊到了 Statemint 的治理是由中继链治理代理的。那么,Statemint 上的 Runtime 升级是怎么实现的呢?是不是在中继链上发起一个治理提案,由 DOT/KSM 持有者投票,然后在 Statemint 上实施呢?

Joe:做 Statemint 其实是一个很大的开发技术方面的提升,因为我们有一个概念化的想法,那就是 Statemint 应该以字面的面额接受来自中继链的消息。我们希望 Statemint 上的治理来源和中继链的一致。而且我们希望(中继链的)理事会有一些权力,比如说收集人选择模块,资产模块,有一些强制创建资产的功能。我们希望能做到 Kusama 理事会的大多数能够在 Statemine 上创建资产。或者说为了进行 Statemine 的 Runtime 升级,我们需要 Kusama 的 root origin。

这些看起来好像对于一条链来说挺简单的,但是 Statemint 链 runtime 非常简单,它就只有 Accounts、Balances、Assets 和 Unique 这几个模块而已。它没有 Collective 模块,来代表理事会或者技术委员会,它没有 Democracy origin,它根本就没有这些围绕治理的原语。

所以我们需要找到一个方法,像 Statemine 表达 Statemine 的 root origin 就是 Kusama 的 root origin,或者说 Kusama 理事会的 Assets Privileged Origin 超过了 50%。这听起来好像理论上也挺简单的。但是你其实上就像在对 Statemine 说 “嘿,有一条其他的链叫 Kusama,它是你母链,它里面有个叫理事会的东西,如果理事会中超过 50% 的人发给你消息,那么你就得听它的,把消息作为 Assets Privileged Origin 来接受。”

Statemine 甚至都不知道 Collective 模块是个啥,它是推理不出来的,所以其实是创建了这些 Origin,来让上面说的东西能实现。这个需要在 Kusama 的 runtime 升级中,在跨链消息和理事会逻辑中添加一些新功能,来实现这些东西。之后其实整个过程就跑通了,现在我们有了这些 Origin,那么其他的一些链的治理主体向 Statemine 发送消息的时候,也可以类似地搞了。

说回到 Statemine runtime 升级的事儿,确实需要公投,一般都会由理事会来加速,但是还是需要通过普遍的持有人或者整个社区的投票,然后就会派遣一条消息给 Statemine,里面有明确的指示。

Jorrin:Statemint 的主要是由 Web3 基金会和 Parity 联合开发的,是不是大部分的公共利益平行链都是这样合作开发的呢?还是说会有第三方也就是项目方也会开发公共利益平行链?

Joe:我觉得可能是两种都有。

Parity 和 Web3 基金会可能会一起来做一些系统级别的链。Parity 实现了目前在波卡和 Kusama 上用的 runtime,其实之后做系统级平行链只需要把它们分成更多模块化的部分,比如 Staking runtime,治理 runtime,那么 Parity 来做这些就很合理。

至于公共物品链或者叫公共设施链,就会有很多社区团队想来贡献了。比如说有几个团队就在做桥,Snowflake 在做以太坊桥,Interlay 在做比特币桥,还有一些其他的提案比如让 Encointer 成为 Kusama 的公共利益平行链,在 Polkassembly 上还有很多关于某条链是否应该成为公共利益平行链的讨论。

Jorrin:对于平行链的收集人和验证人来说,它们参与和支持这些公共利益平行链有什么激励吗?

Joe:这是个很好的问题,是关于激励机制的。我们之前说到了公共平行链使用 DOT 或者 KSM 作为代币,但是没有说到 Staking 和治理。

Staking 其实是通胀的来源,我们之前说过 Statemint 的交易手续费大概是中继链的 1/10 左右。所以我们没有通胀,没有 Staking 奖励,甚至根本就没有 Staking,而且交易费很低。这就带来一个问题,那就是谁会想去运行收集人,来收集这些交易费呢?

因为像 Staking、治理这些东西其实是网络不可或缺的核心部分,所以其实那些在波卡上开发应用的人就会去做收集人,比如你在 Statemint 上部署了一些资产,或者你在运行验证人节点,你想确保大家可以提名你,而大家提名的交易就在提名链上,那你可能想去运行一些收集人节点,来确保这条链可以正常使用,这样用户才可以正常使用你的应用提供的服务。

Jorrin:这其实是一个博弈论模型,人们其实会倾向于去做一些对自己有利的事情,如果你的应用要依赖波卡的平稳运行,那么你就有动机去支持这些公共利益平行链。

Kusama 作为一个更具实验性质的网络,所有的新东西都是先上到 Kusama 再上波卡,那么 Statemine 会不会完全和 Statemint 分道扬镳?随着时间的推移,Statemine 这条链的路线会由 Kusama 治理来决定,他们会不会对 Statemine 做一些跟 Statemint 不一样的改变?

Joe:是的,这是完全有可能的。不过因为它的逻辑很简单,如果说两条链出现很大的路线分歧的话,我应该会觉得蛮惊讶的。它其实就只有 Assets 和 Unique 两个模块而已,如果你说的是增加新的模块,或者只是修改一下参数的话,那确实是有可能有差异的。但是如果说从链的专业分工的思路来讲,它只是一条专注于资产的链,所以两者可能不太会有太大差异。

不过什么都有可能发生,因为我不是 Kusama 理事会,所以我的看法大家随便听听就行了。不过我自己猜这两条链应该会很相似。

Jorrin:在 DAO(去中心化自治组织)中任何事情都可能会发生,对吧?

Joe:是的。

Jorrin:等大家听到这期节目的时候,Statemine 应该已经开启无需许可的资产注册了,所以大家可以去上面创建自己的币,我可能会去做一个 Jorrin 币,哈哈。

今天的节目就是这样,谢谢 Joe,你最后还有什么要说的吗?

Joe:没啥了。大家可以去看看 Statemine。

Statemine 网址:

https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-statemine-rpc.paritytech.net#/assets

原音频:https://relaychain.fm/a-deep-dive-into-kusamas-asset-hub-with-joe-petrowski

翻译:PolkaWorld

本文链接:https://www.8btc.com/media/6676239
转载请注明文章出处

评论
登录 账号发表你的看法,还没有账号?立即免费 注册
下载
阅读
分享
评论
点赞
上一篇
下一篇