by Mark A. Greenslade, Casper Association R & D

Introduction

Condor は、Casperプラットフォームのバージョン2.0に与えられたコードネームで、新機能の群とともに無数の最適化や改善を伴う大規模なアップグレードを表しています。これは、コンドルリリースに対して行われた広範な作業について、高いから中程度の洞察を提供する拡張されたシリーズの第一編です。シリーズの終わりには、敏腕の読者がCasper 2.0プラットフォームについて相当深く理解を持つはずです。理想的には、彼らはプラットフォームへの貢献の挑戦を受け入れる準備が整っていることになります。それはオペレーター、DApp開発者および/またはコアコントリビュータとしてもあります。

この記事では、オペレーターの視点からノードソフトウェアを検討します。具体的には、Casper 2.0のノードセットアップとCasper 1.Xのセットアップを比較した場合、何が異なるのかを見ていきましょう。変更点としてはバイナリの集合、実行中のプロセス、露出するポート、アプリケーションプログラミングインターフェース(API)の面接をレビューすることに始めましょう。

すなわち、casper-node、casper-node-launcher、および新たなcasper-sidecarです。ノードプロセスは引き続きノードランチャーによって統合され、その機能はネットワーク参加と真実の源として行動するための最低限にまで削減されています。非エッセンシャルな作業はすべてsidecarに外部化されており、これにはJSON-RPC APIも含まれます。

Binaries, Processes, Ports & API’s

Condorでは、ソフトウェアが3つのバイナリに分割されています。

  • casper-node
  • casper-node-launcher
  • casper-sidecar (new)

すなわち、casper-node、casper-node-launcher、および新たなcasper-sidecarです。ノードプロセスは引き続きノードランチャーによって統合され、その機能はネットワーク参加と真実の源として行動するための最低限にまで削減されています。

非エッセンシャルな作業はすべてsidecarに外部化されており、これにはJSON-RPC APIも含まれます。エッセンシャルな作業と非エッセンシャルな作業の分離により、以下のような利点があります。

  • オペレーターはパフォーマンスとセキュリティの観点からより細かい制御を得ることができます。
  • JSON-RPC APIはコアプロトコルとは独立して進化できるため、JSON-RPCの変更はプロトコルのアップグレードを引き起こさなくなります。
  • ノードの機能をエッセンシャルに絞り込むことで、代替的なプロトコルクライアントの構築(例:Go、Carbon、Zig、C++など)が容易になります。

物理プロセスの内部でも同様の分離が行われ、バイナリが実行されているプロセス内でのみ適用されます。これにより、ノードとsidecarバイナリは単一のマシンまたは複数のマシンにデプロイすることが可能になります。sidecarはノードによって公開されるポートにバインドするため、依存関係は一方向です。ノードの視点からは、sidecarは単に露出するポートにバインドする別のソフトウェアエージェントであるだけです。

サービスに関しては、オペレーターはノードの新しいバイナリAPIサービスの有効化のオプションがあります。この新しいサービスはチェーンクエリ、ノードクエリ、トランザクション処理をサポートし、このサービスを介して流入・流出するすべてのデータはバイナリエンコードされています。この最適化により、シリアライズとデシリアライズのコストが大幅に減少します。sidecarはこの新しいサービスを消費者としています。

以上の変更により、Casper 2.0のノードセットアップは、Casper 1.Xのセットアップと比べて、より柔軟性と効率性が向上しており、APIの進化が独立しているため、プロトコルのアップグレードを引き起こさないなどの利点があります。また、sidecarを通じて非エッセンシャルな作業を分離することで、ノードの基本機能に焦点を当てることができ、さらなるカスタマイズと拡張が可能になりました。

Node: Protocol Server

  • Peer to peer network
  • Mandatory
  • Default Port = 34553

Node: REST Server

  • Convenience API suitable for curl & browsers
  • Optional
  • Default Port = 8888

Node: Binary Server

  • Rich API for dispatching transactions into the network and for querying the node and/or chain state
  • Optional
  • Default Port = 7779

Node: SSE (Server Side Events) Server

  • Realtime API of events emitted by the node when processing blocks and/or transactions
  • Optional
  • Default Port = 9999

Sidecar: Main Server

  • JSON-RPC API for dispatching transactions into the network and for querying chain/node state
  • Optional
  • Default Port = 7777

Sidecar: Speculative Execution Server

  • Specialized JSON-RPC API for speculatively executing a transaction
  • Optional
  • Default Port = 7778

API Surface

APIサーフェスの影響は最小限に抑えられていますが、依然としていくつかの変更があります:

  • APIサーフェスはノードとサイドカーブロック間で分散されています。
  • 一部の場合、APIエンドポイントのリクエスト/レスポンスデータタイプが変更されています。
  • ノードバイナリAPIが追加されました。
  • ノードSSE APIが合理化され、単一のイベントチャンネルを公開するようになりました。
  • JSON-RPC APIはサイドカーブルックに移動しました。
  • JSON-RPC APIエンドポイントが追加・再命名されています。
  • 推測実行APIがサイドカーブルックに移転しました。

以下は、執筆時点でのさまざまなAPIサーバーによって提供される新しいまたは再命名されたエンドポイントの要約です。プロトコルエンドポイントはシステム内に効果的に存在しているため、これらを除外します。

Node: SSE (Server Side Events) Server

Main.Shutdown
Main.TransactionAccepted (rename)
Main.TransactionExpired (rename)
Main.TransactionProcessed (rename)
Node: Binary Server

Get
    Record
        ApprovalsHashes
        BlockHeader
        BlockBody
        BlockMetadata
        ExecutionResult
        FinalizedTransactionApprovals
        Transaction
        Transfer
    Information
        AvailableBlockRange
        BlockHeader
        BlockSynchronizerStatus
        ChainspecRawBytes
        ConsensusStatus 
        ConsensusValidatorChanges
        LastProgress
        LatestSwitchBlockHeader
        NetworkName
        NextUpgrade
        NodeStatus
        Peers
        ReactorState
        SignedBlock
        Transaction
        Uptime
    State
        Balance
        DictionaryItem
        Item
        ItemsByPrefix
        AllItems
        Trie
Try
    AcceptTransaction
    SpeculativeExec
Sidecar: JSON-RPC: Main

account_put_transaction
info_get_transaction
query_balance_details
state_get_entity
Sidecar: JSON-RPC: Speculative Execution

speculative_exec_txn

Summary

コンドルは、Casperプラットフォームのバージョン2.0に与えられたコードネームであり、大量の新機能とともに無数の最適化や改善を伴う重要なアップグレードを表しています。これは、コンドルリリースに対して行われた広範な作業について、高いから中程度の洞察を提供する拡張されたシリーズの第一編でした。オペレーターの視点からノードソフトウェアを検討し、バイナリの集合、実行中のプロセス、露出するポート、アプリケーションプログラミングインターフェース(API)の変更をレビューしました。

元記事 on medium.com

No responses yet

コメントを残す

Casper Japan Communityをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む