7
2

More than 1 year has passed since last update.

TransferTransactionのスキーマを読み解こうその1

Last updated at Posted at 2022-06-04

これからやりたいこと

これから各種トランザクションのスキーマを読み解いていきます。
このスキーマを解析することで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」です。

スクリーンショット 2022-06-22 20.45.48.png

	TRANSACTION_VERSION = make_const(uint8, 1)
	TRANSACTION_TYPE = make_const(TransactionType, TRANSFER)

ここでは構造体には含まれませんが、定数が含まれます。
TRANSACTION_VERSIONは型がuint8(10進数表現で0~255,16進数表現だと00~FF)値が1

スクリーンショット 2022-06-22 20.45.25.png

TRANSACTION_TYPEは型がTransactionTypeで、値がTRANSFERです。

TransactionTypeはuint16の型なので2バイト分になります。

スクリーンショット 2022-06-22 20.47.52.png

	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の転送をサポートしました。主な違いはモザイクフィールドで、単に量を転送できるのではなく、一つまたは複数のモザイクを転送できるようになっています。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2