DeepHash专栏|Monoxide:突破区块链不可能三角的极简架构(18)

Oxidation 语言是 Monoxide 平台的智能合约语言 , 一种基于函数编程(Functional programming)的语言 。 这个语言模型的设计并不是论文的一部分 , 这部分工作也尚未全部完成 。 这里给出一个类似 ERC20 代币的合约示例代码 。 这里比较特殊的是系统调用 yield 。 这个调用将在合约执行的过程中生成接力交易 , 如果 b 为一个跨共识组的地址的话 。 代码中可以出现多个 yield 调用 , 也可以有条件地调用 yield , 但是 yield 调用不允许重入 。

伸缩性的上限——为什么说区块链不可能三角被突破了?

为了正确完成跨共识组交易 , 接力交易的权限校验需要接收到发起方所在的共识组的对应的块头 。 这件事情成为了 Monoxide 全网伸缩性的最主要瓶颈 。 这意味着 , 每个全节点都需要同步并跟踪所有共识组中的块头 , 同时加上连弩挖矿机制 , 这个同步消耗的带宽为:

( BlockHeadSize + 32 × log2 n ) × n / BlockInterval

BlockHeadSize 为块头的元数据 , 大致 120 字节 。 这个部分不定长 , 是因为 Monoxide 采用可变长度的 Nonce , 以适配不同的挖矿难度 。 32 × log2 n 部分为连弩挖矿机制引入的算力证明 , 即前文的 MerkleTreePathi 。 BlockInterval 为出块间隔 。 基本上 , 这是一个 O(n log2 n)的开销 , 只要 n 大到一定程度 , 性能的提升会低于这个开销的增加 , 从而定义了伸缩性的天花板 。

推荐阅读