ERPC CLI で RPC メソッドを呼び出し、イベントを自分の URL へ送る

erpc rpc call は、ログイン中の ERPC アカウントでターミナルから JSON-RPC リクエストを 1 回送ります。x402 で 1 回ごとに支払うこともできます。erpc webhook は、RPC のイベントをあなたの URL へ POST します。
このページは、プレリリースの ERPC CLI v0.1.0-rc.4 について説明しています。

RPC メソッドを呼び出す

ログイン中の ERPC アカウントで、Solana か Ethereum のメインネットを呼び出します。共有エンドポイントは CLI がメソッドから選びます。ネットワークを指定することもできます。
sh
erpc login
erpc rpc call getSlot
erpc --json rpc call eth_getBlockByNumber '["latest", false]' --network ethereum-mainnet
erpc rpc call eth_call --params-file params.json
printf '%s' '["finalized", false]' | erpc rpc call eth_getBlockByNumber -
erpc rpc call getHealth --endpoint-url http://127.0.0.1:8899
  • パラメーターは、JSON の配列かオブジェクト、--params-file で指定するファイル、または標準入力を表す - で渡します。渡さなければ [] を送ります。
  • ネットワークは solana-mainnet と ethereum-mainnet(eth-mainnet も可)です。erpc rpc list-networks は、ERPC の共有 RPC と x402 の RPC があるネットワークを一覧にします。
  • 自分のエンドポイント: --endpoint-url は、その URL に含まれる認証情報だけを使います。URL は安全な URL かループバックで、ユーザー情報を含まないものにします。

アカウントのどのキーで呼び出すか

アカウントには RPC キーが複数あることがあります。erpc rpc call と erpc webhook run は、プライマリのキーから順にキーを試します。本来の呼び出しの前に、キーごとに getHealth を 1 回呼びます。キーの可否は、その後どのチェーンを呼ぶかにかかわらず、共有の Solana RPC で判定されます。
RPC がキーを受け付けず、かつキーのどれかについて問い合わせられなかったときは、問い合わせられなかった最初のキーで続け、本来の呼び出しの結果でわかります。すべてのキーが断られると、コマンドは the shared RPC takes none of the account's API keys from this machine (<n> tried) で失敗します。失敗したときを見てください。

x402 で 1 回ごとに支払う

アカウントなしで 1 回ごとに支払って使うには、x402 の見積もりを取ります。--quote は、ウォレットを読まず、支払いもせずに見積もりを表示します。
支払うには、--quote を付けずにターミナルでコマンドを実行します。CLI は金額を表示して確認を求め、erpc wallet create で設定したウォレットで、見積もった Base の EURC の支払いに署名します。そのウォレットには Base の EURC を入れておいてください(ウォレットから支払う)。
sh
erpc rpc call getSlot --network solana-mainnet --x402 --quote
erpc rpc call eth_blockNumber --x402

イベントを自分の URL へ送る

ローカルの Webhook は、RPC の WebSocket を購読し、イベントをあなたの URL へ POST します。受け手を起動し、購読を作り、create が返す ID を、ターミナルかプロセス監視ツールのもとで実行します。
sh
erpc webhook create --name slots --network solana-mainnet \
  --url http://127.0.0.1:8080/events --method slotSubscribe
erpc webhook create --name heads --network ethereum-mainnet \
  --url http://127.0.0.1:8080/events --method eth_subscribe --params '["newHeads"]'
erpc webhook list
erpc webhook run 1
Solana のウォレットの動きを受け取るには、--method の代わりに --template solana-wallet --wallet ADDRESS を使います。Ethereum のコントラクトのログには、--template evm-contract-events --address CONTRACT を使います。コールバックの URL は HTTPS かループバックの HTTP で、ネットワークは erpc rpc call と同じです。

受け手に届くもの

  • POST にはそれぞれ、webhook_id、network、元の JSON-RPC の notification が入ります。受け取ったら HTTP 2xx を返します。
  • 配信は、今ある購読の時点から始まります。ランナーを再起動すると、新しいイベントから購読し直します。
  • 接続が切れるかコールバックが失敗すると、ランナーは 0 以外のステータスで終わります。
  • erpc webhook run には、1 回だけ配信を試す --once と、自分の WebSocket の RPC を使う --endpoint-url があります。

Webhook を管理する

コマンドすること
erpc webhook list保存した購読を一覧にする
erpc webhook show ID購読を表示する。コールバックの認証情報は表示しない
erpc webhook enabled-countこのマシンで有効な購読を数える
erpc webhook pause ID配信を無効にする。動いているランナーは終了する
erpc webhook activate ID後の run を有効にする
erpc webhook delete ID定義を削除する
これらが見たり変えたりするのは、ローカルの設定だけです。スクリプトでは、pause、activate、delete に --yes を付けます。