跨链技术方案在设计中往往会遇到一些挑战。举几个例子: 1)原子性。可以通过哈希时间锁的方案来实现。交易互为锚点,任意一方未生效,另一方可以及时回滚。 2)有效性。验证锚点交易的有效性。可以通过SPV证明来实现。 3)资源寻址。如何快速跨链定位并获取到相关的资源。这就需要设计一套完整的寻址协议。 针对第三项跨链寻址协议,我们立项了IEEE标准Standard for Blockchain Interoperability - Naming Protocol。本篇文章,会对该标准进行一个介绍。
解决思路区块链互操作的命名协议 跨链涉及到不同链的资源的互操作,但是由于不同链的协议各不相同,对不同链的资源进行统一定义描述是很非常困难的。 首先, 我们需要一个标准协议,来为每一个区块链网络上的资源分配一个地址。这个协议可以被称为跨链寻址协议 。 跨链寻址协议,也可以被更学术的定义为:区块链互操作的命名协议,英文叫Naming Protocol for Blockchain Interoperability。该协议可以使得任意一个区块链网络能通过标准化地址定位所要访问的其他区块链网络的资源。 例如,我们可以定义一个这样的协议: [:][//][//][?] 所有的区块链网络都可以使用这个协议来为自己区块链网络上的资源来生成一个地址。我们来继续举个例子来说明这一点: 首先,我们假定有一个区块链网络名字叫hello_chain,完全遵循我们在之前定义的它使用名为Xuper的底层框架搭建,这个网络下面跨链寻址协议。 有一条子链/侧链/平行链叫child_chain。 在这个child_chain上有一个使用wasm(webassembly)合约虚拟机才能执行的智能合约,合约名叫counter。顾名思义,这个合约其实是一个简单的计数器。 该合约提供了2个方法,1个叫increase,1个叫getNumber。调用increase方法,会使得每次将数值加1。而调用getNumber方法,会返回当前的数值。 接着,假设我们现在正处于另一个区块链网络world_chain上,希望跨链访问hello_chain网络上的子链child_chain上的名为counter的计数器智能合约,并获取当前的数值。 我们需要先按照之前定义的跨链寻址协议来生成访问地址,举个例子,我们可以这样写: xuper://hello_chain/child_chain?module=wasm&contract_name=counter&method_name=getNumber 其中, xuper: Xuperhello_chain: hello_chainchild_chain: xuper//child_chainmodule=wasm: wasmcontract_name=counter: countermethod_name=getNumbergetNumber 实现命名协议解析的背书节点按照我们上面所举的例子,hello_chain需要遵循我们在之前定义的跨链寻址协议。 (责任编辑:admin) |