[分享创造] 做了个 Chrome 扩展,专门用来看 DApp 和钱包之间的 RPC 通信

平时调 dapp 的时候经常遇到这种事:网页那边一点按钮,钱包就跳出来要签名,但页面 没说清楚到底签的是啥、传了哪些参数、返回了什么。自己写的 dapp 还好,加几行 console.log 就完事;要是想看别人家合约的调用流程、或者复现一个用户反馈的奇怪报错,就得跑去 MetaMask 设置里翻 ...
[分享创造] 做了个 Chrome 扩展,专门用来看 DApp 和钱包之间的 RPC 通信
[分享创造] 做了个 Chrome 扩展,专门用来看 DApp 和钱包之间的 RPC 通信

平时调 dapp 的时候经常遇到这种事:网页那边一点按钮,钱包就跳出来要签名,但页面 没说清楚到底签的是啥、传了哪些参数、返回了什么。自己写的 dapp 还好,加几行 console.log 就完事;要是想看别人家合约的调用流程、或者复现一个用户反馈的奇怪报错,就得跑去 MetaMask 设置里翻 activity log ,还看不全 —— 只能看自己钱包发出去的,看不到 dapp 那一侧的时序、参数、错误。

以前一直靠在 window.ethereum 上猴补丁打日志,每次都要写一遍,挺烦的。索性做成了一个 Chrome 扩展。装上之后 F12 里会多一个面板叫 DApp Inspector,当前 tab 所有 window.ethereum.request 的调用都按时间顺序列出来:

  • 方法名(eth_sendTransaction / eth_signTypedData_v4 / personal_sign …),自动分类成 read / write / sign / subscribe
  • 完整的入参、返回值、错误对象
  • 时延分解:dapp 发起 → 扩展排队 → throttle → 钱包审批 → RPC 往返 → 回到 dapp ,每一段单独算
  • 当前 chainId 、来源 origin
  • 合约调用会自动 decode calldata —— 内置 ERC-20/721/1155/Permit2 选择器,识别不到再去 Sourcify 、4byte 拉,拉到的 ABI 本地缓存 7 天

顺手加了几个调试用的规则引擎:

  • Block —— 按方法名/origin 匹配,拒掉某些请求,自定义错误码和消息,看 dapp 的错误分支处理得对不对
  • Throttle —— 给匹配的请求加延迟,验证慢网络 / loading state / 超时分支
  • Mock —— 用预设结果短路掉某个调用,比如假装某个 eth_call 返回特定数据,不用真上链
  • Replay —— 任何捕获到的调用都能重放一次,JSON 参数可以现场改,钱包会按原流程再弹一次

全部本地运行,没有 telemetry 、没有账号、没有外部服务器( Sourcify / 4byte 是按需才请求 ABI ,可以理解为和你打开网页加载图片是一个性质的)。技术栈是 MV3 + TS + React 18 + Vite ,Apache-2.0 开源。

目前只支持 EVM ,Solana / Sui 还在规划。如果你也是 dapp 、钱包、或者安全审计方向的,欢迎装来玩玩,bug / 需求直接提 issue 。

另外有个不情之请:目前插件 logo 还是粗糙了一些,想找设计师朋友帮忙画个更精致的版本,README 末尾写了贡献方式,会在 release notes 里署名致谢 —— 有兴趣的求支援 🙏

预览图

https://pic.otaku.ren/20260521/AQADKRlrG2OjeVR-.jpg

https://pic.otaku.ren/20260521/AQADKhlrG2OjeVR-.jpg

https://pic.otaku.ren/20260521/AQADKxlrG2OjeVR-.jpg https://pic.otaku.ren/20260521/AQADLBlrG2OjeVR-.jpg

来源: v2ex查看原文