Twinid同一个 Passkey 派生两个链上账户:Human 管预算和规则,Agent 在额度内替你付款买数据,每一笔都由合约检查。解决什么问题让 AI 助手花钱,现在只有两个选项:把私钥整个交出去,它能买数据也能把余额全转走;或者每笔付款弹一次确认,买十条数据弹十次 Face ID,和自己手动买没区别。怎么做的一把 Passkey 通过 PRF 派生两个账户(m/44'/60'/0'/0/0 给 Human,/1 给 Agent)。预算放在 TwinVault 合约里,不在助手手里。合约在每一笔 spend() 上检查收款白名单、单笔上限(默认 0.50 DemoUSD)、UTC 日额度(默认 1.00 DemoUSD)、10 分钟会话有效期。Human 持有 ERC-8004 身份,能暂停助手、回收剩余预算。Agent 在 Web Worker 里用叶子密钥签名,连续付款期间 Human 不用再验证。付款走自定义 HTTP 402 协议:助手请求数据 → API 返回付款单 → 预检模拟调用(合约会拒的不广播)→ Worker 签 spend() → 等 finalized 块拿到不可回滚收据 → 凭收据取 JSON。付款单用 HMAC 签发,服务端无状态,没有数据库。部署和访问应用部署:https://twinid.tickpay.ink。合约部署在 Monad 测试网(chain 10143)。验证- 合约 46 个测试通过,含两项各 256 次 fuzz;另有 1 个真实 Registry fork 集成测试。- 应用 31 个测试通过,122 项断言;typecheck 和生产构建通过。- 本地 fork 端到端 118 项断言,17 笔真实交易,其中 3 笔为预期 revert。两次连付、超限拒绝、暂停、回收、收据过期后重取均通过。- 浏览器原生 WebAuthn 实测:六笔开户共用一次验证,后续两笔 Worker 付款新增 Passkey 验证次数为 0。