connecting...
Google translation for articles :
5 NEMBER donated to you!!

【NEM技術勉強会】6. トランザクション 6.1 ベーシックトランザクション【カタパルト白書】

nem134xem (5) 218 2 0

カタパルトから、アグリゲートトランザクションが導入されました。複数のトランザクションをまとめて「アトミック」つまり、それ以上分割できない単位として取り扱うことで、複雑な処理を安全におこなうというコンセプトです。でも、アグリゲートトランザクションを理解する前に、1つのトランザクションを1つの署名で保証するベーシックトランザクションを理解しましょう。


6. トランザクション

 

トランザクションは、グローバルチェーン(ブロックチェーン全体)の状態を変更する指示である。それらはアトミック(分割不能単位)として処理され、それが集積したものがブロックに書き込まれる。トランザクションの一部でも処理に失敗した場合、グローバルチェーンの状態は、トランザクション試行前の状態にリセットされる。


トランザクションには、ベーシックトランザクションとアグリゲートトランザクションの2つの基本的なタイプがある。ベーシックトランザクションは単一の操作を表し、単一の署名が必要になる。アグリゲートトランザクションは、複数の署名を必要とする1つ以上のトランザクションのコンテナである。


アグリゲートトランザクションにより、ベーシックトランザクションを複雑な操作が可能な状態に結合し、アトミックに実行できる。これにより、個々のベーシックトランザクションの分割不能性のみを保証する従来のシステムに比べて、開発者の利便性が向上するが、可能な操作が制限される。しかし、(イーサリアムが目指すような)チューリング完全言語や、それに付随する欠点もまた使用せずに済む。

 

6.1 ベーシックトランザクション

 

ベーシックトランザクションは、暗号技術的に検証可能なデータと検証不可能なデータの両方で構成される。検証可能なデータはすべて連続して一塊になっており、トランザクション署名者によって署名される。すべての検証不可能なデータは無視されるか(パディングバイトなど)、検証可能なデータから確定的に計算可能なものである。それぞれのベーシックトランザクションは、最低でも1つの署名での検証が必要になる。


検証不可能なヘッダーフィールドは以下のものを含む。Sizeは、トランザクションのバイト数であり、検証可能なトランザクションデータから取得できる。Singatureは、署名行為からの出力であり、検証に必要なデータである。SignerPublicKey(署名者の公開鍵)は、署名と検証の両方に必要である。トランザクションTが署名を用いた検証に合格するには、SignatureSignerPublicKeyの両方が、Sizeによって規定される長さを持つ、検証可能データを用いた計算結果と一致する必要がある。

検証作業は、3.2 署名と検証で出てきた手順どおり、署名(RとS)と公開鍵を使って、トランザクションの内容(Verifiable Data Buffer)をチェックします。

 

予約(Reserved)バイトは、すべての整数フィールドと暗号関連文字列が自然なアライメントを保つように、トランザクションの整形(8バイトの桁揃え)に使用される。これらのバイトは意味を持たないため、暗号化によるセキュリティーを保ったまま無視できる。

 

すべてのトランザクションタイプのバイナリレイアウトは、Catapultのオープンソーススキーマ言語で指定されている。最新の仕様については、公開されているスキーマを参照。

 

図8:ベーシックトランザクションのバイナリーレイアウト


import "entity.cats"

# binary layout for a transaction
struct Transaction
	inline SizePrefixedEntity
	inline VerifiableEntity
	inline EntityBody

	# transaction fee
	fee = Amount

	# transaction deadline
	deadline = Timestamp

# binary layout for an embedded transaction header
struct EmbeddedTransactionHeader
	inline SizePrefixedEntity

	# reserved padding to align end of EmbeddedTransactionHeader on 8-byte boundary
	embeddedTransactionHeader_Reserved1 = uint32

# binary layout for an embedded transaction
struct EmbeddedTransaction
	inline EmbeddedTransactionHeader
	inline EntityBody

カタパルトオープンスキーマ言語で書かれたトランザクションのバイナリー構造の一部。これだけ見てもよくわからないですが、8の倍数バイトの単位でデータの区切りが出てくるようにReservedが配置されて、図8の構造体が定義されているっぽいことがわかります。

 

複雑に見えるトランザクションも、本体は16進数で書かれた数字の列です。この数字の列から必要な数値や文字列を読み出して検証をおこなうために、形式が厳密に定義されています。この公開されている定義を使えば、カタパルトのサーバーを使わなくても、トランザクションを検証することが可能です。

 

目指せ北海道

Why don't you get crypt currency 'nem' by posting your blog article?

nemlog is blog posting service which has donation feature by crypt currency nem.
nemlog was launched to create environment which can be donated nem among NEMbers via blog articles.
Let's get nem by posting good blogs.

Nem prize event is being held frequently, Please join us on this opportunity!

nemlog registration from here
Register
Comments from NEMber
目指せ北海道
2020-02-11 18:04:31ID:173112

>>やそ::さん

僕も最初は原子的と訳してましたが、辞書で語源が「分割できない」というギリシャ語だと知り、ようやく腑に落ちました。英語は奥が深い。

やそ
2020-02-11 14:32:20ID:173095

アトミックって原子のアトムからのそういう意味で使われてたんですね!ようやく腑に落ちました!

NEMber who posted this article

趣味はバイクでツーリングしながら、ブログを書いたり、動画配信したりすること。暗号通貨はまだまだ初心者。

nemlogに何を書こうかいろいろ考えたのですが、まずはバイクで動画配信をするための工夫や楽しさ、充実感などを伝えられたらと思ってはじめました。ラズパイをバイクに積載して、ボタン一つでYoutubeライブ配信できるシステムを作りました。それを発展させて、XEMの価格を常時監視、取引するボットも作って活用してます。子供の頃から技術書を読むのが好きなので、NEMの白書を訳したりもしています。

本業は再生医療研究者です。歯の神経の中にいる「歯髄(しずい)細胞」を活用して新しい医療を開拓するために、しずい細胞プロジェクトを推進中。細胞の流通(トレーサビリティー)管理にNEMを使っています。管理システムの名称は「ShizuiNet」。NEM.ioのAlexさん、Jeffさんと名刺交換&握手できたのが心の宝物。
38913
0

Why don't you read following articles?