【NEM-Catapult】 Transaction
※最終更新:2018.3.28
はじめに
今回はTransactionについてです。
Transactionの種類
transaction は今これを書いている時点では10種類あります。ドキュメント記載順に...
- transfer transaction
- register namespace transaction
- mosaic definition transaction
- mosaic supply change transaction
- modify multisig account transaction
- aggregate transaction
- cosignature transaction
- lock funds transaction
- secret lock transaction
- secret proof transaction
Transaction
全てのトランザクションは前提となる" Transaction "の構造の上に乗っかっています。なので、全てのトランザクションは共通して下記枠内の情報を保持しています。
type トランザクションの種類
version number バージョン
deadline このトランザクション承認の締め切り
fee 手数料
signature 署名
signer 署名者の公開鍵
Transfer transaction
これだけだとわからないのですが、amountフィールドが無くなったかのな?(xemがmosaicと完全に同列の扱いになったから?)
Register namespace transaction
register namespace (ネームスペース登録)用。
Durationフィールドを持ち、取得期間が指定できるようになったようです。
Mosaic definition transaction
mosaic definition (モザイク定義)用。
Mosaicpropertiesを見る限りだと、Levy機能なくなるのかな?
修正
下記リンクのmosaicDefinitionTransactionの使用例を見ると分かりますが "levyMutable: false" という記載があるとおり、Levy機能はNIS2でも実装されるようです。アーリアクセスとしては提供してませんよということのようです。(良かったね
また、ここにもDurationがあるので、namespaceに加えて、mosaic単体でも使用期間を指定できるようになっているようです。
Mosaic supply change transaction
mosaic supply change (モザイク供給変化)用。
Modify multisig account transaction
modify multisig account (マルチシグアカウント修正)用。
Aggregate transaction
アグリゲートトランザクション機能提供用。
新機能としては目玉機能の一つではないでしょうか。複数のトランザクションを同一ブロックに入れたいときに、このトランザクションを利用します。ちなみに、AggregateTransactionの中に含めるInnerTransactionとしてAggregateTransactionを指定することは出来ません(一層ということ)
この機能を利用するときの注意点として書いてあるのが、AggregateTransactionを利用する前に必ず後に紹介するLockFundsTransactionを利用して10xem(最初の仕様)を固定しないといけません。また、署名は次に紹介するCosignatureTransactionで別に行われます。なので、アグリゲートトランザクションを利用するときは...
- LockFundsTransactionを送信・承認(10xemをロック)
- AggregateTransactionを送信 (中にInnerTxを含んでいる)
- 必要な分だけCosignatureTransactionで署名(送信)
- 署名が揃えばAggregateTransactionに入れられているInnerTxは認められ、送金が行われる
Cosignature transaction
AggregateTransactionへのcosignature (連署名)用
Lock funds transaction
Lock funds (資金ロック) 用。AggregateTransactionを利用する前、これを利用して10xem(現時点で)資金をロックしないといけません。
このトランザクションがもつフィールドを見る限りだと、これはAggregateTransactionの前提トランザクションとしてしか利用できない感じかな?
Secret lock transaction
シークレット(ハッシュ値)を解くまで資金をロックすることが出来るトランザクションです。シークレットが説かれると、このトランザクションで指定した相手にモザイクの送信が行われ、このトランザクションで指定した期限までにシークレットが解かれなければ、元の持ち主のもとにロックしたモザイクが返るという仕様のようです。
フィールドを見てもらうと分かりますが、ハッシュ値とハッシュタイプ(アルゴリズム)を指定できるので、署名ではなくて単なる秘密のキーワードが答えの鍵になるようです。
これ、なんか面白くないですか?
Secret proof transaction
secret lock transaction に解答をする為に利用されるトランザクションです。
以上各トランザクションの簡単な説明でした。
さいごに
ここでは私が読んでそれについて日本語で書いてますが、NEMのドキュメントで使われてる英語ってそれほど難しくないです。ここまで読んでもらってこんなこと書くのアレですが、Google翻訳で読めるのでそっちで読んだほうが良いですよ。ドキュメントに書いてある内容以上のことを書いているつもりもないですし…