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

从上述流程中 , 我们可以看到在 Monoxide 系统中交易原子性并没有得到立即满足 , 而是要等到所有接力交易被确认和执行之后 , 才最终得以完成 。 我们将此称为最终原子性 , 而不是要求即时的原子性 。

最终原子性使得跨共识组的交易可以被无阻塞地在多个共识组间接力执行 , 使得多个原子交易可以完全并行地重叠交错执行 , 从而使得 Monoxide 系统的全网吞吐能力得以完全释放 , 即使再多的跨共识组的交易也不会显着影响性能 。

我们即使假设 100% 的交易都是跨共识组的交易 , 一个支付交易将会变成两个交易 , 粗略地说 , 会使吞吐量减半 。 但是这个开销 , 和共识组的总数无关 。 当全网性能获得几个数量级的提升时 , 这个开销始终是吞吐量减半 。

故而 , 在我们的实验中 , 2048 个共识组能够获得近 1000 倍的吞吐量提升 。 基于最终原子性的执行逻辑 , 需要初始操作和接力操作满足前述的正确性约束 , 否则可能导致不一致的最终状态 。 诚然 , 这会对 Monoxide 平台上的智能合约开发带来一些难度 。 不过我们认为这是一个不可避免的代价 , 就好像给 GPU 写代码 , 给 OpenMP 写代码或者是给Hadoop 写代码 , 就是会比给单机单线程的 CPU 写代码要困难一些 , 思路上要绕一些 。 当然 , 结合恰当的合约语言模型、形式化验证工具 , 以及开发和调试工具的支持 , 开发的难度也会大大减少 。

推荐阅读