暗号通貨に関する事など

暗号通貨に関する覚書など。メモや日記。

※技術的なことに関して、間違っていたらコメントから指摘していただけると泣いて喜びます

【NEM-Catapult】 Transaction

※最終更新:2018.3.28

はじめに 


 今回はTransactionについてです。


Transactionの種類

 transaction は今これを書いている時点では10種類あります。ドキュメント記載順に...

  1. transfer transaction
  2. register namespace transaction
  3. mosaic definition transaction
  4. mosaic supply change transaction
  5. modify multisig account transaction
  6. aggregate transaction
  7. cosignature transaction
  8. lock funds transaction
  9. secret lock transaction
  10. secret proof transaction
 です。簡単に説明を続けます。


Transaction

 全てのトランザクションは前提となる" Transaction "の構造の上に乗っかっています。なので、全てのトランザクションは共通して下記枠内の情報を保持しています。

type      トランザクションの種類

version number バージョン

deadline    このトランザクション承認の締め切り

fee      手数料

signature    署名

signer     署名者の公開鍵

 以降、各トランザクションが持つフィールドはドキュメントに書いてあるのでそこを参照してください。



Transfer transaction

 Transfer (送信) 用。

 これだけだとわからないのですが、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で別に行われます。なので、アグリゲートトランザクションを利用するときは...

  1. LockFundsTransactionを送信・承認(10xemをロック)
  2. AggregateTransactionを送信 (中にInnerTxを含んでいる)
  3. 必要な分だけCosignatureTransactionで署名(送信)
  4. 署名が揃えばAggregateTransactionに入れられているInnerTxは認められ、送金が行われる
 もしLockFundsTransactionに定められた期限までにAggregateTransactionの署名が揃わなかった時、LockFundsTransactionで固定された10xemは有効期限切れの指定高さブロックを掘り当てたハーベスターのものになります。(これはスパム対策かなと思っています)

 AggregateTransactionと全てのCosignatureTransactionは一緒のブロックに入れられないといけないのかな?それとも別々で入れられるのかな?この辺がちょっとまだ曖昧です。(教えてください)


Cosignature transaction

 AggregateTransactionへのcosignature (連署名)用



Lock funds transaction

 Lock funds (資金ロック) 用。AggregateTransactionを利用する前、これを利用して10xem(現時点で)資金をロックしないといけません。


 このトランザクションがもつフィールドを見る限りだと、これはAggregateTransactionの前提トランザクションとしてしか利用できない感じかな?



Secret lock transaction

 シークレット(ハッシュ値)を解くまで資金をロックすることが出来るトランザクションです。シークレットが説かれると、このトランザクションで指定した相手にモザイクの送信が行われ、このトランザクションで指定した期限までにシークレットが解かれなければ、元の持ち主のもとにロックしたモザイクが返るという仕様のようです。


 フィールドを見てもらうと分かりますが、ハッシュ値とハッシュタイプ(アルゴリズム)を指定できるので、署名ではなくて単なる秘密のキーワードが答えの鍵になるようです。


 これ、なんか面白くないですか?



Secret proof transaction

 secret lock transaction に解答をする為に利用されるトランザクションです。


 以上各トランザクションの簡単な説明でした。



さいごに

 ここでは私が読んでそれについて日本語で書いてますが、NEMのドキュメントで使われてる英語ってそれほど難しくないです。ここまで読んでもらってこんなこと書くのアレですが、Google翻訳で読めるのでそっちで読んだほうが良いですよ。ドキュメントに書いてある内容以上のことを書いているつもりもないですし…

×

非ログインユーザーとして返信する