コンテンツへスキップ
0%

RPCノードとは?

Alchemy team headshot

執筆者 Alchemy

2025年4月11日 公開読了時間 1 分

分散型アプリケーション(app)は、トランザクションの送信、ブロックデータの取得、ブロックチェーンの状態の評価といったユーザーリクエストを処理するために、常にブロックチェーンからのデータを必要とします。ノードはRemote Procedure Calls(RPC)を通じてこの機能を実現し、appとブロックチェーンを接続します。ブロックチェーンRPCノードにより、appはブロックチェーンとやり取りし、ユーザーデータに簡単にアクセスできるようになります。

この記事では、ブロックチェーンRPCノードとは何か、そしてその仕組みについて掘り下げていきます。最後まで読めば、ブロックチェーンRPCノード、RPCエンドポイント、そしてRPCノードプロバイダーの使い方についてしっかりと理解できるようになります。

リモートプロシージャコール(RPC)とは?

Remote Procedure Call、略してRPCとは、プログラム(クライアント)が、異なるネットワーク上でホストされているリモートプログラム(サーバー)と、サーバーのネットワークの詳細を知る必要なく通信できるようにする、軽量なソフトウェア通信プロトコルです。

例えば、ローカルコンピューターからRPCを使ってリモートサーバーシステムにリソースをリクエストすることができます。クライアントがリクエストを行うと、サーバーはサブルーチンと呼ばれる手続きを実行するよう促されます。

ブロックチェーンにおいて、appが正しく機能するにはブロックチェーンのデータが必要です。そのため、RPCのクライアント・サーバーモデルでは、appがクライアントであり、サーバーはRPCノードとなります。

RPCノードとは?

RPCノードは、ブロックチェーンクライアントソフトウェアを実行しているコンピューターです。例えば、Ethereumブロックチェーン向けにExecution Layer(EL)とConsensus Layer(CL)の両方のインフラを実行しているサーバーがこれにあたります。

Ethereumノードには複数の種類があり、light node、full node、archival nodeなどが含まれます。一方Solanaでは、開発者はvalidatorノードとRPCノードの両方を実行できます。validatorノードはSolanaのコンセンサスプロトコルを実行し、ブロックの検証によって報酬を得ますが、Solana RPCノードは単にSolana appがブロックチェーン情報を取得するためのゲートウェイとして機能するにすぎません。

この記事では、_RPCリクエストに応答できるあらゆるノード_をRPCノードとみなすこととします。

RPCエンドポイントとは?

RPCエンドポイントとは、プログラムがサーバーのデータにアクセスするためにRPCリクエストを送信するネットワーク上の場所を指します。例えば、appをEthereum RPCエンドポイントに接続すれば、リアルタイムでブロックチェーンデータを利用する処理を簡単に実行できます。

適切なソフトウェアがインストールされた_ノード_は、RPCリクエストに応答する能力を持ちます。ノード上で稼働しているRPCエンドポイントとは、appがユーザーのためにブロックチェーン情報を取得するために利用するサービスを指します。したがって、すべてのRPCエンドポイントはRPCノード上で稼働しており、すべてのRPCノードはRPCエンドポイントを持つノードです。そのため、この記事ではRPCノードとRPCエンドポイントという用語を同じ意味で使用します。

RPCエンドポイントにはどのような種類があるか?

ノードのRPCエンドポイントは、パブリックとプライベートという2つの主要なインフラ形態に分類されます。オルタナティブRPCエンドポイントは、これら2つを補完し、appがRPCエンドポイントの耐障害性バックアップを維持できるよう支援します。

1. パブリックRPCエンドポイント

パブリックRPCエンドポイントは、誰でもリクエストを送信できるRPCノード上で稼働する、共有かつレート制限のあるリソースです。ブロックチェーンがパブリックRPCエンドポイントを提供するのは、誰もがブロックチェーンとの間でデータを送受信できるようにするため(例:トランザクションの実行)です。

パブリックエンドポイントは無料でいつでも利用でき、本番環境レベルのアプリケーションをサポートすることを想定していないため、多くの場合レート制限がかけられています。さらに、パブリックRPCエンドポイントにはカスタマーサポートがなく、能動的な開発者インフラも欠けており、稼働中のappの需要に合わせてスケールすることもありません。

2. プライベートRPCエンドポイント

