Stoaとやり取りする「TypeScript」SDKを作成し、Stoaとフルノードの両方をバンドルするDockerイメージを作成します。(英語版)

Image for post

 

機能の実装

#15 Stoaと対話するための「TypeScript」SDKを作成する

Image for post

 

この作品は、チームがStoaと対話するための「TypeScript」(TS)SDKを作成する最初のステップでした。このTS SDKを使用すると、サードパーティの開発者はAGORAと対話するためのツールを構築できます。以下の機能が開発中に考慮されました。

 

英語

  • bool verify(ubyte signature, ubyte message, PublicKey public_key): Should return whether or not signature is a valid signature for message made with public_key. This requires to use the libsodium bindings.
    基本的にこれ: https://github.com/bpfkorea/agora/blob/93c31daa616e76011deee68a8645e1b86624ce3d/source/agora/common/crypto/Key.d#L226-L235
  • bool isValidPreimage(Hash original_preimage, ulong original_preimage_height, Hash new_preimage, ulong new_preimage_height) => Returns false if new_preimage_height < original_preimage_height, or if original_preimage hashed original_preimage_height — new_preimage_height times is not equal to new_preimage.
  • Validator[] getAllValidators(uint height | null) => Call /validators and return its result
  • Validator getValidator(PublicKey address, uint height | null) => Call /validator/{address} and return its result or throws an exception if there is no such validator.
最後の2つのケースでは、「height」パラメーターはオプションであるため、nullまたは? TSの標準に応じて。
 

 

この問題はStoa開発の一部でもありました。 Dockerを使用して、Stoaコードとフルノードコードの両方をバンドルしたイメージをデプロイしました。

ブロック、トランザクション、および&coの型なし値の使用法がいくつかあります。 Stoaでの「any」の主な使用法を削除できるように、型定義を備えたモジュールがあれば、チームがより良いと判断しました。

進行中の開発

  • 「setGenesisBlock / genesis config」をハードコードされたブロックに置き換えます821
  • クォーラムジェネレーターは、プリイメージから派生したランダムシードを使用する必要があります#990
  • ノードの登録情報を復元する#789
  • ブロック検証#900に失敗する「在籍」の指名と外部化を回避する
  • クォーラムバランシングの設計と実装#240