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

Polygonノードとは:知っておくべきこと

Alchemy team headshot

執筆者 Alchemy

2022年9月27日 公開読了時間 1 分

Ethereumメインネットと同様に、Layer-2ソリューションであるPolygonもノードを使用して、ネットワークに参加するすべてのコンピュータが正しく動作していることを保証しています。ただし、Polygonノードは異なるアーキテクチャを持っており、処理タスクのサブセクションをカテゴリ分けして、異なるノードレイヤーに委任しています。

この記事では、Polygonノードの種類、Polygonノードの作成・実行方法、そしてノードプロバイダーがこのプロセス全体をどのように容易にするかについて解説します。

Polygonとは

PolygonはEthereumのスケーリングソリューションであるサイドチェーンで、Ethereum Virtual Machine(EVM)との互換性を維持しながら、リソースを大量に消費するタスクをEthereumのメインブロックチェーンの外部で実行することで、ガスコストを削減しスケーラビリティを向上させます。

かつてMATICとして知られていたPolygonは、2017年にリブランドされましたが、ティッカーシンボルとしてはMATICを維持しました。したがって、PolygonとMATICは同一のものです。Polygonの現在のテストネットはPolygon Amoyで、開発者は実際の資金を使わずにPolygonアプリケーションをテストできます。以前のMumbaiテストネットは廃止されました。

Polygonノードとは

Polygonノードとは、Polygonブロックチェーンのコピーをダウンロードしてネットワークに参加するコンピュータのことですが、Polygonには複数のノードタイプ(Borノード、Heimdallノード、フルノード、Sentryノード、バリデータノード)があり、それぞれ異なる役割を担っています。

Polygonネットワークは大きく3つのレイヤーに分かれています。

  1. Ethereumメインネット - コントラクトのProof-of-Stake、チェックポインティング、報酬に使用
  2. Heimdallノードレイヤー - バリデーションに使用
  3. Borノードレイヤー - ブロックの生成に使用

以下では、HeimdallノードとBorノードについてより詳細に解説し、これらがより複雑な機能のためにどのように連携して使用されるかについても説明します。

Borノードとは

Borノードは最も基本的なタイプのPolygonノードであり、トランザクションをブロックに集約する役割を担い、これがHeimdallノードによってパース・利用されます。 このように、Borノードはロールアップスキームの片側として機能し、データをより効率的に処理可能な形式に集約します。ブロック生成者はバリデータノードのセットからランダムに選出されます。

Heimdallノードとは

Heimdallノードは、前回のチェックポイント以降のすべてのBorブロックを検証し、Borノードによって作成されたすべてのブロックをMerkle treeに集約します。 Heimdallノードはまた、定期的にMerkle rootのハッシュをメインブロックチェーンに送信します。チェックポイントは、特定のスパンまたはブロックセットにおけるブロック生成者のランダム性とバリデータセットの選出を管理するため、Polygonシステムにとって非常に重要です。

フルノードとは

フルノードとは、トランザクションとブロックを完全に検証するノードであり、1)プルーニング済みフルノードと2)アーカイブフルノード(アーカイブノードとも呼ばれる)の2種類があります。

プルーニング済みフルノードは、失敗したすべてのトランザクション状態を破棄し、軽量化のために一定数のブロックまでしか遡りません。アーカイブノードは、チェーンのすべての履歴状態も保存するフルノードです。つまり、アーカイブノードは、チェーン開始時から最新のトランザクションまでの正確な状態を保持しています。

Polygonのアーカイブノードが直面する可能性のある問題の一つにアーカイブノードの上限があり、チェーン全体の状態データが16TBに近づいています。このため、ノードのストレージを増やす、無駄なデータをクリアするためにノードを削除して再同期する、またはPolygonノードプロバイダーを使用することが推奨されます。

Sentryノードとは

Sentryノードは、HeimdallノードとBorノードの両方を実行するフルノードで、他のノードからデータをダウンロードし、選択されたバリデータノードにこのデータを転送すると同時に、Polygonネットワーク全体へのアクセスも持ちます。Sentryノードはまた、バリデータを公開ネットワークから隔離し、トランザクションのスループットを低下させたり停止させたりする可能性があるDistributed Denial of Service(DDOS)攻撃などの攻撃ベクトルからバリデータノードを保護します。

Polygonバリデータとは

Polygonバリデータとは、1台のマシンにバリデータノードを、別のマシンにSentryノードを持ち、MATICトークンをステーキングしている者のことです。 Polygonバリデータは、Heimdallレイヤーでのトランザクション検証のためにランダムに選出されます。バリデータノードはSentryノードと類似したアーキテクチャを持ちますが、Sentryノードとの間でデータをやり取りする方法という点で異なります。

Polygonノードプロバイダーとは

Polygonノードプロバイダーとは、開発者にPolygonノードのAPIエンドポイントを提供する企業のことで、これによりアプリは自身でPolygonノードを実行することなく、Polygonブロックチェーンにリクエストを送信しペイロードを受け取ることができます。

自身のPolygonフルノードを持つことには、ソフトウェアクライアントのカスタマイズなどの利点がありますが、ノードプロバイダーは安定性、速度、データの正確性の点で個々のPolygonノードと比較して大きな利点を提供します。ノードのメンテナンスへの懸念は貴重なエンジニアリング時間を必要としますが、ノードプロバイダーはこの一般的な問題を解決できます。

アプリにとって、最適なPolygonノードプロバイダーを選ぶことは、スケールと利用者数の需要を見据えて構築する上で重要な決定事項です。インフラの観点から最も重要な要素は、スケーラビリティ、データの正確性、ノードの種類(フル、アーカイブなど)、そしてサポートされているブロックチェーン(マルチチェーンで構築する予定の場合)です。

