Hieroノードサーバーの仕組みとHederaネットワークのトランザクション処理
分散ネットワーク市場を少しでもフォローしたことがある人なら、Hederaネットワークの名前くらいは聞いたことがあるでしょう。長い間、そのエンジンは特定のライセンスを持つクローズドな商用コードのままでした。状況が変化したのは、プロジェクトがLinux Foundation傘下に入り、オープンソースの名前Hieroを得た時です。
Javaで書かれたコンセンサスノードのソースコードは、hiero-consensus-nodeリポジトリで公開されています。これは именно、このサービスがgRPCリクエストを受け取り、DAGコンセンサスを通じてトランザクションを実行し、スマートコントラクトを実行します。
モノレポジトリの中身
コードは2つの主要な子モジュールに分割されています:
platform-sdk/— プラットフォームの下位レベル。ノード間のネットワーク接続、コンセンサスアルゴリズム、ネットワーク状態の永続的なストレージを処理します。hedera-node/— アプリケーションレイヤー。アカウント、トークン、ファイル、EVMコード実行のためのサービスを含みます。
この分割は論理的です。プラットフォームは分散コンセンサスの重い数学的処理を担当し、アプリケーションモジュールはそのコンセンサスを開発者向けの便利なAPIに変換します。
サービス、Protobuf、Solidity
クライアントからノードへの通信はgRPCプロトコルに基づいて構築されています。仕様全体は個別のProtobufスキーマで定義されています。これらのプロトコルを通じて、ノードはコアタスクを処理します:
- トークン化(HTS)。スマートコントラクトを書かずにトークンの発行と転送を可能にします。
- コンセンサスログ(HCS)。分散台帳へのタイムスタンプとメッセージの記録を可能にします。
- スマートコントラクト。ノード内にEVM仮想マシンが動作し、
pragma solidity <=0.8.9директиваを持つSolidityコンパイラをサポートしています。
Solidityバージョンのサポートは現在0.8.9リリースに制限されています。標準的なOpenZeppelinコントラクトや典型的なビジネスロジックには十分ですが、最新言語機能にはまだアクセスできません。
インフラストラクチャとコード品質
リポジトリはすぐに企業の出自を明らかにします。小規模なオープンソースユーティリティに見られるような典型的な混沌はありません。CI/CDパイプラインには、日次パフォーマンステスト(Single Day Performance Tests)と長時間耐久テスト(Longevity Tests)が含まれています。
プロジェクトはOpenSSF ScorecardとCII Best Practicesの認定を受けており、テストカバレッジはCodecovを通じて追跡されています。
一方、イシューセクションには1500件以上の未解決タスクがあります。これはオープンソースに移行した大規模システムでは普通のことで、新しい開発者はプロジェクトの構造を理解するために時間を費やす必要があります。
どこから学び始めるか
プロジェクトはGradleで構築されています。ローカルで実行するには、最新のJavaバージョンと十分なRAMが必要です。
アーキテクチャの詳細を掘り下げたい場合は、ドキュメントを確認すると便利です:
hedera-node/docs/design/フォルダにはアーキテクチャ図とサービス設計の決定事項が含まれています。platform-sdk/docs/のドキュメントは、コンセンサスプラットフォーム自体の内部構造を説明しています。
このプロジェクト誰が役立つのか
典型的なWeb3開発者で、トークンを発行したりdAppをデプロイしたりする必要があるだけの場合、自分でノードを実行する必要はありません。好みのプログラミング言語用の готовые SDKを使用する方がはるかに簡単です。
このリポジトリは主にエンジニアリングチームにとって興味深いです。Hashgraph技術に基づいた独自のエンタープライズネットワークを設計している人、非同期BFTフォールトトレランスを研究している人、高負荷Javaシステムを学んでいる人です。このコードには、メモリ最適化と高負荷向けのgRPCサービスの構造化の優れた例が含まれています。
関連プロジェクト