ビットコインを調べていると、よく聞く言葉の一つにトランザクションという言葉があります。
「トランザクション=送金」
これだけを理解している方がほとんどではないでしょうか。
トランザクションは実際にビットコインの送金・取引のことを指しています。ですが、皆さんこのトランザクションの仕組みを理解している方は多くはないと思われます。
トランザクションはビットコインシステムの中で最も重要な部分といえます。
ビットコインを理解するには、トランザクションを理解することが非常に大切なのです。
この記事ではMasterring bitcoinという非常に有名な本を参考に、記事としてわかりやすく、要約してお伝えしていきます。
この記事を読んで、よりビットコイン・トランザクションを深く学びたいという方はこちらの本をどうぞ。(PDFで無料公開されてます。最高です。)
https://bitcoinbook.info/wp-content/translations/ja/book.pdf
トランザクションとは
トランザクションとは、あるアドレスから他のアドレスに送ること。(1回あたりの取引・送金)
より正確に言うと、トランザクションは、ビットコインの所有者が他の人にビットコインを送ったと認めたことをビットコインネットワークに示すことなのです。
この際、送金元は自分の持っているビットコインを使用する権利を消費するかわりに、新たに送金先がビットコインを使用する権利を発行します。この権利のことをUTXO(Unspent Transaction Outputs)と呼びます。(詳しくは後述)
このデータのやりとりがトランザクションなのです。
なぜ先程、トランザクションがビットコインにおいて非常に重要と言ったのかというと、
ビットコインシステムのトランザクションとは他のものは全て、トランザクションが作成されビットコインネットワークを伝搬し検証、そして最後にグローバルなトランザクション元帳(ブロックチェーン)に追加される、という流れを支える為に、作られているからです。
全てのトランザクションはビットコインシステムに参加している者の間での価値の転送をデジタル化したデータの集合体です。
それぞれのトランザクションはビットコインのブロックチェーンの中にある誰でも見ることができる取引で、ビットコインにおける重要なデータたちなのです。
トランザクションのデータ構造
トランザクションは以下の3つの要素で出来ています。
- UTXO(Unspent Transaction Output)
- インプット
- アウトプット
トランザクションはこの3つの要素から成り立っており、インプット・アウトピットにトランザクションに関わるデータが入っています。
こちらを紹介していきます。
インプット・アウトプット
個々のトランザクションのデータ構造は、図1のようなインプットとアウトプットによって構成されています。
まず簡単に言うと、ビットコインの送金がアウトプットにあたり、着金がインプットにあたります。
トランザクションはわかりやすいものとして、複式簿記の個々の取引行のようなもので、例えられます。
それぞれのトランザクションは、1個または複数の”インプット”を持っていて、図1のトランザクションの借り方にこの”インプット”が記載されています。
また、それぞれのトランザクションは、1個または複数の”アウトプット”を持っていて、図1のトランザクションの貸し方にこの”アウトプット”が記載されています。
このインプットとアウトプット(借り方、貸し方)が同じ額になることはありません。
わずかにインプットの方が大きくなるのです。この差がトランザクション手数料と呼ばれるもので、マイナーへと支払われます。
”図1”
それではこのインプット・アウトプットをより、どのような構造になっているのかを見ていきましょう。(図2)
トランザクションはトランザクションインプットからトランザクションアウトプットに価値を移動します。インプットはどこからビットコインが来たかを示し、通常は前のトランザクションのアウトプットになります。(図2参照)
トランザクションアウトプットは、このビットコインを鍵と紐付けることで新しい所有者にこのビットコインを割り当てます。
この鍵(資金をアンロックするスクリプト)が解除条件と呼ばれるものです。
解除条件は、資金を将来トランザクションで使用するときに必要とされる署名に対する必要条件になります。
1つのトランザクションからのアウトプットは新しいトランザクションの中でインプットとして使用され、これにより、アドレスからアドレスに価値が移転するときに、所有の連鎖が作られるのです(トランザクションの連鎖。)
あるトランザクションのアウトプットは次のトランザクションのインプットになっていきます。
”図2”
UTXO
さて次にUTXOの説明に移ります。
UTXOはUnspent Transaction Outputの略称で、日本語訳すると「未使用のトランザクションの出力(アウトプット)」です。
ですが、こう言われてもよくわかりませんよね。
UTXOは、「ビットコインの使用権」のことを指しています。
もう少し、踏み込むと、ブロックチェーンで管理された、まだ使用していない分割不可能なビットコイン(取引データ)のことです。
トランザクションは先ほど説明したように、アウトプット・インプットの2つで構成されており、アウトプットがビットコインの送金、インプットがビットコインの着金にあたります。
ということは、「UTXO(未使用のトランザクションアウトプット)」とは、着金してからまだ送金していないビットコインということになります。
まだ使っていないトランザクションアウトプットがUTXOで、このUTXOが次のトランザクションインプットとなるのです。
ユーザがビットコインを受け取るときはいつでも、UTXOとしてブロックチェーンに記録されます。ビットコインには口座も残高もありません。あるのは単にブロックチェーンの中に散らばった 未使用トランザクションアウトプット (UTXO)だけです。
このようにトランザクションの流れ、つまりビットコインの取引はUTXOのやり取りとして行われています。
つまり、取引ごとにあるUTXOが消費され、同等の値の新しいUTXOが作られて・・ということを、繰り返しているのです。(使用権が消費され、新しい使用権が生成されている)
(※トランザクション手数料が存在するので、正確には同等の値ではなく、トランザクションインプット=送金先のアドレスが受け取るトランザクションアウトプット+取引手数料のトランザクションアウトプットとなります。)
そして、上の図では、トランザクションのインプット・アウトプットが単数ですが、複数になもなります。複数人(複数アドレス)に送金したり、着金することもあるからです。
トランザクションの種類
トランザクションはもちろんすべて同じパターンではありません。
法定通貨の支払い方にもいくつかの種類(ぴったり払ったり、貨幣と紙幣を分けて払ったり、おつりが出たり出なかったり。)
トランザクションのパターンは主に下記の4つがほとんどです。
- 一般的なトランザクション
- 集約型トランザクション
- 分散型トランザクション
- コインベーストランザクション(ブロック最初のトランザクション)
①『一般的な1つのBitcoinアドレスからもう1つへの単純な支払いトランザクション』
最も一般的なトランザクションの形式は、1つのBitcoinアドレスからもう1つへの単純な支払いという形式をしており、元の持ち主に戻されるおつりが通常含まれます。
このタイプのトランザクションは、上記図に示されているように、1つのインプットと2つのアウトプットを持っています。
これはUTXOが分割できないという性質からきています。そのため、UTXOを一度のトランザクションで使い切らないといけないのです。
なので、上記図のボブに送ったお金のお釣りは、自分のアドレスに送るということを、このトランザクション内では行わないといけません。
②『いくつかのインプットを集めて1つのアウトプット(支払い)にまとめるトランザクション』
別のトランザクション形式は、いくつかのインプットを集めて1つのアウトプットにまとめる形です(上記図参照)。これは現実にあるコインや少額紙幣をまとめて大きな額の紙幣にするトランザクションと同じです。これらのトランザクションはときどきウォレットで作られ、おつりとして受け取った小さな額をまとめるために使われます。
③『1つのインプットを複数のアウトプットに分けて複数の受取人に使うトランザクション』
④コインベーストランザクション(ブロック最初のトランザクション)
このコインベーストランザクションと呼ばれるトランザクションは特殊なもので、上記3つのトランザクションとは違うものです。
このコインベーストランザクションは、それぞれのブロックの一番最初のトランザクションです。
このトランザクションはマイニングに”勝った”マイナーによってブロックの一番最初に置かれ、マイニングに対する報酬としてマイナーにbitcoinが支払われるトランザクションです。
さて、トランザクションのチェーンの一番最初には何が来るでしょうか?(つまりコインベーストランザクションの最初)
厳密に言って、アウトプットが最初に来ます。
なぜなら、新しいbitcoinを生成するcoinbaseトランザクションはインプットを持っておらず、何もないところからアウトプットを作るからです。
トランザクションのライフサイクル
それでは最後に、改めてトランザクションの流れはどのようになっているのかを見ていきます。
トランザクションのライフサイクルはこのようになっています。
- トランザクションの生成
- Bitcoinネットワークへのトランザクションのブロードキャスト
- Bitcoinネットワーク上でのトランザクションの伝搬
①トランザクションの生成
トランザクションのライフサイクルはまず、「トランザクションの生成」から始まります。
②Bitcoinネットワークへのトランザクションのブロードキャスト
③Bitcoinネットワーク上でのトランザクションの伝搬
まとめ
本記事では、ビットコインのトランザクションについて説明してきました。
何度も言うように、トランザクションはビットコインを理解する上で、絶対に欠かせません。
この記事を読んで、さらに勉強してみようと思ったからはこちらのmasterring bitcoinをどうぞ。
記事公開日:アルトコイン ビットコイン (bitcoin) ブロックチェーン 用語解説