# Solana PoHまとめ **Published by:** [posaune0423](https://paragraph.com/@posaune0423/) **Published on:** 2022-08-09 **URL:** https://paragraph.com/@posaune0423/solana-poh ## Content Solanaはなぜ早いのか「なぜ早いのか」 => 「どういう仕組で71000TPS (from Solana Docs)をさばいているのか?」※ VISAのTPS = 4000万 大きく分けて以下の3つ。合意形成アルゴリズムにPoH(Proof oh History)を採用しているこれにより合意形成時にノードの同期が必要なく非同期にtransactionを処理できる。 ⇒ Turbinバリデータノードのマシンスペック要求が高いGas AuctionがないSolanaの合意形成ざっくりSolanaはPoHを採用しているというのはPoHのみで動いているというわけではない。以下の図のようにPoH生成者がただ一人存在しており、このPoH生成者はPoSバリデータの投票により選出される。Solanaの合意形成においてはノードの2/3以上のバリデータの支持により最終的に合意形成が完了される。したがって攻撃者は少なくともtotalSupplyの1/3以上の通貨を保持しなければこの投票を覆すことはできない。https://github.com/solana-labs/whitepaper/blob/master/figures/network_design_001.pngPoHとはProof of Historyと呼ばれるSolanaが採用している合意形成アルゴリズムのこと。具体的には任意の2つのイベントの時系列を暗号学的に検証するためのスキームである。 Solanaでは他の主要なブロックチェーン(Ethereum, Bitcoin)などと異なり、トランザクションの承認処理を待たずに次のトランザクションの承認に次々に進んでいき、この時ノード間では完全な同期は取らない。そうすることで各ノードは非同期にVerify作業が行なえ、TPSの向上につながっている。 ここで問題なのは、バリデータの承認を待たずに次のトランザクションを捌くということは、バリデータAとバリデータBが同時に新しいブロックを提案する可能性もある。この時他のバリデータはブロックA、ブロックBの両ブランチに投票することで利得が最大化されるが、これはシステムのセキュリティを低下させる(Nothing at Stake問題)ため、これを防ぐのがTower BFTというサブプロトコルになっている。Turbin分散システムでは、ノード数を増やすと、すべてのノードにすべてのデータを伝搬するのに必要な時間が長くなることがあります。Turbineはこの問題を解決することを目的としたブロック伝搬プロトコルです。あるノードが非常に大きなメッセージを1,000人のピアに伝搬する場合、1,000回伝搬するのではなく、メッセージを小さなパケットに分割して、それぞれのパケットを異なるノードに送信します。 各バリデーターはネイバーと呼ばれるピアのグループにパケットを順番に再送します。各ネイバーは、データの一部を隣接する各ネイバーに送信する責任があり、仮に各ネイバーが200ノードで構成されている場合、ルートに1人のリーダーがいる3レベルのネットワークでは、2ホップで40,000人のバリデータをカバーすることができます。 またデータを再ブロードキャストしないことを選択する可能性のある敵対ノードを処理するために、つまり障害に対して耐性を持たせるためにバリデーターはReed-Solomon Erasure コードを使用してデータを符号化し、ある程度の障害耐性を提供することが可能になります。Tower BFTTower-BFTは、ソラナのPoH(Proof of History)上で実行しています。これはPoHに最適化されたPBFTに類似したコンセンサスアルゴリズムであり、通信のオーバーヘッドとレイテンシーを削減します。 ネットワーク上のノードが特定のフォークに投票するたびに、投票はスロットと呼ばれる一定期間のハッシュに制限されます。現在のネットワークの設定では、1つのスロットに約400ミリ秒の時間が設定されています。400ミリ秒ごとにネットワークはロールバックポイントを持っていますが、それ以降の投票を行うたびに、その投票をアンロールするまでにネットワークが停止しなければならない時間が2倍になります。 例えば、各バリデータは過去12秒の間に32回投票しています。12秒前の投票では、タイムアウト時間は2³²スロット、つまり約54年ですので実質的に、この投票はネットワークによってロールバックされることはありません。一方、直近の投票は2スロット、約800msのタイムアウトとなります。新しいブロックが台帳に追加されると、古いブロックはますます確定される可能性が高くなります。なぜなら、古い投票がコミットされているスロットの数がスロットごとに、または400msごとに倍増するからです。 ソラナのメインネットは、Delegated-Proof-of-Stake (DPoS)で運営される予定で、トークン保有者はブロックの生産プロセスに参加して報酬を得ることができ、トークンをステークして自らバリデータになるか、信頼するバリデータにトークンを委任することができます。バリデータのマシンスペックHardware RecommendationsCPU12 cores / 24 threads, or more2.8GHz, or fasterAVX2 instruction support (to use official release binaries, self-compile otherwise)Support for AVX512f and/or SHA-NI instructions is helpfulThe AMD Zen3 series is popular with the validator communityRAM128GB, or moreMotherboard with 256GB capacity suggestedDiskPCIe Gen3 x4 NVME SSD, or betterAccounts: 500GB, or larger. High TBW (Total Bytes Written)Ledger: 1TB or larger. High TBW suggestedOS: (Optional) 500GB, or larger. SATA OKThe OS may be installed on the ledger disk, though testing has shown better performance with the ledger on its own diskAccounts and ledger can be stored on the same disk, however due to high IOPS, this is not recommendedThe Samsung 970 and 980 Pro series SSDs are popular with the validator communityGPUsNot strictly necessary at this timeMotherboard and power supply speced to add one or more high-end GPUs in the future suggestedRPC Node RecommendationsThe hardware recommendations above should be considered bare minimums if the validator is intended to be employed as an RPC node. To provide full functionality and improved reliability, the following adjustments should be made.CPU16 cores / 32 threads, or moreRAM256 GB, or moreDiskConsider a larger ledger disk if longer transaction history is requiredAccounts and ledger should not be stored on the same diskGas Auctionがない他のブロックチェーンの合意形成でよく見られる、メモリプールに未承認のトランザクションをプールし、トランザクションに優先度をつけるといったことをSolanaでは行いません。まずプーリングをするとトランザクションがプール上にたまり渋滞を起こします。バリデータが自分の利益のためにGas代の高いものから順にトランザクションを承認しようとするGas Auctionが始まってしまいます。そうすると、トランザクションを優先して通したいClient側はさらにGas代を上乗せするといった悪循環からGas代の高騰などが起きてしまいます。 これを解決するためにSolanaではプールを行わず優先度を恣意的に決められるような設計は採用しておらず、トランザクションがプールされることもないことも処理速度の高速化につながっていると考えられます。参考文献https://docs.solana.com/introduction https://coinpost.jp/?p=291074 https://github.com/solana-labs/whitepaper/blob/master/solana-whitepaper-en.pdf https://coinchoice.net/8-innovation-of-solnaa-towerbft-turibne_202006/ ## Publication Information - [posaune0423](https://paragraph.com/@posaune0423/): Publication homepage - [All Posts](https://paragraph.com/@posaune0423/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@posaune0423): Subscribe to updates