当年比特币被创造出来的时候, 最主要的是解决两个问题: 1. 如何在一个没有身份认证的系统中解决分布式共识问题; 2. 这个系统要足够的 scalable (不是tps的意思), 是说当大量的用户同时参与进来时, 通信的成本依然是可以接受的.
神奇的Nakamoto共识巧妙地解决了这两个问题. 但同时, 也留下了大量的问题. 其中一个最最最让人惦记的问题就是比特币的交易吞吐量太小了.
虽然现在侧链技术吹的神乎其神, 但究其起源, 就是针对扩展交易吞吐量的问题. 其背后的想法超级朴实, 甚至有一些土土的: 两条链的交易处理速度是一条链的两倍.
最一开始提出的侧链叫做one-way pegged sidechain. 想法很简单: 如果一个人在比特币的主链里面做一个叫做proof-of-burn的证明, 证明我在主链里面"烧掉"了一定数量的比特币, 那我就被允许把这些被"焚烧"的资产, 转移到一个侧链(另一条区块链)当中. 那这个技术有什么用呢? 想像一下: 有一天比特币的主链交易处理速度慢到了不行, Alice有很多比特币在主链上, 但花起来可闹心了, 买pizza根本确认不了. 这时候, 她听说有另一个链叫pizza链, 上面处理交易的速度超级快, 买pizza杠杠地, 她此时的想法会不会是把一些比特币换成pizza币. 如果pizza链不是比特币的侧链, 她需要去交易所搞一圈. 如果pizza链是比特币的侧链, 那她只需要在比特币的主链上做一个proof-of-burn的证明, 然后她在pizza链上就有token了, 从此她买pizza就可以快到飞起了.
one-way pegged sidechain之后, 很自然地也提出了two-way pegged sidechain, 而要解决的问题也很简单: 当pizza链的用户想退出pizza链的时候, 她可以证明自己在pizza链上的资产被烧掉了, 然后这笔钱就会转移到主链上. 虽然sidechain提出时针对的问题很土 (甚至连解法也不是最优的). 但大家一下子就发现了这个东西有意思的地方: 这超级像近代以前的金本位有没有. 也就是说, 任何个人和组织都可以在有抵押物的情况下, 发起和培育自己的区块链社区, 建立一套比特币本位制度. 而在这个比特币本位制度下, 各个社区各司其职, 有的负责记录个人信用, 有的负责记录物流信息, 有的负责记录税务信息, 等等等.
在比特币本位下, 如果有了众多各司其职的侧链社区, 就让我们再接着想象一个有趣的问题场景: 全世界是比特币本位的, 比特币上挂了超级多侧链, 有pizza链, salad链, milk链, meat链, 等等等. 这些不同的侧链都有自己不同的社区, 这些社区内部的商业往来通过自己的侧链就可以解决. 但不可避免的, 这些社区之间可能会需要做生意, 那该怎么办? 这时跨链通信(cross-chain communication)就登场了. 其解决法案需要用到two-way pegged sidechain. 让我们思考一个例子: pizza链的Alice要给salad链的Bob转钱, 虽然pizza链和salad链是无关的两条链, 但由于这两条链都和主链双向绑定, 可以借助主链来完成转帐的过程; 具体来说 pizza链上的Alice先通过two-way pegging转给主链上的自己, 主链上的Alice再转给主链上的Bob, 主链上的Bob在通过two-way pegging转给salad链上的自己.
当然, 跨链通信的作用不仅仅是转帐而已, 更有意义的应用是打通不同区块链社区之间的信息: 比如, 物流链, 信用链, 和纳税链 的信息 一旦互相共享, 爆发出的威力不可小觑.
上面只是笼统地谈了one-way pegged sidechain和two-way pegged sidechain, 因为背后的原理有点复杂, 我并没有涉及如何去具体实现主链和侧链之间的pegging.
pegged sidechain只是技术, 可以用来实现跨链通信 (虽然一开始的目是为了提高tps).
而pegging的实现其实和共识协议非常相关. 直觉就是私有链的pegging简单, 公有链的pegging难, 公有链中 PoW又相对简单, PoS又相对更难. 有些国内的区块链社区声称解决了多链的跨链通信的问题, 其实是在私有链的场景下建立了two-way pegging,。