你去工行,转账给建行的朋友,填单输密码,完成第一步:支付。
但钱并没有到你朋友账上,此时工行开始第二步:结算——把收款人信息发送建行,把钱交给人民银行(人行)。
人行负责第三步:清算——左手收下工行的钱,右手把钱交给建行。最终,建行依照工行发来的收款人信息,把人行送来的钱塞进你朋友账户。
图1 转账资金的实际路径:支付、结算和清算
明明是件小事,为什么要麻烦三家单位、叠出一个倒三角?
因为效率。事实说明,用人民币满足全国支付需求,图1的倒三角效率最高。
人民币是人民银行挖出来的币,光挖就已很辛苦,如果还要管全国人民两两间的支付,一定积劳成疾。
所以,人行只做清算,支付这种小事就拜托商业银行。商业银行是人民银行的帮手,如果换成区块链世界的语言,可以说:商业银行是人民银行的侧链。
一、什么是侧链?
侧链指镶嵌在两条主链间的区块链,相当于一座桥,连通主链数据。广义侧链泛指跨链技术,可以在链和链之间交换信息和价值[1]
实际应用中的两条主链,常常一条是清算链,一条是应用链,而侧链架在中间 :
图2 侧链的功能排位
清算链类似人民银行,负责清算资金。最被公认的清算链是比特币,因为没有一个币像它那样被全世界黑客冲撞9年依然滴水不漏。
应用链承担应用功能,可以理解为购物或玩游戏的App,需要付款时,就拜托侧链与清算链沟通,快速完成收付。
可是,为什么不直接用比特币支付?因为效率,用比特币确认一笔交易短则一小时、多则几天,谁如果因为渴想用比特币买水,等币付到账,那人多半就不行了,所以这时有根侧链就能救命。
那侧链是如何连接清算链和应用链的呢?核心逻辑并不复杂:
1、将清算链的密钥存在侧链上
2、在侧链上建立快速支付通道
3、把清算链上的资金充值到应用链上
如果把图1的人民币清算系统上推一层,到我们熟悉的场景,就很容易理解侧链:
图3 支付宝是侧链
支付宝是架在商业银行和商户中间的侧链。银行卡密码相当于私钥,可以充钱进支付宝,进行快速支付。
上文所指都为广义侧链,它包含三种模式:公证人、狭义侧链、哈希锁定。
公证人指由第三方人或机构担任信任中介,属于中心化解决方案,一般用于私有链或联盟链;
狭义侧链指拥有主链所有功能、但不被主链所知的链。具体而言,是把主链的区块头写入侧链,侧链和主链使用同样的共识算法。比如,有种狭义侧链能连通比特币和以太坊网络,用比特币去跑以太坊上的智能合约。
哈希锁是指用哈希技术锁定资产,在无需信任中介的前提下完成交易,哈希锁最著名的案例,来自比特币闪电网络。
二、什么是比特币闪电网络?
比特币闪电网络(Bitcoin Lightning Network)由Poon和Dryja在2015年提出,它的思路特别简单:把交易踢到比特币区块链之外处理,相当于把比特币接上支付宝,建立链下快速支付通道。
“链下”指交易记录不在比特币区块显现,而是记在闪电网络上,但全程都能保证双方权益,具体如何实现呢?
如果你经常要付1个比特币给你朋友,每次都心疼手续费,那闪电网络就能帮到你:锁定10个币,“锁定”的意思是把币打进一个地址,而这个地址的私钥存在闪电网络上,需要用双方在闪电网络上的私钥才能打开。
图4 你和你朋友之间建立的支付通道
这样,你和你朋友之间就建立了一条通道,所有支付都像支付宝那样即时到账、并且免费。
你支付8次后,锁定的10个币中,2个仍属于你,8个归你朋友。同样,你朋友也可以付给你币,可以来回无数次,但10个币的总量始终不变。
交易可以热热闹闹,但在最终结清之前,比特币区块链上并不能查到任何一笔交易,“结清”的意思就是把账记到比特币主链上,但只记双方往来后的最终结果,记完账后,原来锁定的10个币各归其主,通道关闭。
同样的逻辑,可以通过第三方在陌生人之间搭建支付通道:
图5 使用闪电网络建立的第三方支付通道
A和C之间没有直连,但AC都和B有连接,于是,A就能通过B支付给C,可此时有个信任问题:如果A把币给B,B不给C该怎么办?
这时,A就需要一个随机数s来帮忙。
随机数s相当于密码,A把随机数s的哈希值H告诉B。B只凭H无法取到A的钱,所以只能在自己和C建立的通道里把钱给C,但是C也拿不到这个钱。
此时,A把随机数s告诉C,C哈希随机数s,若等于H,则取到B给C的钱。B的钱被C支取后,B也看到s,凭s取到A给B的钱。
用哈希锁接力信任,最终让三方了清。
如果闪电网络能跑起来,最可能变成B的是各大交易所,它们会演变成中转节点,一些人会锁定比特币,和交易所建立通道,能提升全网支付效率。
闪电网络今年3月悄悄上线,目前还在试验性打磨,麻省理工学院5月下旬在模拟环境中测试出闪电网络能达百万级吞吐量,并且能够实现更加复杂的智能合约。
但开发者和市场都很谨慎,目前还未铺开。作为广义侧链技术的一种,闪电网络不仅需要被人了解,更需要被时间了解。但在此之前,最需要的是澄清很多人对区块链的误解。
三、真的会一条链通吃全世界么?
很多人认为:比特币是第一代区块链应用,以太坊算第二代,EOS等属于第三代的萌芽尖。这种观点看似合理,但却暗含一个前提:未来有一条能通吃全世界的链。
不过这条提前未必成立。
因为太阳底下没有新鲜事,我们回溯历史,回顾区块链的前身TCP/IP协议,就能估算大概率的演化脉络。
TCP/IP协议是互联网的基座,我们第二季写过一篇专题(戳此复习),但核心逻辑用下图就能说清。
图6 TCP/IP协议模型
顶层的HTTP协议能让所有人看到五彩网页,它种在TCP之上。TCP协议保证数据传输无误,它种在IP协议之上。
IP协议负责找对到接收方,是当今互联网的底层。出人意料的是,IP协议极其简单,用5张纸就能写完所有技术细节。IP没有安全功能,没有加密协议,不支持大数据包,不能解析地址,也不管传输质量好坏,简单到简陋。
可IP协议为什么能在过去50年中,成为整个互联网不可替代的支点?
因为它足够简单,IP只负责找准点,其他问题一概不管。至于那些问题的解决方案,并不是通过完善IP协议本身完成,而是在IP之上叠加其他协议完成:UDP、TCP、HTTP、IPsec、QoS、MPLS、HTTPs等都在其列。
最终,互联网变成我们今天层层叠叠的协议组群。可问题是,为什么没有公司做一套完整的协议、解决所有问题?
不是没有试过,很多软硬件厂商都尝试用一套协议打天下的方案,其中包括:
几大通信业巨头组建的ATM协议(异步传输模型),技术高大上,从底层一路通吃到顶层,但现已绝迹。
IBM的SNA协议、微软的Netbeui协议、苹果的Appletalk协议,甚至国际标准化组织ISO的CLNS协议……都试图用全能方案摆平问题,但这些尸体都横在历史的血泊中。无数精英卖命,为什么拼不过一纸IP协议?
用技术口吻说,就是耦合性太低,“耦合性低”的意思是繁文缛节多,使用难度大,最终市场抛弃所有复杂方案,只留下IP协议一个活口。
在IP、TCP和HTTP的帮衬下,互联网已解决信息传递的准确性和多样性,还没有解决价值传输和不可篡改问题,于是往上再搭协议。
图7 区块链和互联网的关系
互联网的历史注定是一局无尽的积木游戏,规则是找出最朴素、但最能扛住时间磨洗的一块积木堆上去,暂时缺失的功能就留给更上层的积木解决。
于是,后50年发生的事,大概率会重演50年的逻辑。我们无法铁口直断必然如此,但可以推测一种可能:
首先,由市场选出一条清算链,放在区块链的底层,补足TCP/IP下不能传递价值的短板,在所有法币之外,比特币概率最高。接着,在清算链之上搭建应用链,解决不可篡改问题。最后,在清算链和应用链之间,用侧链缝合。
如果寄希望用一根链包圆所有功能,可能重演ATM、Appletalk等协议的悲剧。那些协议不是不好,而是为了通用,必然牺牲本该鲜明的核心能力。
核心能力,并不非被人设计出来,而是由历史筛选出来。
从这个角度来看,以太坊是一根源生逻辑有缺陷的链。因为它从一开始就希望通吃从清算层到应用层的所有功能。但是,论清算安全性,它不如比特币;论应用执行速度,也不如很多币,还要受制于手续费。
如果以太坊不能做出发币功能以外的长板,那么它的长线命运似乎已经写进历史的注脚,历史只愿意在每个功能层留一个活口,因为这样最有效。
区块链的演化路径只有一个:专业的链做专业的事,其他事让更专业的链去做。侧链作为管道,连接成果。
结语
侧链不只用于连接比特币,理论上能连接比特币之外的任何链,最终构建一张全球共用、必然可信的互联网,这也是区块链最大的价值。
纵向看,区块链未来会像互联网协议一样分层;横向看,应用层也会凝聚成一个个价值群落。纵横一体,即为生态。
生态可以万千,但底层逻辑永远不变:提高效率,这也是所有侧链的价值所在:通过代理信任提升商业世界的效率。
我们每个人都是世界的一根侧链,你不只享有你生命的代理权,而且享有世界某个重要角落的代理权。你不必精通所有专长,只需找准一块长板,不断强化它,把短板留给其他长板去补足。
参考文献:
1、Vitalic Buterin: Chain Interoperability
2、闪电网络官网文件:http://lightning.network/docs/
3、古土雷柏:https://www.zhihu.com/question/27256432/answer/309072431
[1] 目前“侧链”没有明确的定义,以至于有人用侧链白皮书的定义,推导出自家的沙发也是一条侧链。