市值: $2.2005T -4.96%
成交额(24h): $143.5247B 3.74%
恐惧与贪婪指数:

23 - 极度恐惧

  • 市值: $2.2005T -4.96%
  • 成交额(24h): $143.5247B 3.74%
  • 恐惧与贪婪指数:
  • 市值: $2.2005T -4.96%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

如何使用代理模式升级智能合约?

The Ethereum proxy pattern separates logic and storage, enabling upgrades via delegatecall while preserving state—provided storage layout remains consistent across versions.

2026/01/23 03:40

了解以太坊中的代理模式

1. 代理模式通过部署两个独立的合约:代理和实现,将合约逻辑与存储解耦。

2. 用户与代理进行专门交互,代理使用 delegatecall 将所有调用转发到当前实现合约。

3. 存储布局必须在实施升级中保持一致,以防止数据损坏或错位。

4.代理为实现地址维护单个存储槽,允许其更新而不影响用户状态。

5. 该架构支持向后兼容的更改,同时保留链上余额、配额和历史交互。

透明代理的关键组件

1. 代理合约包含一个回退函数,该函数通过 delegatecall 将外部调用路由到指定的实现。

2. 强制执行管理员角色来限制升级权限——只有授权地址才可以更改实现指针。

3. 修改器在执行升级逻辑之前检查调用者是否是管理员,防止未经授权的重新配置。

4. 实现合约必须继承定义存储结构的基础合约,确保与代理的布局保持一致。

5. 跨版本保留函数选择器;新功能必须避免与现有功能发生冲突,除非故意覆盖行为。

部署和升级步骤

1. 部署包含核心业务逻辑和所需状态变量的初始实现合约。

2. 部署代理合约,使用第一个实现的地址初始化其存储并设置管理地址。

3. 通过调用测试函数并确认返回值与预期输出匹配,验证代理是否正确委派调用。

4. 升级时,编译并部署一个新的实现合约,修改逻辑但存储布局相同。

5.使用新的实现地址调用代理的upgradeTo函数,确保只有管理员触发此交易。

安全考虑和陷阱

1. 实现之间丢失或不正确的存储布局对齐会导致静默数据损坏 - 变量可能从错误的插槽中读取。

2. 未能保护管理员角色会使整个系统面临恶意升级;应考虑多重签名钱包或时间锁。

3. 部署后必须单独调用初始化函数,因为构造函数不在 delegatecall 上下文中执行。

4. 嵌入在实现代码中的外部库依赖项也必须一致升级,因为它们的字节码是逻辑契约的一部分。

5. 如果升级逻辑不能在关键转换期间正确防止递归委托调用,重入风险就会增加。

常见问题解答

问:部署后可以更改管理地址吗?是的,大多数代理实现都包含一个changeAdmin 函数,如果当前管理员发起呼叫,则允许更新管理员地址。

问:如果我忘记初始化升级后的实施,会发生什么情况?合约状态仍未初始化,可能会将关键变量保留为默认值(例如零或空地址),从而导致意外行为。

问:是否可以降级到之前的实施版本?是的,只要先前的实施合约仍然存在于链上并保留兼容的存储布局,技术上就支持降级。

问:委托调用期间发出的事件是否出现在代理地址或实现地址下?事件在代理的地址下发出,因为 EVM 在发出事件时记录调用上下文,而不是委托调用的目标。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

2026-06-04 16:40:15

账户级损失限额配置1. 使用双因素身份验证通过网络或移动应用程序登录您的 Bybit 帐户。 2. 导航至“资产”部分,然后从左侧菜单中选择“风险管理”。 3. 选择“每日损失限制”并将该功能切换为“开”以激活控制。 4. 输入代表当前交易日 USDT 最大允许净亏损的数值。 5. 使用您的电子邮件...

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

2026-06-04 03:59:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何处理美国加密货币期货交易利润的税务影响?

如何处理美国加密货币期货交易利润的税务影响?

2026-05-29 18:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年)区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减少...

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

2026-06-02 04:39:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何在币安合约交易平台下冰山订单以隐藏我的大头寸规模?

如何在币安合约交易平台下冰山订单以隐藏我的大头寸规模?

2026-06-02 10:20:30

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

如何解读币安合约交易平台的多空比率来衡量市场情绪?

如何解读币安合约交易平台的多空比率来衡量市场情绪?

2026-05-29 09:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3. 矿工在每个经过验证的区块中收到的代币较少,供应紧张,而需求动态仍然独立于协议规则。 ...

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

如何在Bybit上设置风险管理规则来限制我的每日最大损失?

2026-06-04 16:40:15

账户级损失限额配置1. 使用双因素身份验证通过网络或移动应用程序登录您的 Bybit 帐户。 2. 导航至“资产”部分,然后从左侧菜单中选择“风险管理”。 3. 选择“每日损失限制”并将该功能切换为“开”以激活控制。 4. 输入代表当前交易日 USDT 最大允许净亏损的数值。 5. 使用您的电子邮件...

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

如何将我的未平仓期货头寸从币安迁移到Bybit而不平仓?

2026-06-04 03:59:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何处理美国加密货币期货交易利润的税务影响?

如何处理美国加密货币期货交易利润的税务影响?

2026-05-29 18:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年)区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减少...

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

如何利用Bybit交易机器人市场寻找有利可图的期货策略?

2026-06-02 04:39:47

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

如何在币安合约交易平台下冰山订单以隐藏我的大头寸规模?

如何在币安合约交易平台下冰山订单以隐藏我的大头寸规模?

2026-06-02 10:20:30

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

如何解读币安合约交易平台的多空比率来衡量市场情绪?

如何解读币安合约交易平台的多空比率来衡量市场情绪?

2026-05-29 09:19:59

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3. 矿工在每个经过验证的区块中收到的代币较少,供应紧张,而需求动态仍然独立于协议规则。 ...

查看所有文章

User not found or password invalid

Your input is correct