Page 121 - 《软件学报》2026年第1期
P. 121
118 软件学报 2026 年第 37 卷第 1 期
选节点, 系统根据治理 Token 的抵押总数进行排序, 选定候选节点后, 候选人组按照时间片进行轮换. 百度链提出
的 XPoS (xuper proof of stake) 在 TDPoS 的基础上增加了 Chained-BFT 组件, 以确保系统在指定区块高度下账本
不可回滚, 保证业务数据的持久性. 其中, Chained-BFT 是一种将区块链结构与拜占庭容错机制结合的共识协议,
通过将共识决策嵌入区块链的线性结构中, 实现高效、可验证的拜占庭容错共识. PlatON 的共识协议 PPoS 通过
在小规模备选节点中利用 VRF (verifiable random function) [130] 和概率分布随机选取验证节点参与 BFT 共识, 在保
证共识效率的同时避免过于中心化, 提升系统安全性和去中心化程度. XPoA (xuper proof of authority) 同样是百度
链自研的共识协议, 适用于联盟链场景, 节点可以使用专有合约进行权益转移, 并根据业务需求对联盟链中的共识
节点进行变更, 变更需经过联盟内指定节点的签名.
实用拜占庭容错 (PBFT) 是一种在分布式系统中能够容忍拜占庭错误的共识算法, 通过多节点交互和投票机
制确保系统的一致性和可靠性. 长安链、PlatON 和 NEO 分别在 PBFT 的基础上进行了改进, 提出了 TBFT、
CBFT 以及 DBFT. 其中, 长安链的 TBFT (trusted Byzantine fault tolerance) 是一种高度可靠的共识机制. 它在面对
分布式系统中可能出现的拜占庭错误时, 通过一系列严格的验证和交互流程, 确保各节点在复杂的网络环境下能
够达成一致的交易确认, 为长安链的稳定运行提供了坚实的基础, 保障了数据的完整性和系统的安全性. PlatON
的 CBFT (consensus Byzantine fault tolerance) 是 PlatON 网络独有的共识机制, 融合了先进的技术理念和创新的设
计思路, 在确保系统具备强大的容错能力的同时, 能够高效地处理大量的交易请求. 通过多节点之间的协作和信息
交互, CBFT 能够快速地达成共识, 保障 PlatON 网络的稳定运行和数据的安全可靠. NEO 的 DBFT (delegated
Byzantine fault tolerance) 是一种具有创新性的共识算法. 它通过委托的方式, 让一部分节点代表全体参与共识过
程, 有效地提高了共识的效率. 在面对可能的拜占庭错误时, DBFT 能够通过严格的验证和投票机制, 确保交易的
合法性和系统的稳定性, 为 NEO 区块链的发展提供了强大的技术支撑. 此外, 长安链在 BFT 的基础上进行了改进,
得到了 MAXBFT, 该协议是一种高效的拜占庭容错共识机制, 采用先进密码学技术和分布式算法, 具备强大容错
能力、性能优化及可扩展性, 为长安链提供安全可靠的技术支撑. 它能在面对拜占庭错误时确保系统一致性, 满足
处理高并发交易的需求, 适应网络发展扩大.
见解 6: BFT 类共识协议在当前得到了广泛应用, 投票类与证明类共识协议的局限性限制了其使用, 混合类共
识协议具有较强的应用潜力. 同时, 一些国产区块链软件提出独特共识协议, 展现了国内在区块链共识机制创新方
面的积极探索, 未来有望持续推动区块链技术在不同场景下的优化与发展.
3.4 合约层
区块链的合约层是实现智能合约执行和自动化协议管理的核心, 使区块链能够在无需信任中介的情况下, 自
动、安全地执行预定的合约条款. 该层构建于区块链虚拟机之上, 包含了各种商业逻辑和算法, 是实现区块链系统
灵活编程和数据操作的基础. 在这一层中, 智能合约编程语言 (如 Solidity 等) 扮演着关键角色, 提供了一种精确且
高效的方式, 供开发者定义和描述合约的功能、条件以及操作流程. 同时, 智能合约执行引擎负责解析和执行智能
合约代码, 处理合约的逻辑与运算, 以实现其预定功能.
3.4.1 合约编程语言
智能合约的概念最早由以太坊提出并成功应用于实践, 使得区块链技术能够支持去中心化金融、社会治理
等诸多应用场景. 相比之下, 比特币等早期加密货币平台仅使用了非图灵完备的简单脚本语言来编写代码, 这些
代码主要用于控制交易的执行, 功能较为有限. 由于我们所研究和收集的区块链软件并不涉及加密货币平台, 因
此在讨论合约层时, 我们将不包括对这些简单脚本语言的分析, 而是专注于更复杂和功能丰富的智能合约体系.
这些智能合约不仅支持图灵完备的编程语言, 还能够实现更为复杂的自动化逻辑, 推动区块链技术在更广泛领
域的应用.
在统计国产区块链软件在智能合约编程语言方面的使用情况前, 我们首先对智能合约编程语言进行了分类,
包括: 1) 专为智能合约编程设计的语言; 2) 传统编程语言. 随后, 我们对每种类型编程语言中具体语言以及对应的
区块链软件进行了统计, 如表 7 所示.

