🐥

【完全保存版】RPCノードとは何か

2023/05/12に公開

はじめに

この記事は下の記事を翻訳し、編集したものになります。(翻訳・編集者:EggDragon

https://blog.thirdweb.com/what-is-an-rpc-node/

概要

すべての分散型アプリケーションにおけるコアコンポーネントの 1 つは、ブロックチェーン上でさまざまな種類のユーザートランザクションを実行することです。

これを行うには dApps が常にブロックチェーンと通信し、トランザクションの詳細を確認して処理できる必要があります。しかし、dApps はブロックチェーンと直接通信するためのものではありません。というのも、dapps 自らリクエストを送信したり、データを取得したり、トランザクションを検証および処理したりすることはできません。

そのため、分散型アプリケーションは、RPC ノードに依存しています。もし dApps が RPC ノードに接続できない場合、ユーザーリクエストを処理することができません。

RPC ノードとは何なのでしょうか? そして、dApps がそれらなしで機能しないのはなぜでしょうか?今回は RPC ノードとは何か、それらがどのように機能するのか、そして dApps で簡単に使用する方法について説明します。

RPC ノードとは

RPC ノード(Remote Procedure Call node)は、分散型アプリケーション (dApps) とブロックチェーンとを橋渡しするものです。

dApps は RPC ノードを通して、ブロックチェーンからさまざまな情報を取得したり、トランザクションを送信することで、ブロックチェーン上での処理を可能にします。

例えば

たとえば、ユーザーが分散型取引所 (DEX) を利用して、ETH を USDT に交換するように要求したとします。このユーザーからのリクエストを完了させるためには、次の 2 つの目的で DEX からブロックチェーンへ通信する必要があります。

一つ目は、ブロックチェーンに基づいて、ウォレットにスワップしたい ETH の量があるかどうかを確認します。次に、検証と実行のためにトランザクションをブロックチェーンのノードに送信します。

これらを行うために、DEX は RPC ノードを通して、必要な量の ETH がウォレットにあるかどうかをリアルタイムで確認します。確認が終わると、再び RPC ノードを使用してリクエストをブロックチェーンにブロードキャストします。

これは、RPC ノードとは何か、なぜ dApps にとって重要なのかについての表面的な説明です。理解を深めるために、より深く掘り下げて RPC ノードの仕組みを理解しましょう。

RPC ノードがどのように機能しているのか

RPC ノードの仕組みを理解する最善の方法は、RPC、ノード、および RPC エンドポイントの 3 つの概念を個別に理解することです。

これら 3 つの概念をよく理解すると、RPC ノードがどのように機能するかが明確になります。まずは、個々の用語の意味は次のとおりです。

RPC(Remote Procedure Call) とは

RPC とは、あるソフトウェアプログラムが別のコンピュータに基づく別のソフトウェアからサービスを呼び出して要求できるようにするソフトウェア通信プロトコルです。

クライアントサーバーモデルで動作します。クライアントは要求またはクエリを送信するソフトウェアであり、サーバーはその要求に応答する別のマシンに基づくソフトウェアです。サーバーによって実行されるアクションは、プロシージャーまたはサブルーチンと呼ばれます。

例えば、スマートフォンで天気アプリを使用しているとします。任意の場所で天気の更新を要求すると、アプリは RPC を使用して、更新された関連する天気情報をサーバーに保存します。その後、サーバーは要求された情報を返します。

ブロックチェーンノードとは

ブロックチェーンノードは、ブロックチェーンソフトウェアを実行し、ブロックチェーンのトランザクションのコピーを保持するコンピューターです。また、ユーザーやスマートコントラクトからのトランザクションの要求を中継、検証、実行します。

ブロックチェーンには中央サーバーやコンピューティング環境がないため、分散(distributed)および分散型(decentralized)サーバーとして機能するために数百または数千のノードに依存しています。

RPC エンドポイントとは

Web 上のすべてのものには、アドレスとドアがあります。RPC エンドポイントは、クライアントが要求を送信できるネットワークの場所またはアドレスと考えることができます。リクエストがサーバーのドアをノックすると、サーバーはリクエストを受け取り、必要なアクションを実行します。

それでは、これらをブロックチェーンにおける dApps に置き換えてみましょう。

ブロックチェーンにおける RPC ノードの仕組み

RPC ノードは、RPC エンドポイントを持つブロックチェーンノードであり、dApps からのリクエストに応答できます。

dApps (クライアント) がブロックチェーンからの情報を必要とする場合、または新しいトランザクションを中継したい場合、RPC を使用して RPC エンドポイントにリクエストを送信します。次に、エンドポイントを持つ RPC ノード (サーバー) がその要求を受け取り、必要な情報を返します。

💡 thirdweb が提供する RPC
ほぼ 100% のアップタイムを提供し、最新の状態を維持する信頼性の高い RPC ノードを持つことは、dApps にとって非常に重要です。そうしないと、dApps の トランザクションが失敗したりスタックしたりして、ユーザー エクスペリエンスが低下する可能性があります。

Ethereum エコシステムと他の多くのブロックチェーンは、JSON-RPC と呼ばれる標準化されたタイプの RPC プロトコルを使用します。

理解のために、イーサリアムの例を見てみましょう。dApps があらゆるタイプのブロックチェーン データを照会できるようにするために、イーサリアムの JSON-RPC は次のような幅広い方法に依存しています。

  • eth_blockNumber:最新のブロックの番号を返します。
  • eth_getBalance:特定のアカウントの残高を返します。
  • eth_sendTransaction:新しいトランザクションをネットワークに送信します。
  • net_version:現在のネットワーク ID を返します。
  • eth_getTransactionReceipt: トランザクション ハッシュによってトランザクションの受信を返します。
  • eth_estimateGas: トランザクションに必要なガスの見積もりを返します。

これらは、dApps が Ethereum ネットワークと対話するために使用できる多くの方法のほんの一部です。また、各ブロックチェーンには独自のカスタムメソッドがありますが、大元のプロトコルは同じです。

独自の RPC ノードをホストすることと RPC ノードサービスを利用することの比較

すべてのブロックチェーンには、パブリックに使用できる一連の RPC エンドポイントがあります。ただし、これらのパブリック RPC エンドポイントは帯域幅が制限されています。つまり、限られた数の呼び出ししか提供できず、dApps が送信する多くの要求量をサポートすることは意図されていません。

そのため、プライベート RPC エンドポイント/ノードを使用することが重要になります。これには、次の 2 つの方法があります。

  1. 独自の RPC ノードをホストする
  2. RPC ノード サービスを使用する

これらはどちらも同じ目的を果たしますが、柔軟性、使いやすさ、およびその他のいくつかの点において異なります。理解を深めるには、以下の比較表をご覧ください。

明らかに、RPC ノードサービスの方が優れており、ほとんどの dApps 開発者にとって頼りになる選択肢です。

さらに一歩進んだ方法として、代替の RPC ノードをセットアップして、RPC ノード サービスと並行して機能させることができます。こうすることで、RPC ノードサービスがダウンした場合でも、セルフホストノードはリクエストを管理することができます。

よくある質問 (FAQ)

RPC は何の略ですか?

RPC はリモート プロシージャ コールの略で、ソフトウェア プログラムが別のコンピュータで別のプログラムを呼び出して、情報を照会、取得、および応答するための技術です。

RPC は、dApps がブロックチェーンと通信する唯一の方法ですか?

いいえ、RPC は、ノードと dApps が通信に使用する通信プロトコルの一種です。WebSocket とカスタム API を使用すると、dApps でリクエストを送信し、ブロックチェーンから情報を取得することもできます。ただし、RPC は最も一般的に使用されるプロトコルです。

dApps は独自の RPC ノードを操作できますか?

はい、ブロックチェーンはオープンシステムであり、誰でもノードを設定できます。これにより、dApps の作成者は、特定の dApps からのリクエストのみを受信するエンドポイントを持つ専用の RPC ノードを構成できます。ただし、ほとんどの dApps は、RPC ノードサービスを使用して、ブロックチェーンノードのセットアップと維持のコストと手間を回避しています。

RPC ノード サービスはどこで入手できますか?

thirdweb は、スマートコントラクトをデプロイして dApps を無料で簡単に構築するための完全な web3 開発フレームワークです。あらゆる EVM 互換ブロックチェーンに対して、ほぼ 100% のアップタイムでさまざまな SDK と信頼性の高い RPC ノードサービスを提供します。

thirdweb のすべての RPC エンドポイントについては、こちらを参照してください。

https://thirdweb.com/chainlist?ref=blog.thirdweb.com

RPC ノード: 分散型アプリケーションのバックボーン

RPC ノードは、dApps をオンラインに保ち、ユーザーリクエストを処理するための重要な部分です。特に、アプリが多数のユーザーを管理するように構築されている場合は重要です。信頼性の高い RPC ノードにより、dApps はブロックチェーンから必要なだけ多くの情報をクエリでき、ユーザーはトランザクションの遅延に直面することがありません。

したがって、独自の RPC ノードを運用することは良い考えですが、thirdweb のようなサービスを使用することで、それを維持する手間が省け、ユーザーのために優れた dApps エクスペリエンスを構築することに集中できます。

この記事が、RPC ノードとは何か、どのように機能するか、dApps を構築するために RPC ノードを開始する方法をよりよく理解するのに役立つことを願っています。質問がある場合は、Discordコミュニティで 35,000 人以上の他のビルダーに参加してください。

無料の RPC エンドポイントを使用して dApps を構築する場合は、ぜひ thirdweb の 無料の web3 開発スタックと SDK を使用してください。

Discussion