且看大牛十分钟讲清楚区块链侧链技术_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 且看大牛十分钟讲清楚区块链侧链技术

且看大牛十分钟讲清楚区块链侧链技术

 2018/4/10 0:30:38  高级架构师  程序员俱乐部  我要评论(0)
  • 摘要:最近,区块链技术引起了广泛关注。虽然区块链技术目前正在快速发展,但是传统区块链技术要落地到商业应用,特别是金融应用,仍然存在很多问题需要解决,如交易性能、隐私保护等。解决这些问题的一种做法是重新开发新的区块链,但是这种做法会造成大量重复性工作,并且需要不断的发行新的数字资产。那么是否存在在不影响原有区块链工作的基础上,依托于原有区块链进行技术升级的解决方案,侧链就是在这种需求背景下被提出的。本文首先介绍了侧链的基本概念,接着分析了侧链的产生背景与工作原理,最后对目前主要存在的侧链进行了介绍
  • 标签:技术

最近,区块链技术引起了广泛关注。虽然区块链技术目前正在快速发展,但是传统区块链技术要落地到商业应用,特别是金融应用,仍然存在很多问题需要解决,如交易性能、隐私保护等。解决这些问题的一种做法是重新开发新的区块链,但是这种做法会造成大量重复性工作,并且需要不断的发行新的数字资产。那么是否存在在不影响原有区块链工作的基础上,依托于原有区块链进行技术升级的解决方案,侧链就是在这种需求背景下被提出的。本文首先介绍了侧链的基本概念,接着分析了侧链的产生背景与工作原理,最后对目前主要存在的侧链进行了介绍。

01—基础概念

侧链协议本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。其中第一个区块链通常被称为主区块链或者主链,每二个区块链则被称为侧链。最初,主链通常指的是比特币区块链,而现在主链可以是任何区块链。侧链协议被设想为一种允许数字资产在主链与侧链之间进行转移的方式,这种技术为开发区块链技术的新型应用和实验打开了一扇大门。

02—产生背景

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

2014年,这时已经出现了许多具有新功能的区块链,并产生了各种竞争币,如莱特币、狗狗币等。这时,比特币的核心开发团队担心这些竞争币的产生会稀释比特币的价值。他们认为,应该把比特币作为一种储备货币,并将新功能添加到侧链上。这样如果用户想使用其他的新的区块链功能,就不需要购买其他代币。为了将侧链由概念转化成现实,Adam Back、Matt Corallo等比特币核心开发者共同发起成立了Blockstream公司,并在同年十月,发布了白皮书《Enabling Blockchain Innovations with Pegged Sidechains》,首次明确提出了侧链的概念及其协议实现方案。

通过侧链,可以在主链的基础上,进行交易隐私保护技术、智能合约等新功能的添加,这样可以让用户访问大量的新型服务,并且对现有主链的工作并不造成影响。另外,侧链也提供了一种更安全的协议升级方式,当侧链发生灾难性的问题时,主链依然安然无恙。所以文章最后面会提供一个程序员学习交流的地方。

03—实现方案

侧链实现的技术基础是双向锚定(Two-way Peg),通过双向锚定技术,可以实现暂时的将数字资产在主链中锁定,同时将等价的数字资产在侧链中释放,同样当等价的数字资产在侧链中被锁定的时候,主链的数字资产也可以被释放。双向锚定实现的最大难点是协议改造需兼容现有主链,也就是不能对现有主链的工作造成影响,其具体实现方式可以分为以下几类:

(一)单一托管模式

最简单的实现主链与侧链双向锚定的方法就是通过将数字资产发送到一个主链单一托管方(类似于交易所),当单一托管方收到相关信息后,就在侧链上激活相应数字资产。这个解决方案的最大问题是过于中心化。图1给出了以比特币为主链的单一托管模式的工作原理示意图:

(二)联盟模式

联盟模式是使用公证人联盟来取代单一的保管方,利用公证人联盟的多重签名对侧链的数字资产流动进行确认。在这种模式中,如果要想获取主链上冻结的数字资产就需要突破更多的机构,但是侧链安全仍然取决于公证人联盟的诚实度。图2给出了以比特币为主链的联盟模式的工作示意图:

单一托管模式与联盟模式的最大优点是它们不需要对现有的比特币协议进行任何的改变。

(三)SPV模式

