Page 218 - 《软件学报》2025年第10期
P. 218
张建标 等: 面向联盟链的智能合约行为可信验证机制 4615
2 基础知识
2.1 区块链及智能合约
区块链是去中心化的数字交易账本, 由区块链网络中的节点在共识协议的约束下共同维护. 共识协议能够保
证区块链网络中诚实节点在恶意节点干扰下也能达成共识, 共识的过程是各节点验证及更新账本的过程, 共识的
结果是系统对外提供一份统一的账本. 区块链中的交易被保存在一个不断增长的有序“块”列表中, 每个块还包括
状态元数据、创建时间戳、事务的 Merkle 哈希值、链中前一个块的哈希值以及智能合约代码和数据 [32] , 区块链
账本数据结构如图 1 所示, 一旦交易发布, 便不可篡改.
区块头 时间戳 区块头 时间戳 区块头 时间戳
区块 … … 区块
父区块哈希值 Merkle 根 父区块哈希值 Merkle 根 父区块哈希值 Merkle 根
哈希_12 哈希_34
哈希_3 哈希_4
交易号 签名
图 1 区块链账本数据结构
区块链系统根据其开放程度和参与主体的不同, 可分为公有链、联盟链及私有链这 3 种形态. 其中, 公有链对
所有人开放, 允许任何人加入网络并参与区块验证过程, 以达成共识. 私有链完全由某个组织控制, 该组织拥有绝
对的权威, 节点完全受组织监管, 监管组织可以快速发现节点篡改数据等错误源. 联盟链是指由多个机构管理的区
块链, 只有一组有限的已批准的参与者才有权验证交易, 这种受限制的模型提供了更好的隐私性、可扩展性和细
粒度访问控制. 因此, 大多数金融、医疗机构等都遵循这种模式, 目前流行的联盟链区块链平台有 Hyperledger
Fabric, Quorum, Cordite 等.
2.1.1 智能合约生命周期
1994 年, Szabo [33] 将智能合约定义为执行合同条款的计算机化交易协议. 随着区块链技术的发展, 智能合约被
应用在区块链中. 智能合约是具有相关方之间协议条款的自动执行合同, 合约以程序代码的形式编写并存储在区
块链上, 经过区块链的共识机制正确执行, 并由节点验证后, 记录在区块链中. Hyperledger Fabric [34] 作为联盟链的
代表, 其智能合约又称为链码 (chaincode), 可由 JavaScript 或 Go 语言编写, 其智能合约的生命周期主要包括合约
的创建、发布和调用.
(1) 合约的创建是指由一个区块链系统中的节点在本地的智能合约编辑器中编写源代码, 创建一个智能合约
创建交易并发送到区块链系统中的其他节点进行交易验证.
(2) 合约的发布是指由一个区块链系统中的共识节点收集到节点发送的智能合约创建交易后, 验证交易并在
区块链上部署该智能合约.
(3) 合约的调用是指一个节点发起智能合约调用交易来调用智能合约, 共识节点在收集到智能合约调用交易
后, 验证该交易; 从区块链账本中获取合约源代码, 在本地合约执行环境 (包括虚拟机、Docker 容器等) 中运行智
能合约, 得到的结果将写入到智能合约调用交易中; 该交易最终会与其他交易打包进一个区块中, 若区块被区块链
网络接受则智能合约的调用生效.
2.1.2 智能合约不可信行为
智能合约不可信行为是指合约在运行过程中产生的与预期不符的行为, 理论上合约的程序逻辑设计是正确
的, 能够实现智能合约的功能. 然而合约编码过程中程序逻辑控制可能导致合约缺陷, 攻击者可能通过特定的输入

