市值: $2.6065T 1.56%
成交额(24h): $68.1613B 6.30%
恐惧与贪婪指数:

42 - 中立

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

选择语种

选择语种

选择货币

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

什么是代理合同?

Proxy contracts enable upgradable smart contracts by separating logic and storage, allowing developers to update functionality without changing the contract address or losing data.

2025/07/21 07:50

了解代理合同的概念

代理合同是在以太坊等区块链平台上使用的智能合同开发中常用的设计模式。它的主要目的是将合同的逻辑与其存储区分开。这种分离允许开发人员在不更改合同地址或丢失代理本身中存储的数据的情况下升级或修改合同的逻辑。

该代理合同充当中介机构,该中介机构将呼叫另一个合同(通常称为实施合同) 。代理持有所有状态变量,而实施合同包含功能和业务逻辑。这种架构模式对于维持分散应用(DAPP)的长期灵活性至关重要。

代理合同的运作方式

代理合同的机制在很大程度上取决于EVM(以太坊虚拟机)中的授权特征。当用户与代理合同进行互动时,代理使用授权将执行转发到当前实施合同。这样可以确保代码在代理的上下文中运行,这意味着存储,地址和平衡属于代理合同。

这是其工作原理的细分:

  • 代理合同包含对当前实施地址的引用。
  • 当在代理上调用函数时,它使用DelegateCall在实现合同的上下文中执行该函数。
  • 执行过程中所做的所有更改都会影响代理的存储,而不是实施合同。

此方法可以升级性能,而无需重新部署整个合同系统,这对于维持用户信任和合同连续性至关重要。

不同类型的代理合同

有几种类型的代理合同,每种合同都有特定的用例和实施详细信息:

  • 透明代理:此类类型的路由不同,取决于它们是来自管理员还是常规用户。管理员呼叫将转发给代理管理合同,而常规电话转到逻辑合同。
  • UUP(通用升级代理标准) :在此模型中,升级功能是在逻辑合同本身中实现的。这使用相同的标准在所有代理中都实施了一致的升级机制。
  • BEACON代理:该代理人没有直接存储实施地址,而是动态提供当前实施地址的信标合同。这允许同时进行多个代理的质量升级。

每种代理类型在安全性,升级性和复杂性方面都有其优点和权衡。

部署代理合同的步骤

部署代理合同涉及多个步骤。这是一个详细的演练:

  • 部署实施合同:其中包含实际的业务逻辑。如果使用某些代理类型(例如UUP),则不应具有构造函数,因为这可能会干扰未来的升级。
  • 部署代理合同:在部署期间,您指定实施合同的地址。一些代理合同还需要设置管理员地址。
  • 与代理进行互动:所有用户交互应通过代理。使用Truffle , Hardhat或Remix等工具与代理进行交互,并确保使用正确的ABI。
  • 升级实现(如果需要) :当准备就绪逻辑的新版本时,部署新实施合同并更新代理对其的参考。此步骤取决于所使用的代理类型。

这些步骤中的每一个都必须仔细执行,以避免资金或安全漏洞的损失。

代理合同的安全考虑

代理合同引入了开发人员必须解决的新安全挑战:

  • 存储碰撞:如果实现合同和代理未仔细设计,则存储变量可能会重叠,从而导致意想不到的数据损坏。
  • 初始化问题:实施合同中的构造函数如果不替换为初始化功能,可能会导致问题。必须保护这些功能,以防止部署后重新启动。
  • 访问控制:必须严格控制升级合同的能力。管理密钥管理不善会导致恶意升级。
  • 测试复杂性:代理合同增加了测试的复杂性,要求开发人员对代理和实施合同进行彻底测试。

使用诸如Openzeppelin之类的框架的众多审计模式可以减轻许多此类风险。

代理合同的用例

