首页
/ Safe智能账户模块守卫上下文数据传递方案探讨

Safe智能账户模块守卫上下文数据传递方案探讨

2025-07-05 10:53:16作者:幸俭卉

背景介绍

Safe智能账户项目在开发过程中遇到了一个关于模块守卫(Module Guard)功能的设计问题。模块守卫作为Safe账户安全机制的重要组成部分,负责验证由模块发起的交易。然而当前实现中,模块守卫在执行检查时无法获取交易相关的上下文信息,这限制了其功能的灵活性。

问题分析

在解决具体问题(如负控制场景下的共同签名验证)时,开发团队发现模块守卫缺乏获取额外上下文数据的能力。当前的模块守卫接口仅接收基本交易参数(目标地址、金额、数据、操作类型和模块地址),无法满足某些高级验证场景的需求。

解决方案探讨

团队提出了三种主要解决方案,各有优缺点:

方案一:修改Safe合约及模块守卫接口

此方案通过在模块守卫的检查函数中增加上下文参数,并在Safe合约中新增支持上下文的重载函数来实现。

优点

  • 模块守卫接口尚未正式发布,修改不会影响现有部署
  • 对Safe合约的修改保持向后兼容

缺点

  • 增加Safe合约代码大小(但仍保持在24KB限制内)
  • 需要模块开发者适配新接口

方案二:预执行设置上下文信息

此方案利用模块守卫自身的存储(或临时存储)来保存上下文信息。在执行模块交易前,Safe账户通过单独交易或多重发送方式将上下文信息存入守卫。

优点

  • 无需修改Safe核心合约

缺点

  • 守卫需要实现额外的存储管理逻辑
  • 增加存储读写带来的gas成本
  • 需要额外的预执行调用

方案三:模块自行管理上下文

此方案由模块自行存储上下文信息,守卫通过调用模块接口获取所需上下文。

优点

  • 无需修改Safe合约

缺点

  • 需要模块实现特定接口
  • 增加存储访问的gas成本
  • 模块与守卫需要约定协议

技术评估与决策

经过深入讨论,团队认为:

  1. 上下文需求目前仅出现在特定用例(如负控制)中,尚不具备普遍性
  2. 通过多重发送等现有机制已能实现上下文传递
  3. 引入标准化上下文协议可能增加开发者复杂度和审计难度
  4. 类似功能可通过ERC7579等现有标准实现

基于以上考量,团队决定不修改Safe核心合约,也不强制要求守卫或模块实现特定接口。对于需要上下文验证的特定用例,建议采用方案二的变体(通过多重发送设置守卫上下文)或直接在模块内部实现验证逻辑。

结论

Safe智能账户项目在模块守卫上下文传递问题上进行了全面评估,最终选择了保持核心合约稳定性的方案。这一决策体现了项目对向后兼容性和开发者体验的重视,同时也为特定用例提供了可行的替代实现路径。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
858
509
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
257
300
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
22
5