Page 133 - 《软件学报》2026年第1期
P. 133

130                                                        软件学报  2026  年第  37  卷第  1  期


                 更倾向于使用经过验证的、成熟的共识协议, 并根据监管政策的变化进行相应的调整与优化.
                    在性能和安全性权衡方面, 国外区块链软件在设计共识协议时, 有时更侧重于追求高性能和可扩展性, 可能会
                 在一定程度上牺牲部分安全性. 例如, 一些采用             DPoS  共识机制的区块链项目为了提高交易处理速度, 减少了节点
                 的数量, 这虽然提升了性能, 但可能会导致一定的中心化风险. 与此不同, 国内区块链应用更加注重安全性和稳定
                 性, 在共识协议的选择上会更加谨慎地权衡性能和安全性. 例如, 在金融领域的区块链应用中, 通常会优先选择安
                 全性高、容错性强的共识协议, 尽管这可能会导致性能上的一些损失, 但能够保证交易的安全性和可靠性.
                  4.4   合约层
                    我们对国外     6  个区块链软件在合约层中使用的技术进行了统计, 结果如表                 14  所示.

                                          表 14 6  种国外区块链软件合约层技术使用情况

                              区块链软件名称                 合约编程语言                    合约执行引擎
                             Hyperledger Fabric       Java, Go, NodeJS          JVM, Docker
                                  Corda                Kotlin, Java                JVM
                                 Quorum               Solidity, Vyper              EVM
                                Ethereum        Solidity, Vyper, Yul, Bamboo, LLL  EVM, eWASM, WASM
                                 Polygon              Solidity, Vyper              EVM
                                 Solana                  Rust, C                 SeaLevel

                  4.4.1    合约编程语言
                    从表  14  中可以看到, 这   6  个国外区块链软件均支持两种以上的合约编程语言, 其中                  Solidity, Vyper, Yul [162] ,
                 LLL (low-level lisp-like language) [163] , Bamboo [164] 是专门为智能合约设计的编程语言. 前  4  种语言是为以太坊合约
                 开发设计的, 其中     Solidity  是目前使用最为广泛的智能合约语言, 专为以太坊合约开发设计. Vyper 强调安全性和
                 可读性. Yul 则是以太坊虚拟机的中间语言, 用于优化智能合约性能. LLL                  是用于以太坊的低级语言, 适用于对性
                 能要求较高的合约. Bamboo      则是一种实验性语言, 重点关注安全性和易用性. 传统编程语言如                   Go、Java 虽然被用
                 于智能合约开发, 但其在安全性、性能和合约升级方面仍面临挑战.
                    现象  27: 相较而言, 国产区块链软件缺乏专门为智能合约编程语言, 这使得过度依赖国外技术可能会导致国
                 产区块链软件在市场竞争中的劣势. 这种依赖性可能导致以下问题: 无法完全满足特定行业需求、开发效率低下
                 以及潜在的安全性风险等问题.
                  4.4.2    合约执行引擎
                    从表  7  中可以看到, 大部分公有链都使用了专为智能合约设计的编程语言, 而联盟链仍然主要使用传统编程
                 语言. 这主要是因为传统编程语言具有成熟的开发者基础、较好的性能表现以及成熟的生态系统. 虽然传统编程
                 语言在开发智能合约时仍然面临很多挑战, 但国外的联盟链使用了不同的合约执行引擎以应对. 如                                 Hyperledger
                 Fabric 使用  Docker 容器来运行以  Go  语言开发的智能合约       (在  Hyperledger Fabric 中称为链码). 这种设计允许链
                 码在隔离的环境中运行, 从而增强了安全性和可管理性. 对国外区块链软件使用的合约执行引擎进行统计后, 发现
                 仅有  Hyperledger Fabric 和  Ethereum  支持多种合约执行引擎, 而其他软件均支持一种合约执行引擎且大部分为
                 EVM. 其中  Ethereum  的  eWASM [165] 和  Solana 的  SeaLevel [166] 是较为特殊的案例. Solana 支持使用  Rust 进行合约开
                 发, 该种编程语言能够提供内存安全和并发安全. 而                eWASM  是以太坊未来的执行引擎, 旨在替代            EVM, 通过支
                 持  WebAssembly (WASM) 提高性能和灵活性. 为了更好地兼容          Solana 系统, Solana 设计了一种高性能的并行智能
                 合约执行环境—SeaLevel, 其中由      Rust 编写的合约会被编译成        BPF (Berkeley packet filter) [167] 字节码. 这种字节码
                 能够在   SeaLevel 上高效运行. SeaLevel 具有并行执行、高吞吐量、动态费用以及可扩展等特点, 使得                   Solana 能够
                 突破传统区块链智能合约执行的性能限制, 为去中心化应用提供更高效、可扩展的运行环境.
                    现象  28: 相较而言, 国产区块链软件在合约执行引擎方面的创新并不逊色, 通常会针对特定行业应用进行更
                 加深入的性能优化, 以支持高并发和大规模交易. 然而, 国外区块链软件的合约执行引擎面向更广泛的应用场景且
                 支持更多开发者参与引擎开发和改进. 相比之下, 国产区块链软件更多依赖于特定公司的技术栈, 这在一定程度上
   128   129   130   131   132   133   134   135   136   137   138