status
Published
type
Post
category
WEB3
product
技术分享
date
May 15, 2026
slug
concourse-erc8004-day-1
summary
把「商家变 AI agent」这件事做到协议级闭环——链上身份 + 自己跑的服务 + 浏览器哈希验证 + 调 skill 全部走通。一天 6 个 commit 的复盘。
tags
项目
Web3
AI
开发
进行中
推荐
password
icon
在 concourse.paking.xyz 看 demo · 在 Basescan 验证 agent #1
0. TL;DR
用 1 天时间,把一个酒店做成 ERC-8004 trustless agent:
- 链上:3 个合约部署在 Base Sepolia,Basescan-verified,73 Foundry 测试 100% 覆盖
- 服务:Hono + Drizzle + better-sqlite3 模板,5 个酒店 skill,36 vitest 全过
- 上线:
wumingchu.concourse.paking.xyz跑在 Fly Tokyo,LetsEncrypt 自动 cert
- 上链:agentId=1 register 完成,浏览器实时 SHA-256 验证服务出的 card == 链上 commit
- demo:17 秒 1920×1080 MP4,所有数字都是真链上 + 真服务返回的
任何人现在跑这条命令,就能验证 agent #1 在链上存在:
返回:
1. 为什么做这个
底层逻辑:今天每家 OTA(Booking、携程、Agoda)都有自己的 API、自己的格式、自己的认证。AI agent 想帮人订全球酒店、餐厅、景点,得对接几十种不同的 API——这是个 N × M 问题。
Concourse 押的赌注:让每个商家自己变成一个标准化的 agent,按 ERC-8004 + A2A Agent Card 在链上注册。任何 AI agent 拿到 agentId 就能直接跟这家商家对话——不用经过任何平台。
生态信号(不是 PPT 自嗨):
- ERC-8004 2026-01-29 在 Ethereum 主网上线
- 8004scan.io 由 AltLayer / Alt Research 维护,47000+ agents 已注册
- Coinbase x402 (HTTP 402 payment) + Anthropic MCP + Google A2A 三家都在推自己的 agent 标准
- a16z 公开发了 "Trustless Agents" 研究
赛道是真的。问题是:你在这条赛道上的位置。
2. 架构层级
三个原则:
- 协议层免费(ERC-8004 + A2A 完全开放)
- 托管层付费(自托管 / 平台托管二选一,平台托管按月收费)—— 这是 Stripe / Vercel / Supabase 模式
- 链上 hash 是最终真相(任何人浏览器算 SHA-256 就能验服务有没有被篡改)
3. 真实做了什么——Phase A 全部交付物
A.2 ERC-8004 合约(Solidity / Foundry)
evmVersion
cancun、optimizer 200、73 个 Foundry 单元测试 + 模糊测试 100% 覆盖。Base Sepolia 部署地址:- IdentityRegistry:
0xBdE5A55D50d2062FF5529546d8c391f6a6eEA29f
- ReputationRegistry:
0xcaC08083B58c7736bDf953dafeC3C3395f0D90c6
- ValidationRegistry:
0x60B0E530621488C985A394686F3E54282D579107
A.3 Merchant-agent 开源模板
Hono + Drizzle + better-sqlite3 + viem + Zod + vitest。任何商家 30 分钟就能上线一个自己的 agent:
5 个酒店 skill:
check_availability / get_rates / create_booking / get_room_types / get_cancellation_policy。每个都有严格的 Zod schema 和对应的 JSON Schema 描述(暴露给 LLM 做 tool calling 时用)。A.5 第一个真 live agent
无名处·黄山隐世归朴酒店 部署在 Fly.io Tokyo,DNSPod CNAME 到自有域名
wumingchu.concourse.paking.xyz,LetsEncrypt 自动签 RSA + ECDSA 双证书。打开 agent-card 就能看到这家酒店的所有信息——名字、地点、5 个 skill、3 个房型、价格、付款地址。
A.7 链上验证型前端
concourse.paking.xyz/explorer 直接用 ethers v6 读 IdentityRegistry——没有后端代理:
- 列出
totalAgents()个 agent
- 每个 agent fetch 自己的 card
- 浏览器算 SHA-256(card bytes),跟链上 hash 比对
- 一致才显示 ✓ verified 绿盾
- 点开模态框直接 POST 调 skill
任何客户端都能复用这套验证流程——这是协议级 trustless 的精髓。
4. 踩过的真实坑
这一天踩的坑都写进了 merchant-agent-template/TROUBLESHOOTING.md。挑几个有意思的:
⚠ pnpm 10 默认禁 install 脚本
better-sqlite3 是 native module,必须在 install 阶段编译。pnpm 10 出于安全考虑默认 skip 所有 install scripts。Docker 容器一启动就
Could not locate the bindings file 死循环。修法:根 package.json 加:
⚠ Foundry vm.envUint 必须 0x 前缀
DEPLOYER_PRIVATE_KEY 用 cast wallet new 生成的没带 0x,直接 source 进 forge script 会 revert in simulation。⚠ ABI tuple 解码 vs multi-return
getAgent(uint256) 返回的是 Solidity struct——ABI 编码是一个 tuple,不是 6 个分离值。写成 multi-return 的 ABI fragment 会让 ethers v6 报 BAD_DATA,viem 报 Number not in safe integer range(bytes32 hash 被错位读成 uint256)。修法:ABI 用 tuple 包:
⚠ x402 ≠ BookingEscrow——两个独立问题不能混
最初的设计文档里把 x402 当 booking 的 payment rail 用——让用户付款时,x402 触发一个 BookingEscrow 锁定资金,24h dispute window 后释放给商家。
后来发现这是错的:
- x402 是 Coinbase 出的 HTTP-native 微支付握手,stateless、单次请求内完成(适合 cents 量级 per-call 付费)
- booking escrow 是 hold-and-release,stateful,金额数量级不同(hundreds 到 thousands of dollars)
两套机制硬塞进同一个协议,违反了 Principle 1(用标准的方式用标准协议)。最后把它俩拆开:x402 只做付费 skill 的微支付,booking escrow 走 Seaport-style 的 EIP-712 + 独立合约。
5. 现在 vs 接下来
6. 最诚实的自评
这一天产出的不是 PPT,但也还不是 product-market-fit 的产品:
- ✅ 协议层 + 服务层全部跑通,代码可复现
- ✅ 押的赛道是真的(ERC-8004 主网在跑、47k agents 已注册)
- ⚠ 没有真实付费商家(无名处是 demo seed)
- ⚠ 没有 AI agent 来调(除了我自己写的 headless 测试)
- ⚠ Coinbase / Google 也在自己做这件事——不会被收购,会被绕过
它现在值什么?
- 学习作品:1 天内打通 Solidity + Foundry + Hono + viem + ethers + Fly + Vercel + x402 + ERC-8004 整条链路。简历级。
- NCC 比赛 submission:远超参赛要求,链上 verified + live demo + 完整文档。
- 协议级 hello world:任何人 cast call 都能验证 agent #1 存在——这是比任何 PPT 都硬核的 demo。
- 真创业的可能性:6-12 个月找 10 个真酒店上链 + 1 个 AI 客户端集成。99% 失败 1% 起步的赌注,能不能玩取决于个人选择。
7. 链接 / 资源
- Explorer: concourse.paking.xyz/explorer
- GitHub: github.com/PakHeiPoon/Concourse
- 第一个 live agent: wumingchu.concourse.paking.xyz/.well-known/agent-card.json
- 链上 agent #1 (Basescan): sepolia.basescan.org/...A29f#readContract
- ERC-8004 spec: eips.ethereum.org/EIPS/eip-8004
- 8004scan 生态浏览器: 8004scan.io
这篇博文本身就是 dogfooding——Phase A 的所有数字、tx hash、URL,写的时候用
cast call / curl 现场验证过一遍。如果哪里写错了,欢迎 issue 来打脸。Loading...


.png?table=block&id=8cbd9ef4-8c1c-4581-80f1-a15297380674&t=8cbd9ef4-8c1c-4581-80f1-a15297380674&width=1080&cache=v2)