ブロックチェーンを正しく理解するためには、ブロックチェーン構成するステップを理解する必要があります。ここでは、ブロックチェーンの全9ステップのうち2番目のステップであるトランザクションについて学んでいきましょう。
トランザクションとは
ブロックチェーンは、全部で9つのステップに分かれています。その2番目のステップがトランザクションです。トランザクションとは、参加者間の価値の移転である「取引」を所定のルールで記述したデータのこと。
トランザクションを構成するのは、ひとつ以上の支払い元=インプット、ひとつ以上の支払先=アウトプット、支払い元と支払先とのあいだの取引の正当性を自律的に証明するための情報=スクリプトなどの要素です。
トランザクションは、「台帳」と呼ばれることもあります。これは、支払い元と支払先の記述様式が簿記の借方・貸方と類似しているからです。また、ブロックチェーン全体から見た場合、支払先と支払い元の取引データが各ノードに分散して記録されているため、「分散型台帳技術」もしくは「DLT(Distributed Ledger Technology)」と呼ばれることもあります。
トランザクションを知るうえで重要な要素
UTXO
UTXOとは、「Unspent Transaction Output」の略で、日本語では「未使用残高」となります。トランザクションのアウトプット領域に記載されている金額が未使用の場合、それはUXTOとなります。UXTOは、ブロックチェーンに参加している参加者すべてが追跡可能であり、UTXOプールというデータベースに保存されています。
一般の銀行の口座管理における残高は、振込、送金、引落しといったトランザクションが実行されるたびに口座ごとの残高が更新されていきます。これに対して、UTXOはトランザクションが発生するたびに残高を更新するという概念自体がありません。
INPUT
INPUTは送金するための原資を記載する箇所です。ここにはUXTOのみが該当し、OUTPUTに記載した送金額より大きくなるようにひとつ以上のINPUTが必ず選択される必要があります。
INPUTに記載するUTXOは、自分宛てのOUTPUTの中でも未使用のものを選択することになります。また、INPUTにおいては自分自身の公開鍵、およびトランサクションの電子署名を記載することになっています。これは、送金に使用するUTXOが本当に自分あてのものかを証明することが目的です。
OUTPUT
OUTPUTは送金先の情報が記載される部分です。この送金先は、INPUTに記載したUTXOの総額より小さい場合に限り複数の送金先を記載が可能です。
なお、ひとつの送金先には送金額と宛先のふたつの情報を必ず記載することになっています。宛先として記載するスクリプトは、別名ロッキングスクリプト(ScriptPubKey)とも呼ばれます。これは、宛先人しか使えないようロックするという意味があるためです。
OUTPUTに記載されたこのロッキングスクリプトは、OUTPUTがUTXOとして使用される場合に送金する際の原資として有効化されます。
トランザクション作成の流れ
トランザクション製作の過程は、大きく分けて5つのステップがあります。
- トランザクションIDとインデックスとして、INPUTに自分が使えるUTXOのポインタをセット
- OUTPUTに公開鍵ハッシュとしての送金先のアドレスおよび送金額をセット
- マイナーへの手数料をセット
- おつりを返金するためのアドレス(公開鍵ハッシュ)と返金額をセット
- INPUTに、ScriptSigを除いたトランザクションの電子署名及び送金者の公開鍵から構成されるアンロッキングスクリプトをセット