谈到侧链,有必要和另外一个容易混淆的概念做一下辨析,那就是子链。子链没有自己的共识机制和原生通证,其安全性完全依托于主链,具有单向性。而侧链本身是一条独立运行的区块链,侧链与主链的关系,是相对概念,具有双向性。 以太坊的扩容链,有些是侧链形态,有些则是子链形态。采用 Plasma 方法和侧链方法的扩容链是以太坊的侧链(Plasma 侧链是另一种侧链形式,不是轻节点式侧链),而采用状态通道和 Rollup 方法的扩容链,则是以太坊的子链。 子链通过将交易从主链挪到子链进行,并定期向主链同步最终状态来实现对主链性能的扩容,所以,子链也被称为「提交链」,提交链的叫法比子链的叫法更贴近其技术本质。 子链的目的是为了扩容,扩容的本质是节省主链的资源,因此主链不会花费计算资源对子链提交的交易进行验证。子链自身需要一个机制在提交时证明其所提交内容的真实性。其中,状态通道,Optimistic Rollup,Arbitrum Rollup 采用欺诈证明的方式来证明,而 Zk Rollup,Validium 则采用零知识证明的方式生成有效性证明。 子链和主链之间,这种单向的信息提交式互动,在有些文献中,也被认为是跨链技术的一种形态,但 Paka Labs 认为,尽管侧链和子链都诞生于对区块链扩容的努力,但子链相关的技术只能用于创建扩容链,无法应用于两条独立区块链之间的跨链,不应归类为跨链技术。 轻节点侧链的优越性 如果说见证人机制重在 Trust (信任),那么轻节点侧链技术则重在 Verify (验证) 。通过区块头验证交易信息,其可靠性是在密码学上被保障的,交易是否存在,一验即知,确定无疑。 Relayers 传递的区块头也不可能造假,因为轻节点合约可以像全节点一样,对区块进行严格的验证,虚假的区块头无法通过验证。轻节点的验证程序和源链网络中的矿工节点验证程序是完全相同的,以 BTC 为例,需要经过以下步骤验证: 区块的数据结构语法上有效; 验证工作量证明,区块头的哈希值小于目标难度(确认包含足够的工作量证明); 区块时间戳早于验证时刻未来两个小时(允许时间错误); 验证区块大小在长度限制之内,即看区块大小是否在设定范围之内; 第一个交易(且只有第一个)是 coinbase 交易,即一个区块,矿工只能给自己奖励一次; 验证区块内的交易并确保它们的有效性:验证 MerkleRoot 是否是由区块体中的交易得到的,即重构区块 Merkle 树得到的树根,看是否和区块头中的 hashMerkleRoot 值相等。 恶意的 Relayers 如果串通作恶,唯一可行的方法是传递一个分叉链上的区块的区块头,但对于一个健康的网络,分叉链最终不会成为最长链,轻节点合约只需等待足够多个区块的确认即可(对于 BTC 轻节点,等待 6 个区块即可)。对于 BFT 类的链,轻节点合约只需验证区块的签名数即可知区块是否具备最终性。 (责任编辑:admin) |