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-pe-into-kusamas-asset-hub-with-joe-petrowski
翻译:PolkaWorld
直播预告:
今晚 7 点 ,PolkaWorld 视频号直播准时开播,本期邀请到了 Astar 中国区代表 sms 为大家讲解 Shiden 平行链上线后的进展 。点击下方按钮立即预约。
- 欢迎学习 Substrate:
- 关注 Substrate 进展 :
https://github.com/paritytech/substrate
- 关注 Polkadot 进展 :
https://github.com/paritytech/polkadot
更多内容:
波卡官方发布 Kusama 与平行链网络性能报告!
Rob Habermeier:波卡能为 DeFi 世界带来哪些开拓性创新?
波卡联合创始人 Rob:波卡生态还在发展早期,“平行链季” 是一个开始
扫码关注公众号,回复 “1” 加入波卡群
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!