技術 · SDK

プロトコル定義ライブラリ

GProtocol は同一のプロトコル定義を 5 つの言語で維持しています。アクション定数、メッセージ構造、エラー key、バージョン番号です。Go が主たるソースで、他の言語はそれに 1 項目ずつ揃えています。

言語パッケージ名内容状態
Gogather-gprotocol/go定数、メッセージ構造、バージョン判定、署名対象テキストの組み立てなどの補助関数ノードで使用中
Dartgather_protocol定数と型(JSON シリアライズ付き)アプリで使用中
Javatop.gather.protocol定数と型定義のみ
JavaScript@gather-network/gather-protocol定数、型、メッセージのファクトリ関数定義のみ
Pythongather_protocolアクションと定数。Go 版から自動生成定義のみ

5 つの言語の一貫性の保ち方

  • コミット前に、各言語のアクション一覧、ルート種別の注釈、バージョン番号を自動で突き合わせます。
  • Python バインディングはスクリプトで Go から生成し、生成結果が手で書き換えられていないことを検査します。
  • 暗号化に関わる形式(メールボックス、グループ、ファイルの認証情報、バックアップ、ノードディレクトリ)には共通のテストベクターがあり、Go、Dart、Python の 3 つでバイト単位に突き合わせます。

参照実装

メールボックス、グループ、ファイルの認証情報、バックアップの 4 つの暗号化形式には、テストベクターの生成と検証に使う Python の参照実装も別にあります。各言語のプロトコルライブラリ自体には、暗号化、ネットワーク、クライアントの実装は含まれません。

開発者への公開

プロトコル定義ライブラリとサードパーティ向け開発ドキュメントは、現時点では公開していません。公開計画が決まり次第、入手方法とドキュメントをこちらでお知らせします。