今天我们聊聊作为两个基于L0之上的L1之间的跨链协议:一个是波卡的XCMP,一个是Cosmos的IBC。今天我们首先从波卡的XCMP聊起。波卡除了作为一个L0的共识层外,还有一个重要的作用就是要推动跨链的实现,而推动跨链的在技术侧的本质则是能够使得平行链之间可以进行消息的传递,而最终承载消息传递则需要一套标准,这套标准就是协议。这就好比微信和支付宝之间两个不同的生态之间如果进行通信的话,可以通过应用层上的http协议,而更为具体的通信的方式是通过json格式的Restfull API就能达到数据互通。
在开始之前,需要普及一些波卡的一些基本的软件架构概念,
分片模型:中继链和平行链
波卡的对于互操作性或者跨链解决方案是采取的中继链/平行链的模型,平行链连接在中继链上获得共识的基础服务,而中继链用于监听平行链的状态。这有点像pub/Sub模型,比如我们传统软件中经常用到的中间件:kafka.不过在区块链中的这种消息订阅的方式更加有趣,加入了经济代币的激励手段。但中继链本身又是分布式的节点组成。
租用与线程模型:
除了中继链/平行链的概念外,认识另外两个概念:租用与线程。首先租用和线程都是用于平行链在中继链上的接入方式或者是存活方式。而不同的是租用的话,波卡会给你固定的卡槽。而保证服务的稳定性。而线程则是动态分配的。
XCMP的几个特点:
面向连接:连接的这些终端必须要支付押金,才能连接。而关闭连接后,则可以取回押金
XCMP的API 架构:
消息调度分发层:进行消息的编码
队列层: Push消息和Pull消息
XCMP的继承层:
中继链消息层:负责发送和接受消息,而消息是FIFO(先进先出)的队列
而目前对于XCMP有一个简单版的实现,也称之XCMP的轻协议:HRMP
当A链上的智能合约向B链的智能合约跨链传递消息时,需要经过中继链,中继链上维护了进和出的队列消息。如果中继链存放过多的消息,则会对中继链造成压力和瓶颈,所以中继链只会维护消息的哈希值。
XCMP对于跨链的意义:
XCMP使得各个封闭的区块链系统之间相互传递消息和资产的重要协议
