侧链研究笔记

问题清单

1. 为什么需要这个技术?它解决什么已知的问题?

侧链协议产生的原动力其实来源于其他区块链的创新威胁。侧链诞生前,众多“山寨币”的出现正在碎片化整个数字货币市场,再加上以太坊等项目的竞争,一些比特币开发者希望能借助侧链的形式扩展比特币的底层协议。

侧链(Sidechain)协议允许资产在比特币区块链和其他区块链之间互转。这一项目也来自比特币社区,最早是在 2013 年 12 月提出,2014 年 4 月立项,由 Blockstream 公司(由比特币核心开发者 Adam Back、Matt Corallo 等共同发起成立)主导研发。侧链协议于 2014 年 10 月在白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中公开。

2. 它的概念是什么?涉及到哪些内容?

简单来讲,以比特币区块链作为主链(Parent chain),其他区块链作为侧链,二者通过双向挂钩(Two-way peg),可实现比特币从主链转移到侧链进行流通。

侧链的核心原理在于能够冻结一条链上的资产,然后在另一条链上产生,可以通过多种方式来实现。

主要技术要点:

  • 双向挂钩:侧链协议的设计难点在于如何让资产在主链和侧链之间安全流转。简而言之,接受资产的链必须确保发送资产的链上的币被可靠锁定。双向挂钩也是侧链技术的核心原理。
  • SPV 证明:Simplified Payment Verification:侧链协议中,用 SPV 来证明一个交易确实已经在区块链中发生过,称为 SPV 证明(SPV Proof)。一个 SPV 证明包括两部分内容:一组区块头的列表,表示工作量证明;一个特定输出(output)确实存在于某个区块中的密码学证明。

详见结尾处附录

3. 整个技术发展的历史是什么样子?

2012年,在比特币聊天室中,首次出现了关于侧链概念的相关讨论。当时比特币的核心开发团队正在考虑如何可以安全的升级比特币协议,以增加新的功能,但是直接在比特币区块链上进行功能添加比较危险,因为如果新功能在实践中发生软件故障,则会对现有的比特币网络造成严重影响。另外,由于比特币的网络结构特性,如果进行较大规模的改动,还需要获得多数比特币矿工的支持。这时,比特币核心开发者便提出了侧链方案。这种技术允许开发人员将新功能附加在其他的区块链,但是这些区块链仍然附着在现有比特币区块链上。这些区块链中新功能可以充分利用现有比特币的网络特性,而不会对现有的比特币网络造成危害。

2014年,侧链协议诞生前已经出现了许多具有新功能的区块链,并产生了各种竞争币及”山寨币”,如莱特币、狗狗币等。这时,比特币的核心开发团队担心这些竞争币的产生会稀释比特币的价值及对整个加密货币市场造成碎片化的情况,同时,以太坊等一些项目的加入竞争。他们认为,应该把比特币作为一种储备货币,并将新功能添加到侧链上,以侧链的形式扩展比特币的底层协议。这样如果用户想使用其他的新的区块链功能,就不需要购买其他代币。

2014年7月,以太坊众筹,获得了价值1.4亿人民币的比特币,还有20%的以太币,开发团队获得了巨大的回报。但是比特币核心开发组并没有因为他们辛勤工作获得可观回报,为应对其他创新的区块链,如以太坊区块链(Ethereum)区块链、比特股(Bitshares)区块链等带来的智能合约及各种去中心化应用的兴起,受到大量人们追捧,反观基于比特币的应用就因为开发难度大,项目少,而对比特币造成威胁。同时,比特币核心开发组亦不欢迎基于比特币区块链的附生链,以技术方法曾一度将OP_RETURN的数据区减少至40,逼使附生链的开发团队改用其他方式在比特币交易中附带数据。

因此,为了实现商业化价值,并将侧链由概念转化成现实,Adam Back、Matt Corallo等比特币核心开发者共同发起成立了BlockStream 公司。

2014年10月,BlockStream发布了白皮书《Enabling Blockchain Innovations with Pegged Sidechains》。首次明确提出了侧链的概念及其协议实现方案。中文意思是「用与比特币挂钩的侧链来提供区块链创新」。

核心观点是:「比特币」的区块链在概念上独立于作为资产的比特币。他希望通过技术能支持在不同的区块链上转移资产,这样新的系统可以重用原先的比特币。

