Wrapped Native 一个更好的原生代币 Wrap 方案
Limit Break 很高兴地宣布发布 Wrapped Native,这是 Wrapped Ether (WETH) 的现代升级。像 Limit Break 的 NFT 交易协议 Payment Processor 这样的协议依赖于 WETH 来正常运行并支持 NFT 出价用例。然而,随着 EVM 链数量的增加,一个关键挑战是 WETH 在不同链上的地址不一致。跨链的不一致代币地址使得 Payment Processor 难以自由部署到新链上,因为需要自定义配置以指定每条链上的唯一 WETH 地址。作为其整个创作者优先协议套件向无许可部署模型过渡的一部分,Limit Break 有必要创建一个新的 WETH 版本,可以在任何 EVM 区块链上由任何人部署到一致的地址。除了支持确定性地址外,Limit Break 还在许多改进上投入了大量精力,以帮助现代化和改善用户体验,并使其在其他 DeFi 协议中更有用。
Wrapped Native 在 MIT 许可证下发布,可以使用新的基础设施部署工具自由部署到任何 EVM 兼容链上,网址为 https://developers.erc721c.com/infrastructure 。 只需将任何以太坊钱包连接到基础设施部署工具,即可在你选择的链上将 Wrapped Native 合约部署并验证到地址 0x6000030000842044000077551D00cfc6b4005900。
源代码可在 Wrapped Native Github 上找到。如果你是对 Wrapped Native 的增强功能和特性感兴趣的开发者,请继续阅读本文的其余部分。
WETH 是一个核心 EVM 原语,提供了一个代表以太 (ETH) 的 ERC-20 代币。WETH 之所以重要,是因为它简化了 ETH 与各种智能合约协议的集成。许多流行的用例都由 WETH 支持,包括:
WETH 的规范实现称为 WETH9,它于 2017 年 12 月首次部署到以太坊主网,并使用 solc v0.4.19
编译,目标是最早的 EVM 版本之一 byzantium
。自 WETH9 部署以来,EVM 已经历了七次重大升级,solc 也经历了四个主要版本和数十个小版本。
此外,当 WETH9 发布时,没有显著的侧链或 L2。自那时起,EVM 生态系统已经增长并分裂为数千个 EVM 兼容的 L2/L3、侧链和应用链,具有可配置的本地 gas 代币。虽然许多 L2 仍然以 ETH 定价 gas,但越来越多的 L2 和 L3 使用自定义代币来定价交易费用,因此在这些自定义链上,Wrapped Ether 这个术语并不总是合适的。更糟糕的是,WETH9 合约在所有链上没有一致的地址,因此应用程序和协议必须意识到并配置为在每条链上使用自定义 WETH 地址,这造成了显著的开销,并且不允许对核心原语进行常量或不可变变量的优化!
自 WETH9 问世以来,许多现代链仍然部署并使用 WETH9 来实现其包装的本地 gas 代币。WETH 的技术更新早已过期。幸运的是,Limit Break 构建了一个现代化的、更高效的合约,称为 Wrapped Native,可以替代过时的 WETH 实现。
在一个由数千个 EVM 链组成的世界中,具有可定制的非 ETH 本地代币,将 ERC-20 表示称为 Wrapped Native (WNATIVE) 更有意义。与 WETH9 类似,Wrapped Native 将链的本地 gas 代币包装成一个 ERC-20 代币。Wrapped Native 旨在成为一个更高效、更现代化、更全面的规范替代品,具有以下相对于 WETH9 的改进。
approve
和 transfer
函数是可支付的 — 当 msg.value > 0
时将自动存款。此功能将允许用户在单个操作中包装并批准协议,而不是两个,从而改善用户体验并节省 gas!depositTo
— 允许存款人指定要给予包装本地代币的地址。与 deposit + transfer
相比,这对于包装本地退款等操作更高效。withdrawToAccount
— 允许提取者提取到不同的地址。withdrawSplit
— 允许提取者一次提取并发送本地代币到多个地址。注意:WNATIVE 保留了 WETH9 中可用的所有接口,以保持与现有生态系统工具的兼容性。
注意:基准测试仅关注 WETH9 和 WNATIVE 之间共享的接口,不包括 WETH9 中不存在的功能的测量。基准测试的准备和执行是为了在两个合约上重现相同的条件,以便在合约之间进行准确的比较。
balanceOf
: 88 gasnative transfer (deposit)
: 48 gasdeposit
: 108 gaswithdraw
: 395 gasapprove
: 213 gastransfer
: 627 gastransferFrom
(自转): 481 gastransferFrom
(操作员有限额授权): 1080 gastransferFrom
(操作员有无限授权): 508这些改进在每个单独的交易中可能看起来相对较小。然而,作为一个广受欢迎的原语,即使是小幅节省的集体影响也是巨大的!自 2022 年 9 月 15 日以太坊合并事件以来,仅在以太坊 L1 主网上,WETH9 上已经执行了大约 2.75 亿次操作!以下 Dune 查询用于查找自合并以来 WETH9 上按功能调用的次数(查询于 2024 年 10 月 28 日合并后 774 天执行)。
select function_selector,
case function_selector
when 0x70a08231 then 'balanceOf'
when 0xa9059cbb then 'transfer'
when 0x23b872dd then 'transferFrom'
when 0x095ea7b3 then 'approve'
when 0x2e1a7d4d then 'withdraw'
when 0xd0e30db0 then 'deposit'
else 'unknown'
end as functionName,
count(function_selector) as countOf from
(
select bytearray_substring(input, 1, 4) as function_selector from ethereum.traces
where length(input) > 4 and block_time > (NOW() - INTERVAL '774' DAY)
and to = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
union all
select bytearray_substring(data, 1, 4) as function_selector from ethereum.transactions
where length(data) > 4 and block_time > (NOW() - INTERVAL '774' DAY)
and to = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
)
group by function_selector
order by countOf desc
如果自 The Merge 以来使用了 WNATIVE,节省的原始 gas 单位将是:
balanceOf
: 327,453,459 次调用 x 88 gas ~= 290 亿transfer
: 179,154,025 次调用 x 627 gas ~= 1120 亿withdraw
: 61,370,490 次调用 x 395 gas ~= 240 亿transferFrom
: 24,489,452 x 794 gas ~= 195 亿approve
: 6,936,611 ~= 15 亿deposit
: 125,633 ~= 1350 万total
: 1860 亿自 The Merge 以来的平均 gas 价格为 21.6 gwei(来源:ultrasound.money),自 The Merge 以来 ETH/USD 的平均收盘价为$2,189.25。因此,仅在 L1 ETH 主网上,总费用节省将达到4,024 ETH ($8.809M)。
趣闻:在官方 Wrapped Native 地址中开采的八个零字节将在 calldata 中节省额外的 96 gas。考虑到额外的 calldata gas 节省,估计还将节省额外的$1.2M!
注意:基准细节和可比较交易的链接可以在文章末尾的补充部分找到。
对于像 Wrapped Native 这样关键的 EVM 原语,构建一个不变量测试套件以确保系统的关键数学属性不会被破坏或违反是至关重要的。不变量测试套件将在 Wrapped Native 仓库发布时可供审查和执行。以下属性在多个小时的不变量测试运行中得到了验证。
ETH 只能被包装成 WNATIVE,WNATIVE 只能被解包回 ETH。
WNATIVE 合约的本地余额应始终至少等于个人存款的总和。
WNATIVE 合约的本地余额应始终至少等于所有用户的个人 WNATIVE 余额的总和。
没有个人账户余额可以超过 WNATIVE 的总供应量。
在 Sepolia 测试网上的基准测试…
Wrapped Native (Gas: 44,683): 0xc657353364565180805eebc2d577138cf1b8c6b2d487d407f2f0123b1e5cd0c1
WETH9 (Gas: 44,731): 0xec5d8ec2fa7bbdb278ceb6fde88af7b7fd9e15dfba6e095518b7d6ebfb1dff48
Wrapped Native (Gas: 27,583): 0x7757bdcb880e837e97578766bc07625a6f17f8461cf8f986bf7e3fb45b19c54d
WETH9 (Gas: 27,631): 0x1f354e6ead7406d0ece92f6b641b92b7f5169aa0cce8da5f8375616da104b2e6
deposit
调用进行存款,非零 WNATIVEWrapped Native (Gas: 27,830): 0xd94219c9b458b40a6f36cf3aa1e452bdd94edbea1cbf1385f47c62d0171ca00c
WETH9 (Gas: 27,938): 0xf3f4c2161e1901d0478e0d3ef424b43ee68983cc1b9b031b1346bf6756a4a12f
withdraw(uint256)
调用进行提取(部分提取)Wrapped Native (Gas: 34,809): 0xd46b8de3877e507ae98239d74b6e3da4f10dc873ed06a70f17a738809796d562
WETH9 (Gas: 35,204): 0xd7c6823741e6b1961c9efde8707974ed6eb4293d60738a6ac7de6cc76172d3dd
approve(address,uint256)
调用进行批准(首次批准)Wrapped Native (Gas: 45,851): 0x5f21a6a0e10d4d168e7662861c40832954a7ad71d5a2d4b55a80465d9ad89da5
WETH9 (Gas: 46,064): 0x9b0a864fee4fcd86d5b5b00d0c1e4e366087e7fce44f01803dfb84f69052dc20
approve(address,uint256)
调用进行批准(第二次批准)Wrapped Native (Gas: 28,751): 0x042f305d19f41eef50a29e42a8f4a4a3ef51247f581d474742deb5573f596177
WETH9 (Gas: 28,964): 0xe7c93bcb1d0f31e139b04933f6a39597c8f64a13bb20dfcbb6a5e6e6d156f12d
approve(address,uint256)
调用清除批准(批准为零)Wrapped Native (Gas: 23,867): 0x026febd5bc6f764e196eba2d9c0c236f1053d03f1fcdd2e4fdc69aa402a1849f
WETH9 (Gas: 24,080): 0x7bfc1ab9d64565be83300e89ed66555c821d3fa44d524c7f607bba63781fd196
approve(address,uint256)
调用进行批准和存款(温暖批准和先前余额)Wrapped Native (Gas: 35,260): 0x8460c2f7ebadb47ce0e357a313af0cfd386d2e037983dbfc6e4e0ecdd4d54799
WETH9 (Gas: N/A)
可比操作在两个单独的交易中执行:27,617 + 28,944 = 56,561
transfer(address,uint256)
调用进行转账(零先前余额)Wrapped Native (Gas: 50,955): 0xe86596f78ef6d0ba9c740ccc360d28196a611458549b2437151516a41fedeca5
WETH9 (Gas: 51,582): 0x456fb5a5c9707e36db1adf1baecde8c53cf404ca44658530c3e25bb020b5353a
transfer(address,uint256)
调用进行转账(非零先前余额)Wrapped Native (Gas: 33,855): 0xc7656dfd62cf7a7b63ba734839e7bfb8f36470efb17b005bb603016c1eaa2115
WETH9 (Gas: 34,482): 0x26d1c9199e5187bac6ac487c4fe4cf6449694fc3123bfdddcfdb832a0d665975
transferFrom(address,address,uint256)
调用进行自我转账(非零先前余额)Wrapped Native (Gas: 34,239): 0xa1162953a9a0b260abe16f9c2a35a6db797aad3eee599c373211525cc91ff552
WETH9 (Gas: 34,720): 0x712bed0132bb1e3bf9b4daa18f65eb7d793c97f9f3525fa59bbd05a1a30ce550
transferFrom(address,address,uint256)
调用进行有限授权的操作员转账(非零先前余额)Wrapped Native (Gas: 39,456): 0x9fcaa968cfaf07df393e08b466db923626e27e8912c0cf8b1ce9c00913ba1b73
WETH9 (Gas: 40,536): 0xd810198f881cf7aa63f6b2c7e0823317c7573c0d147866cc1d8f97384cd529a2
transferFrom(address,address,uint256)
调用进行无限授权的操作员转账(非零先前余额)Wrapped Native (Gas: 36,505): 0x6611b04d18248ebaf10427a5fa4c0e0b3c1d46d9a7cb6623575a9c93dec2351b
WETH9 (Gas: 37,013): 0xb6e9a996a0d38aef190c4879b0fda348e61fef69113b68f59869630fe95107b4
Limit Break 的 Wrapped Native、Creator Advanced Protection Suite(Creator Token Standards、Payment Processor(V1、V2 和 V3)、Trusted Forwarder)及相关服务和协议(统称为“工具”)按现状提供,Limit Break 不对使用这些工具的行为作出任何明示或暗示的陈述和保证。用户应对确保这些工具的正确和合法使用负全部责任,并在部署时应根据需要谨慎行事。Limit Break 不对任何第三方使用这些工具所宣传或提供的任何产品或服务作出任何保证、认可、担保或承担责任,也不会成为用户与任何第三方产品或服务提供商之间的任何交易的当事方或以任何方式负责监控。使用这些工具须遵守这些工具所提供的许可证的所有条款。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!