导读
区块链技术蓬勃发展,以去中心化技术之名,大有变革整个在线数字世界的气势和雄心。区块链技术,尤其是公链(Layer1)领域,最著名的莫过于比特币,以太坊和EOS。这些公链各有特点,在上面已经构建了各种各样的应用,如区块链浏览器,钱包等基础工具,当然还包括各种各样的DApp。DApp运行在公链上会有各种各样的问题存在,Layer2技术的引入,有望部分解决这些问题。 目前Layer2 技术主要有两种,一种是状态通道技术,另一种是侧链技术。Photon属于状态通道技术。
随着比特币闪电网络的逐步应用,Layer2技术已经进入了大家的视野。本文将为大家解读Photon技术的特点,并与其他Layer2技术进行对比分析。通过对Photon的介绍与对比,让大家对Photon和Layer2 技术有个初步的了解。
Layer2技术背景
在介绍Layer2之前,我们先来考虑一下几个问题:(1)所有的计算都应该在Layer1中进行吗?(2)所有的数据都应该存储在Layer1上吗?(3)Layer1上能够完美的解决区块链技术的“不可能三角”(扩展性、去中心化和安全)吗?
大家仔细琢磨就会发现,受区块链扩展性的限制,以上三个问题对于Layer1来说都有很大的难度。那么,我们换个思路,如果采用状态通道或侧链这样的layer2的技术,能不能突破以上的性能瓶颈,使区块链对全球无数用户可用呢。
我们先重点了解一下状态通道技术,看看它是怎么解决这个问题的。
状态通道链下转账
状态通道是一种链下支付技术,基本思想就是两个用户(例如Alice和Bob)在链上创建一份合约,然后每人向这份合约中抵押一部分token作为押金。 合约规定这里面的押金只能两个人都同意才能从合约中取走。以贴近日常生活中的例子类比,相当于Alice和Bob找到银行(类比公链),两人一起开了一个联名账户(类比合约),这账户里有十万元钱,其中Alice和Bob各存了五万。 如果要使用这个账户里面的钱,必须两个人都签名同意。
假设Alice和Bob之间有生意往来,Alice要向Bob支付一万块钱,Alice就可以不用银行转账,直接写一个一万块的支票给Bob就可以了(类比链下转账)。 因为Bob知道Alice在这个联名账户里有五万块,也知道自己能够凭支票拿到这一万块,虽然Bob并没有真的到银行去取。这种交易过程避免了频繁通过银行的转账过程,只在最后结算时凭借手中的凭证取得联名账户中各自的份额即可,在效率和安全性上均可得到保证。
这里要强调的是状态通道只用于两两用户之间,当然也有Liquidity这样的扩展方案,但是主流的状态通道技术,无论是Lightning Network,RaidenNetwork还是Photon Network都是两两账户之间的。只有严格限制是两两账户之间才能最大限度保证安全。
从上述例子可以看出,状态通道将链上的部分计算及小额支付扩展到链下,极大的提升了公链的应用性能,降低了交易成本,并且依然可以保证交易的安全性,较好的实现了权威、安全和可用的统一。
接下来,我们简要描述一下侧链(子链)技术。
侧链(子链)是什么呢?侧链协议本质上是一种跨区块链解决方案,一种允许数字资产从一条区块链向另一条区块链安全转移并且可以转回的合并机制。通过这种解决方案,可以将数字资产在主链和侧链之间实现安全转移。与状态通道技术类似,侧链既可以承担相对复杂的操作(主链将一部分工作分担给侧链),也可以实现资产在不同区块链之间的价值互换。这里,我们以Plasma为例,来看侧链的运行过程。
侧链资产迁移
假设Alice想创建一个交易卡游戏,可以让用户互相对战(例如:“炉石传说”),这种复杂的操作在主链上执行起来非常昂贵,所以Alice决定使用Plasma。
Alice首先在以太坊主链上创建了一套智能合约,作为Plasma侧链(子链)的“根”(记录侧链状态,并且作为一种“桥梁” 让用户可以在以太坊和Plasma之间转移资产)。然后,创建Plasma侧链,将游戏逻辑和规则的智能合约部署在侧链上。
当Bob和Charile想玩游戏时,他们可以向主链合约内存钱,通过资产兑换将主链币换成侧链币(资产迁移到侧链上),后续游戏时只需要与侧链(子链)交互。Bob和Charile开始游戏,经过多轮对决后,Bob赢得Charile1000侧链币。此时,他可以选择使用侧链币在侧链上进行交易或者其他业务活动,也可以将侧链币兑换回主链币(资产迁移回主链上)。因为侧链上只有非常少的节点处理交易,所以交易费用会很低并且操作会很快。在安全方面,侧链的安全由智能合约以及相应的防欺诈机制组成,有可靠的保证,可以支持更广泛的应用场景。
侧链技术相对复杂程度较高,还不够成熟,目前layer2技术主要以状态通道为主,因此本文重点介绍状态通道相关技术。
Photon概述
现在让我们一起来看看光子网络,也就是photon。 photon相对于Spectrum就如同闪电网络相对于比特币,雷电网络相对于以太坊。理论上来说我们的photon也是可以运行在以太坊上的,因为从原理上来说都是状态通道技术的一种。首先我们从技术框架来看一下photon的组成。Photon 的设计思路是采用分层结构实现链下的小额支付主要功能。技术框架图如下:
Photon技术框架图
按照自下而上的顺序,Photon架构分为底层、通信层、管理层、服务层和应用层五层结构。
底层:基于Spectrum公链及公链上的智能合约,保证Photon链上交易的安全性。
通信层:包括合约事件、数据库以及节点通信模块,目前photon通信主要采用UDP和XMPP方式(支持与PFS交互查询路由及收费),其中对于无网状态下的节点发现,专门设计了mDNS配合UDP进行局域网无网通信。
管理层:包括通道管理、状态管理、收费管理、路由管理,主要负责通道功能、状态变化、费率设定及收益、路由查询等。
服务层: 负责将用户所有请求进行处理并分发给下层,支持与MS交互进行委托代理。
应用层:包括Mobile应用和HTTP应用,支持用户根据需求进行定制开发。
基于以上框架,Photon很好的实现了去信任的点对点链下即时支付。此外,相对普通的layer2状态通道技术来说,Photon在功能性、安全性和适用性方面有着自己特有的设计。
在合约设计方面,在保证基本的通道创建、关闭及结算功能之外,还有一些明显的优化用于提高效率和安全。主要包括:合作关闭通道、不关闭通道取现、惩罚机制、HTLR机制、支持ERC223、支付主币和token混合抵押等。
第一个优化是合作关闭通道,普通的关闭通道操作从closed到settled要等一段时间(一般设计是1个多小时),主要是留给通道的另一方提交证据用,可以看出这个时间实际上是可以节省的,如果通道双方链下达成一致,可以直接提交双方签名的通道押金分配方案,这就是我们说的合作关闭通道。
第二个优化是不关闭通道取现,和合作关闭通道的思路相似,通道双方在链下达成资金分配方案。通道双方协商各自在通道内的份额,例如:alice和bob有通道,分别抵押了50个token,如果bob想取出20token,则份额变成Alice(50token),Bob(30token),只要双方都认可这个分配方案,取现操作即可进行,并且原有的通道继续可以使用。
第三个优化是惩罚机制,普通的转账交易如果路由不通则需要相互锁定token以保证交易安全性,并且锁定时间较长。引入惩罚机制后,可以让失败的转账交易(无可用路由)能够快速失败。
第四个优化是HTLR机制。通常链接支付使用的是HTLC机制,中间节点使用哈希时间锁进行中转转账,有可能存在不合作的节点拖延导致交易周期过长。Photon采用HTLR机制,不合作情况下节点可以通过合约注册secret,减少了最坏情况下的等待时间并能够保证自己转账的资金安全。
第五个优化是支持ERC223,现在主流的token标准是ERC20,但ERC223标准也越来越得到认可,Photon支持ERC223标准,创建通道及链下支付时可以适用更加广泛的token类型,应用场景更加多元。
第六个优化是支付主币和token混合抵押。目前,许多状态通道技术支持的token类型有限,要么只支持主币,要么只支持token,Photon打通了主币和token之间的限制,同时支持抵押主币和抵押token进行链下支付。同时,Photon还支持tokenswap,在协商的基础上,通过链下互换,就可以实现主币与token之间的兑换,极大节省交易成本和时间。
在安全保护方面,Photon使用签名认证及智能合约(第三方审核通过)保证用户利益。除此之外,在系统的使用过程中,如果出现意外情况,我们也进行了特定的安全保护措施设计。主要表现在:代码实现安全设计、通道安全设计以及资金安全设计。
第一个保护是代码实现安全,目前photon的代码可以做到任意时刻发生节点崩溃,只要尽快启动起来,是不会丢钱的;此外,代码中特意加入了一些崩溃触发条件,当系统处于不稳定状态时,使系统主动崩溃重启后恢复正常功能,提高photon的安全稳定性。
第二个保护是通道安全。尽可能保证通道的有效,不能因为一点意外就要关闭通道,进行链上结算,这样不仅效率低,成本也高;photon在通道实现中采用状态机设计,能够保证节点崩溃重启后,通道状态依旧存在,通道可以继续使用。
第三个保护是资金安全。就算是发生了节点意外崩溃,大部分情况下的交易都是可以继续的,只有少部分会失败(交易发起方密码还没来得及发出去就发生崩溃的情况),通道双方的状态在崩溃恢复后会保持一致,不会有资金的损失。
在适用特色方面,Photon除了支持常规的PC平台之外,还支持移动端平台,并且支持无网直接支付、支持跨链、支持第三方监控服务和路由收费,用户可以在不同的场景下选择适合的版本及功能使用。
第一个特色是全平台支持,Photon不仅可以在PC平台如:windows,linux,mac等系统上使用,还支持移动端安卓和ios系统。为提升移动端用户体验,Photon特别对移动端应用进行了优化处理,设计了专门的mobile接口,减少数据存储并改善消息反馈形式,适配多种型号手机设备的使用。
第二个特色是无网直接支付。Photon支持mesh网络,在Meshbox组网的环境下,即使短时间内没有连接互联网上的公链,photon也可以安全的进行无网直接通道链下支付,后续在安全性保证的基础上会进一步扩展到无网间接通道链下支付。
第三个特色是支持跨链。Photon和其他layer2技术可以分别在不同的公链上建立状态通道网络,使用HTLC机制,目前已实现光谱与以太坊跨链、光谱与比特币(借助闪电网络)跨链原子互换。
第四个特色是支持第三方监控服务。对于手机节点,可能经常保持节点离线状态。为保证通道资金的安全,拟离线的节点可以委托第三方监控通道状态,如果通道对方关闭通道,第三方服务可以帮助委托方提交证据,保证委托方利益的安全。
第五个特色是支持路由收费。Photon节点使用PFS计算从发起节点到目标节点的可用路由,路由中转方可以向PFS设置收费费率,PFS根据各节点上报的费率计算最低费用的路径。发起方使用查询的指定路由进行间接转账,中间节点收取中转转账通道费用,获得额外收益。
Photon的功能优化持续进行中,除了小额支付,后续将支持更多的DApp应用,如棋牌游戏、物联网应用、去中心化交易所等,photon将与其他layer2技术一起为区块链的普及应用增添生机和活力。
其他主流状态通道技术
除了本文主角Photon之外,状态通道技术还有多个代表性的项目,最知名的包括Lightning Network、Raiden Network、Liquidity Network 、Celer Network。下面简要对上述四个项目进行描述。
Lightning Network(闪电网络)
闪电网络的思想来自于一篇经典论文,“The Bitcoin Lightning Network:Scalable Off-Chain Instant Payments”,针对比特币区块链延展性问题(扩展性差、交易费用高、交易速度延迟)等进行了讨论,提出了改进的方案,其理念是,在区块链之外开通一条“绿色通道”,将大量高频的、小额的交易在区块链外进行。交易双方可在这条“绿色通道”上进行多次、高频、双向地、点对点的,可实现瞬间确认的微支付;而且双方若无直接的点对点支付通道,只要闪电网络中存在一条连通双方的、由多个支付通道构成的支付路径,那么也可以利用这条支付路径实现可靠的交易。闪电网络创造性设计了RSMC(Recoverable Sequence Maturity Contract)和HTLC(Hashed Timelock Contract)。前者解决了链下交易的确认问题,后者解决了支付通道链接支付的问题。
闪电网络链接支付
正是由于闪电网络的提出和实现,从理论上保证了状态通道技术的安全性和可行性,才出现了越来越多的状态通道技术实现方案。因此,说闪电网络是使状态通道技术被广为人知的先行者毫不为过。
闪电网络的主要功能包括:创建通道、关闭通道(含协商关闭通道)、通道状态管理、路由查找及转发支付、洋葱加密支付、更新收费方案、自动通道管理等。截止2019年2 月10 日,1ML 最新统计数据显示,闪电网络节点数量为6088 个,较上月增加14.61%;通道数量2.466 万个,较上月增加27.3%;网络容量达到657 个BTC,较上月增加15%。闪电网络的实现和应用,意味着比特币可能真正的成为被广泛使用的支付货币,而不再是只可远观的“躺”在交易所或钱包中的一个数字。此外,为了更方便用户使用,闪电网络预计在2019年引入部分新设计功能(正在进行中),主要包括:潜交换(Submarine Swaps)、双出资通道(Dual Funded Channels)、原子化多路径支付(Atomic Multi-Path Payments (AMP))、拼接(Splicing)、Wumbology通道、斯芬克斯发送(Sphinx-send)、eltoo及通道工厂、瞭望台(Watchtowers)等。大量的Lapp(基于闪电网络的应用程序) 已被开发和部署,这其中包括金融和广告领域的应用,也包括游戏和媒体等领域。不过,更多的LApp 还“在路上”。闪电网络进展和应用得到了更多人的认可,也给了众多layer2项目持续发展的动力。
Raiden Network(雷电网络)
以太坊的运营状况略好于比特币,但同样受扩容问题的困扰,以太坊有几个不同的解决方案,但其中一个值得注意的是Raiden Network。
Raiden双向支付通道
Raiden的概念与闪电网络非常相似:它在主区块链之外提供了额外的一层,用户可以创建双向通道来进行即时的、几乎免费和安全的交易。和闪电网络一样,这个方案能够提高交易速度,同时降低成本。Raiden和闪电网络的一个主要区别是Raiden基于以太坊网络,能与ERC20兼容,这意味着以太坊中发布的每一种代币(现在有数百种)都将与Raiden兼容,而在闪电网络中目前仅可使用比特币和莱特币。
Raiden(规范)的主要功能包括: 打开通道、向通道存钱、关闭通道、结算通道、通道解锁、链下支付、密码注册、通道监控、路由查找等,仍在完善的功能有通道取钱、合作关闭通道等。2018年12月21日,Raiden Network的第一个版本Red Eyes已经被部署到以太坊主网。Red Eyes的几个主要功能在于“支付通道的开设、充值、关闭以及结算”和“单跳及多跳转账”。其协议还进行了升级以应对特殊情况、节约gas的EDCC(即智能合约),另外还有经过重新设计的网页端等等。此外,Raiden还部署了多个安全措施保护用户,Red Eyes严格意义上来说依然是测试产品,该网络的安全性并未经过第三方审查。该版本将充值金额限制在每个通道0.15 ETH;所有通道的充值金额不得高于250 ETH;只有一个可用的代币网络;而且还设置了一个反对开关,允许在出现重大安全问题的情况下关闭该网络。
Liquidity Network
虽然闪电网络和雷电网络可以实现链下的快速支付,但存在一些问题,包括:需要向通道抵押token进行锁定、通道不平衡(会导致中心化的趋势和风险)、路由复杂等,Liquidity Network从这几个方向入手,试图找到改进方案。首先,Liquidity抛弃了双人通道的概念,直接引入了多人间链下交易的枢纽(N-party Hub),而且多个枢纽间可以互联组成整个网络。
Liquidity Network Hub
其中,枢纽不再是个封闭的两人世界,而像一个开放的信用合作社,任何人都可以加入某个特定的枢纽。新用户加入枢纽被设计成了链下行为,跳过了链上创建交易双方多重签名地址的成本和花销(但是充值和取现依旧是链上行为),存入枢纽内的资金可被视作接受统一管理。此外,整个网络内需要锁定的资金可以只是最近十分钟内的平均交易额度,而不是所有交易金额加起来的总和。例如,假设100个用户之间会发生各式各样的支付交易,月平均交易量达100BTC:对于闪电网络来说,那么参与其中的每个人都要押入100BTC,总共需要将一万个BTC锁定到闪电网络中。同样情况下,对Liquidity来说,将时间缩短到十分钟,平均交易量也就缩小了4464倍,于是所需要的抵押总额也就缩小了。第三,枢纽减少了路由的压力,枢纽之间可以互联。如果同一个用户同时加入了连接成环的多个枢纽,那么抵押进这些枢纽的金额可以在彼此之间动态调剂。最后,Liquidity也支持链下原子性交换,可以实现去中心化交易所的构想。
Liquidity Network主要功能包括:approveAndDeposit(同意并存款)、buySLA(购买SLA)、存款(链上交易,向hub存款)、finalizeSwap(结束交换)、getNocustBalance(当前NOCUST余额)、getOnChainBalance(当前链上余额)、isRecovery(hub是否处于recovery模式下)、issueDeliveryChallenge(产生链上交易发起一个传递挑战)、issueStateUpdateChallenge(产生一个链上交易发起一个状态更新挑战)、recoverFunds(产生链上交易恢复资金)、registerAddress(向hub注册token地址)、sendSwap(发送交换)、sendTransaction(发送交易)、withdrawalConfirmation(链上交易取钱确认)、withdrawalRequest(链上交易发起取钱请求)等。
Liquidity主要优点在于两点:更快的网络服务、更低的押金和押金成本。但由于中间通过Hub进行交易,有中心化倾向,并且,交易需要Hub的签名,存在一定程度对Hub的信任依赖,目前项目正朝去中心化交易所应用发展,也受到众多关注。
Celer Network
与上述状态通道方案设计略有不同,Celer提出了一个原则性的链外加密经济学设计,构建了一个分层的技术框架。
Celer Network分层架构
主要包括以下部件构造:
cChannel:广义状态通道和侧链套件。在网络通道上支持通用依赖DAG的快速状态转换。灵活的结构最大限度地提高流动性利用率。
cRoute:具有透明通道平衡的可证明最佳状态(例如,小额支付)路由。 与最先进的解决方案相比,吞吐量提高了15倍。
cOS:支持离线功能的应用程序的开发框架。提供通用的设计模式,并处理脱链状态的操作,存储,跟踪和非链状态的争议。
cApps:在Celer Network上运行应用程序生态系统。通过区块链系统保证信任,隐私或权力下放,从而扩展到每秒数十亿次交易。
在Celer Network中,状态通道与侧链组合构建广义状态通道支持复杂的高性能离线dApp,例如游戏,在线拍卖,保险,市场预测和去中心化交易等。主要特性包括:广义链下状态传输、灵活和高效的价值传输、纯链下合约。Celer引入了一套名为cEconomy的加密经济机制,通过Celer Network的协议token(CELR)和三个紧密耦合的组件(流动性承诺证明/流动性支持拍卖/状态守护网络)来提供网络效应、稳定的流动性和高可用性,以及不可或缺的价值。
Celer cChannel主要功能包括:链下地址转换器(OAT)、散列时间锁定注册表(HTLR)、合作结算、单交易通道打开、直接最终状态索赔、动态存取款、布尔条件组、存款分配条件组。此外,cChannel还有一个侧链辅助替代状态通道,可以使接收方不需要链上交易(接收者可以在侧链辅助的通道上兑换他们的资金,而不用执行任何的侧链存款操作)也不用在线(状态守护网络帮助监控)。
Celer的DAPP CelerX平台已经可以进行转账支付以及链下的小游戏功能,目前Gomoku(五子棋)游戏已经上线并进行用户体验(输赢使用cChannel链下支付stake),Celer希望能利用layer2技术并通过这类移动应用让以太坊更快,使区块链项目真正落地。
以上是主要的状态通道技术的简要介绍,限于篇幅没有对原理和具体功能进行详细说明,感兴趣的读者可以去官网关注各个项目完整介绍及最新进展,我们也希望所有的状态通道技术能够取得较好的突破,加快促进区块链的应用落地。
侧链(子链)技术
侧链(子链)技术由于复杂度较高,目前成熟的技术方案不多,本文仅对以太坊最知名的Plasma进行重点描述。
Plasma 是一种协议规范,主要思想来自Vitalik Buterin和Joseph Poon 发表的《Plasma:自主智能合约》一文,它依靠以太坊底层来实现它的安全性。Plasma允许创建附加在以太坊主链上的侧(子)链,这些侧(子)链反过来可以产生他们自己的侧(子)链,他们的侧(子)链也可以产生他们侧(子)链,等等。
Plasma框架
因此,我们可以在侧(子)链级别执行许多复杂的操作(把一部分工作分担给侧链),运行拥有数千名用户的整个应用程序(侧链运行应用程序把结果给主链),并且只需与以太坊主链进行尽可能少的交互。Plasma 侧(子)链可以更快地操作,且交易费用更低,因为它的操作不需要在整个以太坊区块链存留副本。
Plasma框架包括:Plasma MVP、Plasma Cash、Plasma Debit、Plasma Prime等。限于篇幅,这里描述PlasmaMVP相关功能。
Plasma MVP
Plasma MVP
Plasma MVP是一种极简的基于UTXO的plasma链设计。在每个Plasma链上会有一个operator,operator负责生产块。你要进入这个Plasma链需要先在主链上的智能合约进行存款。然后Plasma链每产生一个块,必须跟主链作回应(Merkle root),这样Plasma链这边的块才算被确认。每个Plasma链是独立的,不同侧链之间资产转移必须先转回主链。
Plasma MVP主要功能包括:Deposits(存款)、Transaction(交易)、Withdrawal(取款)、Starting an Exit(开始退出)、Challenging an Exit(挑战退出)、Exit Priority(退出优先)、Confirmation Signatures(确认签名)等。
目前已经有一些机构和公司实现了Plasma MVP,包括:FourthState Lab、Omisego和Kyokan等,但实现的语言和细节有所不同。其中OmiseGO项目已经实现了Plasma智能合约在主链的部署、子链的资金初始化、子链转账、子链用户退出、Operator提交错误区块证明时的退出等功能,进一步功能正在完善中。
Plasma技术是一个非常有前景的layer2技术,未来的成功实施会支持大规模去中心化应用的持续运行,将与状态通道技术一起构建可扩展、安全可靠以及更便捷的二层区块链加密经济生态。
本文最后,对上述介绍的Photon与主要layer2技术的性能和特点作一简要对比,便于广大爱好者选择适合的layer2技术进行DAPP开发和应用。
主要状态通道技术对比分析: