注:ETC官方推特宣布,ETC和ETH之间的“和平之桥(peacBridge)”接近完成。peacBridge顾名思义寓意ETC与ETH和平相处,二者在2016年以太坊分叉之后便分道扬镳,如今再次重逢,意图实现区块链互通。通过这条桥梁,ETC将在ETH区块链网络上实现代币化。本文将对peaceBridge技术进行介绍:在Loi Luu(Kyber创始人)的BTC - ETH无中继桥(relay-less bridge)的基础上,peaceBridge就是一座连接ETC和ETH的桥,使用了联合签名的托管链来验证跨链交易。在设计中引入了一种挑战游戏以及实行抵押(staking)要求,解决了高gas成本的问题,并采用了一种无需信任的托管方(Custodian)机制。
peaceBridge就是最好的例证。例如,一笔从ETC到ETH方向的转账:
peaceBridge上的抵押(staking),铸币(minting)以及存款(depositing)。Alice在外来以太坊链上铸造了TETC-A,并在她的主链以太坊经典链上存入了等量的真实ETC。
抵押(staking),铸币(minting)以及存款(depositing)
这个“peaceBridge(和平之桥)”由一个托管人(Custodian)发起,他在主链(home chain)(这里是Ethereum Classic)上建立DepositContract
,在外链(foreign chain)(这里是Ethereum)上建立TokenContract
。
1a. 托管人在以太坊经典链上抵押 α
个ETC到DepositContract
。用户可以在DepositContract
存入本地货币(这里是ETC)从而在外链上进行交易。α
将定义depositCap
的值,作为可以存入DepositContract
的ETC的数量上限。
1b.托管人将在以太坊链上设置TokenContract
,用户将在这里铸造ERC721 TETC代币。每一次铸造都将产生一个带有独一无二的tokenId
的,不能拆分的ERC 721代币。
一旦DepositContract
和TokenContract
设置完成,depositCap
建立,从ETC到TETC的兑换就可以开始了。
每个使用者同时或在DepositContract
上进行存款之前,在TokenContract
上进行铸币。这可以防止恶意的参与者窃取他人公开发布的存款,并使用它来伪造他们没有付款的代币。铸币和存款过程详细如下:
2a. Alice希望用x
个ETC兑换TETC
以便在ETH主链上。为此,她在TokenContract
中(在ETH链上)中铸造了个TETC-A
。请注意,TETC-A是一种ERC721代币,它具有惟一的tokenId
,不能被拆分。
2b. Alice将x
个ETC存入到DepositContract
(在ETC链上),索要她铸造的TETC
。
转账、联合签名、托管链。每一个在peaceBridge上转移的代币都有一个随机数编号,并要求托管人和转账者进行签名,从而为每一个代币建立一条托管链。
转账、联合签名、托管链
1.Alice向TokenContract
提出一个请求,要求将她的TETC-A
代币通过 declaredNonce = 1
转账给Bob。如果她的转账被批准,TETC-A的transferNonce
将从0更新为1.一个代币的transferNonce
在铸币时默认为0,每次批准转账就增加+1,从而在保管链中建立年表。
2.托管人批准Alice的转账请求,并在transferNonce = 1中共同签署转账TETC-A
。
3.TETC-A
的所有权成功转移给Bob。TETC-A
的transferNonce
增加1,表示TETC-A经历了一次转账。
在托管人批准Alice的转账请求之前,如果Alice改变主意将TETC-A转移给Bob,那么她可以自由地撤回交易。
提款与质疑
提款必须进行抵押并开放一个质疑期
提款人可以用TETC-A从DepositContract
中withdraw()
,即支取Alice的原ETC存款。她通过向DepositContract
提交以下信息来做到这一点:● uint256 _tokenId
,她正在尝试赎回的TETC-A代币的独一无二的的tokenId
● bytes32[] _rawTxBundle
,一个包含关于_withdrawalTx
, _lastTx
, _custodianTx
的信息包
● bytes32[] _txMsgHashes
, _rawTxBundle
的值的哈希
● uint256 _declaredNonce
, TETC-A的转账数
如果提款请求是由托管人和令牌的倒数第二位所有者签署的,则DepositContract将开启一个质疑期,在此期间,任何人都可以提交一份证明提款人是在进行欺诈性提款的证据。一个成功的挑战者将获得提款者抵押的代币。
通过提款declaredNonce的年表,我们可以推断出可能存在的欺诈提现以及相应的质疑回应:
欺诈提款和质疑回应
要发起质疑,除了支付提款者应对质疑所承担的gas费用,质疑者必须进行抵押,大小为提款者抵押的20%。这可以防止恶意破坏攻击和好战的质疑,导致桥梁的速度变慢。在任何时候,都可以向DepositContract
提交同一个代币同时存在多个托管方签名的交易,以证明托管方的非法双重签名。惩罚是这样的:
对于一个代币,例如TETC-A
,对应的存款为x
,我们从托管人的抵押中削减TETC-A的存款以及x
个ETC。这里,托管人的惩罚随着被发现的双签名实例的线性函数增加,从而阻止了他进行双签名。
本文作者: Ben, Zhen, Ying Tong
我们感谢Dave Appleton (Akomba Labs)、Anthony Lusardi (ETC co .)、Loi Luu和Desmond (Kyber Network)的有益讨论。