惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
Y
Y Combinator Blog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
T
Tor Project blog
I
Intezer
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Privacy & Cybersecurity Law Blog
N
News | PayPal Newsroom
N
News and Events Feed by Topic
C
CERT Recently Published Vulnerability Notes
T
Tenable Blog
K
Kaspersky official blog
V
Visual Studio Blog
T
Troy Hunt's Blog
Project Zero
Project Zero
博客园_首页
The Register - Security
The Register - Security
O
OpenAI News
G
Google Developers Blog
Simon Willison's Weblog
Simon Willison's Weblog
J
Java Code Geeks
D
DataBreaches.Net
F
Full Disclosure
Latest news
Latest news
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security Affairs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
腾讯CDC
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs
Vercel News
Vercel News
V
Vulnerabilities – Threatpost
月光博客
月光博客
Hacker News: Ask HN
Hacker News: Ask HN
B
Blog RSS Feed
P
Palo Alto Networks Blog
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
G
GRAHAM CLULEY

博客园 - 若-飞

企业AI Agent落地的核心逻辑与路径 基于langchain,Function Call的成功率怎么解决? LangChain Checkpoint(检查点)是什么?—— Agent 的"存档机制" RAG 设计:Embedding 如何切分 AI 客服系统设计:RAG 知识库设计 Go 百万连接服务器设计:从网卡到业务的全链路解析 深度解析 sync.Pool:从设计哲学到生产实践 Goroutine 泄漏:原因、检测与防范 Go Channel 关闭与超时机制完全指南 Go Map 无限增长问题解决方案 LangChain 聊天记录压缩:原理、机制与实战 揭开 sklearn 文本分类的核心原理:从词袋到逻辑回归 大模型“胡说八道”怎么办?一张图读懂检测、评估与修复全方案 企业级AI知识库权限隔离设计:让AI“懂规矩”比“懂知识”更重要 RAG系统设计全解析:从架构到多模态的核心知识图谱 RAG召回率提升全攻略:7大核心方法让检索更精准 RAG召回率提升秘籍:Metadata过滤的底层原理与实践 构建更好的RAG系统:深入理解混合搜索 一文搞懂 RAG 中 Retriever 和 Reranker 的区别 一文搞懂 RAG 的召回率(Recall)是什么? LangChain / LangGraph、MCP、Harness Engineer 与 Claude Code 的对应关系 Agent Harness 技术笔记:从 Trajectory 到 Function Calling Loop BLEU 是什么?——从原理到工程实践 分库分表后跨分页查询的完整方案 ai如何处理私有数据 ai幻觉是啥,以及如何解决 别再让大模型“凭空瞎猜”了!带你认识AI最强外挂:ChromaDB 用 useQuery 管请求:TanStack React Query 入门小结 HD钱包--BIP44 TRON 四种 API 面怎么选:从节点协议到 JSON-RPC 再到 TronGrid 以太坊节点存储与共识机制全解析 BSC节点发现协议全解析:UDP发现、Bootnode引导与Gossip交易广播 以太坊节点发现背后的分布式哈希表(DHT)与 Kademlia 原理解析 Solidity中的bytes与string:深入理解这两种特殊的动态数组 智能合约自毁:当资产还在,合约死了 —— 深度解析 selfdestruct 导致的资产锁定风险 TDengine CLI (taos) 使用指南 —— Docker 本地开发实战 在 macOS 上用 DBeaver 连接 TDengine:踩坑总结与最终配置指南 Solidity Storage Slot 深度解析 Geth Snapshot Export/Import 深度解析: 不是备份工具,而是数据分析利器 基于BSC 公链的数据备份与 Snapshot 机制深度解析 Docker 共享内存完全指南:从原理到实践,避免常见的理解误区 Docker容器"僵尸状态"问题排查与自动重启方案 SSE协议深度解析:被低估的HTTP服务器推送标准 TDengine vs MySQL:时序数据处理的时代之选 Proxmox 启用 QEMU Guest Agent 实战指南 解决 Blockscout "batch too large" 错误的完整指南 一文讲清楚什么是基准测试(Benchmark) Rust中的宏(Macro):编译时的代码生成魔法 Docker优雅关闭的艺术:为什么stop_grace_period能防止数据丢失 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比
一文讲清:Approve / Permit / Permit2 的本质区别
若-飞 · 2026-06-10 · via 博客园 - 若-飞

在 Web3 里,“授权”是资产安全与交易体验的核心机制。

很多人会混淆三件事:

  • approve(链上授权)

  • EIP-2612 permit(签名授权)

  • Permit2(通用签名授权协议)

它们表面都是“允许别人动你的资产”,但底层机制完全不同,尤其是在:

nonce 如何设计、谁能发起交易、权限如何生效

这些关键点上差异巨大。


一、Approve:最原始的链上授权模型

1. 核心机制

mapping(address => mapping(address => uint256)) allowance;

用户必须发起链上交易:

