vibenet について
Vibenetは、ネイティブなEIP-8130アカウント抽象化などを試すBaseの開発ネットワークです。このスキルは、スマートアカウント、セッションキー、ガススポンサー、200ミリ秒ブロックを扱うためのネットワーク設定とviemの手順を説明します。
主な機能
- 01EIP-8130スマートアカウント操作
- 02セッションキーとオンチェーンポリシー
- 03ERC-8168ガススポンサー
- 04200ミリ秒ブロックとタイムスタンプ
- 05viemの導入とネットワーク設定
活用シーン
- 01Vibenetスマートアカウントの作成とデプロイ
- 02セッションキーのActorを認可・取り消し
- 03ペイヤーによるガススポンサー
- 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 は、EIP-8130 ネイティブアカウント抽象化に対応した Base の開発ネットワークです。アカウント抽象化がプロトコル自体に組み込まれています。アカウントは EVM チェーン間で持ち運び可能で、複数の署名者タイプ(secp256k1、P-256、WebAuthn)、アドレスを変更しない鍵のローテーション、スコープを限定したセッションキーアクター、オンチェーンポリシー、ネイティブな ERC-8168 ガススポンサーシップに対応しています。ツールは viem の eip8130 モジュールにあります(フォークのブランチ — npm の viem にはまだ含まれていません)。Vibenet は Cobalt 200ms ネイティブブロック(毎秒5つの正規ブロック、すべてのブロックにミリ秒単位の timestampMs を付与)を実行する初の Base ネットワークでもあります。この機能にフォークは不要で、標準の 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 — 0x79 のブロードキャストやレシートのポーリングを含め、すべての eth_* を中継します |
| ホスト型ペイヤー(ERC-8168) | https://api.vibes.base.org/api/vibenet/account/payer |
| Faucet | { "address": "0x…" } を指定して POST https://api.vibes.base.org/api/vibenet/faucet/drip |
| Faucet のステータス | 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、chain id 84532 |
API ホストは vibes.base.org ではなく api.vibes.base.org です。 ホスト名だけの URL は chain.base.org/vibenet の HTML ページに 302 リダイレクトします。viem の HTTP トランスポートはそれを JSON として解析しようとするため、誤った URL ではなくコードの不具合のように見える Unrecognized token '<' エラーが発生します。
すべての api.vibes.base.org エンドポイント(RPC プロキシ、ペイヤー、Faucet)は、rpc.vibes.base.org と同様に制限のない CORS ヘッダーを返すため、ブラウザーアプリからどちらにも接続できます。実行には rpc.vibes.base.org を優先し、ホスト型の経路を明示的に利用したい場合に account/rpc プロキシを使ってください。パブリック RPC ではメソッドが許可リストで制限されており、eth_getHeaderBy*、eth_getBlockReceipts、eth_sendRawTransactionSync、eth_simulateV1、txpool_* は rpc method is not whitelisted を返します。
下記のフォークが必要なのは 8130/8168 のコードのみです。 ブロックの照会、newHeads のストリーミング、通常の EOA トランザクションの送信は、vibenet で標準の npm install viem を使って実行できます。
8130 モジュールは viem 自体への追加機能であり、wevm/viem#5004 で上流への取り込みが提案されています(オープン、ドラフト解除済み — まだマージも npm へのリリースもされていません)。リリースされるまでは、この PR の作成元であるフォークブランチからビルドする必要があります:chunter-cb/viem feat/eip-8130-production。
同梱のインストーラーを使用してください — clone→build→link の一連の処理を実行します。手動ではミスが起きやすいためです。
scripts/setup-viem-8130.sh [APP_DIR] [BUILD_DIR] # APP_DIR defaults to the current directory
BUILD_DIR のデフォルトは <APP_DIR>/.viem-8130-src です。これは独自の node_modules(約 500 MB)を含む、viem モノレポ全体のチェックアウト先です。スクリプトはアプリの .gitignore に .viem-8130-src/ を追加するため、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:…" は「成功」するものの、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 では正しく解決されるため、バンドラーの不具合のように見えます)。
次に、viem/eip8130(ペイヤーには viem/eip8168 も)からインポートします。createPublicClient / parseEther などのコアヘルパーは通常の viem からインポートします。8130 モジュールからは再エクスポートされません。
tsconfig.json で "target": "ES2020" 以降を設定してください。BigInt リテラル(0n)は、それより低い target では TS2737 を引き起こします。このチェックは lib ではなく target に依存しており、生成された設定の多くは今でも古い target がデフォルトになっています。
アカウントにデプロイ手順はありません
アカウントを作成すると、ローカルで CREATE2 アドレスが導出されます。これは同期処理で、RPC 呼び出しは発生せず、eth_getCode の値は引き続き 0x です。実際にアカウントが作成されるのは、実際の呼び出しとともに account.createChange を含めた最初のトランザクションの副作用としてです。ほかに呼び出すものはありません。何もない状態からアカウントをデプロイする最短の方法は、最初のトランザクションをスポンサー付きにすることです(ゼロ値の最初のトランザクションなら、フォーセットも資金の入金も不要です。スポンサーが負担するのはガスであり、トランザクションの値ではありません)。自己負担する場合は、事前にアドレスへ資金を入金する必要があります。デプロイ状態は、楽観的なローカル状態ではなく、必ず eth_getCode から読み取ってください。次のトランザクションに createChange を含めるかどうかは、この状態によって決まります。ライフサイクルの全容については、references/eip8130-accounts.md を参照してください。
安全性のためのガードレール
- 秘密鍵を絶対にコミットしないでください。開発ネットワーク用スクリプトには使い捨ての鍵を生成し、実際の鍵は環境変数から読み取ってください。
key.k1(...)が構築するのはアクター ID であり、署名者ではありません。これ(または生の秘密鍵の 16 進数文字列)をsignerとして渡すと、判読しにくいpad()TypeError が発生します。privateKeyToAccount(pk)を使用してください。- 設定変更はオンチェーンから読み戻して検証してください(
isActor/getConfigSequence)。レシートログやstatus: successで判断してはいけません。認可がスキップされても、エラーは通知されません。 - 署名する直前に、現在の設定シーケンスを読み取ってください。シーケンスをハードコードすると、何も実行されずに終わります。
タスク別の参照先
タスクに応じて、該当するリファレンスを参照してください。
| タスク | 使用する場面 | リファレンス |
|---|---|---|
| アカウントとトランザクション | 8130 スマートアカウントの作成、カウンターファクチュアルからデプロイ済みへのライフサイクル、呼び出しの一括送信、アトリビューションメタデータ、ガス見積もり、アカウント状態の読み取り、ロック、注意事項 | references/eip8130-accounts.md |
| セッションキーとポリシー | アクターの認可/取り消し、スコープ、SessionPolicy の支出上限、設定シーケンス、「通知されない」変更の検証 | references/session-keys-and-policies.md |
| ガススポンサーシップ | ペイヤーによるガスのスポンサー(ERC-8168)、ガスレスでのオンボーディング、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 の承認に該当します): 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