跨链
最近在跟同事讨论跨链相关的东西,有一些想法,这里记录一下。
跨链相关的内容可以参考这篇文章。
名词的误导
跨链
这个名词本身挺误导人的,不管是资产还是token,其实并没有真正的跨到另外一条链上。
以原子交换为例,本质跟我们在淘宝上购物的流程差不多。
买家下单,付款,但是钱是被支付宝锁定的,没有直接给商家。
然后商家发货,买家收货之后确认货物没有问题,钱才会打给商家。
这个过程中钱和物流是完全独立的两套系统。
跨链的难点
跨链在技术方面的难点是如何公平的处理期间发生的各种可能的异常情况。
原子交换需要实现审查相关的锁定合约,两边的锁定时间也非常有讲究,都是为了应付异常情况。
淘宝还在其中承担保险的责任,会从其利润中抽出一部分资金,专门处理难以决断责任方的情况,以便给双方营造一个良好的体验。
跨链的业务难点在于解决流动性,形成一个闭环。
原子交换如果找不到合适的对手方,就无法进行下去。
中继和交易所方案其实也有类似的问题。
中继跨链目前常见的一个场景是跨链资产映射。比如把比特币映射到以太坊的某种ERC20 token上。类似于将银行卡中的钱充值到支付宝里面。两端其实都是同一个人的账户。
这时的对手方其实是资产发行方。资产发行方可以通过内部操作来提供对应的流动性,跟用户形成闭环。收到比特币之后,资产方可以直接增发token;用户原路赎回的话,可以直接将对应的token销毁。
但是假如用户可以不原路赎回,比如比特币映射进来,但是换成以太币退出。这么操作的人多了之后,资产发行发就会发现,自己手里的比特币越来越多,但是以太币不够用了。这时就需要更外围一层的流动性提供。
比如可以在交易所里将多余的比特币换成以太币,来应付用户的赎回。
交易所其实本身没多少钱,是靠自己的用户提供的流动性。
如果交易所规模不大,用户不多,也同样会存在流动性问题。当然这时就会出现某个币的价格跟其他交易所形成比较大的差价。这时会吸引专门“搬砖”的人来,赚取差价的同时,也提供了流动性。
跨链的本质
三种跨链技术,其实本质是类似的,都是某种交换
。
比如上节讲了,它们都会受限于流动性的问题。
区别只不过是限制的程度不同。
交易所的限制最少,只要能对接它的撮合系统就可以了。但是缺点是必须要信任这个中心化机构。
原子交换限制比较少,需要两个链支持同一个hash运算,以及支持锁定功能。但是缺点是比较麻烦,用户需要花费更多的精力在链外做一些审计和确认的工作。
中继限制最多,一般需要同构链,或者两条链相互能理解对方的交易/区块等数据结构。用户花在链外的精力会少一些,但是链上的操作会比较重,比如需要搬运区块头信息等。
跨链方案的设计思路
我现在可以大概总结出一个设计跨链方案的思路。
首先是要明确跨链交易的对手方是谁,你跟对手方是如何交互的。
然后考虑保证安全,就可以导出需要的信任基础。
比如交易所跨链,我跟对手方完全没有接触。只是在一个交易所里面。所以肯定要信任交易所。
原子交换,双方的交互方式是交换秘密。所以需要信任hash算法和锁定合约。
导出信任基础之后,就可以根据实际情况来设计具体方案。
不一定所有的信任基础都要在链上去保证。
对于联盟链来说,很多情况下大家其实是实名的,完全可以依靠链外的方式来保证一部分信任。
其实信任基础还跟后续的一些流程,包括时效性有关。
比如我用人民币在交易所里面换某种token,是为了跨国汇款。那么会很快的进行转移,然后把它换成美元,token存在的时间很短。
那么这时我就不是很care这个token是不是有漏洞什么的,可能简单的根据经验,判断它在短时间内没问题就行了。