これからやりたいこと
これから各種トランザクションのスキーマを読み解いていきます。
このスキーマを解析することでSDKを作る上で非常に重要になるのかな?とは思いつつ、(間違っていてもいいんじゃ、失敗したらやり直せばええんじゃ)
進めていきます。
TransferTransaction
まずはTransferTransactionです。
# Send mosaics and messages between two accounts.
struct TransferTransaction
TRANSACTION_VERSION = make_const(uint8, 1)
TRANSACTION_TYPE = make_const(TransactionType, TRANSFER)
inline Transaction
inline TransferTransactionBody
TransferTransactionの定義内容はこちらです。
struct TransferTransactionとなっているのでここで間違いないはずです。
定義構造を確認しましょう。
# Send mosaics and messages between two accounts.
コメントで二つのアカウント間でモザイクを送信するとなっています。
なので、この構造体の定義はモザイク送信の定義と思って問題ないです。
struct TransferTransaction
構造体の名前は「TransferTransaction」です。
TRANSACTION_VERSION = make_const(uint8, 1)
TRANSACTION_TYPE = make_const(TransactionType, TRANSFER)
ここでは構造体には含まれませんが、定数が含まれます。
TRANSACTION_VERSIONは型がuint8(10進数表現で0~255,16進数表現だと00~FF)値が1
TRANSACTION_TYPEは型がTransactionTypeで、値がTRANSFERです。
TransactionTypeはuint16の型なので2バイト分になります。
inline Transaction
inline TransferTransactionBody
ここは外部の構造体を持ってきています。
まずはTransactionTypeを確認しましょう。
ここにTRANSFERの定数が書かれています。
このTRANSFERの定数は
ここでも定義されているように、TransferTransactionを確認できます。
TransactionTypeはenumであり得る値を定義されています。
TransactionTypeは型情報がuint16となっており
バイト数で表現すると2バイト分になります。
symbolでは16進数で表現されることが多く、トランザクションタイプも例外ではありません。
転送のトランザクションの値はここで確認できます。
トランザクションのバージョンは型情報がuint8なので1バイトで表現できます。
1だけの値が想定されています。(今後増えたりすることがあったりなかったり)
TRANSACTION_VERSION = make_const(uint8, 1)
nemではversion1と2を区別したりするみたいです。
以下ジャガーさんの回答
当初、NEMはモザイクなしで起動されたため、転送(V1)はXEMの転送しかできませんでした。その後、フォークを介して任意のモザイクをサポートし、転送(V2)を更新してモザイクとXEMの転送をサポートしました。主な違いはモザイクフィールドで、単に量を転送できるのではなく、一つまたは複数のモザイクを転送できるようになっています。