什么是跨链?为什么要跨链?

区块链作为一种分布式账本技术,可以被应用在金融、健康医疗、供应链、资产管理等诸多领域,但是受吞吐量、网络孤立性、监管、伸缩性等因素的制约,目前的区块链项目并不能很好的服务于商业应用。

在区块链所面临的诸多问题中,网络孤立性阻碍了不同区块链之间的协同操作,极大程度的限制了区块链的发挥空间。跨链技术就是实现价值互联网的关键,简单来说,跨链就是实现一个链到另一个链的通信协议,这两个链的关系可以是母链和子链,也可以互为侧链,不同的链间关系称呼不同。

去中心化交易所是跨链最终希望实现的愿景之一,这也是最近币圈和链圈讨论比较多的一个话题。那么,如何实现跨链呢?先看这张图,这是在以太坊上实现跨链的方案。

 

跨链在技术实现上具体分为以下五种方式:

1.公证人机制(Notary schemes)
瑞波Inteledger协议: 在两条链之间加入验证器,需要该第三方代理。该模式更像是在传统金融中间人模式上加入了密码学技术。

2.侧链(Sidechains)
BTC侧链Relay:需要一份实现主链网络数据获取的合约,其中包含侧链数据和主链数据切换机制的方法,通过合约使BTC和其它侧链进行交互,问题是该合约的功能容易带有中心化色彩。

3.中继(relays)
Polkadot/COSMOS中继技术:依靠中继链协议完成通信互连,以牺牲P为前提,或与中心化系统无异。

4.哈希锁定(Hash-locking)
闪电网络:相当于在一定时间段内通过押金锁定的方式创建一个微支付通道,问题是仅支持小微金额的交易。

5.分布式私钥控制(Distributed private key control)
Wanchain/Fusion:多方计算和门限密码是对于私钥管理的优化,跨链实现仍然是通用的跨链协议。Fusion引入HHCM,利用该机制中的DCRM分布式控制权管理实现跨链资产的锁定和解锁,Fibos利用IBO引入押金机制。

跨链会不会成为下一个区块链技术爆点呢,其实已经初露端倪。

说到底,跨链应用就是在试图打破CAP定理,了解分布式系统的应该都知道CAP,这里就不多作解释。当然,学术上应该追求理论上限,应用中是符合业务标准下限,目前的行业技术观点是在水平扩展层面上是无法解决区块链中所谓的“不可能三角”问题,那有没有另外一种解决问题的思路呢?

我们可以来看看最近有点火的顶级项目,Nervos。项目方发布了白皮书和上层Generator层模块设计,核心共识层CKB需要到2019年中旬发布。团队开发人员来自以太坊、ImToken等,技术背景还是比较强大的,从白皮书中不难感觉Nervos团队对“得开发者得天下”这句话有深刻理解。

分布式系统层面的安全水平扩展只能增强分区容错性,一致性和可用性即数据确定性和系统性能(数据分叉和出块效率)提出更严峻的挑战。

所以该架构提出共识算法,POW+BFT,双层架构模式:
1)节点分为“记账节点”和“同步节点”两类,同步节点只验证不计算并且有权接入网络进行区块同步,记账节点采用POW共识,因为这是可应用的在理论上最分散化的共识算法。不论是记账节点还是同步节点,都可以对外提供代理服务,以方便用户接入Nervos AppChain网络,所以这仅仅是在Layer1范畴的讨论;
2)支持存储自定义类型的结构化数据,从而增加了扩展;

为了满足不同业务的需求,Nervos支持通过Generator部署不同的共识算法获得性能与网络分散度的平衡。Nervos提出了一种新的区块链设计,分别由可以存放多个数据的cell(细胞),应用的执行逻辑生成器Generator(生成器),Validator(验证器),Type(样式),Identity(身份验证)五种元素组成能够自治及验证分离的分布式架构,自创了CKB(Common knowledge Base)的范式,大大提高了运行功效。但是希望在不同的业务中不同的组织形态下能看到更多量化的数据。

Nervos改变了原有的数据输入,验证,打包的流程,当事件X发生时,客户端先通过Identity(身份验证)验证确定身份,同时将链外的状态Y通过共识做对应的映射存储到客户端中,执行逻辑生成器Generator(生成器)将事件状态Y(state Y),通过哈希传递到记账的节点,节点上只需要Validator(验证器)验证链上的映射是否与链下的事件状态Y一致,若确认,打包成下一个区块。区块内存储的是状态的映射,链条通过反向逻辑可推断链上与链下数据是否一致。这个地方需要谨慎的是节点加入和管理,治理模型提到,新加入的节点都是同步节点,这意味着承担计算工作的记账节点都是在运营方或参与方,管理合约还可以对记账节点的权重进行设置,这个层面也许还需要更好的节点投票决议和动态加入。

CKB对UTXO模型进行了改进
Appchain:目前基于以太坊实现,采用BFT共识的高性能侧链。根据官方doc 里写到,“DApp包括部署在一条或多条AppChain上的智能合约和便于用户访问的UI界面, 后者一般以H5形式实现;终端钱包管理所有AppChain上的数字资产,并支持DApp唤起钱包进行数字签名。”

再看眼DAPP业务实现的完整流程:
1)用户在终端钱包打开DApp网页;
2)终端钱包分析HTML文件,找到manifest文件并解析;
3)终端钱包为网页注入nervos.js对象;
4)DApp网页调用nervos.js.sendTransaction函数唤起终端钱包签名;
5)用户确认签名;
6)终端钱包将签名结果返回DApp网页,同时将签名内容发送到manifest指示的httpProvider接口。

吼吼==,这个流程勾起当时在以太坊上玩加密猫的痛苦体验orzz。

 

不过以太坊外部账户或内部账户可以直接调取EVM的API,而回头看Nervos,CKB 分布式应用使用的是一种近似Lambda Calculus 的计算范式,能够实现与图灵机相同的计算能力,所以外部账户直接调用应该也没有问题吼吼==。

Doc中参与方和记账人的关系不是很明朗啊,存在过度中心化风险,并且该POW的设计是没有出块奖励的,矿收益是超过挖矿成本部分的终端用户的DAPP使用费,而运营方通过预分配代币、交易手续费、交易所等盈利模式获得收益。

Nervos架构实现用分层思想,底层记账节点和上层同步节点解耦,在性能上能有所提升,架构中比较关注的是C和A的实现,当然我觉得一个商用架构是肯定不能放弃A的(除Bitcoin),到这里,其实觉得Nervos和Fabric比较像了,Fabric也是类似这样的解耦模型,把计算和共识分离,只是两者在经济模型和Layer1的共识算法上有较大的差异。

 

2B场景技术相对成熟却因为企业边界、迁移成本等因素较难应用,2C场景的自由兑换钱包目前是非常需要的,但各种阻力比较大。个人还是期待轻量化支持跨链的Neuro钱包的,Nervos想实现一条性能强、扩展好、安全性高的公链是伟大的愿景,但真正的安全高效友好的跨链协议和钱包还需要时间考验吧。

参考:
Nervos官方白皮书
Appchain概览

posted @ 2018-09-06 22:27  sigmod  阅读(7887)  评论(0编辑  收藏  举报