双层链在一种直白的解释下, 意思就是两层链各自承担着自己的职责, 底层的链负责管理共识方面的安全, 上层的链负责处理业务方面的扩展。
我在这个领域从事链架构设计工作已经好几年了, 在这个过程中, 我曾经见识过不少团队在这个问题上反复折腾的情况, 他们在这个过程中所踩过的坑的数量, 要比人们想象中的数量多得多。
区块链双层链是什么
负责的出块任务, 验证流程, 以及最终结算工作, 由底层链来承担, 其逻辑复杂度很高, 但是操作频率非常低, 每一天之中, 只有几百个区块的产生就完全足够了, 上层链的职责是专门用于运行智能合约, 并且处理所有的交易记录, 它能够支持频繁的分支情况发生, 同时能够实现快速的迭代和升级更新这两条链条之间是通过一个轻量级的验证接口来进行衔接的当上层链产生新区块的时候需要把状态根的哈希值提交到底层链去进行确认只有当底层链确认该数据是有效的情况下这个结果才算是成立的, 如果不符合要求就会被视为无效的区块。
跟侧链相比的话, 其最大的一个区别就是在于, 对于双层链的上层部分, 并不需要去提出独立的所谓的安全假设, 因为其安全性是直接继承自底层系统的,这就意味着, 省掉了跨链桥那一整套复杂的验证流程以及随之带来的各种信任假设方面所存在的问题, 在工程实现的层面上看, 整体情况确实要干净得多。

区块链双层链怎么搭
在实际项目运作过程之中, 我通常会将底层架构首先给定死, 选用那些成熟的并且拥有共识的协议, 不会轻易地去动用其中的参数。在上层环节中, 我会根据具体的业务情况来挑选执行环境, 比如应用去中心化交易多的时候就挂载以太坊虚拟机, 如果是高频计费的情况就走专用的虚拟机会更合适。
至于接口层的部分, 我就只写一个Merkle提交模块, 绝对不会搞得太复杂, 因为越简单的结构其出现安全故障的可能性就越低。
最为严重的缺陷在于双层链结构的出块时间差这一环节。底层网络的出块间距为12秒, 上层网络的出块间距为2秒, 这种设定在技术上是可行的;一旦将其方向反转, 则完全行不通了。时间间隔的混乱将直接导致验证窗口彻底崩溃, 我曾亲眼目睹一个项目因为该原因不得不回滚三个主要版本, 其开发团队甚至濒临解散的边缘。
架构领域里是不存在一种能够解决所有问题的万能药的, 可是双层链这个技术呢, 把安全性和性能这两件事分开放置处理了, 从目前工程实践的层面去看的话, 这应该就是最为实事求是的一种妥协和权衡的选择。
