You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

智能合约升级模式:Strategy模式与Diamond模式的差异

智能合约升级:Strategy模式与Diamond模式的差异及选型分析

背景

本人正在研究智能合约升级模式,发现Strategy模式与Diamond模式结构十分相似:Strategy模式的Main合约对应Diamond模式的Proxy合约,Satellite合约对应Facets。目前仅发现两者的细微差异在于追踪附属合约的方式:Diamond模式使用facets映射,Strategy模式仅存储satellite合约地址。

问题解答

1. 两种模式是否存在其他被忽略的差异?

除了追踪附属合约的方式,两者还有以下核心差异:

  • 函数路由逻辑:Diamond模式基于函数选择器(function selector)建立映射,Proxy会根据调用的函数签名,精准路由到对应Facet的目标函数;Strategy模式通常以整个Satellite合约为逻辑单元,调用时需明确指定Satellite地址后再调用其函数,或由Main合约预设对应逻辑的Satellite地址进行转发。
  • 状态存储机制:Diamond模式遵循EIP-2535规范,所有状态集中存储在Proxy(Diamond)合约中,Facet可直接访问这些状态;Strategy模式的Satellite合约一般拥有独立状态,或需通过Main合约传递状态,状态分散在多个合约中,可能需要额外的同步逻辑。
  • 标准化程度:Diamond模式有明确的行业标准,社区配套工具成熟;Strategy模式无统一标准,实现方式更灵活但碎片化。
  • 升级粒度:Diamond模式支持单函数级升级,可仅替换某一函数的实现;Strategy模式通常只能升级整个Satellite合约,升级粒度较粗。

2. 选择其中一种模式相比另一种有何优势?

Diamond模式的优势

  • 精细化升级:可针对单个函数进行替换,升级成本低、影响范围小,适合大型复杂合约系统的迭代。
  • 状态集中管理:状态统一存于Proxy,避免状态分散导致的同步问题,逻辑更清晰。
  • 生态成熟:有标准规范和成熟工具支持,开发、审计、部署流程更标准化,降低风险。
  • 扩展性强:可逐步添加新Facet扩展功能,无需重构原有合约结构。

Strategy模式的优势

  • 实现简单:无复杂的函数路由逻辑,开发门槛低,适合小型项目或逻辑简单的合约系统。
  • 逻辑隔离清晰:每个Satellite是独立逻辑单元,职责单一,便于单独测试和维护。
  • 灵活性高:无需遵循固定标准,可根据项目需求自定义Main与Satellite的交互方式,适配特殊业务场景。

内容的提问来源于stack exchange,提问作者darshanags

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:20:22