プライベートRPCエンドポイントは、あなたのapp専用のニーズにのみ応えるために稼働し、他のプログラムによって生じるリクエストの混雑を回避し、高速かつ安定したRPCサービスの恩恵を受けられます。

プライベートRPCノードはあなたのリクエストに応じて稼働します。さらに、ノードプロバイダーを利用している場合、プライベートRPCエンドポイントには明示的なサービスレベルアグリーメント(SLA)が設定されていることが多く、必要なときにいつでも高性能なサービスがappに提供されることが保証されます。

例えば、Alchemyは無料のOptimism RPCノード無料のBase RPCノード無料のMonad RPCノード、そして40以上のチェーン向けの無料RPCノードを提供しています。

3. オルタナティブRPCエンドポイント

RPCエンドポイントにダウンタイムが発生した場合、オルタナティブRPCエンドポイントがバックアップエンドポイントとして機能し、appのスムーズなユーザー体験の維持を助けます。

オルタナティブRPCエンドポイントが用意されていない場合、プライマリRPCエンドポイントが障害を起こすと、ユーザーのトランザクションもすべて失敗してしまいます。単一障害点を作らないためには、オルタナティブRPCエンドポイントを備えたappを構築することが望ましい方法です。

RPCノードはどのように機能するか?

RPCノードは、appをブロックチェーンのすべての情報に接続することで機能します。プログラムがサブルーチンを開始すると、RPCノードはブロックチェーンを通じて必要なリクエストを取得し、そのペイロードをappに送り返すことができます。

このセクションでは、ブロックチェーンRPCリクエストを支える技術について簡単に解説します。

JSON-RPCプロトコル

ブロックチェーンで使用される標準的なRPC仕様はJSON-RPCと呼ばれています。データのリクエストを迅速に受信・処理できる点が特徴です。

クライアント・サーバーモデルを思い出すと、あなたのappがクライアント、RPCエンドポイントがサーバーであり、JSON-RPCはRPCエンドポイントにサービスをリクエストするための具体的な方法にあたります。

各ブロックチェーンのJSON-RPC APIで定められたメソッドを使うことで、appが必要とする実質あらゆる種類のブロックチェーンデータをリクエストできます。

JSON-RPCメソッドの多様性を示す例として、Ethereumではネットワークからデータを取得するための一連のコアメソッドが定められています。これらのメソッドはgossipメソッド、stateメソッド、historyメソッドの3つのカテゴリに分かれています。

  1. Gossip Methods - ブロックチェーンの先頭を追跡し、ブロックを見つけるために使用される
  2. State Methods - ブロックチェーンの全データの現在の状態に関するレポートを返す
  3. History Methods - チェーン上の任意のブロックの過去の記録を取得する

ユーザーの操作がブロックチェーンデータに依存する場合、アプリケーション(クライアント)はJSON-RPCメソッドを使ってRPCノード(サーバー)を通じて呼び出し(サブルーチン)を行い、その結果としてアプリケーションが使用する情報が返されます。

RPCノードへのアクセス方法

開発者がRPCノードにアクセスする主な方法は3つあります。RPCノードプロバイダーが提供するプライベートRPCエンドポイントを使う方法、自前のノード(すなわちセルフホスト型ノード)を運用する方法、そしてパブリックRPCノードを経由してトラフィックを送る方法です。

1. RPCノードプロバイダーを利用する

RPCノードプロバイダーは、appのためにノードのセットアップ、管理、メンテナンスをすべて担い、正常に稼働し続けることを保証します。これはオンチェーン開発における最善の方法です。

したがって、ブロックチェーンノードインフラプロバイダーを選ぶことで、ノードのセットアップとメンテナンスに関する責任のすべてを開発者が負う必要がなくなります。トップクラスのブロックチェーンノードプロバイダーはこれらの機能をネイティブに統合しており、開発者は革新的なエンドユーザー向けプロダクトの構築に時間とエネルギーを集中できます。

ノードプロバイダーは、Ethereumなど主要なほとんどのブロックチェーンで利用可能です。

Alchemy's RPCノードインフラの利用を始める方法

Alchemyは、Ethereum、Solana、Monad、Base、Arbitrumを含む40以上のチェーンにわたってRPCエンドポイントを提供しています。数クリックで、高性能なAlchemy RPCノードを使い始めることができます。

  1. Alchemyアカウントを作成する。

  2. ダッシュボードの「Create App」ボタンを使って最初のappを作成する。

