-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
如何升级智能合约?
Smart contract upgradability enables developers to enhance functionality or fix bugs without altering the contract's address or state, using methods like proxy contracts, unstructured storage, or eternal storage patterns.
2025/07/24 02:01
了解智能合同升级性
智能合约是通过设计不变的,这意味着一旦部署在区块链上,它们的代码就无法更改。但是,升级智能合约是需要修复错误,改善功能或适应不断变化条件的开发人员的至关重要要求。智能合约的升级性不是对现有合同的直接修改,而是涉及设计模式,该模式可以在保留合同的状态和地址的同时改变逻辑。
有几种方法可以实现这一目标,包括代理合同,非结构化存储代理和永恒的存储模式。每种方法都有其优点和缺点。开发人员必须仔细评估哪种方法最适合其用例,然后再将升级性升级到其智能合约中。
使用代理合同以升级
升级智能合约的最常见和安全方法之一是使用代理合同。这涉及部署两个合同:持有国家和转发电话的代理合同,以及包含实际逻辑的实施合同。
- 用代理合同使用代理合同指向实施合同。
- 部署包含智能合约逻辑的初始实施合同。
- 将代理合同的实施地址设置为指向实施合同的地址。
- 需要升级时,请部署具有更新的逻辑的新实施合同。
- 更新代理合同的实施指针指向新的实施合同地址,而无需更改代理的地址或州。
此方法可确保用户与相同的合同地址进行交互,而基础逻辑可以无缝升级。
非结构化存储代理模式
非结构化存储代理模式是代理合同方法的高级版本。它使用存储插槽来存储实现地址,从而使其与意外覆盖更加安全。
- 在代理合同中定义特定的存储插槽以存储实施地址。
- 在代理合同中编写一个后备功能,该合同使用DelegateCall将所有功能调用转发到实施合同。
- 部署代理合同和初始实施合同。
- 使用内联装配或预定义功能在指定的存储插槽中设置实现地址。
- 要升级,请部署新版本的实现合同,并在存储插槽中更新代理的实现地址。
该方法将代理的存储与实施隔离,从而降低了存储碰撞的风险并确保更安全的升级。
实施永恒的存储模式
永恒的存储模式将数据存储与逻辑分开,从而使开发人员可以升级逻辑而不会影响数据。这对于数据持久性至关重要的长期合同特别有用。
- 创建一个存储所有数据变量的存储合同。
- 制定通过功能调用与存储合同相互作用的逻辑合同。
- 将逻辑合同链接到部署期间或通过注册表合同期间的存储合同。
- 当需要升级时,请部署新的逻辑合同并在注册表或存储合同中更新参考。
- 确保新的逻辑合同遵循与先前版本相同的接口和数据结构,以保持兼容性。
这种模式为升级逻辑提供了灵活性,同时保持数据完整,使其非常适合复杂的分散应用程序。
升级智能合约的考虑因素
升级智能合约并非没有风险。开发人员必须在实施升级之前考虑几个关键因素:
- 安全含义:任何升级机制都引入了潜在的攻击向量。彻底审核代理和实施合同至关重要。
- 访问控制:升级的能力应仅限于受信任的实体。实施多签名治理或时间表可以增强安全性。
- 兼容性:新实施必须与现有数据结构和功能签名兼容,以避免违反合同。
- 测试:需要严格的测试以确保升级按预期工作,并且不会引入新的错误或漏洞。
- 文档:清晰的升级过程和机制的文档对于将来的维护和透明度至关重要。
这些考虑因素有助于确保升级机制坚固,安全和可维护。
常见问题
谁能升级智能合同?不,升级智能合约的能力通常仅限于合同中定义的特定地址或角色。这些角色可能包括所有者地址,治理合同或多智钱包。
无需使用代理合同而可以升级性吗?是的,尽管代理合同是最常见的方法,但其他方法(例如永恒的存储方式或模块化合同设计)也可以根据体系结构升级。
合同升级期间用户资金会发生什么?在升级期间,用户资金仍然安全,因为代理合同维护相同的地址和状态。基础逻辑已更新,但存储和平衡仍然不受影响。
在部署前如何测试智能合同升级?您可以通过模拟升级过程来测试本地区块链或TestNet上的升级。使用Hardhat或Truffle等工具在受控环境中部署和测试代理和实施合同。
免责声明:info@kdj.com
所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!
如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。
- 随着比特币交易员在市场波动中关注关键水平,MARA 股票飙升
- 2026-02-05 04:25:01
- 以太坊的狂野之旅:汽油费、超级拉力梦想和 Vitalik 的 L2 现实检查冲击纽约
- 2026-02-05 04:20:01
- 特朗普代币、数字足迹和 $MAXI:个性驱动的加密货币和“健身房兄弟”经济学的新时代
- 2026-02-05 04:20:01
- 比特币的坎坷之路:市场疲软与监管乐观相冲突
- 2026-02-05 04:10:01
- Exaverse 呼啸而至 Roguelike 场景:恐龙冒险等待着您!
- 2026-02-05 00:30:01
- SpaceX、狗狗币和月球任务:太空加密货币新时代
- 2026-02-05 04:05:02
相关百科
期货中如何管理情绪和“报复性交易”?
2026-02-05 00:19:32
了解期货市场的情绪触发因素1. 市场波动直接影响心理状态,往往会因价格快速波动而加剧恐惧或兴奋。 2. 损失会激活大脑的威胁反应系统,导致冲动决策而不是系统分析。 3. 社交媒体信息和群聊经常强化情绪化叙事,扭曲客观风险评估。 4. 过度接触实时损益更新会增加皮质醇水平,从而降低头寸管理期间的认知灵...
如何使用成交量概况来查找关键的期货入场水平?
2026-02-04 23:39:35
了解卷配置文件结构1. 成交量概况显示指定时间段内特定价格水平的交易量分布,在图表上形成水平直方图。 2. 控制点(POC)代表成交量集中度最高的价格水平,通常充当价格反转的磁石。 3. 价值区域高位 (VAH) 和价值区域低位 (VAL) 包含占总交易量 70% 的范围,标志着统计上显着的支撑和阻...
如何利用全仓杠杆交易最大化资金效率?
2026-02-05 00:40:24
全仓保证金交易基础知识1. 全仓保证金交易允许交易者使用其全部账户余额作为抵押品同时跨多个市场开仓。 2. 与逐仓保证金不同,全仓保证金会动态分配钱包中持有的所有资产的权益。 3. 当一种资产经历短期波动而其他资产保持稳定或增值时,该模型降低了过早清算的风险。 4. 保证金利用率是根据投资组合范围内...
如何使用指数移动平均线(EMA)进行期货趋势追踪?
2026-02-05 04:40:17
了解期货市场中的 EMA 机制1. 指数移动平均线为最近的价格数据分配更大的权重,使其比简单移动平均线更具响应性。 2. 交易者通常使用 9 周期、21 周期和 50 周期 EMA 来捕捉短期、中期和长期动量变化。 3. 在高杠杆期货合约中,快速 EMA 交叉可能预示着政权的突然变化——尤其是在新闻...
如何使用TradingView警报自动执行期货交易?
2026-02-04 21:00:31
设置期货合约的 TradingView 警报1. 登录您的 TradingView 账户并打开所需期货工具的图表,例如 Binance 或 Bybit 上的 BTC/USD 或 ETH/USD 永续合约。 2. 使用您喜欢的指标、烛台时间框架和绘图工具配置图表,以定义精确的入场和出场条件。 3. 点...
期货交易中如何使用单向模式与对冲模式?
2026-02-04 18:19:57
了解单向模式1. 单向模式在任何给定时间为每种资产建立单一头寸方向(多头或空头)。 2. 交易者不能在同一交易品种上持有相反的头寸,这简化了保证金计算和风险敞口跟踪。 3. 初始保证金是根据未平仓头寸的名义价值和所选杠杆水平计算的。 4. 当保证金余额低于专门与该单一头寸相关的维持阈值时,就会发生清...
期货中如何管理情绪和“报复性交易”?
2026-02-05 00:19:32
了解期货市场的情绪触发因素1. 市场波动直接影响心理状态,往往会因价格快速波动而加剧恐惧或兴奋。 2. 损失会激活大脑的威胁反应系统,导致冲动决策而不是系统分析。 3. 社交媒体信息和群聊经常强化情绪化叙事,扭曲客观风险评估。 4. 过度接触实时损益更新会增加皮质醇水平,从而降低头寸管理期间的认知灵...
如何使用成交量概况来查找关键的期货入场水平?
2026-02-04 23:39:35
了解卷配置文件结构1. 成交量概况显示指定时间段内特定价格水平的交易量分布,在图表上形成水平直方图。 2. 控制点(POC)代表成交量集中度最高的价格水平,通常充当价格反转的磁石。 3. 价值区域高位 (VAH) 和价值区域低位 (VAL) 包含占总交易量 70% 的范围,标志着统计上显着的支撑和阻...
如何利用全仓杠杆交易最大化资金效率?
2026-02-05 00:40:24
全仓保证金交易基础知识1. 全仓保证金交易允许交易者使用其全部账户余额作为抵押品同时跨多个市场开仓。 2. 与逐仓保证金不同,全仓保证金会动态分配钱包中持有的所有资产的权益。 3. 当一种资产经历短期波动而其他资产保持稳定或增值时,该模型降低了过早清算的风险。 4. 保证金利用率是根据投资组合范围内...
如何使用指数移动平均线(EMA)进行期货趋势追踪?
2026-02-05 04:40:17
了解期货市场中的 EMA 机制1. 指数移动平均线为最近的价格数据分配更大的权重,使其比简单移动平均线更具响应性。 2. 交易者通常使用 9 周期、21 周期和 50 周期 EMA 来捕捉短期、中期和长期动量变化。 3. 在高杠杆期货合约中,快速 EMA 交叉可能预示着政权的突然变化——尤其是在新闻...
如何使用TradingView警报自动执行期货交易?
2026-02-04 21:00:31
设置期货合约的 TradingView 警报1. 登录您的 TradingView 账户并打开所需期货工具的图表,例如 Binance 或 Bybit 上的 BTC/USD 或 ETH/USD 永续合约。 2. 使用您喜欢的指标、烛台时间框架和绘图工具配置图表,以定义精确的入场和出场条件。 3. 点...
期货交易中如何使用单向模式与对冲模式?
2026-02-04 18:19:57
了解单向模式1. 单向模式在任何给定时间为每种资产建立单一头寸方向(多头或空头)。 2. 交易者不能在同一交易品种上持有相反的头寸,这简化了保证金计算和风险敞口跟踪。 3. 初始保证金是根据未平仓头寸的名义价值和所选杠杆水平计算的。 4. 当保证金余额低于专门与该单一头寸相关的维持阈值时,就会发生清...
查看所有文章














