今天上午周迅先生币乎发表第三篇文章——《技术必读 | EKT,实现区块链世界真正的“跨链”》,文章发表后,半个小时内点赞数量超过300+登上今天热门,周迅币乎账号:EKT通用积分周迅。
以下是文章全部内容:
大家好,我是EKT周迅。
今天我们来聊一聊EKT中的跨链机制应该如何解读,又有哪些内容呢?
目前市面上有许多形形色色的区块链项目,一般来说各个区块链项目都仅支持自己链的代币。那有没有一种办法可以打通各个区块链的隔离,进行跨链的资产转移和交换呢?这就是跨链协议要解决的问题。
目前主流的跨链方式有三种:
第一种是跨链原子交换,即两个网络在不通过中介的情况下实现资产的交换。比如A在比特币网络上有10个比特币,B在以太坊网络上有100个以太坊。A和B可以互相交换代币的所有权,这样A就拥有了100个以太坊,而B也有了A的10个比特币。
第二种是通过双向锚定的方式来实现资产的跨链转移。这种方式转移的是代币的位置,而不是仅仅是资产的归属。比如代币本来位于A链,通过双向锚定的方式可以转移到B链,如果需要的话还可以再转回A链。每当一条链上增加了一个其他链的代币,那么在另外一条链上就有相同数量的代币被锁定或销毁。
第三种就是采用中继网络的方式。中继网络管理这所有的跨链资产交换。每当有跨链的资产交易产生,中继网络便会协调相关的链进行状态的更改。
这三种方式目前市面上并没有特别成熟的实现方案,并且每种方案都有着一定的缺点。而 EKT 是一个天然支持多链多共识的公链。在EKT通用积分生态内部,利用多条主链共享的统一的用户系统,不同主链之间的资产是可以利用EKT主链提供的路由功能来进行跨链的资产转移。另外,EKT 也提出了一种跨公链的资产转移解决方案,利用这种机制,不在EKT通用积分生态的其他公链的资产也可以和EKT生态内部主链的资产进行跨链互通。
1长地址用户体系
统一的账户体系是跨链资产交易的基础。EKT 提出了一种“长地址账户体系”的解决方案。在EKT通用积分生态里,存在两种地址类型,一种是用于EKT生态内部的地址,长度为32字节可以用于在EKT主链和其他主链之间转账和其他DAPP的开发使用;另外一种就是外部地址,主要用于跨链的资产交换。外部地址的长度为68字节,其中前4个字节存储内容为其他公链ID长度和地址长度。最后n位存储公链ID和用户在该公链的地址。中间使用0x00填充。地址格式为:
2跨链注册协议
为了兼容大多数公链,EKT 定义的报文协议以 HTTP 协议为基础,请求和响应的Content-Type必须为application/json,请求参数和响应参数必须与协议中的规定相同。在相互注册成功以后,就可以进行跨链的资产转换。
在进行跨链的资产转移之前,需要双方的技术团队进行数据格式的对接。双方对接完成之后,会对公链的各个数据进行记录,包括新增的跨链操作代码和bootnode等信息,代码新增完成之后需要调用接口激活,当所有DPOS节点都同意之后接口返回成功,否则返回失败。查询注册是否成功的接口示例报文如下:
携带数据为:
如果注册成功,返回结果为:
注册失败则返回:
3跨链资产转换
在这个部分,我们演示一下EKT主链和其他主链(假设为Z链)的资产交换流程。
EKT的某用户A想要转移资产到Z链上。首先EKT主链会发送握手协议报文,查询双方是否已经相互注册成功。如果Z链可以正确的回复握手协议,那EKT链会对A用户的交易进行打包,并把交易信息和区块头信息发送给Z链进行校验。其伪代码为:
Z链在收到交易信息和区块头信息以后会进行验证。验证通过以后会发送一个确认报文。其伪代码为:
通过这种方式完成了跨链的资产转移。
EKT 提出了一种通用的跨公链协议,任何区块链项目都可以基于该协议接入到EKT通用积分的生态并完成资产的跨链转移。资产转移到EKT通用积分生态以后也可以用于基于EKT生态开发的DApp中。无论是对其他公链项目还是DApp开发者都提供了极大的便利。