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

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

背景

catbuffer ライブラリ は Symbol のエンティティをシリアライズ/デシリアライズするプロトコルを定義します。SDK とアプリケーションは REST トランザクションエンドポイントと疎通するために生成されたコードを利用します。

../_images/catbuffer.png

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

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

効率的なメモリ使用

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

柔軟性

REST トランザクションエンドポイント はブロックチェーンの状態を更新する呼び出しをハンドリングします。シリアライズされたトランザクションのペイロードは POST 呼び出しのボディに追加されます。これらのエンドポイントにより、API 規約を変更せずにサーバ側へ新しい機能を追加することができます。

再利用性

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

スキーマ はエンティティのデータ構造を定義します。このライブラリは定義済みエンティティを、シリアライズまたはデシリアライズするために必要な最低限のコードを生成します。

インストール

  1. catbuffer-generators リポジトリをクローンしてください。
git clone https://github.com/nemtech/catbuffer-generators
  1. 必須パッケージをインストール
pip install -r requirements.txt
  1. catbuffer``リポジトリを ``catbuffer-generators の中にクローンしてください。
git clone https://github.com/nemtech/catbuffer

使い方

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

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

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

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

python ../scripts/generate_all.sh cpp_builder

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