新着:HeliusがLight Protocolを買収
Solana RPCの仕組み
ブログ/基礎

Solana RPCについて知っておくべきこと(2023年)

共同創業者兼CEOXのMert MumtazLinkedInのMert Mumtaz
読了時間:5分

はじめに

RPCは、分散型アプリケーションがブロックチェーンネットワークとやり取りするうえで不可欠な要素です。急速に進化するこの分野に携わるなら、必ず理解しておく必要があります。Solanaに注力している場合でも、他のブロックチェーンプラットフォームを利用している場合でも、このガイドを通じて、従来型環境とブロックチェーン環境の両方におけるRPCの役割について重要な知識を得られます。

RPCの意味:RPCとは何の略ですか?

暗号資産の世界では、必要なデータはすべてオンチェーンにあります。完全にパーミッションレスで、誰でも自由に閲覧し、利用できます。では、どうすれば取得できるのでしょうか? そこで使うのがRPCです。

RPCは、技術的にはRemote Procedure Call(リモートプロシージャコール)の略ですが、RPCノードを指す略称としてよく使われます。RPCノードはブロックチェーンネットワークに参加し、開発者が呼び出せるメソッド(リモートプロシージャコール)を公開するノードです。

RPCとAPIの比較

従来の(Web2)ソフトウェア開発では、一般的にAPIを使って必要なデータを取得します。たとえば、決済データにはStripe API、SMSデータにはTwilio、金融データにはBloomberg、銀行データにはPlaidを利用します。

ここで注目すべきなのは、求めているデータが中央集権的な組織によって囲い込まれ、管理されている場合が多いことです。

そこでRPCが役立ちます。外部プロバイダーを必要とせず、パーミッションレスなデータを効率的に取得できます。これは台帳への呼び出しから直接得られるデータです。

従来型RPCとブロックチェーン・暗号資産RPCの比較

従来型環境とブロックチェーン環境のどちらでも、RPCはデータを取得する手段として機能しますが、共通点は多くの場合そこまでです。従来型RPCはさまざまなプロトコル上で動作し、中央集権型データベースとやり取りするため、データの整合性を単一の組織に委ねる必要があります。一方、ブロックチェーンRPCは一般的にJSON-RPCを介したHTTPを使用し、分散型ネットワークからデータを取得します。また、複数のノードでデータを検証することで、より高いセキュリティを実現します。従来型RPCではデータアクセスが制限されることがありますが、ブロックチェーンRPCでは通常、オープンな公開データを利用できます。さらに、特にSolanaのようなネットワークのブロックチェーンRPCは、分散型アプリケーションのリアルタイム要件を満たすため、速度とスループットに最適化されています。こうした主な違いを理解すれば、ブロックチェーンエコシステムでRPCをより適切に利用できます。

Solana RPC

Solana Mainnet RPC

SolanaブロックチェーンのMainnet Betaクラスターからデータを取得するには、ネットワークに参加しているRPCノードへJSON-RPCリクエストを送信する必要があります。

一般的なJSON-RPCリクエストは次のようになります。

コード
curl  -X POST -H "Content-Type: application/json" -d '  { "jsonrpc": "2.0","id":1,"method":"getBlock", "params": [430, { "encoding": "json", "maxSupportedTransactionVersion":0, "transactionDetails":"full", "rewards":false } ] }

このリクエストは、https://api.mainnet-beta.solana.comにあるRPCノードへ、getBlock RPCメソッドの実行を要求します。このノードはSolanaブロックチェーン用のソフトウェアクライアントを実行しているため、リクエストを受け取った際に何をすべきかを判断できます。

実際には、このようなJSON-RPCリクエストを直接扱うことはほとんどありません(もちろん、直接扱うこともできます)。多くの開発者はRPCクライアントの利用を選びます。最も一般的に使われているのはSolana Web3 JSライブラリで、こちらから確認できます。Solanaで利用可能なJSON RPCメソッドの完全な一覧については、公式ドキュメントをご覧ください。

Solana Devnet RPC

また、Devnet RPCを使用してSolanaのDevnetクラスターにアクセスすることもできます。Solanaはテスト用RPCを提供しており、https://api.devnet.solana.comから利用できます。

この場合、RPCリクエストは次のようになります。

コード
 curl [<https://api.devnet.solana.com>](<https://api.devnet.solana.com/>) -X POST -H "Content-Type: application/json" -d '  { "jsonrpc": "2.0","id":1,"method":"getBlock", "params": [430, { "encoding": "json", "maxSupportedTransactionVersion":0, "transactionDetails":"full", "rewards":false } ] }

変更されるのは、接続先のクラスターだけです。Devnet上の対象アカウントにトランザクションや情報がない場合は、照会するアカウントを変更する必要があります。これは、DevnetクラスターがMainnet Betaの履歴を共有していないためです。

Ethereum RPCとSolana RPCの比較

Solanaが機能するには、そのソフトウェアクライアントを実行する分散ノードネットワークが必要です。

これらのノードは、バリデータとRPCの2種類に分けられます。

この2種類のノードには重要な共通点があります。どちらもブロックチェーンを継続的に監視し、最新のデータ(または状態)を保存しています。

ただし、両者には重要な違いが1つあります。

バリデータは投票(例:「はい、このブロックは有効です」)を行い、コンセンサスに参加するノードです。

RPCは投票を行わず、オンチェーンデータを扱うためのリクエストを処理するノードです。この構成は、Ethereumなど他のブロックチェーンでは一般的ではありません。そうしたブロックチェーンでは、バリデータノードとRPCノードが同一であることがよくあります。

RPC呼び出しを行うと、ブロックチェーンに参加しているノード上のプロシージャや関数が実行されます。そのノードはネットワークに参加しているため、最新のデータを把握しており、リクエストに応じてそのデータを提供できます。

Helius:Solana RPC企業

Heliusは、Solana開発者に多くのメリットをもたらす高品質なRPCアクセスを提供しています。

Helius RPCは最高クラスのハードウェアで稼働しており、アプリが常に最高のパフォーマンスを安定して発揮できるよう支えます。私たちは、エコシステムで最高の開発者サポートを24時間365日提供していることを誇りにしています。システムで予期しない問題が発生した場合や、今後の機能について質問がある場合も、すぐにサポートします。

Solana RPC:Heliusの利用を開始する方法

RPCは極めて重要です。RPCがなければ、ブロックチェーンを扱うことは文字どおりできません。そのため、RPC体験の向上を専門とする企業が存在します。RPCマシンは非常に高い負荷で利用されるため、高負荷時にも優れた性能を発揮することが不可欠です。優れたRPCプロバイダーには、信頼性と安定したパフォーマンスに加え、エンドユーザーが利用傾向を時系列で確認できるメトリクスの提供が求められます。

HeliusはSolanaネイティブのエンジニア集団であり、あらゆる開発者に最高のRPC体験を提供することを使命としています。メール登録もクレジットカードも不要で、わずか2クリックで無料で始められます。

この記事では、Solana RPCについて初心者にも分かりやすく、ごく簡潔に紹介しました。すでにご存じの内容も多かったかもしれません。次回は、RPCの最適化や注意点、さらに高度なトピックについて解説します。お読みいただき、ありがとうございました!

Heliusを購読

Solana開発の最新情報や新しい記事の公開通知を受け取れます

拡大画像