approve(spender, amount)

2. 权限模型

  • 用户必须自己发交易

  • 授权被写入链上状态

  • 之后 spender 才能调用:

transferFrom()

3. nonce 是谁的?

👉 使用的是 EVM account nonce

类型 来源
account nonce EOA 交易 nonce

4. 谁能发起交易?

  • 只能用户自己发 approve


5. 权限本质

链上存储 allowance = 授权记录

👉 属于“状态授权”,不是签名授权


6. 问题

  • 必须支付 gas

  • UX 差(要 approve + swap 两步)

  • 无限授权风险(常见安全问题)


二、EIP-2612 Permit:签名即授权(Permit)

USD Coin 等 ERC20 常用实现


1. 核心思想

用签名替代 approve 交易

用户只需要:

离线签名 Permit

无需上链 approve。


2. 签名内容

Permit(
  owner,
  spender,
  value,
  nonce,
  deadline
)

3. nonce 机制(关键)

mapping(address => uint256) public nonces;

👉 注意:

  • 这是 permit nonce

  • 不是 EVM transaction nonce


4. nonce 如何变化?

  • 每成功执行一次 permit() → nonce +1

  • 必须严格递增使用


5. 谁可以发起交易?

任何人都可以:

  • DEX

  • Relayer

  • 钱包

  • 聚合器

只要提交签名即可。


6. 权限来源

ecrecover(signature) == owner

验证通过后:

allowance[owner][spender] = value;

7. 关键特性

项目 说明
是否上链 approve ❌ 不需要
是否需要 gas ❌ 用户不需要
nonce 类型 permit nonce
nonce 特性 严格递增
顺序要求 必须按顺序

8. 关键限制(非常重要)

EIP-2612 的 nonce 是:

❗严格递增模型(Sequential Nonce)

如果签名顺序错乱:

  • 跳过 nonce → 后续可能失效

  • 顺序错 → revert


三、Permit2:Uniswap 推出的通用签名授权系统

Uniswap Labs


1. 核心思想

Permit2 解决的是:

Permit 的 nonce 顺序限制 + 多协议授权碎片化问题


2. 关键设计:Bitmap Nonce

mapping(address => uint256) public nonceBitmap;

3. nonce 结构(核心区别)

每个用户有:

uint256 bitmap = 256 个 nonce 状态

每一位表示:

bit nonce
0 nonce 0
1 nonce 1
... ...
255 nonce 255

4. nonce 特性

👉 完全非顺序模型:

  • nonce 3 可以先用

  • nonce 99 后用

  • 不影响其他 nonce


5. 示例流程

用户签名:

  • nonce 3

  • nonce 10

  • nonce 5

可以任意顺序执行:

先用 10 → OK
再用 3  → OK
再用 5  → OK

6. 谁可以发起交易?

和 Permit 一样:

  • DEX

  • Aggregator

  • Relayer

  • 钱包


7. 权限来源

Permit2 会验证:

signature + allowance + bitmap nonce

最终执行:

transferFrom(owner, receiver, amount)

8. 本质

Permit2 =

签名授权 + 可并发 nonce + 统一授权中介层


四、三者核心对比(最重要)

维度 Approve Permit Permit2
是否需要交易
是否需要签名
nonce 类型 EVM nonce ERC20 nonce bitmap nonce
nonce 顺序 顺序 严格顺序 任意顺序
是否支持乱序执行
是否支持批量签名
UX 最好

五、关键本质区别(一定要理解)

1. Approve:状态授权

allowance 写入链上

2. Permit:签名 → 状态授权

签名 → 生成 allowance

3. Permit2:签名 → 中间层控制转账

签名 → Permit2 → 执行 transferFrom

六、nonce 系统的根本区别(核心知识点)

1. EVM Account Nonce

  • 防交易重放

  • 每笔交易 +1


2. Permit Nonce(EIP-2612)

  • 防签名重放

  • 严格递增


3. Permit2 Bitmap Nonce

  • 防签名重放

  • 可乱序

  • 256 位管理


七、为什么 Permit2 更先进?

因为它解决了三个问题:

1. 顺序问题

✔ Permit 必须顺序
✔ Permit2 可以乱序


2. 批量问题

✔ Permit2 支持批量签名执行


3. 多协议碎片化问题

✔ 一个授权覆盖多个 DEX / 聚合器


八、一句话总结

Approve 是链上状态授权;Permit 是签名生成授权(但严格顺序 nonce);Permit2 是工业级签名授权系统,通过 bitmap nonce 实现乱序执行与批量授权,彻底优化 Web3 授权体验。


如果你愿意,我可以再帮你补一版更“进阶开发者视角”的内容,比如:

  • Permit2 如何防重放攻击

  • EIP-712 在三者中的作用

  • 真实黑客利用 approve 的攻击路径

  • Uniswap router + Permit2 实际调用链路图

会更偏“安全审计/底层协议分析级别”。