加入PolkaWorld社区,共建Web3.0!
Statemint/Statemine是波卡/Kusama生态的公共利益平行链,用于创建和管理资产,包括同质化资产和NFT。
8月5日更新的「RelayChain」播客中,主持人ParitySupport工程师JorrinBruns,和Web3基金会技术集成负责人和Statemint项目的贡献者JoePetrowski一起,带着大家深入解析了Statemint。
PolkaWorld将这期播客的部分精华内容整理成了文字版,本文主要内容有:
什么是Statemint/Statemine?
把交易从中继链上拿下来
Statemine作为第一条公共利益平行链
在多条链之间传送资产
实现Statemint的治理
谁在开发公共利益平行链?
怎样激励验证人
Statemint和Statemine未来会怎样
Jorrin:欢迎大家收听RelayChain播客,很荣幸这次又请到了JoePetrowski。这次我们会聊聊Joe最近几个月参与的项目之一“Statemint”。你们很多人应该听说过,它是Kusama上上线的第一条平行链。其实在Kusama上它叫“Statemine”,不过在接下来的播客中我们都会用“Statemint”来指代它,因为上波卡的主网名字就叫Statemint。所以说“Statemine”和“Statemint”这两个名字其实是可以互换的。
接下来我们就正式开始吧。我们先从一个比较高的角度来看,什么是Statemint?
Joe:Statemint其实是一条非常简单的链,没有太多很花哨的东西。它不像中继链或者智能合约链那么复杂,它只是一条用于创建和管理资产的链,既包括同质化资产,也包括非同质化资产。
Statemint其实主要是由两个模块组成,一个是处理同质化代币的Assets模块,一个是管理非同质化代币NFT的Unique模块。剩下的都是一些运行层面的东西,比如账户和余额。账户可以存放资产,还有一些跨链消息、代理、多签等这些你在Substrate链里经常看到的实用性的功能。
不过总的来说,Statemint的主要功能就是在链上创建和管理资产。
Jorrin:我们刚刚说到了token和NFT等。为了帮助熟悉以太坊生态的人理解,Statemint是不是代币标准,或者说是一条做代币标准的平行链,类似于ERC20或者ERC721那样的?
Joe:是的,没错。这两个模块其实和ERC20和ERC721的接口很相似。最大的区别在于,当我们说到ERC20和ERC721,它是一个接口,它只是说你的合约里要有这几个函数。但是实际上,每一个以太坊ERC20都是用了不同的接口,所以你可以有某些函数,比如转账。某个合约可以比另一个合约用掉多得多的gas,我们发现用不同的ERC20代币来做同样的操作,会有非常大的gas费差距。
而在Statemint里,这些是直接写在Runtime里的,这个链上有一个函数叫做Transfer,另一个函数叫Create,用来创建资产。所有这些逻辑都是在链上的,好处就是我们进行了基准测试。这个是通过我们标准的Substrate基准测试流程,通过使用某些已知的硬件,来对执行不同的函数估算时间。
我们不是在交易进行的过程中计算gas,而是可以进行预调度收费,也就是说我们可以在执行这个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.3KSM作为存款才能使用多签,但是在Statemine上可能是0.03KSM就够了。大概是所有的东西都是中继链的1/10左右,所以省下了一笔相当可观的钱。
但其实不会更快。它只能以与中继链最终确定的速度相同的速度确定其区块,所以它不会更快,不过在交易费用方面肯定便宜得多。
而且老实说,1/10其实是一个我们拍脑袋定的数值,因为我们不知道它用得多不多,所以先设为10%,但我们其实觉得再过一段时间,随着时间的推移,等我们有更多平行链的时候,我们其实可以把这个数降到大概1/50。所以说费用和押金等等还有五倍的减少空间,因为把这些东西放在平行链链上比放在中继链上效率要高得多。
Jorrin:太棒了。我总是很乐意听到更便宜的交易费,那太棒了。你之前提到了一个公共利益平行链的概念。Statemint是第一个公共利益平行链,可以展开讲讲吗?聊一聊它到底是什么意思。
Joe:好的。所以大概来说,公共利益平行链,是通过中继链的治理来添加的。所以,正如大家知道的那样,Polkadot和Kusama的治理其实都有很强的治理功能,有一个叫做RootOrigin的东西,它就像系统中的超级用户。只有治理才能访问这个超级用户权力,和访问特权功能,它的其中一个功能就是注册平行链。
对于一条链是通过拍卖成为平行链,还是直接作为公共利益平行链注册,很多人其实感到很困惑,就是谁可以调用“注册平行链”的这个函数呢?其实只有治理可以调用。所以其实两种情况调用的是同一个函数,只不过一种方式是直接通过治理,另一种是作为拍卖逻辑本身的结果,而拍卖是通过治理发起的。
所以其实我没办法真的控制治理的行为,治理可能会注册一些他们觉得是公共利益平行链,但我觉得不是的链。所以这里我只能说说我个人对公共利益平行链的想法。我觉得可以分为两类。第一类是系统级的平行链;另一类就是公共物品平行链,Statemint就是这一类。
系统级平行链,比如DOT或KSM的余额、staking或治理的之类的东西,只是把这些东西从中继链拿下来放到平行链而已。这样做就可以给平行链腾出更多的空间,就是我们之前说到的把中继链的计算资源释放出来。我们最初的白皮书说Polkadot大约可以支持100条平行链,但其实这只是一个预计,一些研究人员甚至觉得可以支持1000条。
另一类是公共物品平行链,这些都是新的功能,和系统级平行链略有不同。它们主要是一些没必要有代币模型的链,或者有必要但是可以直接用DOT或KSM作为代币。而且它们是很多人都想要使用,但是却可能不想自己来构建的链。比如说使用DOT或KSM作为gas费,使用Statemine来管理资产的智能合约链。还有甚至像桥,比如如果大家都同意波卡到以太坊的桥很有用,那么就可以拿出一个插槽来做这个桥。
Jorrin:你刚刚说到有一类公共利益平行链的特征就是,可能没有自己的代币。Statemint其实就是这样,它没有自己的代币,而是使用中继链的代币,Statemine链用KSM,Statemint链用DOT。所以这种方式具体是怎么运作的呢?
Joe:我们有一类特殊的跨链消息叫做Teleport。所以在Statemine这边,它信任自己的中继链,应该说很多平行链也是这样,它们应该信任中继链,因为中继链为它们提供最终确认。基本上就是说,如果中继链向我们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我都是信任的。所以这就叫做受信任的传送口,在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的rootorigin。
这些看起来好像对于一条链来说挺简单的,但是Statemint链runtime非常简单,它就只有Accounts、Balances、Assets和Unique这几个模块而已。它没有Collective模块,来代表理事会或者技术委员会,它没有Democracyorigin,它根本就没有这些围绕治理的原语。
所以我们需要找到一个方法,像Statemine表达Statemine的rootorigin就是Kusama的rootorigin,或者说Kusama理事会的AssetsPrivilegedOrigin超过了50%。这听起来好像理论上也挺简单的。但是你其实上就像在对Statemine说“嘿,有一条其他的链叫Kusama,它是你母链,它里面有个叫理事会的东西,如果理事会中超过50%的人发给你消息,那么你就得听它的,把消息作为AssetsPrivilegedOrigin来接受。”
Statemine甚至都不知道Collective模块是个啥,它是推理不出来的,所以其实是创建了这些Origin,来让上面说的东西能实现。这个需要在Kusama的runtime升级中,在跨链消息和理事会逻辑中添加一些新功能,来实现这些东西。之后其实整个过程就跑通了,现在我们有了这些Origin,那么其他的一些链的治理主体向Statemine发送消息的时候,也可以类似地搞了。
说回到Statemineruntime升级的事儿,确实需要公投,一般都会由理事会来加速,但是还是需要通过普遍的持有人或者整个社区的投票,然后就会派遣一条消息给Statemine,里面有明确的指示。
Jorrin:Statemint的主要是由Web3基金会和Parity联合开发的,是不是大部分的公共利益平行链都是这样合作开发的呢?还是说会有第三方也就是项目方也会开发公共利益平行链?
Joe:我觉得可能是两种都有。
Parity和Web3基金会可能会一起来做一些系统级别的链。Parity实现了目前在波卡和Kusama上用的runtime,其实之后做系统级平行链只需要把它们分成更多模块化的部分,比如Stakingruntime,治理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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。