共计 2114 个字符,预计需要花费 6 分钟才能阅读完成。
撰稿人: 卡酷少 kakushao
在区块链所面临的诸多问题中,区块交易的处理速度,和区块链之间的互通性都极大程度的限制了区块链的应用空间。要实现更快的交易确认速度,拓宽区块链向外连接的桥梁,测链和分片都将是实现其作为价值网络体系的关键方案。
本文将依托结合现有区块链,来介绍和对比几种测链跨链方案。
Ethereum Sharding
根据 V 神的设想,以太坊的分片技术,就是在网络分区的基础上,并行地架构一条或多条分片链,并将交易在所属分片链上,也就是主链外进行确认,并在固定间隔时间将分片区块头与主链同步。这样可以有效地分散主链请求的压力。
在此我们就不在做过多解释,本公众号之前有一篇关于以太坊分片技术的介绍,详情请点击跳转链接。
以太坊的分片方案解析
阿希链 —“测链、多链与跨链技术”
在阿希链系统上,每个 DApp 都是运行在一条测链上的。其与主链的关系,一如进程之于操作系统。并且每条进程都跑在一个沙箱隔离机制下的 JavaScript 虚拟机上。阿希主链提供相当于底层的基础设施。提供了比如数据库的读写,网络通信的 API,以及加密的 API 等等支持。这种设计的好处,是测链的代码和数据的独立。这实际上也是一种天然的分片机制。类似于以太分片链,阿希的每条测链也拥有独立的见证人和独立的网络节点。
阿希链在测链的实现之外,还设计了跨链的互操作。这主要依赖于跨链网关的实现。在比特币的跨链网关通过提案系统的投票并上线以后,用户就可以利用这个网关进行比特币对阿希链的充值和提现。用户首先需要在阿希链上完成一个开户的动作,这个账户由跨链网关来维护。用户在完成对这个账户充值以后,跨链网关就会调用相关的合约,在阿希链上对这个用户发行一笔等值的比特币资产。这个比特币资产就可以像其他阿希链上的资产一样,可以在阿希链的生态里流通,也可以导入到 DApp 中使用。
其他主链的资产在导入阿希链的过程中,需要经过一个跨链网关。跨链网关是一个有多个节点共同维护的多签名地址。这些节点由提案系统选举出来,各自同时维护着其他主链的全节点和阿希链的全节点。跨链资产到阿希链的充值、提现等工作都是由这些节点来完成。资产从原来的主链进入网关以后,会在原来的主链上锁定,同时阿希链会解锁一笔对应的资产,用于阿希链内部使用。用户可以随时从阿希链提现到原来的主链,这个过程和充值的过程完全相反。这是一种通过多签名联盟来实现的双向资产锚定的方案。
举例说明,假如 Alice 想要用 BTC 向阿希链的 Bob 发起一笔价值 1BTC 的交易。那么,Alcie 首先需要注册一个阿希链账户,并对这个账户进行充值。在发起转账时,跨链网关调用相关合约,在阿希链上对 Bob 进行一笔等值的比特币资产转账。(注意,这笔资产,既不同于 BTC 也不同于 XAS,而是一种类似于 XAS-BTC 的代币。)之后这笔比特币资产就可以在阿希链的生态里自由流通。
总结而言,跨链网关具有一定的中转和管理功能,能够在尽量实现分布式的情况下,以见证节点多签的方式来保证交易的可靠性。在应对交易撤销方面,在不主张主链回滚的前提下,给出一天时间延时写入区块。是相对比较可行且完善的方案。
Zilliqua
Zilliqa 是一个高吞吐量的公链平台。也是截至目前,在其测试网络(testnet)上实现分片技术的仅有的两个中的一个区块链项目。
Zilliqa 清楚区分了状态(state)和交易历史(transaction history)。状态是指当前的情况,比起存储交易历史,状态存储空间占用较小,但使用频率较高。Zilliqa 采用的方式是: 每个节点拥有当前状态的拷贝,但交易历史将被分片。因为交易历史使用频率比起当前状态要低,所以这将很大程度上减少分片引起的频繁通信问题。
提起 Zilliqua 就不得不提 QuarkChain。QuarkChain 也是基于分片技术实现了高性能点对点交易系统。在系统结构上分为两层:分片层(sharding layer)和用于验证前者的底层(root layer)
其在分片实现上与 Zilliqa 最大的区别:Zilliqa 只支持交易历史的分片,但 QuarkChain 声称支持状态和交易历史分片片间交易(cross-sharding)能力比起 Zilliqa 更强。
相比而言,首先,以太坊上实现分片,首先需要实现 Casper。Casper 和分片的实现将很大程度上改善以太坊的短板。其次 Zilliqa 和 Quarkchain 已在测试网络上成功运行了分片技术,但两者的实现是有区别的。
Covenant SQL
与传统的数据库不同,Covenant SQL 是一个分布式数据库,也是一个区块链数据库,一个哈希上链的数据库。为了更便于用户使用,Covenant SQL 支持 SQL-92, 兼容各种现有 SQL 语言框架。Covenant SQL 不涉及太多的共识机制,主要关注点是在数据上链存储(hash 值存储)。
Covenant SQL 的底层架构如下图:
在 DPOS 的共识下,Covenant SQL 由 mainer 轮流出块。其出块逻辑大致如下:
需要注意的是,CovenantSQL 并没有直接将 SQL 链的接口暴露给客户端。而是中间隔了一层数据库实例。所以底层的数据相对更加安全一些。