顧客の観点からは、ノードプロバイダーが優れた価格設定、有能なデベロッパーリレーションズチーム、迅速に対応するサポートスタッフ、そしてweb3開発者のニーズに効果的に応える最適化されたAPIやSDKなどの優れた開発者向けツールを持っていることも重要です。

AlchemyでPolygonノードに接続する方法

Polygonの公式ドキュメントには、Alchemyを使用してPolygonフルノードに接続する方法の完全な手順がありますが、ここでは素早く始めるための簡略化した説明を紹介します。

1. Alchemyに登録する

Alchemyはサービスの無料プランを提供しており、Alchemy開発者プラットフォームで無料のPolygonアカウントを作成して、Alchemy Polygon APIとやり取りすることができます。

サインイン時のAlchemyダッシュボード
サインイン時のAlchemyダッシュボード

‍

  1. Polygonアプリケーションを作成してAPIキーを生成する

Alchemyアカウントの作成に成功したら、アプリを作成してAPIキーを生成する必要があります。これにより、PolygonメインネットまたはPolygon Amoyテストネットへのリクエストが認証されます。

新しいAPIキーを生成するには、Alchemyダッシュボードのナビゲーションバーにある「Apps」タブに移動し、「Create App」サブタブを選択します。

フィールドに入力しテストネットを選択したら、「Create app」をクリックします。

新しいアプリが下記の表に表示されるはずです。

新規作成したPolygonアプリを表示するAlchemyダッシュボードのAppsテーブル
新しいアプリが「Apps」テーブルに表示される

Alchemyからカスタム Polygon RPC URLを取得するには、Alchemyダッシュボードのアプリに移動し、右上にある「View Key」をクリックします。

次に、Alchemy HTTPS APIキーをコピーし、アプリケーションに貼り付けます。

注: 複数のインフラプロバイダーから公開のPolygon RCP URLを確認するには、Alchemy Chain Connectを使用してください。

ノード用のPolygon RPC URLを設定する「View Key」オプション
ノード用のPolygon RPC URLを設定する「View Key」オプション

‍

ステップ3. Polygon APIをセットアップして開発を始める

JavaScriptとNode.jsを使用している場合は、ethers.jsなどの標準ライブラリをAlchemyのPolygon RPCエンドポイントと共に使用します。

  1. プロジェクトをセットアップします: npm init -y
  2. ターミナルで次のコマンドを実行してethers.jsをインストールします: npm install ethers。
  3. エンドポイントを使ってethers.jsを設定します: import { ethers } from "ethers"; const provider = new ethers.JsonRpcProvider("https://polygon-mainnet.g.alchemy.com/v2/<API_KEY>");

AlchemyのAPIの使用に関する詳細は、Alchemyのドキュメントを参照してください。

Polygonノードプロジェクト用にAlchemy SDKをインポートするコードスニペット
Polygonノードプロジェクト用のSDKのインポート

Polygonノードプロバイダーの使用は簡単でスケーラブルであり、あらゆるスキルレベルの開発者がweb3での開発を始めることができます。 ‍

Polygonノードの要件

Polygonフルノードを実行するには、いくつかの技術仕様とソフトウェアの前提条件を満たす必要があります。現在の最小要件は16-32GBのRAMと4-8コアのCPUで、最小限の拡張可能なストレージドライブは1.2TBです。チェーンの履歴が増えるにつれてノードが保存する必要のあるデータも増加するため、最小仕様もそれに応じて増加します。

さらに、Polygonはどのオペレーティングシステムでも問題なく動作するとしていますが、MacOSやWindowsよりもCentOSなどのLinuxサーバーディストリビューションのセキュリティと安定性が推奨されるとしています。

Polygonフルノードのセットアップ方法

Polygonノードプロバイダーを使用せず、代わりに自身のPolygonノードを設定・維持したい場合、以下に必要な手順の概要を示します。

1. ノードを実行するマシンを構築する

Linuxが推奨されるため、ノードをホストできるLinuxサーバーを実行するマシンを使用することになります。コマンドラインでSecure Shell(SSH)を使用してLinuxサーバーにリモート接続することもできます。ハードウェア要件を確認し、マシンにかなり大きな最小ストレージと計算能力があることを確認してください。

2. 前提条件をダウンロードする

ソフトウェア要件に関しては、Python 3.xがインストールされたマシンにAnsibleをダウンロードする必要があり、次のコマンドでダウンロードできます: pip3 install ansible

さらに、GoやHeimdallおよびBorの以前のセットアップがインストールされていないことを確認してください。これらは完全に新しいインストールプロセスと競合する可能性があります。

3. ノードをセットアップして実行する

すべての手順は、フルノードをセットアップして実行するための公式Polygonドキュメントからのものです。手順は以下の通りです。

  1. リモートマシン/仮想マシンへのアクセスを確認し、指定されたリポジトリをクローンして、IPを設定して機能を検証します
  2. フルノードをセットアップし、リモート/仮想マシンに入り、HeimdallとBorノードを設定します
  3. フルノードを実行し、ログを確認してノードが正しく同期されているかを確認します

AlchemyでPolygonの開発を始める

Polygonは急速に成長しているEthereumサイドチェーンで、開発者にEVM互換アプリケーションを構築するための高速で手頃な価格の、スケーラブルなブロックチェーンを提供します。Polygonは、そのスケール、手頃な価格、低い炭素排出量から、Starbucksの新しいロイヤルティ報酬プログラムなど、一部の大手web2企業からも選ばれています。

Polygonでの開発を始めるには、今すぐAlchemyで無料のPolygon開発者アカウントを作成しましょう!

Background gradient

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

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