Bytom CTO朗豫:区块链商用化之路——侧链扩展
8月18-19日,BCCon全球区块链生态技术大会2018在北京举办。会上,Bytom CTO朗豫带来《区块链商用化之路——侧链扩展》的主题演讲。以下为内容精编,由巴比特整理。
今天我主要讲区块链商用化的一个方向——侧链扩展。分为五点内容,一是为什么区块链没能在传统公司中大规模使用,它存在着怎样的瓶颈?二是在这样的背景下,侧链技术作为解决方案之一存在的价值;三是介绍当前普遍采用的方案和业内的探索;四是讲解比原链在做资产上链时,如何通过侧链满足客户的需求?五是展望未来技术可能的发展方向。
一、区块链大规模商用瓶颈
目前主流的区块链项目,包括比特币、以太坊等各种各样的公链在商业应用方面存在较大瓶颈。比如在以太坊上运行的游戏,以太猫、Fomo 3D等都因拥堵而体验不佳。因而我们可以看到,区块链商用的瓶颈之一是产品体验差、使用成本高。
产品体验差、使用成本高
我们知道BTC和BCH的争执就是源于交易成本过高、确认时间长,矿工和开发者在这一件事上无法达成一致,最终导致了分裂。而 POW机制之所以难以改进这一问题,是因为在无边界的共识条件下,工作量证明机制需要一定的时间收敛。 以太坊虽然是15秒的时间,但实际是牺牲了一定的数据存储空间。
因而就有人问, 可不可以采用DPOS, PBFT共识算法呢? 在这种情况下实际都 存在代理人风险 ,比如EOS存在仲裁委员会可以判断你是不是非法使用者,然后冻结你的账户。另外它还存在 扩展性差 的问题,DPOS的共识节点是有限的,它至今还没有突破21个节点,有人提出了100个节点,但这对于网络通信的开销是呈指数增长的,必然导致系统不稳定。另外假如节点都布置在阿里云和AWS上,那么云节点出问题时,是不是所有的代理节点都会出问题,这也是我们需要考虑的问题。
另外一个解决方式是 采用零确认,同时加入保险机制 ,等于引入了外部协商机制。但它也存在担保方的 双花攻击风险 和 交易通道狭窄 的问题。如果只是小额交易,比如买杯咖啡,或许可以采用零确认,但若是大额交易,用户未必愿意零确认,中间的仲裁方可能也不愿意做这样的担保。
除上述所说,区块链商用的另一个瓶颈是数据的风险。
区块链数据风险
首先, 数据膨胀导致存储成本按用户数同比提升,不可持续。 因为全节点记账,意味着每一个用户都要存储全部的数据,如果用户拓展1千倍、1万倍,它的存储成本会非常高。
其次, 数据隐私存在暴露风险,全量私密数据链上存储无法取得安全。 为什么大机构不愿意使用公链传递数据呢?因为它有很多私密数据,或是不愿意公开,或是出于合规性要求不能够公开。另外,金融资产如股票、证券的上链存在安全方面的担忧,如何解决数据可能被篡改或重置的问题, 目前很难放心上链。
那么在这种情况下, 我们需要分层机制,核心数据加密上链,非核心数据存储于其他地方。 因此可以看到侧链是相对一种比较好的机制。
二、侧链(Sidechain)技术的价值
什么是侧链?
侧链是通过双向peg (楔入)将不同的区块链进行“连接”,使得多方价值可以在不同协议上进行交易和流转的技术。什么叫双向楔入呢?其实就是主链能感知侧链的行为,侧链同时也能感知主链的行为。
在这里需要注意,“连接”指链上协议的交互,而不代表系统间的通信。 什么意思呢?比如运行一个交易,需要先请求某一节点的数据,这种情况下更多的是进程之间的通信,是中心化的网关,而不是协议上的通信,这是我们容易产生的一个误区。
那么侧链存在什么缺点呢? 首先是 更多复杂性 ,因为主链和侧链异构的环境都会带来新的不可知的状态,也可能面临着 欺诈性交易的风险 ,而且随着协议的迭代升级也许还存在 软分叉风险 ,这些都是侧链技术面临的挑战。
侧链有什么特征?
第一 、主链token在侧链流通时还是主链,通常时1: 1的比例或者其他预定汇率; 第二 、侧链自己不能产出主币,只能接受主链的输入,并在自己链上生成对应的侧链币; 第三 、侧链可以有自己的token也可以没有; 第四 、侧链需要足够的算力和共识保证侧链的安全; 第五 、侧链独立于主链存在,侧链上发生的任何事情都不会影响主链,从而可以保证主链安全性。
为什么侧链能解决问题?
首先,在主链安全性保障的前提下,侧链可以在小范围共识,优化确认时间。我们可以把tps放在第一位,达到秒级确认。
其次,多种侧链“并行”运行时,主链安全性和业务负载并不显著增加。因为主链上的数据只是侧链数据转入其中存储的状态,它不会面临数据膨胀的问题。
最后,侧链数据可以加密,在小范围传输,记录交易路径,且不泄露隐私。在这样一个策略下,我们既可以在专有领域内传递数据,又可以同主链交互。
三、业界对侧链的探索
侧链的核心是解决跨链问题,跨链和侧链其实是两个不同的问题,比如以太坊上有一些币币交换的协议,是一条链上的不同token进行交互,我们可以认为是一种狭义的跨链,还有原子性交换,不过它并不是把交易从一条链上传递到另一条链上。而侧链实现的就是把价值从主链转移到侧链上,侧链又可以转回到主链上的,是所有跨链中最高级的一种形式。
侧链目前最常采用以下三种形式:
1. 公证人机制 (Notary schemes)
类似中心化的模式,比如交易所,它需要中间有一个代理方或者审判方来做价值转换。
2. 中继 (Relays)
我们经常实现的是轻客户端的模式,它通过设置SPV客户端 把比特币和以太坊交易结合在一起。
3. 哈希锁定 (Hash-locking)
这是我们经常在原子交换、闪电网络上经常使用的一种技术。
案例:BTC-Relay
BTC-Relay是基于Ethereum的合约,本质实现比特币的SPV客户端。它的缺点在于需要外界的Feed,即比特币spv-proof-block 数据,和同时难以处理比特币分叉的特殊情况。为什么BTC-Relay现在没能流行起来,一是因为它不能解决多而快的问题,二是缺乏激励,没人愿意花更多的钱传递比特币的区块,将其存储在以太坊上。
案例:Rootstock(RSK)
Rootstock也是很早就开发了,2013年说是要建立在比特币区块链上的智能合约分布式平台,现在已经实现了以太坊虚拟机的一个改进版本。作为比特币的一个侧链,它使用了一种可转换为比特币的代币作为智能合约的“燃料”。在RSK中,把比特币的相关信息写入sidechain,不断产生的区块信息写入SPV同时写入侧链,在比特币中任何区块产生变化都有相应的反应。在将代币解锁为比特币时使用了哈希锁定技术。
四、比原链(Bytom) 上实现侧链
为什么可以在Bytom上实现侧链呢? 一是Bytom架构比较灵活且年轻,主网刚上线两个月。二是POW机制。三是实现了图灵完备智能合约。
Bytom是一种多元比特资产的交互协议,运行在Bytom有不同形态的、异构的比特资产(原生的数字货币、Token)和原子资产(股权,债券,收益权等物理世界对应的金融和非金融资产)。所以我们需要去探索侧链系统,以满足资产上链的这样一个需求。
Bytom是基于POW共识的区块链,需要对传统世界资产进行包容性,合规性,效率性支持。因为做这个区块链系统不可能只是满足于数字货币的交易,还要和现实的商业之间发生关系,因此侧链是我们选择的最好途径之一。
Bytom基于双向锚定(two-peg)进行修改,实现联合锚定(fed-peg)的侧链模型,引入多方中间人机制对于资产的质量和合规性进行把控。 双向锚定和交易所的第三方担保不同,它是通过密码学机制来解决这样一个问题。
侧链既可以锚定BTC,也可以锚定BTM。流程就是我们有一个比特币链上资产,可以在Bytom的侧链上使用,比特币的资产也可以Retire,但是这部分由于比特币的原因暂时还不能实现。还有一部分是现在可以实现的,就是锁定BTM或者是BTM链上的资产,我们需要有多方的签名,就可以解锁,把侧链上资产交易传递下去。
如下图所示的实现场景:
所有步骤可以简化为锚定主链资产,价值传递到侧链。等待资产”成熟”之后,就可以在侧链进行交易,侧链的交易跟主链没有任何关系,主链可以允许侧链锁定自己的资产。当侧链的资产一旦赎回之后,或者被销毁了,它无法再次使用,同时主链上的资产也可能消失,只释放赎回金额,同时结算手续费。所有的侧链上因产生共识所花费的成本,都需要支付手续费,这个手续费在侧链上结算,在主链上释放。也就是让所有的交易方或者共识方,都能获得一定的价值,而不是像联盟链一样,交易之间没有产生任何手续费。
三个关键点:
1、“锚定”主链资产,传递至侧链
如何去实现锚定?首先在主链上构建一个多重签名基于pay-to-contract的交易,其实就是一个锚定合约的形式,同时处理合约出现欺诈行为的情况。
我们需要去考虑的情况是,如果主链发生分叉了后,有攻击者使用了分叉链信息去获取这些释放在侧链上的币时,那么如果有任何一个人知道在主链上相应的交易,就可以去解锁侧链交易,把交易中的惩罚金拿到,这个惩罚金需要构建交易时就进行锁定。
然后就是 侧链资产锁定时需要一定的时间窗口 ,我们需要确认144个块之后才可以释放这个交易,如果144个块后没有人操作,那么资产方就可以回收资产到主链,这样整体可以保证侧链运行安全。
还有之前所提到解锁多重签名交易的情况下,两方都要参与构建这笔交易,那么交易的产生其实就是要跟所有主链的数据总量是一致的。
比如一个场景,主链上有2100万总量的币,需要锁定100万到侧链流通。那么我们需要在侧链上先创建2100万总量对应的侧链币。一次锁定就相当于在一个总量为2100万的UTXO中分裂出侧链100万值UTXO合约和相应的找零UTXO合约,找零的合约中的2000万主链币会等待主链剩余币再次锁定后才能释放。侧链合约中我们需要提供SPV-proof信息来证明主链币确实进行了锁定操作,同时也要根据创始块的哈希来确定是哪个主链进行操作。
2、等待侧链资产“成熟”,资产在侧链流转交易
第二阶段就是在侧链上已经有币了,我们怎么运转 ,可以使用POW,但是如果使用POW,可能跟比特币的交易还是不一样,因为没有coinbase交易,对于某一个区块来说,它其实是一个空的区块,或者去构建一个无意义的coinbase交易,但是对于普通用户来说,没有必要去存储这些冗余的信息,所以我们可以使用这样一个BlockProduce的模式,这是demo中使用最简单的一种模式,就是轮流签名区块信息,流程为签名一个区块,把所有的侧链上的交易进行打包,同时把这个区块打包的信息,中间产生的手续费加到自己的账户中,并最后在主链上赎回变成主链币。
3、侧链资产“赎回”,主链释放锁定资产,结算手续费
最后阶段就是“赎回”这笔交易时,侧链需要产生一个合约,这个合约对应主链上交易签名脚本的哈希,这样 主链上的币才可以重新流通,而侧链上的币永远锁定。 这种情况下,在主链上和侧链上都要使用多重签名技术,是主链和侧链进行交互的一个核心关键点。
五、未来发展方向
侧链发展未来可以预测有以下几个方向:
第一 、主链上的资产可以结合二层扩展闪电网络,将侧链资产和主链资产同时嫁接。闪电网络并不是区块链上的数据,所以它可以把主链和侧链数据同时进行交易,这样可以缩短赎回的等待时间。
第二 、侧链在TPS和不可篡改性上进行优化,在满足具体业务场景需求时,兼顾这两点。
第三 、完善侧链和主链切换的工具,现在的很多切换工具操作复杂且不用户友好,需要做可视化且门槛低的工具,为用户提供便利性。
现在很多个团队已经实现了demo,但并没有用于生产环境,所谓的生产环境是指真实发生的资产上链的价值交换场景,我们预计在2019年后侧链技术会真正用于生产环境。