Adam Back 提出一个侧链(Sidechain)的概念并列出了侧链的一些属性:

  1. 一个用户在一条链上的资产被转移到另一条链上后,还应该可以转移回到原先链上的同一用户名下;
  2. 资产转移应该没有对方卷款逃跑的风险,也就是不诚实的用户没能力阻碍资产转移的发生;
  3. 资产的转移必须是原子操作,也就是要么全发生,要么不发生。不应该出现丢失资产或欺诈性增加资产的情况;
  4. 侧链间应该有防火墙。一条侧链上的软件错误造成链上资产的丢失或增加不会影响另一条链上的资产的丢失或增加;
  5. 即使在资产的转移过程中发生区块链的重组,也不应出现问题。任何因区块链重组造成的中断,应该局限在本条侧链上而不应影响其他区块链。通常侧链之间最好能相互独立,用户可以从其他链条提供数据。只有当存在明确的侧链的共识规则时才需要去检查另一条侧链来对其验证;
  6. 用户不应需要跟踪不经常使用的侧链;

2017年1月,Blockstream 发表文章《Strong Federations: An Interoperable Blockchain Solution to Centralized Third Party Risks》,对侧链早期白皮书的补充和改良。白皮书中着重描述了联合挂钩(Federated Pegs)的相关概念和应用。

4. 市场是是否已经有相关技术的应用,优缺点?

基于比特币网络的

  • ConsenSys 的 BTC Relay
  • Rootstock
  • BlockStream 的 liquid (基于Elements平台)

非比特币的:

详细的比较分析见:侧链跨链研究报告 | 鲸准研究院 https://static.36kr.com/201805/29065819/npjsk24pzl2emqcs.pdf

5. 这个技术最新的方向是什么?

(待补充)

补充问题 1. 侧链和跨链技术有什么异同?

侧链是跨链的一种实现方式。

一般的侧链服务于主链,而跨链志在链之间价值和功能的连通,可以说,侧链与跨链,在技术内容上大体相似,只在谈到他们所服务的对象时才需要做细致的区分

详见 侧链跨链研究报告 | 鲸准研究院 https://static.36kr.com/201805/29065819/npjsk24pzl2emqcs.pdf

附:技术要点

SPV 证明

前面章节所述,在比特币系统中验证交易时,涉及到交易合法性检查、双重花费检查、脚本检查等。由于验证过程需要完整的 UTXO 记录,通常要由运行着完整功能节点的矿工来完成。

而很多时候,用户只关心与自己相关的那些交易,比如当用户收到其他人号称发来的比特币时,只希望能够知道交易是否合法、是否已在区块链中存在了足够的时间(即获得足够的确认),而不需要自己成为完整节点做出完整验证。

中本聪设计的简单支付验证(Simplified Payment Verification,SPV)可以实现这一点。SPV 能够以较小的代价判断某个支付交易是否已经被验证过(存在于区块链中),以及得到了多少算力保护(定位包含该交易的区块在区块链中的位置)。SPV 客户端只需要下载所有区块的区块头(Block Header),并进行简单的定位和计算工作就可以给出验证结论。

侧链协议中,用 SPV 来证明一个交易确实已经在区块链中发生过,称为 SPV 证明(SPV Proof)。一个 SPV 证明包括两部分内容:一组区块头的列表,表示工作量证明;一个特定输出(output)确实存在于某个区块中的密码学证明。

双向挂钩

侧链协议的设计难点在于如何让资产在主链和侧链之间安全流转。简而言之,接受资产的链必须确保发送资产的链上的币被可靠锁定。

15318820993197-w641

具体,协议采用双向挂钩机制实现比特币向侧链转移和返回。主链和侧链需要对对方的特定交易做 SPV 验证。完整过程如下:

  • 当用户要向侧链转移比特币时,首先在主链创建交易,待转移的比特币被发往一个特殊的输出。这些比特币在主链上被锁定。
  • 等待一段确认期,使得上述交易获得足够的工作量确认。
  • 用户在侧链创建交易提取比特币,需要在这笔交易的输入指明上述主链被锁定的输出,并提供足够的 SPV 证明。
  • 等待一段竞争期,防止双重花费攻击。
  • 比特币在侧链上自由流通。
  • 当用户想让比特币返回主链时,采取类似的反向操作。首先在侧链创建交易,待返回的比特币被发往一个特殊的输出。先等待一段确认期后,在主链用足够的对侧链输出的 SPV 证明来解锁最早被锁定的输出。竞争期过后,主链比特币恢复流通。

资料清单