为了减轻主链的压力,为DAPP提供更好的体验,依莱云采用了主链侧链的分层架构。主链只负责ELA的流通,DAPP运行在侧链上,通过依莱云的侧链转移机制完成主链和侧链之间的价值安全转移。

此外,云工链采用仲裁员联合签名和简化支付验证(SPV)的机制,保证与边链的转账安全。主链持有人共同选举一定数量的“仲裁员”,仲裁员负责签署从侧链到主链的提现交易。多数仲裁员的签名可以解锁主链上从代表侧链的账户向普通账户转账的“提现交易”。主链到侧链充值操作的安全性由SPV保证,每个侧链节点会同步主链的所有块头。加上merkle的证明路径和交易信息,可以从数据结构和算法的角度完成转账交易的去中心化共识。

依莱云的侧链可以使用任何共识机制。目前,易来云团队已经开发出基于POW共识的侧链,可以接入主链完成基于SPV和DPOS的充值和退币操作。这种基于POW的侧链可以靠主链的计算能力保证自身的安全,主链计算能力的使用权交给基于DPOS共识选出的“仲裁人”,每个仲裁人轮流打包基于POW的侧链。

易来云通过跨链技术实现与自有令牌区块链系统的相互转移。这种可以用易莱云转账的区块链,叫做“朋友链”。

主侧链之间的转移

侧链技术的关键是解决主链和侧链之间的转移问题,必须有一个机制来保证主链和侧链之间的转移是安全可信的。正因如此,Adam Back等人发表了著名的《侧链白皮书》,提出了一种叫做双向peg的技术来解决两条链之间转移资产的问题。基本原理是基于SPV互相验证交易确实存在于另一条链中,但有一个前提,要保存对方所有的块头信息。依莱云的主链和侧链是一对多的关系。侧链只保存主链所有块头信息的一个副本是没有问题的。如果主链需要保存侧链的所有块头信息,是不可接受的。因此,在依莱云的主侧链架构上,无法使用基于SPV的对称双向锚。

依莱云用不同的机制来保证主链和侧链之间的转移。

1.从主链转移到侧链

易来云主链到侧链的转账是基于SPV实现的,侧链需要集成主链的SPV模块,随时同步主链区块和上行侧链的转账交易。转移过程如下:

1.用户通过钱包将N ELAs从地址U转移到主链中代表侧链的地址S,并将自己在侧链中的地址U添加到交易中并发送给主链。该事务被标记为tx1。

2.主链中的矿工节点包tx1并成功阻止它。

3.在等待充分确认后,轮换仲裁器节点A的SPV模块获取主链上的转账交易,从交易中获取转账地址U,构造一个向U汇款的交易tx2,发送的币数等于tx1中U到S的转账数,tx2同时携带SPV认证路径和tx1。

4.旋转仲裁器节点A向侧链节点发送tx2。

5.侧链将tx2包装成块。

6.在等待足够的确认后,用户在钱包上看到的侧链地址u被记录在N SToken中。

2.从侧链转移到主链

云侧链向主链传输的安全性由主链的仲裁器机制来保证。以下是转账流程:

1.用户通过他的钱包从侧链中的地址u发起货币交易,接受m SToken,附上他自己的地址

4.旋转仲裁器节点A构造事务tx4,该事务根据tx3在主链上将时间从S传送到U,并且将该事务广播给所有仲裁器节点用于签名。

5.当旋转仲裁器节点A在tx4上接收到超过三分之二的仲裁器签名时,它将把带有这些签名的TX4移交给主链。

6.矿工将包含tx4的事务打包成块。

7.在等待足够的确认之后,用户看到他的主链地址U已经在他的钱包中输入了M ELAs。

3.仲裁人

上述移交过程涉及仲裁员的参与。在主链到侧链的传递过程中,仲裁人的作用是生成和传递交易到侧链,不参与签名;在从侧链到主链的转移过程中,仲裁者的作用不仅仅是生成和转移交易,还要对交易进行签名,使得从代表侧链的账户转移到主链上普通账户的“提现交易”能够被各个主链节点验证。

仲裁员通过主链投票选举产生,定期轮换。每个仲裁器需要提供足够的计算和网络资源来运行至少一个主链节点和对应于n个侧链的n个节点。仲裁人的收入来源于为侧链包装区块获得的交易费。

