Scrooge Coin 取引の有効性確認

Scrooge Coin の取引形態」の続きです.

まず, Scrooge Coin 取引のデータ構造について説明します.

全ての取引は, 複数の入出力から構成されます.
取引の出力は, 金額とそれが支払われる受信者のアドレス (公開鍵) で構成されます.
取引の入力は, 対応する出力を含む前の取引のハッシュ値, その取引におけるこの出力のインデックス (0から始まる整数),
およびコインの所有者の電子署名で構成されます.

入力が有効であるためには, それに含まれる署名が本取引に対する有効な署名でなければなりません.
コインの所有者が自分のコインを消費することに同意していなければ, 取引は無効となります.


図1 Scrooge Coin 取引のデータ構造

ここで, 取引1は, CreateCoins 取引であり, 新規コインを作成するものであるため, 入力を持ちません.
そして, 最初の所有者にコインを出力します.
また, これは新規コインを作成する取引のため, 署名は不要です.
取引2および3は, PayCoins 取引であり, 入出力から構成されています.

次に, Scrooge Coin 取引が有効であるためには, どの様なことを確認すれば良いか見てみましょう.
以下5つの条件が満たされれば, PayCoins 取引は有効であると宣言されます:

  1. 取引が要求する全ての出力は, 現在の UTXO プールにある,
  2. 取引の各入力の署名は有効である,
  3. 取引によって複数回要求された UTXO はない,
  4. 取引のすべての出力金額は非負である,
  5. 取引の入力金額合計は, 出力金額合計以上であり, それ以外は偽である.

ここで, UTXO (Unspent Transaction Output) とはブロックチェーンに記録された未消費コインを意味し,
その集まりを UTXO プールと呼びます.
つまり一連の取引の流れにおいて, 取引の出力 (Transaction Output) は,
誰も消費していない (Unspent) コインと捉えることができます.
そして, その出力は次の受信者にとっては入力となります.
その取引が入力として消費されると, UTXO プールから削除されます.

有効な取引を Scrooge がブロックに追加してブロックチェーンに連結することで,
この取引が行われたことを誰でも知ることができるようになります.

Scrooge Coin 取引の実装」に続きます.

One Comment

Comments are closed.