Page 54 - 《软件学报》2026年第1期
P. 54
郭涛 等: 智能合约可升级技术综述 51
钥、解析令牌和每次调用都会执行一次签名验证. 这种方法减少链上存储和计算需求, 以低成本实现智能合约的
可更新和复杂的 ACR. 2021 年, 刘云霞等人 [97,98] 提出基于区块链的通证智能合约链上升级方法研究, 将传统智能
合约拆分为接口合约、实现合约、数据合约这 3 个子集, 3 个子集间保持互相调用的松耦合关系, 共同实现对事
务的处理. 此外, 考虑到现有的 3 层模式只能实现部分链上升级, 无法保证链上升级的安全性. 2023 年, Du 等人 [99]
提出一个 4 层合约模型应用于区块链架构, 如图 20, 包括代理层、验证层、业务层和存储层. 与 3 层模型相比, 重
新定义存储层, 以面向库表开发方式抽象底层的库表合约, 并实现数据的统一存储. 增加一个验证层, 并引入交易
回滚机制, 所提出的 4 层模型和算法能够实现链上升级, 以部分整体部署为代价降低合约复杂度和数据迁移成本.
存储合约 商业合约 常规请求
升级请求 升级请求
应用层 DApp
代理合约
存储数据
合约层 返回数据 商业合约 验证合约
交易回滚
面向库表的
验证合约 存储合约 合约开发
数据层 区块链
图 20 4 层模型的总体设计
Nelaturu 等人 [75] 引入 VeriSolid 框架, 用于具有严格操作语义的基于抽象状态机模型, 指定合约的正式验证.
该框架利用 initialize_public 方法, 可在整个合约生命周期的任何时间点使用, 用于动态改变合约逻辑. VeriSolid
支持正确设计、开发和部署多个交互智能合约. 并扩展功能以满足复杂应用场景的需求. Jin 等人 [100] 提出一种名
为 Aroc 的通用智能合约修复程序, 能够修补部署在链上的脆弱合约. Aroc 首先基于固定模板生成包含安全规则
的补丁合约, 并将补丁部署到区块链上, 然后将存在安全漏洞的合约与补丁合约捆绑在一起, 从而使后续交易在调
用原始合约之前, 必须先调用补丁合约. 表 5 为基于链上/链下升级框架的方法小结.
表 5 基于链上/链下升级框架的方法小结
类型 名称 发表年份 主要内容
Angelo等人 [94] 2020 对大量智能合约进行分类, 使用差分代码来支持智能合约链下升级
链下升级框架 Shao等人 [95] 2020 智能合约漏洞日志异常分析, 实现智能合约链下升级的提示
Jean-Louis等人 [29] 2024 基于可信执行环境的智能合约修复区块链架构SGXonerated
Liu等人 [96] 2020 智能合约访问控制服务框架, 实现链上轻量级的基于令牌的访问控制
刘云霞等人 [97,98] 2021 基于区块链的通证智能合约链上升级方法
Du等人 [99] 2023 提出4层合约模型, 引入交易回滚机制实现链上升级
链上升级框架
提出VeriSolid框架, 用于使用具有严格操作语义的基于抽象状态机的模型指
Nelaturu等人 [75] 2022
定的合约的正式验证
Jin等人 [100] 2021 提出Aroc通用智能合约修复程序, 修补部署在链上的脆弱合约
4 升级规范
尽管以太坊的生态系统有了明显的改善, 但开发人员仍然声称缺乏标准、组件库和有用的参考代码 [101] . 这种
情况在设计可升级智能合约中体现得更加明显. 由于上市时间的压力、发布的紧迫性、软件开发工具的不成熟、
高质量培训资源的缺乏, 以及以太坊路线图的不明确和生态系统的快速发展, DApp 开发者难免会在智能合约中

