跳到正文

钱包授权

钱包授权是链上权限,允许指定支出方为用户代币调用 transferFrom。本文说明它与签名的区别、无限授权的持续性以及核验和撤销方法。

更新于

仅供教育参考,不构成投资建议;投资可能产生损失。

直接答案

钱包授权也叫代币批准,是所有者给一个支出方地址的链上 allowance。ERC-20 的 approve(spender, amount)记录额度,支出方可在余额内调用 transferFrom;不会交出私钥或其他代币权限。批准改变链上状态,登录签名通常是链下消息。ERC-2612 permit 是可由合约提交的签名数据,无需所有者支付该笔 gas,但仍是授权。ETH 不使用 ERC-20 allowance。核对代币、支出方、金额、期限和链;连接网站不是支出许可。

钱包授权
0 / 5
0 项已核查; 5 项仍未解决

完成核查不代表资产、交易或系统已经安全。

运作方式

  1. 用户向代币合约发送 approve;0 表示无剩余额度,大值常显示为无限
  2. 支出方后续调用 transferFrom;合约检查余额和 allowance,转移并通常减少额度
  3. 修改 allowance 是链上转换;正值替换可能在 mempool 竞态,必要时采用确认后的先归零流程
  4. ERC-2612 permit 是签名消息,检查代币、chain ID、nonce、deadline、支出方和金额,其他人可以提交
  5. 只批准已核验支出方和所需金额,模拟调用并检查 receipt、事件、余额和 allowance;在正确网络用 0 撤销,已确认转账不能撤回

例子

Alice 有 100 USDC,给已核验路由批准 40。它最多花 40,不能花 ETH 或其他代币;兑换 15 后通常剩 25。无限批准还覆盖未来存款,因此应核验合约、使用有限额度,不需要时发送 approve(router, 0)。

风险

  • 恶意或升级后的支出方可使用 allowance 覆盖的全部代币
  • 无限批准也覆盖未来存入资金
  • 错误的链、合约、地址、小数或 calldata 会掩盖危险请求
  • 待处理变更或撤销可能与 transferFrom 竞争;确认的 0 不逆转已执行转账
  • permit 签名可稍后提交;断开网站不会使其失效
  • 非标准、收费、rebasing、暂停或 callback 代币可能行为不同,应检查最终状态

常见误区

  • “连接钱包就授予花费权限。”真正权限来自批准、permit 或确认交易
  • “不显示 gas 的签名安全。”relayer 可稍后提交
  • “断开网站就撤销批准。”连接状态与链上 allowance 分开
  • “无限额度能立即取走全部。”仍需调用、余额和兼容实现,但没有金额上限
  • “模拟成功证明安全。”还要核对链、calldata、接收方、代码、receipt 和余额

相关主题

来源

导航

搜索知识库...