硬核解读百度XuperChain系统架构
发布时间:2019-08-20 作者:超哥
背景
系统架构
图1. 简化的超级链架构示意图
图2. 百度超级链架构图
高性能关键技术
超级链的性能优化主要是从两个方面着手,一个是立体网络、一个是链内并行。立体网络,简单来说是通过一条Root链派生出N个平行链,这N个平行链是按照业务来划分,使得交易充分地并行。某些必要情况下要通过Root链的哈希锚定实现跨链。另外,还有可回归侧链技术,动态地fork生成侧链,完成一段时间的计算运行后,释放侧链。立体网络技术暂时没有开源。链内并行,指的是单链情况下的性能优化技术。提高单链的性能主要从两个方面:加快出块速度和稳定性、交易验证充分并行。一方面,超级链采用了TDPOS共识,优化了出块时间片调度机制,能够稳定快速出块。另一方面,超级链采用独有的XuperModel模型,使得交易的验证充分地并行化。这种模型是从经典的UTXO模型发展而来的,将智能合约的执行分为两个不同的阶段:预执行阶段和提交阶段,并通过类似于MVCC的机制避免整体加锁,不同于一般的读写集机制,超级链中交易的读集引用不需要绑定区块高度,未确认交易的输出也可被引用,进一步提升了性能测试的整体吞吐。此外,在工程实现方面也做了大量的优化。比如底层KV存储支持多盘存储避免IO瓶颈,通过内存Cache降低访盘开销,通过线程避让机制保障准时出块等等。
社区建设
超级链的代码开源在https://github.com/xuperchain,目前每周的开发进展都会同步给社区。我们也欢迎大家提交代码,在Github上给出了Issue和 Pull Request的发起模板。到目前为止,外部开发者提交的Commit数量占到了10%。我们的社区建设目标是逐步提升这个比例,使超级链真正成为一个开放共建的生态。
后续计划
后续,超级链会进一步提升性能、易用性,努力提高在区块链开发者中的影响力。另外,大家也知道XuperChain只是超级链“Xuper”家族产品中的一员,我们后续还会开源超级链在边缘计算、大数据、多方安全计算等方面的集成化解决方案,敬请关注。