代理合同被广泛用于各种分散融资(FEFI)协议和DAPP,其中长期维护至关重要。一些值得注意的用例包括:

  • 治理控制的升级:诸如AAVE或复合使用代理合同之类的协议,可以允许社区驱动的升级而不会破坏用户交互。
  • 错误修复而无需重新部署:如果在部署的合同中发现了一个关键的错误,则开发人员可以在新实施中修复逻辑并升级代理而不会影响用户余额或合同地址。
  • 多合同系统:在多个合同一起工作的系统中,代理合同可以确保所有组件都可以以协调的方式升级。

这些用例证明了在现实世界区块链应用中代理合同的实际价值。

常见问题

问:是否可以将代理合同用于所有类型的智能合约?答:虽然代理合同广泛适用,但它们可能不适合不需要升级性的无权或不可变的合同。例如,像ERC-20或ERC-721这样的令牌标准通常受益于代理模式,但是某些协议更喜欢信任最小化的不变性。

问:如何有效地测试代理合同?答:测试代理合同涉及验证代理和实施逻辑。使用Hardhat或Foundry等测试框架,并确保所有互动都通过代理进行。嘲笑代理环境和检查存储完整性至关重要。

问:代理合同是否与所有EVM兼容区块链兼容?答:是的,代理合同依赖于EVM功能等EVM功能,这些功能可在所有兼容EVM兼容的链中可用,包括Binance Smart Chain , Polygon和inotum 。但是,工具或合同验证的差异可能会影响部署工作流程。

问:使用代理合同的气体影响是什么?答:由于额外的授权步骤,代理合同增加了少量的开销。但是,此开销通常很少,并且不会显着影响用户体验。可以通过优化代理设计并最大程度地减少冗余呼叫来节省汽油。

免责声明:info@kdj.com

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

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

相关百科

如何计算持有 BTCUSDT 期货头寸的总成本

如何计算持有 BTCUSDT 期货头寸的总成本

2026-10-26 04:06:35

BTCUSDT 期货头寸的总成本构成1. 持有BTCUSDT期货头寸的总成本包括显性费用和隐性费用。显性成本包括开仓和平仓交易费用,而隐性成本主要来自一段时间内的资金费率支付或收入。 2. 开仓费用按照入场时的名义价值与交易所的吃单/挂单费用表的乘积计算——对于主要平台上的吃单来说,开仓费用通常在 ...

如何同时监控 XRPUSDT 资金费率和未平仓合约

如何同时监控 XRPUSDT 资金费率和未平仓合约

2026-10-20 18:39:42

XRPUSDT 永续合约的资金费率机制1. XRPUSDT永续合约的资金费率每八小时计算一次,使用XRP和USDT计价借贷市场之间的溢价指数和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生品 API 端点中发布实时资金费率数据,从而实现仪表板或警报系统的自动摄取。 3. 正的...

如何设置 SOLUSDT 永续合约盈亏平衡止损

如何设置 SOLUSDT 永续合约盈亏平衡止损

2026-10-23 09:34:18

了解盈亏平衡止损机制1. 盈亏平衡止损是一种动态订单,随着头寸盈利变动而向上调整,执行时锁定零净损失。 2. 它仅在交易达到预定利润阈值后才起作用——通常是初始风险或入场费的 1 至 2 倍。 3. 在币安 SOLUSDT 永续合约上,此逻辑必须手动触发或编写脚本,因为本机交易所 UI 不会自动将止...

如何使用币安期货计算器进行 ETHUSDT 交易

如何使用币安期货计算器进行 ETHUSDT 交易

2026-10-21 02:00:11

了解币安期货计算器界面1. 该计算器直接嵌入币安合约交易界面中,可通过订单输入面板下的 ETHUSDT 永续合约页面访问。 2. 随着用户调整输入字段(包括仓位大小、入场价格、杠杆水平以及止盈或止损水平),它会动态更新。 3. 接受多种格式的输入值:合约数量(ETH)、名义价值(USDT)或保证金金...

合约强平前如何查看BTCUSDT标记价格

合约强平前如何查看BTCUSDT标记价格

2026-10-26 12:20:18

了解BTCUSDT期货的标记价格1. 标记价格是交易所为防止市场波动期间出现不公平清算而使用的计算值。 2.反映了来自多个来源的公平、稳定的参考价格,包括指数价格和资金费率。 3. 与最新成交价不同,标记价格包含来自顶级现货交易所的时间加权平均值,以降低操纵风险。 4. 在币安上,BTCUSDT标记...

