1/ 同步频次和费用:在另外一条链上存储区块头信息需要费用。特别是 tps 比较高的链,区块比较多。 2/ 确认主链以及区块确认:根据链的共识,通过区块头信息确定主链。以 PoW 的链为例,区块确认一般通过后续区块个数确认。 优化同步费用有几种思路:1/ 随机挑战(NiPoPOW,FlyClient) 2/ zk-SNARK (包括 recursive zk-SNARK)。选一些典型介绍: BTCRelay 采用传统的 SPV 轻客户端的实现方式实现从 BTC 到 ETH 的跨链。显然为了同步 BTC 的区块头,在 ETH 消耗 Gas。在以太坊 Gas price 比较高的情况下,同步费用比较高。 FlyClient FlyClient 采用随机挑战和 MMR (Merkle Mountain Range) 的技术,降低轻客户端同步区块的个数。随机挑战的目的是在一定范围的区块并不需要全部同步到链上,随机抽取一些区块同步。为了在链上能验证没有抽取到的区块,所有的区块信息通过 MMR 组织在一起。MMR 是一种变种的 Merkle 树,适用于追加节点的场景。MMR,相对于普通二叉的 Merkle 树,具有更新叶子结点代价小的特点。 zkRelay zkRelay 也尝试降低链上轻客户端同步区块的费用。和 FlyClient 不同,zkRelay 采用的是 zk-SNARK 证明。将一段范围内的区块有效性,通过将链下证明提交到链上,链上只需要检查证明是否有效。 Celo Celo 是个有意思的项目。Celo 项目本身和跨链没有什么关系,但是给轻客户端提供了一些新思路。为了实现更轻客户端,Celo 采用递归零知识证明技术,将区块头的连接信息进行递归证明。一个证明就能证明从创世区块到当前区块的合法性。一个轻结点,只需要同步最新的证明就能确定所有区块的有效性。 Summa (Stateless SPV) 上述的项目,还都是在降低轻客户端链上同步代价方面做优化。Summa 提供了一个全新的思路: 摘抄自 Summa 介绍的 PPT。Summa 项目观察到一个有趣的事实:一条链的区块头在另外一条链上同步了,但是很多区块有可能是浪费的。原因是并没有需要证明的交易在这些区块中。Summa 假设了一种「Ecnomic「安全的做法:证明一个交易在一个区块中,并且区块后有若干区块确认。Summa 认为在伪造的区块后连续出块是一个非常不经济的做法,有这样的算力应该去计算真正的区块。使用这种方式,在链上不需要存储轻结点信息,只需要在一个交易需要证明时提供相应区块以及确认区块的证明即可。这样的方式也称为 Stateless SPV (无状态 SPV)。当然这种经济安全假设需要推敲,特别是在难度较低的情况下,伪造区块以及确认区块相对比较容易。 (责任编辑:admin) |