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

No responses yet