dashboard > create an app
  1. appに名前を付け、ユースケースを選択する。
Alchemyダッシュボード:新しいアプリの命名とユースケースの選択
  1. 使用したいブロックチェーンとネットワークを選択する。
Alchemyアプリ設定:ブロックチェーンとネットワークの選択
  1. ダッシュボードの「View Key」ボタンを使い、新しいノードのURLをコピーして、RPCリクエストの送信を開始する。
Alchemy dashboard: using the View Key button to copy the RPC node URL

自分でRPCノードを運用する方法

自分のノードを運用することにはメリットとトレードオフがありますが、これはノードの設定を完全にコントロールしたい技術力のある開発者やweb3チームにとっての選択肢です。ここでは、Ethereumブロックチェーン上で自分のノードを立ち上げる手順を大まかに説明します。

1. RPCノードの構成を選ぶ

Ethereumノードは、クライアント実装(例:consensus clientとexecution client)、ハードウェア・システム環境、設定という3つの要素で構成されます。これらを大まかに見ていきましょう。

クライアント実装

これは、execution layer(EL)とconsensus layer(CL)それぞれについてノードクライアントソフトウェアを選ぶことを意味します。ELにはBesuErigonGethといったノードクライアントがあります。Consensus LayerのクライアントにはLighthouseTekuLodestarなどがあります。

ハードウェア・システム環境

クライアントを実行できるハードウェアにクライアントソフトウェアをインストールする必要があります。必要なハードウェアは、選択するクライアントや構築対象のブロックチェーンによって異なります。例えば、Solanaノードの実行にはEthereumよりも高いハードウェア要件があります。ハードウェアの仕様については、各ブロックチェーンのドキュメントを参照してください。

開発者は自分でマシンを組み立てることも、ノード実行専用に設計されたハードウェアシステムを提供するプロバイダーからハードウェアを購入することもできます。業界をリードするハードウェアプロバイダーであるdAppNodeの、最も安価な一般的なノードマシンでも1,500ドル以上します。

クライアント設定

自分でノードを運用する主なメリットの一つは、カスタマイズ性の高さです。セットアップ時に、ハードウェアやソフトウェアの要件、特定のクライアントの要求に応じてノードを簡単に構成できます。

2. RPCノードを立ち上げる

ハードウェアとソフトウェアの選定がすべて終わったら、いよいよノードを起動します。ガイド付きのセットアップサービスを選んで、使いやすいユーザーインターフェース(UI)を通じてクライアントのセットアップを進めることも、コマンドラインインターフェース(CLI)を使って手動でノードをセットアップすることもできます。

大まかな手順は以下の通りです:

  1. 両方のクライアントソフトウェア(ELとCL)をインストールする
  2. 決定した設定を反映させながら、両方のクライアントを起動する

その後、ノードはブロックチェーンと同期します。ハードウェアの速度やブロックチェーンの過去の状態のサイズによって、数日から数週間かかることがあります。

この長い同期プロセスは、自分でノードを運用する際のトレードオフの一つです。追加のキャパシティが必要な場合、新しいノードを立ち上げるのに数日から数週間かかることがありますが、ノードプロバイダーであれば必要に応じて追加のキャパシティをオンデマンドで提供できます。

3. RPCノードを維持する

メンテナンスコストも、自分でノードを運用する際のもう一つのトレードオフです。ノードは断続的に稼働し、さまざまな理由でダウンしたり、同期が外れたり、障害を起こしたりすることがあります。さらに、execution layerとconsensus layerのソフトウェアは、ノードクライアントソフトウェアの開発者によって絶えずアップグレードされていきます。

なぜRPCノードプロバイダーは自分でRPCノードを運用するより優れているのか?

ノード管理にかかる時間とリソースを節約できるだけでなく、ノードプロバイダーは24時間365日、信頼性が高く低レイテンシーなノードアクセスを保証できます。 あなたのノードは、RPCノードの高いパフォーマンスの実現のみに専念する経験豊富なチームによってサービス提供されます。

自分でノードを運用することを選ぶのは、非常に高いレベルのカスタマイズ性を求める場合には優れた選択ですが、スムーズで手間のかからない開発者体験を求める場合には向いていません。

