トランザクションビルダの生成

ターゲットとする SDK 用言語のトランザクションビルダを生成する方法を学習します。

背景

The catbuffer library defines the protocol to serialize and deserialize Symbol entities. The library comes with code generators for different languages. SDKs and applications use the generated code to interact with REST transaction endpoint.

../_images/catbuffer.png

Symbol SDK シリアル化モジュール

このライブラリは以下の特性を達成します:

効率的なメモリ使用

大きなネットワークはたくさんのトランザクションを計算します。バイナリに最適化された仕事はコミュニケーションを高速にします。さらに、メモリバッファからのエンティティ - またはそれらの一部 - の読み込みはメモリを効率的に使用します。

柔軟性

REST transaction endpoints handle the calls to update the blockchain state. The serialized payload of a transaction is appended to the body of the POST call. These endpoints allow the addition of new functionality to the client-side without modifying the API contract.

再利用性

アプリケーションは依存性の管理することなく、生成されたコードを組み込むことができ、安全性の高い環境において、特に望ましいです。さらに共通のコードベースを共有することは、より少ない労力で新しい機能を追加することを可能にします。

The schemas define the entities' data structure. The library generates the leanest code necessary to serialize and deserialize defined entities.

インストール

  1. catbuffer-generators リポジトリをクローンしてください。

    git clone https://github.com/symbol/catbuffer-generators
    
  2. 必須パッケージをインストール

    pip install -r requirements.txt
    
  3. catbuffer-schemas リポジトリを catbuffer-generators の中にクローンしてください。

    git clone https://github.com/symbol/symbol/tree/main/catbuffer/schemas
    

使い方

catbuffer リポジトリの catbuffer-schemas フォルダーの下にエンティティのデータ構造があります。コードジェネレーターを使用すると、これらのエンティティをシリアル化および逆シリアル化するために必要な、最もリーンなコードを生成できます。

例えば、次のコマンドを実行して TransferTransaction の C++ トランザクションビルダを生成します:

python main.py --schema symbol/transfer/transfer.cats --generator cpp_builder

catbuffer-generators ディレクトリで次のコマンドを実行することで、すべてのスキーマのコードを生成することもできます:

python ../scripts/generate_all.sh cpp_builder

ジェネレータは catbuffer/_generated/cpp_builder フォルダの下に各スキーマの新しいファイルを作成します。