ERC20是以太坊上,智能合约的一种标准协议,此协议支持该代币调用以太坊上的一些高级能力,如查询余额,转账,授权等,支持此标准的代币可以更好的被钱包集成或者被交易所接入。
标准的ERC20协议规定了多个函数,各个项目方在以太坊上编辑自己代币的智能合约时,需要依次声明这些函数,过程中可以增加其他函数,但不可以减少。
当Stafi上的ABS发行出来时,它并不是发行在以太坊上的,但是作为一个去中心化的债券资产发行平台,资产的跨平台性显得尤为重要。其中,以太坊上关于Defi的基础设施较多,大多支持的资产都是ERC20标准的,所以将ABS转换成ERC20资产,流通到以太坊的去中心化交易所中,就显得尤为重要了。
那么如何才能将ABS代币转化成ERC20标准的代币呢?
一个统一的做法就是在以太坊上发行一个一模一样的ERC20代币,数量做关联关系,前者生成,后者一起生成,后者销毁,前者一起销毁,总之,互相做好两者之间的数量转换关系。
这其中设计到跨链,而且是跨PoW共识的链,难度还是蛮高的。
(看Cosmos桥接以太坊的应用Ethermint,做了2年时间没做出来就知道有多难了)
以下我列举一些包含以上关联关系一些方案,或者说做法。
1. Swap兑换
很多公链项目为了更好的融资,都选择优先发行ERC20,待主网上线后1:1兑换成主网Token。这个兑换过程其实就是一种跨链操作。
一般的情况下,用户将ERC20代币发送到一个合约地址,合约收到信息后,在主网对应地址给用户发行相等数量的代币。此过程中,以太坊上的合约地址作为接收方,主网上的智能合约作为发行方,当发行方监控到接收方接收的信息后,触发发行行为,同时锁定,或者销毁ERC20代币,两者之间完成兑换。
ABS代币如果要流通到以太坊上,可以采取此种兑换方式,Stafi主网上存在一个发行合约,实时监控一个以太坊上的接收合约,完成两种之间的数量变化操作。
这种方法其实说起来简单,但是因涉及到了与PoW共识的跨链,整个过程会出现很多安全问题。一般来说,单向的操作会简化模型的安全问题,如接收合约只提供接收服务,不提供转出,也就是当主网上线后,代币的流通只会存在主网这一种标准,不会和ERC20共存。
我们一般会看到当主网上线的时候,交易所做主网代币升级,实际上就是交易所一次性兑换。
但ABS无法做到单向流转,ABS代币作为一种资产,在不同基础链之间流转是一个非常重要的需求,所以我们在跨链桥接上做了很多工作,来保证安全。
业界有几个典型的做法,我找到几个有特点的:
Loom在以太坊上层建立了一个Plasma侧链,Loom的Staking机制是在Plasma链上进行的,当用户要做Staking的时候,需要先将ERC20代币Loom转移到Plasma上,然后绑定(Maping)一个Plasma地址,用新地址进行Staking。当用户完成Staking,准备拿回Loom代币的时候,需要从Plasma侧链上转移到以太坊上,这个过程以太坊上的合约和Plasma上的合约有一个数量交互关系,同时他们之间的转化是相互的。
IOTX支持ERC20代币和主网代币同时存在,同时两种代币都可以在不同的合约里面进行Staking,其中的奥秘在于Staking的入口只有ERC20,所以已经兑换成主网IOTX的代币,在做Staking时,主网IOTX会主动兑换成ERC20再进行Staking。其中主网合约和以太坊合约之间也有一个数量交互关系,同时他们的转化也是相互的。
FSN的Staking则是单向的,只支持主网FSN进行Staking,FSN的持币人如果想要拿奖励的话,必须先进行兑换。ERC20的FSN兑换完成之后,会被销毁掉,转而替代的是主网的FSN。
2. Wrap打包
Wrap打包是针对非ERC20转变成ERC20的一个词语。
在以太坊上,ETH并不是ERC20标准的代币,为了让ETH代币在DEX,Dapp里面和其他ERC20代币进行交换,有人创造了一种ERC20兼容的WETH,也叫Wrapped-ETH。其中的方法是将ETH发送到一个合约,合约锁定住ETH,并给你等量的WETH,ETH和WETH是1:1的关系。
还有一种Wrap方案是针对跨链资产的,主要代表就是WBTC。WBTC的发行方案趋向于中心化,用户将BTC,通过中间商存入到托管机构,中间商发起WBTC生成合约,并最终由托管方确认。整个结果和WETH类似,就是锁BTC,给WBTC。但因为其中涉及到了跨链,BTC并不能直接参与创建在以太坊上的智能合约,所以WBTC采取了一种简单的中心化方式。
其中中间商和托管机构由一个联盟选举出来,这个联盟包含了以太坊上多个著名的Dapp,Dex等,将BTC提供给中间方获得WBTC,意味着你需要完全相信这个联盟里面的所有机构。
ABS代币采取这种方式,则同样需要一个联盟来管理相关的资产,联盟意味着中心化,需要很多的信任成分,而其去中心化的技术目前来说并不是很成熟,特别是面对PoW的跨链,不仅仅是安全,体验的感觉也会差很多。
综上,资产的ERC20兼容设计的解决方案并不多,而且都有不同的技术难度,Swap的方式较为成熟,Wrap的方式较为复杂,当然,ETH是一个列外,因为它本身就是以太坊上的代币。Stafi所发行的ABS资产会在这两者方案中选择,同时也会积极探索更好的跨链方案。
特别是,以太坊转型2.0之后,这种机制会有更多的可能性。