Page 225 - 《软件学报》2025年第10期
P. 225
4622 软件学报 2025 年第 36 卷第 10 期
V1
V2
V3
V4
(a) 基本功能划分 (b) invoke 源码 (c) 基本块划分 (d) 基本块控制流图
图 5 智能合约源码结构与控制流图
表 1 智能合约预期行为与执行监控结果
正常调用 Read Read Read Write
/hyperledger/production/
/users/Admin@org.exampl ledgersData/pvtdataStore
/fabric-samples/test- /hyperledger/production/le
正常调用参数 network/mychaincode e.com/msp /hyperledger/production/ dgersData/chains/chains
/users/Admin@org.exampl ledgersData/historyLeveldb
/fan10 /mychannel/blockfile
e.com/tls /hyperledger/production/
ledgersData/stateLeveldb
/hyperledger/production/
/users/Admin@org.exampl ledgersData/pvtdataStore
/fabric-samples/test- /hyperledger/production/le
e.com/msp
/hyperledger/production/
contract1 network/mychaincode /users/Admin@org.exampl ledgersData/historyLeveldb dgersData/chains/chains
/fan10 /mychannel/blockfile
e.com/tls /hyperledger/production/
ledgersData/stateLeveldb
/hyperledger/production/
/users/Admin@org.exampl ledgersData/pvtdataStore
/fabric-samples/test- /hyperledger/production/le
e.com/msp
/hyperledger/production/
contract2 network/mychaincode /users/Admin@org.exampl ledgersData/historyLeveldb dgersData/chains/index
/fan10 /LOG
e.com/tls /hyperledger/production/
ledgersData/stateLeveldb
表 1 为合约的预期行为系统调用及其参数, 作为基准判定 contract1、contract2 行为是否可信. 实验结果表明,
contract1 的实际行为与预期行为相符, 所以 contract1 的行为可信. contract2 的中 write 系统调用的参数与预期不
一致, 即 contract2 合约的转账行为不可信. 因此, 本文提出的智能合约行为可信验证机制能够精确判定合约行为
的可信性, 并且具有较高的准确性, 具有实用价值.
5.1 对比分析
本文方案与目前已有的研究分别从生命周期、行为、细粒度、可信验证、权限验证、安全性这 6 种角度进
行对比. 结合表 2 可以看出, 本文所述方案具有以下几个方面的优势.
(1) 生命周期: 本文方案可以对合约部署阶段和合约调用阶段进行验证, 防止经过可信验证的合约上链后在拿
到本地环境运行的过程中发生恶意篡改导致合约执行结果错误.
(2) 行为: 从合约行为角度出发, 提出以系统调用为行为单元, 以系统调用序列准确描述合约行为.
(3) 细粒度性: 本文方案对合约运行过程中的系统调用行为进行监测, 能够较为细粒度地对合约部署和运行过
程进行可信管控.
(4) 可信验证: 对合约数据完整性以及行为完整性进行度量并通过实时动态监控判定合约是否符合预期.
(5) 权限验证: 区块链根据自身需求制定并维护访问控制策略, 决定合约是否具备创建、调用、删除合约的权
限, 系统调用是否具有访问资源的权限. 智能合约自主决定背书策略等是否授予节点调用权限.
(6) 安全性: 本方案的监控机制能够从系统调用层次对合约运行过程的相关行为进行管控, 同时对合约运行过
程加载的静态文件进行数据完整性和行为完整性校验, 能够有效防止针对合约的恶意攻击.

