你去工行,转账给建行的朋友,填单输密码,完成第一步:支付。
但钱并没有到你朋友账上,此时工行开始第二步:结算——把收款人信息发送建行,把钱交给人民银行(人行)。
人行负责第三步:清算——左手收下工行的钱,右手把钱交给建行。最终,建行依照工行发来的收款人信息,把人行送来的钱塞进你朋友账户。
图1 转账资金的实际路径:支付、结算和清算
明明是件小事,为什么要麻烦三家单位、叠出一个倒三角?
因为效率。事实说明,用人民币满足全国支付需求,图1的倒三角效率最高。
人民币是人民银行挖出来的币,光挖就已很辛苦,如果还要管全国人民两两间的支付,一定积劳成疾。
所以,人行只做清算,支付这种小事就拜托商业银行。商业银行是人民银行的帮手,如果换成区块链世界的语言,可以说:商业银行是人民银行的侧链。
一、什么是侧链?
侧链指镶嵌在两条主链间的区块链,相当于一座桥,连通主链数据。广义侧链泛指跨链技术,可以在链和链之间交换信息和价值。
实际应用中的两条主链,常常一条是清算链,一条是应用链,而侧链架在中间 :
图2 侧链的功能排位
清算链类似人民银行,负责清算资金。最被公认的清算链是比特币,因为没有一个币像它那样被全世界黑客冲撞9年依然滴水不漏。
应用链承担应用功能,可以理解为购物或玩游戏的App,需要付款时,就拜托侧链与清算链沟通,快速完成收付。
可是,为什么不直接用比特币支付?因为效率,用比特币确认一笔交易短则一小时、多则几天,谁如果因为渴想用比特币买水,等币付到账,那人多半就不行了,所以这时有根侧链就能救命。
那侧链是如何连接清算链和应用链的呢?核心逻辑并不复杂:
1、将清算链的密钥存在侧链上
2、在侧链上建立快速支付通道
3、把清算链上的资金充值到应用链上
如果把图1的人民币清算系统上推一层,到我们熟悉的场景,就很容易理解侧链:
图3 支付宝是侧链
支付宝是架在商业银行和商户中间的侧链。银行卡密码相当于私钥,可以充钱进支付宝,进行快速支付。
上文所指都为广义侧链,它包含三种模式:公证人、狭义侧链、哈希锁定。
公证人指由第三方人或机构担任信任中介,属于中心化解决方案,一般用于私有链或联盟链;
狭义侧链指拥有主链所有功能、但不被主链所知的链。具体而言,是把主链的区块头写入侧链,侧链和主链使用同样的共识算法。比如,有种狭义侧链能连通比特币和以太坊网络,用比特币去跑以太坊上的智能合约。
哈希锁是指用哈希技术锁定资产,在无需信任中介的前提下完成交易,哈希锁最著名的案例,来自比特币闪电网络。
二、什么是比特币闪电网络?
比特币闪电网络(Bitcoin Lightning Network)由Poon和Dryja在2015年提出,它的思路特别简单:把交易踢到比特币区块链之外处理,相当于把比特币接上支付宝,建立链下快速支付通道。
“链下”指交易记录不在比特币区块显现,而是记在闪电网络上,但全程都能保证双方权益,具体如何实现呢?
如果你经常要付1个比特币给你朋友,每次都心疼手续费,那闪电网络就能帮到你:锁定10个币,“锁定”的意思是把币打进一个地址,而这个地址的私钥存在闪电网络上,需要用双方在闪电网络上的私钥才能打开。
图4 你和你朋友之间建立的支付通道
这样,你和你朋友之间就建立了一条通道,所有支付都像支付宝那样即时到账、并且免费。
你支付8次后,锁定的10个币中,2个仍属于你,8个归你朋友。同样,你朋友也可以付给你币,可以来回无数次,但10个币的总量始终不变。