关于 vibenet
Vibenet 是 Base 的开发网,用于测试 EIP-8130 原生账户抽象及相关交易功能。该技能提供网络配置和 viem 操作指引,涵盖智能账户、会话密钥、Gas 赞助及 200 毫秒区块。
主要功能
- 01EIP-8130 智能账户操作
- 02会话密钥与链上策略
- 03ERC-8168 Gas 赞助
- 04200 毫秒区块与时间戳
- 05viem 安装及网络配置
适用场景
- 01创建并部署 Vibenet 智能账户
- 02授权或撤销会话密钥 Actor
- 03使用付款方赞助 Gas
- 04订阅新区块并检查交易落块
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ base/ skills --skill vibenet安装后在 Claude Code 中输入/vibenet确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/200ms-blocks.mdeip8130-accounts.mdpayer-sponsorship.mdsession-keys-and-policies.mdscripts/setup-viem-8130.sh详细介绍
Vibenet
Vibenet 是 Base 的开发网,支持 EIP-8130 原生账户抽象:账户抽象直接内置于协议中。账户可在 EVM 链之间移植,支持多种签名者类型(secp256k1、P-256、WebAuthn)、无需更改地址即可轮换密钥、带作用域的会话密钥 Agent、链上策略,以及原生的 ERC-8168 Gas 赞助。相关工具位于 viem 的 eip8130 模块中(分支版本——尚未发布到 npm 上的 viem)。Vibenet 也是首个运行 Cobalt 200ms 原生区块的 Base 网络(每秒产生 5 个规范区块,每个区块都带有毫秒级的 timestampMs)——这部分无需分支版本,标准 viem 即可使用。参见
references/200ms-blocks.md。
网络
| 端点 | 值 |
|---|---|
| Chain ID | 84538453 |
| 公共执行 RPC | https://rpc.vibes.base.org — 支持 8130(AA_TX_TYPE / 0x79),并提供 access-control-allow-origin: * |
| WebSocket RPC | wss://rpc.vibes.base.org/ws — 支持 newHeads、logs、transactionReceipts 订阅(必须使用 /ws 路径) |
| 区块时间 | 200ms(Cobalt);区块带有 timestampMs,BaseTime 预部署合约位于 0x4200000000000000000000000000000000000030 |
| 浏览器 RPC 代理 | https://api.vibes.base.org/api/vibenet/account/rpc — 透传所有 eth_*,包括 0x79 广播和收据轮询 |
| 托管付款方(ERC-8168) | https://api.vibes.base.org/api/vibenet/account/payer |
| 水龙头 | 使用 { "address": "0x…" } 向 POST https://api.vibes.base.org/api/vibenet/faucet/drip 发送请求 |
| 水龙头状态 | GET https://api.vibes.base.org/api/vibenet/faucet/status — 查询滴水额度、冷却时间、USDV/NFV 代币地址 |
| 链状态 | GET https://api.vibes.base.org/api/vibenet/chain-health — 根据 healthy 和 headAgeSecs 判断;stuckSecs 本身不能作为判断依据(健康链上曾出现过 19000) |
| 主页 / 区块浏览器 | https://chain.base.org/vibenet、https://chain.base.org/vibenet/explorer |
| Base Sepolia(同样启用了 8130) | https://sepolia.base.org,链 ID 为 84532 |
API 主机是 api.vibes.base.org,不是 vibes.base.org。 裸主机名会通过 302 重定向到 chain.base.org/vibenet 的 HTML 页面;viem 的 HTTP 传输随后会尝试将其解析为 JSON 并抛出 Unrecognized token '<',看起来像是代码错误,而不是 URL 错误。
所有 api.vibes.base.org 端点(RPC 代理、付款方、水龙头)都会发送宽松的 CORS 标头,rpc.vibes.base.org 也一样,因此浏览器应用可以连接其中任一端点。执行操作优先使用 rpc.vibes.base.org;只有在明确需要托管路径时,才使用 account/rpc 代理。公共 RPC 采用方法白名单:eth_getHeaderBy*、eth_getBlockReceipts、eth_sendRawTransactionSync、eth_simulateV1 和 txpool_* 会返回 rpc method is not whitelisted。
只有 8130 / 8168 相关代码需要使用下方的分支版本。 在 vibenet 上查询区块、流式接收 newHeads 和发送普通 EOA 交易,都可以使用标准的 npm install viem。
8130 模块是 viem 本身的附加模块,已通过 wevm/viem#5004 提议上游合并(仍处于开启状态,已退出草稿状态——尚未合并,也尚未发布到 npm)。在发布之前,必须从该 PR 所基于的分支构建:chunter-cb/viem feat/eip-8130-production。
请使用捆绑安装程序——它会自动完成克隆→构建→链接的整个流程,手动操作容易出错:
scripts/setup-viem-8130.sh [APP_DIR] [BUILD_DIR] # APP_DIR defaults to the current directory
BUILD_DIR 默认为 <APP_DIR>/.viem-8130-src——这是一个完整的 viem 单体仓库检出副本,带有自己的 node_modules(约 500 MB)。脚本会将 .viem-8130-src/ 追加到应用的 .gitignore,避免 git add . 将其提交;如果用于多个应用,请传入一个位于这些应用之外的共享 BUILD_DIR(npm 会在 package.json 中记录 file: 路径)。尽管分支版本会警告 node >=24.5 引擎要求,Node 22 仍可正常使用。
PR #5004 合并且 viem 发布包含这些模块的版本后,只需执行 npm install viem@latest——导入路径(viem/eip8130、viem/eip8168)和 API 均保持不变,无需修改代码。
脚本的作用,以及每个步骤的必要性
这些工具无法直接从 git 安装:viem 的工作区使用 pnpm 的 catalog: 协议,因此 npm install "viem@github:…" 会直接失败,而 bun add "viem@github:…" 虽然“成功”,却会留下一个未经构建的 monorepo,且没有 exports 字段。因此,你需要先克隆并构建,然后依赖构建后的包(位于 viem 的 src/ 中):
git clone -b feat/eip-8130-production https://github.com/chunter-cb/viem viem-fork
cd viem-fork && npx pnpm install --ignore-scripts && npx pnpm run build
# then in your app — --install-links is required:
npm install --install-links "viem@file:../viem-fork/src"
必须使用 --install-links。 否则,npm 会将 node_modules/viem 符号链接到项目根目录之外的路径,导致 Turbopack/Next.js 报错 Module not found: Can't resolve 'viem',尽管这个包明明存在(tsc 能正常解析,因此看起来像是打包器的 bug)。
然后从 viem/eip8130 导入(付款方还需从 viem/eip8168 导入)。createPublicClient / parseEther 等核心辅助函数来自普通的 viem——8130 模块不会重新导出它们。
在 tsconfig.json 中将 "target": "ES2020" 或更高版本。BigInt 字面量(0n)在任何更低的 target 下都会触发 TS2737——此检查取决于 target,而非 lib,并且许多生成的配置仍默认使用较旧的目标版本。
账户无需部署步骤
创建账户时,会在本地派生一个 CREATE2 地址——同步完成,不需要 RPC,eth_getCode 仍返回 0x。账户会在首次交易的副作用中变为真实账户;该交易会在实际调用旁携带 account.createChange。无需调用其他任何内容。从无到部署账户的最短路径是发送一笔由赞助方赞助的首笔交易(无需水龙头,也无需预先注资——仅适用于首笔零价值交易;赞助仅涵盖 gas,不涵盖交易价值);自行付费的方式则需要先为地址注资。通过 eth_getCode 读取部署状态,切勿依赖乐观的本地状态——它决定下一笔交易是否携带 createChange。完整生命周期:
references/eip8130-accounts.md。
安全防护措施
- 切勿提交私钥——为开发网脚本生成临时密钥,真实密钥从环境变量中读取。
key.k1(...)构建的是 Actor 身份,而非签名者——将其(或原始私钥十六进制字符串)作为signer传入,会触发晦涩的pad()TypeError。请使用privateKeyToAccount(pk)。- 通过链上回读验证配置更改(
isActor/getConfigSequence),切勿依赖回执日志或status: success——跳过的授权不会有任何提示。 - 在签名前立即读取当前配置序列——硬编码的序列会导致操作静默无效。
任务路由
根据你的任务阅读相应参考文档:
| 任务 | 适用场景 | 参考文档 |
|---|---|---|
| 账户与交易 | 创建 8130 智能账户、了解反事实账户到已部署账户的生命周期、发送批量调用、归属元数据、估算 gas、读取账户状态、锁定及注意事项 | references/eip8130-accounts.md |
| 会话密钥与策略 | 授权/撤销 Actor、作用域、SessionPolicy 支出限额、配置序列、验证“静默”更改 | references/session-keys-and-policies.md |
| gas 赞助 | 使用付款方赞助 gas(ERC-8168)、免 gas 入门、send 与 sign 模式 | references/payer-sponsorship.md |
| 200ms 区块与时间 | 读取区块的毫秒时间戳(timestampMs)、解码 BaseTime 存款/预部署合约、通过 WebSocket 流式接收 newHeads、发送交易并查看其所在的 200ms 区块、修复 viem 轮询、从 Flashblocks 迁移 | references/200ms-blocks.md |
操作流程
- 对任务进行分类,使用上方的表格,并在实施前阅读相关参考资料。
- 选择合适的 RPC:
rpc.vibes.base.org可在 Node 和浏览器中使用;订阅请使用wss://rpc.vibes.base.org/ws;api.vibes.base.org/api/vibenet/account/rpc是指向同一条链的托管代理。切勿使用vibes.base.org——该主机不是 API。 - 进行实施:明确指定链 ID,使用
scripts/setup-viem-8130.sh安装(仅限 8130/8168),对任何账户配置变更进行读回验证,并为每次收据等待或区块监听明确设置pollingInterval(约 100ms)——viem 的默认值(4000ms,或最低 500ms)会掩盖 200ms 的节奏。 - 交付:提供可运行的代码、安装命令和所有手动步骤(环境变量、从水龙头获取资金)。
边缘情况和最新 API 变更
- EIP-8130 规范:eip.tools/eip/8130 (payer 标准:eip.tools/eip/8168)
- viem 分支:
chunter-cb/viemfeat/eip-8130-production(上游 PR:wevm/viem#5004;API 接口:src/eip8130/index.ts;文档:site/pages/eip8130) - 深入指南(分章节):
github.com/chunter-cb/eip-8130-web(/guide/*) - 会话密钥演练(名称已过时——将
to8130Account映射为toAccount,将isActor8130映射为isActor,将sendCalls映射为sendTransaction;其中的managerActor步骤对应会话参考中的 PolicyManager-as-operator 授权): gist.github.com/chunter-cb/bf70c53a5ab6d8361ce7f4215b776114 - 200ms 区块(Cobalt): docs.base.org/upgrades/cobalt/200ms-blocks, migrate-from-flashblocks, test-on-vibenet
安装
npx skills add base/skills --skill vibenet