互联网在今天已经成为了生活和工作中的必需品。那互联网又是依靠什么才能运行呢?互联网的运行依赖于运营商(Internet Service Provider, ISP),而运营商是一个完全中心化的组织。在不久的将来,一个基于区块链技术的去中心化的网络可能会诞生,取代目前的互联网。现在世界上已经存在好多的区块链项目,我们相信以后目前的区块链项目会有一个融合的过程,从而整合成一个大的区块链网络。那这个过程将会如何发生呢?EKT又能在这个过程里贡献什么呢?今天我会和大家一起分享一下我们的思考。
侧链技术最初由比特币的核心开发者于2014年在论文sidechains.pdf里提出。当时他们注意到,比特币在自己的区块链上只能作为一个价值流通的载体流通,用途非常有限。而比特币核心代码的升级是需要非常谨慎的。哪有没有一种办法,能够既不会影响原来的比特币系统,又能够测试一些新的特性,进而扩展比特币的使用场景呢?这就是侧链技术的由来。
简单来讲,侧链是一种允许Token在不同的区块链之间进行安全的资产交换的技术。侧链通过一种双向锚定的机制和主链进行连接,连接以后主链上的资产就可以通过双向锚定的技术完成对侧链的充值和提现等操作。一般来说,原始的区块链被称为“主链”。通过双向锚定和主链完成连接的区块链称为“侧链”(有些项目也称之为“子链”)。
主侧链之间是如何通过双向锚定的方式完成资产交换这一个过程呢?首先,主链上的一个用户可以把自己的资产转入到一个特定的地址上。一旦资产转入到这个地址,那这笔资产就会被锁定,用户无法再对其进行花费。用户发送到该地址的交易需要等待主链的确认。这里有一个“安全等待时间”的概念,只有过了这个时间,才可以认为用户的这笔交易是不可回滚的。侧链察觉到这笔交易以后,会再自己的链上发行等量的相关资产,供用户在侧链上使用。用户从侧链提现到主链的过程也是类似,只不过流程反过来而已。
这种通过双向锚定的方式很好理解,但是会带来一个新的问题:那就是这个主链上的地址由谁来确定?如果是一个用户,那这个用户的信用如何保证?这个用户是否有把用户的资产卷走跑路的可能?如果是一个组织,那这个组织又如何确定?目前最成熟的方案是该地址由一个联盟(federation)维护,这些联盟共同维护一个多签地址,不同区块链之间资产的流动都由这个联盟来维护。假设7个知名交易所共同组成了这个联盟,每个交易所都提供一个地址,共同组成一个5-of-7的多签名地址。这就要求每一笔经过联盟的交易,都至少由5个地址进行签名才可以生效。通过分散账户来达成一定的去中心化和安全性。
上面这种侧链的方案目前已经有很多项目采用并推广,但是并不是一种优秀的方案。其薄弱点在于联盟成员的确定已经联盟的存在是否违背了去中心化系统的实质。EKT提出的基于bancor协议为技术的跨链报文协议,可以完全避免联盟选举的问题,从制度上解决了资产的跨链转移和交换。为了兼容大多数公链,EKT 定义的报文协议以bancor 协议为基础,请求和响应的Content-Type必须为application/json,请求参数和响应参数必须与协议中的规定相同。在相互注册成功以后,就可以进行跨链的资产转换。EKT的跨链实现方案主要由以下几步组成:
EKT的某用户A想要转移资产到Z链上。首先EKT主链会发送握手协议报文,查询双方是否已经相互注册成功。如果Z链可以正确的回复握手协议,那EKT链会对A用户的交易进行打包,并把交易信息和区块头信息发送给Z链进行校验。
Z链在收到交易信息和区块头信息以后会进行验证。验证通过以后会发送一个确认报文。
EKT 主链收到确认报文以后,会对该用户的资产进行扣除。
EKT为什么要开发这样的一个跨链机制呢?或者说一个其他公链的Token导入到EKT主链上有哪些用处呢? EKT 作为一个区块链应用的基础平台,可以支持各种应用场景的区块链应用。所以一个Token在EKT多链技术生态的用途是多种多样的,其应用场景会随着EKT多链技术生态的发展而壮大。所以如果一个其他公链的Token能够导入EKT的生态中,可以极大的扩展其他Token的应用场景。
我们相信,未来的区块链系统肯定不会是现在各个区块链项目各自为战的状态。资产的跨链流通、兑换等会成为区块链平台需要提供的基础服务。EKT 提出的跨链协议报文方案是目前各种跨链方案里非常完善的一种方案。相信能够为其他公链Token的流通及扩展应用场景提供坚实的技术支持。