《区块链开发指南》一一2.4 Sidechains

2.4 Sidechains

Sidechains(侧链)实质上不是指特定的某个区块链,而是指那些遵守侧链协议的所有区块链,这个词是针对比特币主链来说的。侧链协议是指可以让比特币安全地从比特币主链转移到其他区块链,同时又可以让其他区块链上的货币安全返回到比特币主链的一种协议。
所以从某种程度上来说,现在市面上的所有区块链,例如以太坊、莱特币、狗狗币等区块链都可以成为侧链应用。侧链的实现具有重大意义,它意味着比特币可以在不同的区块链上流通,其应用范围和应用前景会更加广泛。一旦侧链的应用流行起来,有创意有想法的人就会研发出各种不同的侧链协议来和比特币进行对接,很显然这种方式会进一步巩固比特币在区块链中的地位。
2.4.1 侧链背景
侧链的提出主要是基于以下几个原因。
(1)应对其他区块链的应用威胁
现在市面上出现了几种非常流行的区块链,例如以太坊区块链、比特股区块链等,这些不断产生的新的区块链势必会对比特币区块链产生很大的威胁。以太坊区块链更是提出了智能合约这个有望颠覆整个区块链的应用,而到目前为止,基于比特币的应用开发项目还不多,已有的项目难度也很大。
(2)比特币核心开发组不欢迎附生链
比特币现有的应用中已经存在合约币和彩色币等附生链应用,但是基于一些原因比特币核心开发组并不是很欢迎这些应用。他们的考虑是这些应用会在一定程度上降低比特币区块链的安全性。
(3)Blockstream商业化的考虑
有了以太坊众筹的前车之鉴,比特币核心开发组也希望能以某种商业化的方式来实现更高的回报,所以基于比特币的侧链应用也激发了一群人开始尝试商业化这些应用。
基于以上三个原因,提出侧链协议,把比特币从主链上安全地转移到了其他货币区块链,这样既增加了区块链的多样性又可以应对二代币的竞争,同时这些应用本身确实具有比较大的商业前景,一旦实现商业化,这一块也将成为一块很大的蛋糕。
2.4.2 技术原理
楔入式侧链技术(pegged sidechain),它将实现比特币和其他数字资产在多个区块链间的转移,这就意味着用户们在使用他们已有资产的情况下,就可以访问新的加密货币系统。目前,侧链技术主要由Blockstream公司负责开发。
这里先列出“侧链”所需具备的属性,具体如下。
在侧链间移动的资产应当能够被当前持有者移回,但除此之外的任何人都不行(包括前持有者)。
资产的移动应当是无交易对手风险的;也就是说,不诚实的一方无法阻止转移的发生。
资产转移应当是元操作(原子操作)的,即要么完全完成,要么根本不发生。不存在会导致资产损失或允许欺诈产生的失败模式。
侧链应当设有防火墙:一个会使某条链发生资产铸造(或偷盗)的缺陷(Bug),不应导致其他任何链出现资产的铸造或偷盗。
区块链重组时应当处理干净,即使是在资产转移的期间也要如此;任何破坏应当只发生在它所处的侧链上。总的来说,理想情况下,侧链应当完全独立,其他链上所需的全部数据应由用户提供。侧链的验证者应当只有在侧链本身的显式共识规则有要求时,才去跟踪其他链。
不应要求用户去跟踪他们未主动使用的侧链。
早期“转移”钱币的解决方案是用一个可公开识别的方式来销毁比特币的,新的区块链能够检测到,以允许铸造新币[Bac13b]。这解决了上面提到的部分问题,但由于这种方法只允许单向转移,因此还不足以满足我们的目的。我们提出的方案是由资产转移的交易本身提供所有者证明,从而实现资产转移,以避免让节点有跟踪发送方链的需求。从上层实现的角度来说,当资产从一个区块链向另一个链移动时,我们在第一个区块链上创建交易锁定资产,然后在第二个区块链上创建一笔交易,该交易的输入中包含一个锁定已正确完成的密码学证明。这些输入可用某种资产类型来标记,比如创生出资产的区块链的创世哈希(genesis hash)。
第一个区块链称之为父链,第二个则简称为侧链。在某些模型中,两条链可对称地来处理,因此这一术语是相对而言的。如果打算将资产从(初始)父链转移到一条侧链,期间可能会再转移到别的侧链,最终还能转回至父链,并保全初始资产。一般情况下,我们把父链看成是比特币系统,侧链则是其他区块链中的某一个。当然,侧链的币(coin)也可以在侧链间传递,并非只能与比特币系统进行往来;不过,由于任何一个最初从比特币系统移动的币都可以移回去,所以不管变成什么样,它仍是个比特币。
此外,由于侧链是从父链中转移现有资产的而不是另铸新资产,因此,侧链不会引起未经授权的铸币,维护资产的安全和稀缺性是依靠父链来实现的。
更进一步地说,参与者不必再担心他们的持有物会被一个实验性竞争链锁住,因为侧链币能够用等额的父链币来赎回。这就提供了一个退出机制,减少因无人维护软件而造成的损失。
前面已经提到楔入式侧链技术,它的双向挂钩(2WP)允许将比特币从比特币区块链转移到辅助区块链,反之亦然。“转移”实际上是一种错觉:比特币其实并没有转移,只是在比特币区块链上被暂时锁定了,而且同时在辅助区块链上有相同数量的等价令牌被解锁。当等量的令牌在辅助区块链上被再次锁定时,原先的比特币就会被解锁。这实质上就是双向挂钩所要实现的功能。但这一功能也存在一个问题,即理论上只有当辅助区块链最终结算时才能实现这一功能。因此,任何双向挂钩系统都必须做出妥协,并且依靠于双向挂钩的相关参与者都是诚实的这一假设。最重要的假设是,主要的区块链是无须审查的,而且大多数比特币矿工都是诚实的。另外可能需要的一个假设是,大多数监管锁定比特币的第三方也是诚实的。如果这些假设不成立,则比特币及等效辅助区块链的令牌就有可能被同时解锁,那么恶意的双花就变得可行了。任何双向挂钩系统都必须选择一种措施,使得被假设要诚实的各方都能在经济和法律方面被鼓励依章办事。这包括分析这些关键方对区块链网络进行攻击的成本及后果。双向挂钩实施的安全性取决于激励机制,以便参与双向挂钩系统的关键方能够真正执行双向挂钩所应实现的功能,如图2-1所示。
双向锚定分为四个阶段,具体如下。
1)发送锁定交易,把比特币锁定在比特币主链上。
2)等待确认期。确认期的作用是等待更多区块确认锁定交易,可防止假冒锁定和拒绝服务攻击,等待时间是1~2天。
3)在侧链上赎回比特币。上述确认期结束后,用户在侧链上创建一个交易花掉锁定交易的输出,并且提供一个SPV工作量证明,输出到自己侧链上的地址。这个交易也称为赎回交易,SPV工作量证明是指赎回交易所在区块的工作量证明。
4)等待一个竞争期。竞争期的作用是防止双重支付,在此期间,新转移过来的币不能在侧链上花费。竞争期的目的是防止重组时出现双花,在重组期间会转走先前锁定的币。在这个延迟期内的任何时刻,如果有一个新的工作证明发布出来,且对应的有着更多累计工作量的链中没有包含那个生成锁定输出的区块,那么该转换将被追溯为失效。我们称此为重组证明。

