墨客介绍系列 – 实现与所有其他区块链的跨链

2018/4/6 17:07:23 发布者:本站编辑

当前两个区块链的货币之间的兑换有两种方式,一种是采用线下的方式,找到一个可信的有相反需求的其他买家,甲把A货币转给乙,乙把对应的B货币转给甲。这样的办法比较低效,找到一个可信的对家很难,执行的风险也很大。另外一种方式就是普遍采用的中心化的交易所,大家把各自的货币充值到交易所,交易所在它的系统里面记录每个人的余额,然后兑换就在交易所的平台上面进行,直到玩家从交易所取出相应的货币。


中心化的交易平台的问题显而易见。在监管缺失的情况下,中心化交易所可能存在内幕交易,伪造交易,资金挪用等等。而且中心化的交易所很容易受到主权机构的控制。


怎么样从去中心化的角度解决这个问题?现在有几个尝试。比较典型的是莱特币的创始人Charlie Lee提出的用闪电网络的方法实现比特币和莱特币之间的跨链。具体做法是用闪电网络的哈希锁定和时间锁定。流程如下:

这里通过公布X,同时解锁两个交易,实现跨链交易最重要的原子性问题。

但是这个解决方案有几个问题:

1. 需要跨链的每个链都支持闪电网络,也就是需要哈希锁和时间锁的功能。现有的链如果没有这个功能的话,需要进行硬分叉。很多情况下并不现实。

2. 整个交易的过程是个交互手动的过程。用户乙必须等待甲的公布,之后要确保在对方网络中递交合适的信息。如果需要实现自动化的话,会比较麻烦,需要额外的基础设施支持,比如类似Cosmos的拜占庭容错hub支持。


墨客采用系统特有的系统定时触发功能和子链的功能,完美解决了上述两个问题。


系统定时触发功能和子链的功能分别在系列文章《墨客系列-系统定时触发》和《墨客系列-子链》中有更详细的介绍。这里概括一下:系统定时触发功能是设置在指定的未来区块位置执行某个交易。这个设置是100%会被执行。子链功能是在底层的POW基础上实现可定制的和分片的子区块链。

墨客具体的跨链这样实现:

 

1. 找到匹配交易: 在墨客网甲从Am地址发送mMOACMOACBm : m, e, n, Ae )念很多额外的e. ideas of consensu flexible nsus implementation which could be loaded as a module by participatingAm -> Bm : m, 另外一区块链网(例如以太坊)中乙从地址BenEth 到地址Ae,表示为( Am ->Bm : m  ^ Be -> Ae : n )。

2. 在墨客网络,甲创建一个哈希锁的系统定时触发交易TAm ->Bm : m  on Block#k。甲同时会把m MOAC发送到系统合约作为预备金。计算Hash(T)

3. 这个系统定时触发交易将在k block后执行这个交易。如果成功,Bm获得m MOAC,否则退回给Am。成功与否依赖于哈希锁是否被解锁:是否有可验证的以太坊交易Be->Ae : n eth,以及Hash(T) 标识。

4. 乙看到系统定时触发交易T后,知道在k block100%会执行,所以他可以很放心的发送交易Be->Ae : n eth, 同时将Hash(T)放入数据段。

5. 乙在以太坊的交易确认后,将以太坊的交易信息作为参数调用系统合约,解开hash锁。

6. k block之后,系统合约自动执行,完成Am->Bm : m。

 

这里,墨客区块链通过其他区块链的确认交易信息解锁墨客交易,实现原子操作。

但是这里的巨大优越性在于,对其他区块链没有新的要求,只需要交易能附加数据信息,这个功能每个区块链都有。因此,墨客跨链机制可以实现与所有的区块链的跨链操作!

目前为止,用户乙还必须手动递交参数到墨客系统合约以实现解锁。墨客系统通过子链来实现拜占庭容错的快速消息传递。

墨客的共识分两部分,底层的POW共识,由v-node来实现。每个v-node都连接一个或多个SCS nodeSCS node实现对合约的分片执行。支持同一种自定义共识协议的SCS node之间可以形成一个子链。为了实现墨客系统与以太坊区块链之间的信息传递,SCS node可以同时连接一个ethlight node



这样,SCS node可以随时获得eth中的需要监控的交易信息。多个SCS node之间通过预定义的共识协议,将对应的操作(比如解锁系统合约的调用请求)发送到v-node层,从而实现跨链信息的拜占庭容错。

综上所诉,墨客提供一个与其他所有区块链的跨链方案,同时提供跨链的信息传递,以实现去中心化的跨链交易。但是,不仅限于此,在此构架上可以很方便的实现去中心化的交易所。