表达。 并行编程语言的语义表达 就像 Nvidia 需要 CUDA,并行区块链也需要新的编程语言:PREDA。如今的智能合约的开发者并行语义进行表达,无法有效利用底层多链架构提供的支持(数据分片或执行分片或者兼而有之),无法实现通用智能合约交易的有效并行。所有系统在编程语言方面采用的都是 Solidity、Move、Rust 等传统的常见的智能合约编程语言。这些编程语言缺少并行语义表达能力,即,不具备类似于CUDA这样高性能计算或者大数据领域的并行编程模型和编程语言表达并行单元之间控制流与数据流的能力。 缺少适用于智能合约的并行编程模型及编程语言,会导致应用与算法从串行到并行的重构无法完成,导致应用与算法无法与底层具有并行执行能力的区块链系统适配,从而不能提高应用的执行效率以及区块链系统的整体吞吐率。 PREDA 提出的这一种分布式编程模型,通过程序化合约作用域对合约状态进行细粒度划分,并通过功能中继语义(Functional Relay) 将交易执行流分解后分布在多个并行执行引擎上执行。 该模型还通过程序化合约作用域(Programmable Scope)定义合约状态的划分方案,允许开发者根据应用的访问模式进行优化。通过异步功能中继,可以将交易执行流移动到需要访问状态的执行引擎上继续,实现了执行流程的移动而非数据的移动。 这种模型实现了合约状态的分布式划分和交易流量的分担,而不需要开发者关心底层多链系统的细节。实验结果表明,在 256 个执行引擎上 PREDA 模型可实现最高 18 倍的吞吐量提升,接近理论上的并行极限。通过使用分区计数器和可交换指令等技术,进一步提升了并行度。 Conclusion 区块链系统传统上使用单个顺序执行引擎(例如 EVM)来处理所有交易,从而限制了可扩展性。多链系统运行并行执行引擎,但每个引擎都处理智能合约的所有交易,无法在合约级别实现可扩展性。本篇文章论述了以 Solana 为代表的确定性并行的本质核心共享,以及以 Monad 为代表的乐观并行为何无法在真实的区块链应用场景中稳定运行 & 面临的高频率回滚的可能。并介绍了 PREDA 的并行执行引擎。PREDA 团队提出了一种新颖的编程模型,通过划分智能合约的状态并跨执行引擎分配交易流量来扩展单个智能合约。它引入了可编程合约范围来定义合约状态的划分方式。每个作用域都在专用的执行引擎上运行。异步功能中继(Asynchronous Functional Relay)用于分解事务执行流,并在所需状态驻留在其他地方时将其跨执行引擎移动。 这将事务逻辑与合约状态分区解耦,从而允许固有的并行性而无需数据移动开销。其并行模型既在智能合约层面拆分了状态,解耦了数据发布层面的依赖性,也提供了类似 Move 的 Multi-Threaded 执行引擎集群架构。更重要的是,其创新地推出了新的编程模型 PREDA,这也许会是区块链并行达成的最后一块拼图。 来源:金色财经lg...