图2-1 双向锚定示意图
竞争期结束后,这个赎回交易将被打包到区块中,用户就可以使用自己的比特币了,从侧链转移比特币的过程也是如此,当用户想把币从侧链上转回父链时,与原先转移所用的方法相同:在侧链上将币发送至一个SPV锁定的输出,并产生一个充分的SPV证明来表明该输出已经完成,然后使用这个证明来解锁父链上先前被锁定的那个等面值的输出。
由于楔入式侧链可能会从很多链中搬运资产,且无法对这些链的安全性做出假定,因此,不同资产不可相互兑换是非常重要的(除非是一个显式声明的交易)。否则,恶意用户可以通过创建一条资产毫无价值的无价值链进行偷盗,即将这样一种资产移到一个侧链,再用它去兑换别的东西。为了应对这种情况,侧链必须有效地将不同父链中的资产处置为不同的资产类型。
总之,我们提议让父链和侧链相互做数据的SPV验证。由于不能指望父链客户端能看到每条侧链,因此为了证明所有权,用户必须从侧链导入工作量的证明到父链。在对称式双向楔入中,反向的操作也是如此。
为了让比特币系统成为父链,需要有一个能识别和验证SPV证明的脚本扩展。最起码的要求是,这种证明需要做得足够小,以便能放进比特币系统一个交易之中。不过,这只是一个软分叉,对于不使用新功能的交易不会产生影响。

时间: 2024-11-01 15:25:10

《区块链开发指南》一一2.4 Sidechains的相关文章

《区块链开发指南》一一导读

前 言 Preface 比特币于2009年诞生,在很长一段时间内,人们只知比特币,不知区块链.从2015年开始,区块链像狂风一样席卷全球,倍受金融界和科技界的关注:2015年年底,区块链技术逐渐得到国内金融界和科技界的了解和认同. 区块链行业的蓬勃发展源于区块链有可能给各行业带来巨大的变革.麦肯锡在2016年年初发布报告,指出区块链技术将在未来五年内颠覆众多行业,特别是银行业和保险业:埃森哲预测到2025年,区块链技术每年可帮助全球8大投资银行节省80亿美元至120亿美元的基础设施成本. 全球金

《区块链开发指南》一一2.5 最新比特币技术