SPV(Simplified Payment Verification)模式是最初的侧链白皮书《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化双向锚定技术最初设想。SPV是一种用于证明交易存在的方法,通过少量数据就可以验证某个特定区块中交易是否存在。在SPV模式中,用户在主链上将数字资产发送到主链的一个特殊的地址,这样做会锁定主链的数字资产,该输出仍然会被锁定在可能的竞争期间内,以确认相应的交易已经完成,随后会创建一个SPV证明并发送到侧链上。此刻,一个对应的带有SPV证明的交易会出现在侧链上,同时验证主链上的数字资产已经被锁住,然后就可以在侧链上打开具有相同价值的另一种数字资产。这种数字资产的使用和改变在稍后会被送回主链。当这种数字资产返回到主链上时,该过程会进行重复。它们被发送到侧链上锁定的输出中,在一定的等待时间后,就可以创建一个SPV证明,来将其发送回主区块链上,以解锁主链上的数字资产。SPV模式存在的问题是需要对主链进行软分叉。图3给出了以比特币主链的SPV模式的工作流程示意图:

(四)驱动链模式

驱动链概念是由Bitcoin Hivemind创始人Paul Sztorc提出的。在驱动链中,矿工作为‘算法代理监护人’,对侧链当前的状态进行检测。换句话说,矿工本质上就是资金托管方,驱动链将被锁定数字资产的监管权发放到数字资产矿工手上,并且允许矿工们投票何时解锁数字资产和将解锁的数字资产发送到何处。矿工观察侧链的状态,当他们收到来自侧链的要求时,他们会执行协调协议以确保他们对要求的真实性达成一致。诚实矿工在驱动链中的参与程度越高,整体系统安全性也就越大。如同SPV侧链一样,驱动链也需要对主链进行软分叉。图4给出了以比特币为主链的驱动链模式的工作流程示意图:

(五)混合模式

上述所有的模式都是对称的,而混合模式则是将上述获得双向锚定的方法进行有效的结合的模式。由于主链与侧链在实现机制存在本质的不同,所以对称的双向锚定模型可能是不够完善的。混合模式是在主链和侧链使用不同的解锁方法,例如在侧链上使用SPV模式,而在主链网络上则使用驱动链模式。同样,混合模式也需要对主链进行软分叉。

04—典型范例

目前,比较著名的侧链包括基于比特币网络的侧链BTC Relay、Rootstock的Liquid,以及非比特币的侧链如Lisk和国内的Asch等。

BTC Relay是由ConsenSys的推出的基于以太坊区块链的智能合约的侧链解决方案。BTC Relay把以太坊网络与比特币网络以一种安全去中心化的方式连接起来。BTC Relay通过使用以太坊的智能合约功能允许用户在以太坊区块链上验证比特币交易。以太坊DApp开发者可以从智能合约向BTC Relay进行API调用来验证比特币网络活动。

Liquid是Blockstream的开源侧链项目,使用了比特币双向锚定技术,Liquid目的是实现使得比特币可以在主链和侧链中互转,旨在提高隐私性、降低成本、加速交易所和经纪商之间的价值转移及结算流程。

Lisk是一个致力于为JavaScript开发者提供创建分布式应用程序的区块链平台,由德国的Max Kordek和Oliver Beddows于2016年初成立。它把每一个分布式应用程序都会在其自己且独一无二的区块链,也就是侧链上运行,这种封装使得主要的Lisk的主网高效,迅速和精简

Asch是国内推出的一个基于侧链技术的去中心化应用平台,由单青峰于2016年初成立。Asch平台提供的服务包括一个主链和一套应用软件开发工具包。Asch的主链主要负责构建基础设施、应用间的数据共享以及资产路由,应用软件开发工具包内置了侧链协议,主要负责构建具体的应用,通过侧链协议可以与主链进行资产互通。

05—总结

侧链是以融合的方式实现加密货币金融生态的目标,而不是像其它数字资产一样排斥现有的系统。侧链技术进一步扩展了区块链技术的应用范围和创新空间,使传统区块链可以支持多种资产类型,以及小微支付、智能合约、安全处理机制、财产注册等,并可以增强区块链的隐私保护。利用侧链,我们可以轻松的建立各种智能化的应用如金融合约,股票、期货、衍生品等。

希望这篇文章可以帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以小编整理了一些资料在群:433540541。相信对于已经工作和遇到技术瓶颈或者写博客码友,这份资料一定都有你需要的内容。

?
上一篇: ThinkPHP分类数据的分页显示问题 下一篇: 没有下一篇了!
发表评论
用户名: 匿名