VeilSwap
← 全部文章
分析2026-11-099 分钟阅读

兑换不需要 approve:708 秒 432 笔授权说明了什么

托管式兑换不连钱包、不要代币授权。我们在 708 秒里数到 432 笔 approve,25.7% 是无限额度——以及该撤销什么。

一张不要求签名的表单。2026-11-09 拉下 veilswap.io/exchange:46,702 字节,walletconnect、eth_requestAccounts、MetaMask 等连接串全部 0 次。下单接口收七个字段、五个必填:币对、金额、兑出、退款,没有签名。同一小时的以太坊是另一回事:09:57:59 到 10:09:47 UTC(区块 26,376,584–26,376,643,708 秒)里,17,849 笔交易包含 432 笔 approve 和 26 笔 setApprovalForAll。一个流程让你「发」,另一个让你「授权」。

approve 到底写了什么。ERC20 代币里有一张叫 allowance 的映射:`allowance[owner][spender]`。`approve(spender, value)` 就是往这张表里写一条。它不移动币,只允许被授权合约以后调用 `transferFrom(owner, ...)`,到这个数字,无需再签名。DEX 路由需要它,因为要在兑换交易里从你钱包拉币。托管式兑换不需要:向入金地址发一笔普通转账,池方检测到,再从目标链的浮存金付出。每条腿只签一笔普通转账,别的都不签。

708 秒的普查。432 笔直接 approve 调用等于每秒 0.61 笔,占该窗口全部交易的 2.4%;包在 multicall 里的授权不会在顶层露出这个选择器,所以这是下限。其中 111 笔写的是 2^256−1,uint256 的上限——占 25.7%,每 6.4 秒一笔无限授权。另有 53 笔写 0——撤销,或 USDT 改额度的前半步——占 12.3%,撤销是日常。调用覆盖 143 个代币合约:USDT 106 笔、USDC 96 笔。USDT 里 12/106 无限(11.3%),正额度中位 500 USDT;USDC 19/96 无限(19.8%),中位 673.3。另抽 78 笔,77 笔成功(98.7%),gas 中位 48,501,区间 24,080–120,000。 (XMR 换 USDT 退出路线)

无限额度为什么流行,代价是什么。授权不是免费的:样本中位 48,501 gas。按 10:10 UTC 的 0.09 gwei 基础费,是 0.00000437 ETH——ETH 2,104 美元时约 0.0092 美元。30 gwei 时同一笔授权是 0.001455 ETH 或 3.06 美元;100 gwei 时 10.21 美元。一次授权到上限,可以避免以后每次和同一代币、同一被授权方交易时重复付这笔钱。一句话:正常费率下省一笔约三美元的交易,换一个合约随时动你全部余额的权利。只有信任该合约且密钥卫生过关时才理性;任一失守,省下的几美元都无意义。

Permit、Permit2,以及「长得不像授权的签名」。EIP-2612 把授权搬到链下:`permit` 签名带金额、被授权方、nonce 和截止时间,合约直接接受,无需 `approve` 交易。没有 gas,没有链上 approve 记录,也没有写着「授权」的钱包弹窗。Permit2(0x000000000022D473030F116dDEE9F6B43aC78BA3)更进一步:先对 Permit2 合约做一次链上授权,之后每次转账用按代币的签名。两者都是正当工具,也是钓鱼工具包要的「看起来不像授权的授权」。`setApprovalForAll` 在 NFT 上同理:708 秒 26 笔,每笔把整个集合交给一个操作方。托管式兑换这些都不需要——没有东西可 permit。

真正会出什么事。授权本身不移动币,要由被授权方调用 `transferFrom`。风险是被授权方恶意,或今天诚实、明天被攻破:它可随时转走额度内的币,无需你再签名,钱包也不弹窗。USDT 的无限授权等于该地址全部 USDT。换新种子不撤销旧授权——旧地址只要还持有该代币,授权就一直有效,「换新钱包」只解决一半。撤销是一笔交易(432 笔里 53 笔写 0),而 USDT 额度非零时必须先归零,改一次现有授权要两笔。 (XMR 换 USDT 退出路线)

兑换这一侧,同样实测。VeilSwap 下单只做四件事:选币对、填金额、粘兑出地址和退款地址,然后从钱包发一笔普通转账。唯一的签名就是这笔转账,要在签名设备屏幕上核对。订单页返回入金地址和 `validUntil`;此前实测 100 USDT 的单子是 601 秒,前面的报价只活 120 秒。接口把兑出与退款地址留在服务端,全程不连钱包——没有 dapp 浏览器、`eth_requestAccounts` 或 permit。唯一的秘密是订单 UUID 链接:能看到状态、金额、入金地址,看不到兑出与退款地址。自称兑换站却先要你连钱包或签消息的,不是这套流程。 (转错网络如何找回)

授权的七点检查。(1)只授权这一笔要交易的金额,别授权上限。(2)把每个 `permit`/`Permit2` 签名当授权读:核对被授权方、金额、截止时间;带金额的「登录」弹窗就是授权。(3)交易后撤销——revoke.cash 或 Etherscan——记住 USDT 先归零。(4)交易用单独热钱包,别从存着存款的钱包授权。(5)`setApprovalForAll` 是交出整个集合。(6)核对被授权地址,名字相似的假路由就是全部攻击。(7)只为兑换就别连接钱包:不连接、不授权、也无需撤销。 (XMR 换 USDT 退出路线)

边界与实时快照。这些是输入计数,不是安全审计:432 是 60 个区块的直接 approve 数,10 个区块抽样显示 98.7% 成功,约一百笔里一笔失败。重点在规模:授权是日常,约四分之一无限。截至写作时(2026-11-09 10:04 UTC),站内 100 USDT-TRC20 报 0.14778107 XMR(隐含 676.68 美元/XMR),500 报 0.829121(603.05),1,000 报 1.658805(602.84),5,000 报 8.296278(602.68);1 XMR 卖 590.223 USDT;目录 448 资产、65 网络、6 种需额外 ID。报价会动,权限面不动:兑换要的是转账,不是授权。 (XMR 换 USDT 退出路线)

常见问题

兑换需要代币授权吗?

不需要。托管式兑换只要向入金地址发一笔普通转账;代币授权是给「从你钱包里拉走代币」的合约用的,比如 DEX 路由和借贷池。2026-11-09 实测:下单表单只有五个必填字段(币对、金额、兑出地址、退款地址),/exchange 的 HTML 里 walletconnect、eth_requestAccounts、MetaMask 出现次数均为 0。

无限额度授权危险吗?

危险。它允许被授权合约在任何时候、无需你再次签名,最多转走你该代币的全部余额。我们扫描的 60 个区块里,432 笔 approve 中有 111 笔把额度写成 2^256-1(25.7%);USDT 是 106 笔里 12 笔,USDC 是 96 笔里 19 笔。只授权需要的金额,用完撤销。

撤销授权要花多少钱?

一笔 approve 交易:10 个区块样本里的 gas 中位数是 48,501。按 0.09 gwei 是 0.00000437 ETH,ETH 2,104 美元时约 0.0092 美元;30 gwei 时 3.06 美元、100 gwei 时 10.21 美元。USDT(ERC-20)若当前额度非零,必须先把额度归零再设新值,所以改 USDT 现有授权要两笔交易。

继续阅读

全部文章 →

准备好换币了吗?

无账户 · 无 KYC · 无邮箱

立即兑换
兑换不需要 approve:708 秒 432 笔授权说明了什么 — VeilSwap