2.5 最新比特币技术 随着区块链的不断发展,区块链技术也在飞速发展,不仅已经有了相对成熟的应用,还有一些原型应用也被提出,下面将介绍几个现在比较流行的在区块链中的应用.2.5.1 IBLT 比特币系统(Bitcoin)需要矿工(或者说矿池)及全节点的分散化,以实现某些人认为的比特币核心属性:抗审查性(censorship resistance).因此,区块大小的争议也意味着是一种权衡.更大的区块,允许比特币网络可以承载更多的交易,但也会带来更多的问题,它需要更多的时间来传播交易,虽然这有利于大

《区块链开发指南》一一1.3 挖矿、矿池

1.3 挖矿.矿池 1.3.1 挖矿原理与区块的产生比特币的挖矿和节点软件是基于对等网络.数字签名来发起和验证交易的.节点向网络广播交易,这些广播出来的交易需要经过矿工的验证,矿工们会用自己的工作证明结果来表达确认,确认后的交易会被打包到数据块中,数据块会串起来形成连续的数据块链.中本聪本人设计了第一版的比特币挖矿程序,这一程序随后被开发为广泛使用的第一代挖矿软件bitcoind,这一代软件在2009年到2010年期间都比较流行.每一个比特币的节点都会收集所有尚未确认的交易,并且会将其归集到一个

《区块链开发指南》一一1.5 合约应用案例

1.5 合约应用案例 1.4节的脚本系统,详细说明了脚本的运行原理,本节将描述在实际应用场景中如何使用脚本系统构建合约应用.1.5.1 合约应用原理 每个比特币交易都有一个或多个输入和输出,每个输入或输出都有一个小的纯函数与之相关联,称为脚本,脚本可包含简化形式交易的签名. 每个交易都有一个锁定时间,使得该交易处于特定状态并且可被新交易替换,直至锁定时间来临.预定时间可以是块索引或时间戳(这两个因素使用同一个内存项,小于5亿是块索引,大于5亿是时间戳).当一个交易的锁定时间到了,则称之为终结.

《区块链开发指南》一一第1章 区块链基础

第1章 区块链基础 区块链究竟是什么?狭义地说,区块链就是比特币的底层技术:不过,经过7年的发展,区块链已经不再"依附于"比特币,而是独立地发展成为了一种革命性的技术,比特币则是区块链最大.最成功的应用.从技术层面来看,区块链是一个基于共识机制.去中心化的公开数据库.共识机制是指在分布式系统中保证数据一致性的算法:去中心化是指参与区块链的所有节点都是权力对等的,没有高低之分,同时也指所有人都可以平等自由地参与区块链网络,唯一的限制就是个人自己的选择:公开数据库则意味着所有人都可以看到过

《区块链开发指南》一一1.2 区块和区块链

1.2 区块和区块链 比特币网络中,数据会以文件的形式被永久记录,我们称这些文件为区块.一个区块是一些或所有最新比特币交易的记录集,且未被其他先前的区块记录.可以将区块想象为一个城市记录者其记录本上单独的一页纸(对房地产产权的变更记录),或者是股票交易所的总账本.在绝大多数情况下,新区块会被加入到记录的最后(在比特币中的名称为区块链),一旦写上,就再也不能改变或删除.每个区块记录了它被创建之前发生的所有事件.1.2.1 区块结构一个区块的结构如表1-2所示. 每个区块都包括了一个被称为"魔法数&

《区块链开发指南》一一第2章 区块链进阶 2.1 外带数据

第2章 区块链进阶 2.1 外带数据 区块链的外带数据是指那些保存在区块链上但不进行货币交易的信息,比如需要永久保存的信息,前面提到过存在于区块链上的每一笔交易都有一个输入和输出,区块链的外带数据也是采用类似的方式来存储的.如果有在比特币上永久存储数据的需求,那么你目前有两种选择,即:"OP_RETURN"和"Multi-Signatures".OP_RETURN是指在每个交易的公钥脚本中嵌入OP_RETURN操作码,之后放置外带数据:Multi-Signature

《区块链开发指南》一一2.2 Counterparty

2.2 Counterparty 合约币Counterparty是以合约币协议运行的全套金融工具,合约币协议建立在比特币块链的基础之上,把比特币块链当成可信的时间戳服务和可信的信息发布证明. 目前合约币已经实现了众多的技术创新点,比如燃烧证明.合约.去中心化XCP与BTC交易所.赌约或期货.资产或股份发行.分红等.Counterparty是建立在比特币协议上的传输层,用于建立和使用去中心化的财务工具协议.简单来说,可以将XCP理解为很多"小的BTC"即XCP="小的BTC&q

《区块链开发指南》一一第3章 密码学基础 3.1 Hash函数

第3章 密码学基础 3.1 Hash函数 Hash函数是密码学的一个重要分支,它是一种将任意长度的输入变换为固定长度的输出且不可逆的单向密码体制.Hash函数在数字签名和消息完整性检测等方面有着广泛的应用.3.1.1 技术原理 Hash函数又称为哈希函数.散列函数.杂凑函数.它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程. Hash函数可以将满足要求的任意长度的输入进行转换,从而得到固定长度的输出.这个固定长度的输出称为原消息的散列值(Hash Value)或消