mcpField
V
vibenet

vibenet

github.com/base開発12072 回インストール1 日前に更新
リポジトリ

vibenet について

Vibenetは、ネイティブなEIP-8130アカウント抽象化などを試すBaseの開発ネットワークです。このスキルは、スマートアカウント、セッションキー、ガススポンサー、200ミリ秒ブロックを扱うためのネットワーク設定とviemの手順を説明します。

主な機能

  1. 01EIP-8130スマートアカウント操作
  2. 02セッションキーとオンチェーンポリシー
  3. 03ERC-8168ガススポンサー
  4. 04200ミリ秒ブロックとタイムスタンプ
  5. 05viemの導入とネットワーク設定

活用シーン

  1. 01Vibenetスマートアカウントの作成とデプロイ
  2. 02セッションキーのActorを認可・取り消し
  3. 03ペイヤーによるガススポンサー
  4. 04ブロック購読とトランザクションの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/base/skills --skill vibenet

インストール後、Claude Code で/vibenetを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
200ms-blocks.md
eip8130-accounts.md
payer-sponsorship.md
session-keys-and-policies.md
scripts/
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 ID84538453
パブリック実行 RPChttps://rpc.vibes.base.org — 8130 対応(AA_TX_TYPE / 0x79)、access-control-allow-origin: * を返します
WebSocket RPCwss://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

運用手順

  1. 上記の表を使ってタスクを分類し、実装前に該当するリファレンスを 読みます。
  2. 適切な RPC を選択します。rpc.vibes.base.org は Node と ブラウザーの両方で動作します。サブスクリプションには wss://rpc.vibes.base.org/ws を使用します。 api.vibes.base.org/api/vibenet/account/rpc は、同じチェーンへの ホスト型プロキシです。vibes.base.org は使用しないでください。このホストは API ではありません。
  3. 実装では、チェーン ID を明示し、 scripts/setup-viem-8130.sh によるインストール(8130/8168 のみ)、 アカウント設定を変更する場合の読み戻しによる検証、およびレシート待機や ブロック監視ごとの明示的な pollingInterval(約 100ms)を指定します。 viem のデフォルト値(4000ms、または 500ms の下限)では、200ms の 間隔を把握できません。
  4. 提供するものは、実行可能なコード、インストールコマンド、および 手動で必要な手順(環境変数、フォーセットでの資金調達)です。

エッジケースと最新の API 変更について

インストール

npx skills add base/skills --skill vibenet

コメント