基于功率侧链

易来云提供了基于POW的侧链实现。有了这个实现,构建侧链开发DAPP应用就很方便了。

这个基于POW的侧链是和依莱云的主链共同挖掘的,主链的现任轮值仲裁人作为挖掘者,将侧链的事务打包生成挖掘事务,放到主链上。主链与比特币联合挖掘,根据联合挖掘的原理将计算证明传递给侧链,侧链的任何节点都可以根据这个计算证明验证区块的有效性。

在一个仲裁员选举周期中,主链的所有仲裁员将按顺序轮流履行他们作为“侧链滑车拆卸轮换仲裁员”的相应职责,包括侧链滑车拆卸的职责。轮换动作由侧链阻塞触发,每个仲裁员依次阻塞一个侧链,顺序由上一轮投票的统计结果决定。阻断行为最终通过主链上发布的挖矿交易体现出来,主链上的每个节点都会对挖矿交易是否合法达成共识。其中一个主要的验证就是看发布挖矿交易的签名人是不是目前有权封杀侧链的“轮值仲裁人”。

侧链的收益(只有交易费,没有货币创造)还是分给矿商和基金会。这里的矿工就是主链中目前正在发起“采矿交易”的仲裁人。当然,这个采矿交易也是付给主链上的矿工的。这个矿工费是付给真正出钱计算的比特币矿工的。

在上述侧链联合挖掘模型中,侧链的安全性依赖于主链的选举信任和联合挖掘提供的计算能力,完成主链到侧链的信任转移。侧链采用POW的共识策略,简单可靠,交易历史不会因为侧链的某些关联方作恶而被篡改。侧链也可以独立挖矿,但是要和主链联合挖矿的计算能力竞争。所以在遵循POW法则的情况下,主链会为侧链提供足够强的安全性。

基于DPOS的侧链

与此同时,依莱云正计划开发一个基于DPOS共识的侧链。DPOS共识中关于侧链的代理是主链的仲裁者,仍然相当于通过主链来保证侧链的安全,但是会减少挖掘过程,得到更快的块提取速度。侧链的各个节点可以通过链接的主链SPV模块获得主链对仲裁员的投票信息,从而对仲裁员的合法性达成共识。

友谊链

侧链的概念来源于比特币。在这个场景中,侧链没有自己的令牌,有自己令牌的链有独立的经济体系。云来和该自有代币链之间的转移需要基于两种代币的当前市场汇率

易来云对友情链的支持可以分为两个阶段:第一阶段,支持友情链和易来云主链之间的原子交换,是点对点的,要求双方约定汇率,创建相互限制的原子交换交易;第二阶段将以去中心化交换为基础,完成主链和友链令牌的自由交换,无需用户之间点对点创建交换交易。

原子交易的第一阶段将通过哈希锁的方式实现。这里有一个具体的例子来描述交换过程。

假设有一个好友链F,有自己的令牌FToken,Alice和Bob需要完成易莱云公链(这里用E表示)和链F之间的ELA和FToken的交换,Alice在链E和链F上有地址EA和FA,Bob在链E和链F上分别有地址EB和FB。假设此时的市场汇率是1:10(1个ELA兑换10个F代币),爱丽丝想用10个埃拉和鲍勃兑换100个F代币。

1.Alice在链E上发起从EA到EB的特殊转账交易tx1,转账金额为10 ELAs。这个交易的解锁条件不仅仅是EB对应私钥的签名,还有一个hash锁。Alice老师生成一个随机数X,从X中取一个hash hash(x),在这个事务中Bob需要提交X来解锁这个hash锁。

2.Bob在链E上看到了tx1,于是在链F上构造了另一个特殊事务tx2,从FB向FA转移了100 FToken。这个事务的解锁条件不仅是私钥对应的FA的签名,还有一个hash锁,也是hash(x)。解锁条件也是需要X。

3.Alice提供tx2的签名和链F上的X来解锁tx2并将100 FToken转移到她在链F上的另一个地址.

4.鲍勃看到tx2解锁,同时得到X,然后鲍勃用EB的私钥给tx1签名,提供X,这样就解锁了tx1,把10个ela转到他在链E上的另一个地址.