-
bitcoin $77323.969542 USD
0.01% -
ethereum $2523.414850 USD
2.23% -
tether $0.999674 USD
0.01% -
bnb $732.334794 USD
2.37% -
xrp $1.364311 USD
0.51% -
usd-coin $0.999831 USD
0.00% -
solana $101.751035 USD
1.88% -
tron $0.339246 USD
0.15% -
hyperliquid $78.911101 USD
-1.42% -
zcash $1143.169120 USD
2.95% -
dogecoin $0.084522 USD
0.58% -
monero $539.820025 USD
5.75% -
chainlink $11.538258 USD
0.03% -
unus-sed-leo $9.111763 USD
0.28% -
cardano $0.208079 USD
-0.46%
如何使用代理模式升级智能合约?
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),我们将及时删除。
- CPEN Network Ink 代币:深入探讨移动挖矿、代币经济及其不断发展的遗产
- 2026-09-12 16:35:02
- XRP 投资者在市场不确定性和重大经济事件中面临关键决策
- 2026-09-12 16:40:01
- 在市场波动中,以太坊鲸鱼推动 ETH 飙升至 8 个月高位
- 2026-09-12 16:35:02
- sUSDe 收益率、Aave 借款利率和 USDe 循环:在 DeFi 的“大苹果”中走钢丝
- 2026-09-12 12:45:01
- USDC Bridge CCTP、稳定币链变、Bridge 关闭:引领跨链转账新时代
- 2026-09-12 12:45:01
- 在投资者强烈抗议和激励计划撤回之际,Metaplanet 将高管股份削减 41.1%
- 2026-09-12 12:35:02
相关百科
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何看懂DOGEUSDT永续合约图表?
2026-09-11 19:19:48
了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...
如何在币安查看BTC合约资金费用?
2026-09-10 08:00:06
找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...
如何计算SOLUSDT期货盈亏?
2026-09-10 19:19:37
了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...
如何计算XRPUSDT期货盈亏?
2026-09-09 17:40:21
了解 XRPUSDT 期货合约规格1、每张XRPUSDT永续合约以USDT报价,以USDT结算,每张合约面值为1XRP。 2. 对于包括 Binance 和 Bybit 在内的大多数主要交易所,最小价格增量(报价单位)为 0.0001 美元。 3. 杠杆范围从 1 倍到 75 倍不等,具体取决于头寸...
如何查看DOGE期货成交量及持仓量?
2026-09-12 08:39:38
了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...
如何查看BTC期货交易量和持仓量?
2026-09-12 15:19:55
BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...
如何看懂DOGEUSDT永续合约图表?
2026-09-11 19:19:48
了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...
如何在币安查看BTC合约资金费用?
2026-09-10 08:00:06
找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...
如何计算SOLUSDT期货盈亏?
2026-09-10 19:19:37
了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...
如何计算XRPUSDT期货盈亏?
2026-09-09 17:40:21
了解 XRPUSDT 期货合约规格1、每张XRPUSDT永续合约以USDT报价,以USDT结算,每张合约面值为1XRP。 2. 对于包括 Binance 和 Bybit 在内的大多数主要交易所,最小价格增量(报价单位)为 0.0001 美元。 3. 杠杆范围从 1 倍到 75 倍不等,具体取决于头寸...
查看所有文章














