[温度检查] 协议费用扩展:新增八条链及剩余主网 V3 池
摘要
AI 生成本提案旨在扩展 Uniswap 协议费用至 Arbitrum、Base 等八条 L2 链,并通过新的 v3OpenFeeAdapter 在主网及这些 L2 上为所有 v3 池启用基于层级的协议费用。费用将路由至各链的 TokenJar,L2 上销毁的 UNI 会桥接回主网并发送至 0xdead 地址。提案采用新的治理流程,可绕过 RFC 阶段直接进行 Snapshot 和链上投票。由于 GovernorBravo 限制,将分两个并行链上提案执行。
注:摘要由 AI 自动生成,可能与正文存在差异,仅供参考。
提案内容
AI 翻译[温度检查] 协议费用扩展:新增八条链及剩余主网 v3 池
这是首个使用在 UNIfication 中 已批准 的新治理流程的提案。新流程仅适用于费用参数更新,此类提案可以绕过 RFC 阶段,直接进入为期五天的 Snapshot 投票,随后进行链上投票。这使得协议费用更新更快,同时保留了链上治理的安全性。
自 UNIfication 于 12 月底上线以来,我们一直在监控协议费用,这些费用是逐步推出的,以确保协议健康。这始于以太坊主网上的 v2 和选定的 v3 池。此次推出进展顺利,自 12 月以来,以太坊主网上经市场调整的 TVL 有所上升。销毁系统按预期运行,无需许可地将 许多不同代币 的费用转换为 UNI 销毁。
现在,我们提议:
- 将 v2 和 v3 的协议费用扩展到 Arbitrum、Base、Celo、OP Mainnet、Soneium、X Layer、Worldchain 和 Zora
- 通过主网和上述 L2 上新的基于层级的 v3OpenFeeAdapter 在所有 v3 池上启用协议费用
实施细节
将协议费用扩展到 L2 并在主网销毁 UNI
该提案在八条链上引入 v2 和 v3 协议费用。每条链上的费用将被路由到该链各自的 TokenJar。
在 L2 上销毁的 UNI 不会留在 L2 上——它会被桥接回主网并发送到 0xdead。这使用了与销毁 Unichain 排序器费用相同的基础设施(OP Stack 链使用 OptimismBridgedResourceFirepit,Arbitrum 使用 ArbitrumBridgedResourceFirepit)。
在所有 v3 池上启用费用
当前的 v3FeeAdapter 逐个池管理协议费用,治理维护着各个池及其费用级别的列表。目前,这些池占据了以太坊主网上 v3 交易量的绝大部分。
v3OpenFeeAdapter 用一个基于层级的系统取代了这一点。协议费用在共享相同 LP 费用层级的所有池中统一设置。例如,所有 1bps LP 费用池的协议费用可以设置为 25%。任何池都会自动获得其层级的默认协议费用,无需治理行动。这意味着如果此提案通过,协议费用将在每个 v3 池上生效。治理保留覆盖单个池费用的能力。
提案规范
提案前 - 在链上投票前完成:
/// 对于每个 L2:
/// 部署 TokenJar
TokenJar tokenJar = new TokenJar{salt: SALT_TOKEN_JAR}();
/// 部署特定于链的 Releaser
/// OP Stack (Optimism, Base, Zora, Worldchain 等):
OptimismBridgedResourceFirepit releaser = new OptimismBridgedResourceFirepit{salt: SALT_RELEASER}(RESOURCE, THRESHOLD, address(tokenJar));
/// Arbitrum:
ArbitrumBridgedResourceFirepit releaser = new ArbitrumBridgedResourceFirepit{salt: SALT_RELEASER}(RESOURCE, L1_RESOURCE, THRESHOLD, address(tokenJar));
/// 在 TokenJar 上设置 releaser(必须在所有权转移之前)
tokenJar.setReleaser(address(releaser));
/// 在 Releaser 上设置 thresholdSetter(必须在所有权转移之前)
releaser.setThresholdSetter(TIMELOCK_ALIAS);
/// 将 TokenJar 和 Releaser 的所有权转移给治理
tokenJar.transferOwnership(TIMELOCK_ALIAS);
releaser.transferOwnership(TIMELOCK_ALIAS);
/// 对于每个 L2 和主网:
/// 部署 V3OpenFeeAdapter
V3OpenFeeAdapter v3OpenFeeAdapter = new V3OpenFeeAdapter{salt: SALT_FEE_ADAPTER}(address(V3_FACTORY), address(tokenJar));
/// 设置 feeSetter(必须在所有权转移之前)
v3OpenFeeAdapter.setFeeSetter(TIMELOCK_ALIAS); // L2
v3OpenFeeAdapter.setFeeSetter(TIMELOCK); // 主网
/// 将所有权转移给治理
v3OpenFeeAdapter.transferOwnership(TIMELOCK_ALIAS); // L2
v3OpenFeeAdapter.transferOwnership(TIMELOCK); // 主网
/// 仅对于主网:
/// 部署 Firepit(仅主网 releaser,直接销毁)
Firepit releaser = new Firepit{salt: SALT_RELEASER}(RESOURCE, THRESHOLD, address(tokenJar));
/// 在 TokenJar 上设置 releaser(必须在所有权转移之前)
tokenJar.setReleaser(address(releaser));
/// 在 Releaser 上设置 thresholdSetter(必须在所有权转移之前)
releaser.setThresholdSetter(TIMELOCK);
/// 将 TokenJar 和 Releaser 的所有权转移给治理
tokenJar.transferOwnership(TIMELOCK);
releaser.transferOwnership(TIMELOCK);
在此提案中,如果通过:
/// 对于每个 L2:
/// 将 V3 Factory 的所有者设置为 V3OpenFeeAdapter
V3_FACTORY.setOwner(address(v3OpenFeeAdapter));
/// 将 V2 协议费用的接收者设置为 TokenJar
V2_FACTORY.setFeeTo(address(tokenJar));
/// 对于主网:
/// 通过 V3OpenFeeAdapter 转移 V3 Factory 所有权
v3OpenFeeAdapter.setFactoryOwner(address(v3OpenFeeAdapter));
治理流程
请注意,由于 GovernorBravo 每个提案限制 10 个操作,将有两个独立的链上投票并行发布。一个提案将包括对主网费用控制器的更改,并在 Base、OP Mainnet 和 Arbitrum 上启用费用;另一个将在 Celo、Soneium、Worldchain、X Layer 和 Zora 上启用费用。