波卡中继链本身不支持DOT之外的资产,此前只能通过其他接入波卡的支持智能合约的平行链来发行和管理资产。而波卡在设计的路线中,是考虑将波卡中继链的许多功能剥离出去,以公共利益平行链的方式来实现这些功能,从而最大程度的为波卡中继链减负,以优化整个波卡网络的运行。很自然的,管理资产这个功能也是属于需要剥离出去的,而目前波卡最先实现的剥离的功能就是资产管理,作为公共利益平行链的Statemint这条通用资产链就应运而生了,它除了管理DOT以外,还支持其他资产的发行和管理,项目团队再也不用担心在波卡生态中怎么发行资产了。
除此之外,在平行链中就存在此功能。在波卡上,这条平行链被称为Statemint,而在Kusama上,它被称为Statemine。本指南中的所有信息同样适用于Kusama/Statemine。
Statemint为创建、管理和使用同质化和非同质化资产提供一流的界面。同质化界面是类似于以太坊的ERC-20标准。然而,数据结构和状态操作被直接编码到链的Runtime中,使操作快速且费用高效。
除了支持资产之外,将Statemint集成到您的系统中还可以为基础设施提供商和用户带来诸多好处:
- 支持链上资产。
- 与中继链相比,交易费用显着降低(约 1/10)。
- 明显低于中继链的存款(1/10)。这包括存在存款(Existential Deposit)和代理/多重签名操作的存款。
- 能够支付某些资产的交易费用。就像,账户不需要DOT就可以在链上存在,也不需要支付费用。
Statemint将使用DOT作为其本币。用户可以将DOT从中继链转移到Statemint并在本地使用。中继链还将接受DOT从Statemint转移回中继链,用于抵押、治理或在那里发生的任何其他活动。
使用Statemint进行DOT/KSM余额转账将比中继链更高效。在构建特定领域的平行链之前,中继链仍将需要用于质押和治理。
资产基础
资产存储为从ID到资产信息的映射,包括管理团队、总供应量、账户总数、账户存在的充分性等。此外,资产所有者可以注册元数据,例如名称、符号和表示的小数位数。
一些资产,由链上治理确定,被认为是“充足的(sufficient)”。充足的是指资产余额足以在链上创建账户,不需要DOT/KSM存在存款。同样,您不能将不充足的资产发送到不存在的账户中。充足的资产可用于支付交易手续费(即账户上无需持有DOT/KSM)。
资产确实有一个最低余额(由创建者设置),如果一个账户低于该余额,那么这个账户里微小的余额将会被清除或丢失。
有关最新信息和参考文档,请参阅资Asset Pallet:
https://github.com/paritytech/substrate/blob/master/frame/assets/src/lib.rs
资产运营
Assets pallet有自己的接口来处理资产。请参阅本文下面的集成部分,了解如何获取信息和构建交易。
您可能会与之交互的主要函数是transfer和transfer_keep_alive。这些函数将一个AssetId(一个u32,不是一个合约地址)的一些金额(余额)转移到另一个账户。
Assets pallet还 为非托管操作提供了一个approve_transfer、cancel_approval和transfer_approved的接口。
资产转账将引发一次assets.transferred事件。对于监控事件和交易的相同指令也适用于资产转移。
请注意,您可以在Statemint上使用您在中继链上使用的相同地址(匿名代理除外!)。SS58编码是相同的,只有链信息(创世哈希等)会在交易构建时发生变化。
集成
Statemint将附带Parity Technologies为中继链提供的相同工具套件,即API Sidecar和TxWrapper Polkadot如果您有技术问题或关于如何使用其中一种集成工具的问题,请提交GitHub问题,以便开发人员提供帮助。API Sidecar相关内容:https://github.com/paritytech/substrate-api-sidecarTxWrapper Polkadot相关内容:https://github.com/paritytech/txwrapper-core/tree/main/packages/txwrapper-polkadot
平行链节点
使用Statemint需要运行平行链节点来同步链。这与运行波卡节点非常相似,只是增加了一些额外的标志。基本格式如下所示:
./statemint$STATEMINT_CLI_ARGS--collator--$POLKADOT_CLI_ARGS
其中$STATEMINT_CLI_ARGS以及$POLKADOT_CLI_ARGS这两个节点标志都由常规的波卡节点标志组成。标志可以使用两次,一次用于整理组件,一次用于中继链组件。默认情况下将使用以下端口:9934、9616和30334(分别用于中继链RPC、Prometheus端点和libp2p)。如往常一样,可以通过标志来调整这些端口中的任何一个。要部署一个Statemint RPC节点,需要在$STATEMINT_CLI_ARGS的位置使用与Polkadot RPC节点相同的标志。该节点将在其数据库目录中保留波卡和Statemint的数据库,因此应相应地配置磁盘。
Sidecar
API Sidecar是中继链和平行链节点的REST服务;它带有端点,用于查询有关Statemint上资产和资产余额的信息。
资产查找将始终使用AssetId来指代资产类别。链上元数据可能会发生变化,因此不适合作为规范索引。
请参阅文档以获取完整的使用信息。此处不包含有关如何进行历史查询等选项的详细信息。相关内容:https://paritytech.github.io/substrate-api-sidecar/dist/
Tx Wrapper Polkadot
TxWrapper Polkadot是一个旨在促进离线环境下交易的构建和签名的库;它带有一组用于Statemint上的特定于资产的函数。在构建平行链交易时,您可以像在中继链上一样使用txwrapper-polkadot,但需要使用适当的平行链元数据构建交易,如创世哈希、规范版本和类型注册表。
目前,Statemint上也已经支持了大家很熟悉的稳定币USDT和USDC,波卡国库中也有许多提案在围绕着而Statemint进行改进,增加其功能和应用,让Statemint在资产管理方面更加专精。随着越来越多的项目在波卡上发行和管理,Statemint将成为波卡上资产管理的中心。