提高区块链系统性能和可扩展性的方法
前言
首先我们为什么要把提高性能和可扩展性放在一起? 这是因为在当前区块链应用场景下,区块链系统最首要的性能瓶颈是区块数据的广播延迟造成的,本质上受限于互联网的带宽和通讯延迟,这一点直接制约了吞吐量(TPS)。
通俗一点说, 只要是一个链系统, 你的块就不能太大,出块频率不能太高, 否则就不能保证前一个区块在全网有一定的同步率
当前常见提高性能和扩容方法
新的共识算法
这是在2017年出现的一些新的共识机制
最近一种比较新的共识算法是Snowflake to Avalanche:一种新型的亚稳态共识协议族
这套算法是一个无leader、基于亚稳态、不依赖PoW的拜占庭容错共识协议族。算法本身是非常直观和易懂的,但是个人感觉理论证明部分不是很清晰,很多公式都不知道是从何推导而来的,另外关于安全参数的计算也没有非常严谨的数学公式。如果文中对安全性和活性的证明确实成立的话,这将是一个非常牛逼的算法,或许会对区块链领域产生更强的推进作用。
DAG有向无环图结构
具体实现是这样的
每个新加入的单元,不仅仅只加入长链里的一个区块,而是加入到之前的所有区块。假设当你发布新交易时,前面有两个有效区块,那么你的区块会主动同时链接到前面两个之中,DAG 中的每个新单元,验证并确认其父辈单元,父辈单元的父辈单元,慢慢可达创世单元,并将其父辈单元的哈希包含到自己的单元里面。随着时间递增,所有交易的区块链相互连接,形成图状结构,如若要更改数据,那就不仅仅是几个区块的问题了,而是整个区块图的数据更改。
分片技术
分片技术又可分为3个方面 网络分片, 交易分片, 状态分片。
通过网络和交易分片,区块链节点的网络被分割成不同的碎片,每个碎片都能形成独立的处理过程并在不同的交易子集上达成共识。通过这种方式,我们可以并行处理相互之间未建立连接的交易子集,通过提高数量级显著提高交易的吞吐量。
另一方面,在当今的主流公共区块链上,所有公共节点都承担着存储交易、智能合约和各种状态的负担,这可能使其在为了获得更大的存储空间而进行巨大的花费,以维持其在区块链上的正常运转。 状态分片可以解决这类问题,将整个存储区分开,让不同的碎片存储不同的部分;因此,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。
侧链技术
侧链协议是一种跨区块链的解决方案。通过这种解决方案,可以实现数字资产从一个区块链到另一个区块链的转移,之后又可以从第二个区块链返回到前一个区块链中。其中第一个区块链被称为主链,第二个区块链则被称为侧链。最初,主链通常指的是比特币区块链,而现在主链可以是任何区块链。侧链协议被设想为一种允许数字资产在主链与侧链之间进行转移的方式,这种技术为开发区块链技术的新型应用和实验打开了一扇大门。
通过以太坊构建侧链的方法
提供的参考论文是 Plasma白皮书,这是以太坊的一种二层扩容方案, 其原理通过阅读论文如下:
Plasma 作为一种以太坊扩容方案,对以太坊主链可扩展性的提高通过将大量交易和计算下放到侧链来实现。Plasma本质上是一系列运行在以太坊主链上的智能合约,只需处理少量来自侧链的请求,**海量的交易和计算都在侧链上完成。**不同于以太坊主链目前使用的POW共识算法,侧链将使用POS等TPS更高的共识机制。因此侧链提供了可扩展性,而主链保证了安全性和去中心化。
Plasma 架构:
- 节点自身被激励去运行一个链;
- 每个节点都可以创建一个自定义的Plasma链;
- Plasma是一系列的智能合约,允许在主链里有许多的区块链;
- 主链可以强制Plasma链中的状态,是全局计算的强制检查者,计算和惩罚那些存在欺诈的行为;
- 许多的Plasma的区块链可以并存,且有他们独自的商业逻辑和合约术语;
- Plasma将会由EVM智能合约组成,并直接在以太坊上运行;
- Plasma执行次数不多,却能代表大量计算得到的金融账本实体。
参考资料
https://blog.csdn.net/xilibi2003/article/details/83268589
http://me.tryblockchain.org/blockchain-ethereum-plasma-whitepaper.html
https://blog.csdn.net/TurkeyCock/article/details/82428552
《自动化学报》 2018年第11期 P2011-2022页
https://plasma.io/