Build vs. Buy: Blockchain Infrastructure ebook cover
無料ガイド

Build vs. Buy: ブロックチェーンインフラ

インフラチームを雇う前に読んでください:自社構築には、本番リクエストを1件処理する前に年間850,000〜1,000,000ドル以上かかることがあります。コストの内訳全体はこちら。

ガイドをダウンロード

パブリックノードを経由してトラフィックを送る方法

利用しているブロックチェーンによって異なりますが、そのネットワークのドキュメントでパブリックRPCエンドポイントの提供情報を確認し、そのURLにトラフィックをルーティングすることでリクエストを送信できます。 Solanaなど一部のブロックチェーンでは、限られた数のパブリックRPCノードへのアクセスが提供されています。

以下は、Solanaのパブリックノードを使ったcurlリクエストの例です。

text
Copied
curl /* Solana public RPC endpoint URL here */ -X POST -H "Content-Type: application/json" -d' { "jsonrpc": "2.0", "id": 1, "method": "getBalance", "params": ["83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"] }

ただし、パブリックエンドポイントではリクエストにレート制限がかかることに注意してください。これは開発者にとって推奨される方法ではありません。

Alchemyの無料RPCノードで開発を始める

RPCノードに接続する方法は3つあります。Alchemyのようなノードプロバイダーを利用する方法、自分でノードを運用する方法、そしてパブリックノードを経由してトラフィックを送る方法です。自分でノードを運用するには不要なオーバーヘッドが多くかかり、パブリックノードは厳しくレート制限されているため、Alchemyの大規模な無料RPCノードプランを活用することが、オンチェーン開発における最良の選択肢です。

マネージドRPCノードを使って、開発体験をよりスムーズにする準備はできましたか?

Alchemyにサインアップして、無料のRPCノードを使い始めましょう!

よくある質問

RPCノードとは何ですか?

RPCノードとは、Remote Procedure Calls(RPC)を通じてアプリケーションがブロックチェーンとやり取りできるようにする、ブロックチェーンクライアントソフトウェアを実行しているコンピューターです。

RPCノードはどのように機能しますか?

RPCノードは、appをブロックチェーン情報に接続し、アプリケーションからリクエストを受け取り、ブロックチェーンとやり取りすることでそれを処理し、JSON-RPCプロトコルを使って結果を返すことで機能します。

RPCエンドポイントにはどのような種類がありますか?

主に3種類あります。パブリックRPCエンドポイント(共有かつレート制限のあるリソース)、プライベートRPCエンドポイント(あなたのappのニーズ専用)、そしてオルタナティブRPCエンドポイント(耐障害性のためのバックアップエンドポイント)です。

自分でRPCノードを運用することと、ノードプロバイダーを利用することの違いは何ですか?

自分でノードを運用するには、多額のハードウェア投資、メンテナンス、同期にかかる時間が必要になりますが、Alchemyのようなノードプロバイダーはセットアップ、管理、メンテナンスをすべて代行し、信頼性の高い24時間365日のアクセスとより優れた開発者体験を提供します。

JSON-RPCプロトコルとは何ですか?

JSON-RPCは、ブロックチェーンで使用される標準的なRPC仕様であり、gossipメソッド(ブロックの発見)、stateメソッド(現在のブロックチェーンの状態)、historyメソッド(過去の記録)といったメソッドを通じて、迅速なデータ取得を可能にします。

RPCノードはどのブロックチェーンに対応していますか?

RPCノードは、Ethereum(execution layerとconsensus layerを含む)、Solana、Base、Arbitrum、Optimismをはじめとする複数のブロックチェーンに対応しており、Alchemyは40以上のチェーンをサポートしています。

なぜRPCエンドポイントは開発者にとって重要なのですか?

RPCエンドポイントは、開発者が自分でフルノードを運用する必要なく、appがブロックチェーンデータを取得し、トランザクションを送信し、スマートコントラクトとやり取りするために不可欠なゲートウェイアクセスを提供します。

RPCノードを使い始めるにはどうすればよいですか?

Alchemyアカウントを作成し、ダッシュボードから最初のappをセットアップし、使用したいブロックチェーンとネットワークを選択して、提供されたエンドポイントURLを使ってRPCリクエストの送信を開始できます。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。