如何调整 TRUMPUSDT 永续合约的杠杆

如何调整 TRUMPUSDT 永续合约的杠杆

2026-10-30 22:19:37

了解 TRUMPUSDT 永续合约机制1. TRUMPUSDT 是在多个一级衍生品交易所上市的主题永续期货合约,旨在跟踪围绕美国政治叙事而非基础资产基本面的价格情绪。 2、根据平台不同,采用标准的反向或线性结算逻辑,以USDT作为报价和保证金资产。 3. 合约使用的标记价格源自现货 BTC/USDT...

如何计算持有 BTCUSDT 期货头寸的总成本

如何计算持有 BTCUSDT 期货头寸的总成本

2026-10-26 04:06:35

BTCUSDT 期货头寸的总成本构成1. 持有BTCUSDT期货头寸的总成本包括显性费用和隐性费用。显性成本包括开仓和平仓交易费用,而隐性成本主要来自一段时间内的资金费率支付或收入。 2. 开仓费用按照入场时的名义价值与交易所的吃单/挂单费用表的乘积计算——对于主要平台上的吃单来说,开仓费用通常在 ...

如何同时监控 XRPUSDT 资金费率和未平仓合约

如何同时监控 XRPUSDT 资金费率和未平仓合约

2026-10-20 18:39:42

XRPUSDT 永续合约的资金费率机制1. XRPUSDT永续合约的资金费率每八小时计算一次,使用XRP和USDT计价借贷市场之间的溢价指数和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生品 API 端点中发布实时资金费率数据,从而实现仪表板或警报系统的自动摄取。 3. 正的...

如何设置 SOLUSDT 永续合约盈亏平衡止损

如何设置 SOLUSDT 永续合约盈亏平衡止损

2026-10-23 09:34:18

了解盈亏平衡止损机制1. 盈亏平衡止损是一种动态订单,随着头寸盈利变动而向上调整,执行时锁定零净损失。 2. 它仅在交易达到预定利润阈值后才起作用——通常是初始风险或入场费的 1 至 2 倍。 3. 在币安 SOLUSDT 永续合约上,此逻辑必须手动触发或编写脚本,因为本机交易所 UI 不会自动将止...

如何使用币安期货计算器进行 ETHUSDT 交易

如何使用币安期货计算器进行 ETHUSDT 交易

2026-10-21 02:00:11

了解币安期货计算器界面1. 该计算器直接嵌入币安合约交易界面中,可通过订单输入面板下的 ETHUSDT 永续合约页面访问。 2. 随着用户调整输入字段(包括仓位大小、入场价格、杠杆水平以及止盈或止损水平),它会动态更新。 3. 接受多种格式的输入值:合约数量(ETH)、名义价值(USDT)或保证金金...

合约强平前如何查看BTCUSDT标记价格

合约强平前如何查看BTCUSDT标记价格

2026-10-26 12:20:18

了解BTCUSDT期货的标记价格1. 标记价格是交易所为防止市场波动期间出现不公平清算而使用的计算值。 2.反映了来自多个来源的公平、稳定的参考价格,包括指数价格和资金费率。 3. 与最新成交价不同,标记价格包含来自顶级现货交易所的时间加权平均值,以降低操纵风险。 4. 在币安上,BTCUSDT标记...

如何调整 TRUMPUSDT 永续合约的杠杆

如何调整 TRUMPUSDT 永续合约的杠杆

2026-10-30 22:19:37

了解 TRUMPUSDT 永续合约机制1. TRUMPUSDT 是在多个一级衍生品交易所上市的主题永续期货合约,旨在跟踪围绕美国政治叙事而非基础资产基本面的价格情绪。 2、根据平台不同,采用标准的反向或线性结算逻辑,以USDT作为报价和保证金资产。 3. 合约使用的标记价格源自现货 BTC/USDT...

查看所有文章

User not found or password invalid

Your input is correct