
ブロックチェーンに使用されている主要な技術の説明で「トランザクション」という言葉があります。
今回はそんなトランザクションについて、初心者の方でもわかりやすいように解説します。
仮想通貨について調べていると専門的な用語も多く分かりづらいという方も多いでしょうから、できる限り専門用語を使わずにご紹介します。
*1)*2019年5月、呼び名を「暗号資産」とする改正資金決済法が可決されました(参考|日本経済新聞)
目次
1. トランザクションとは複数の処理を1つにまとめたデータ
2017年には仮想通貨の利用者が急激に増えたことから、取引の処理が間に合わなくなったことで送金詰まりが起き、仮想通貨を送金する際に時間がかかったり手数料が高くなったりと話題になりました。
この送金詰まりの問題から「トランザクション」という言葉を知った方もいるのではないでしょうか。
1-1. トランザクションを超簡単に説明する
トランザクションとはもともとデータベースなどで使われている用語ですが、仮想通貨業界では取引の一連の流れが記載されたデータという解釈をしています。
- 商品を選んで
- お金を渡して
- 商品を受け取る
このように、猫ちゃんが買い物をする取引をひとつにまとめたものをトランザクションと呼びます。
1-2. 取引の整合性を確認するために複数の処理が一つにまとまっている
そもそもなぜトランザクションに複数の処理が一つにまとめられているのでしょうか?
それは、その取引は正しいものであるという整合性を確認する必要があるからです。
猫ちゃんのお買い物を例にした場合、どれかの処理が一つでも欠けてしまうと取引に矛盾が生じてしまいます。お金を渡さなければ商品を受け取ることはできませんし、お金を渡しても商品を受け取れなければ成立しません。
トランザクションは、こういった一連の流れを分離させることはできないのです。
銀行口座への振込の流れで想像してみよう
もう少し分かりやすく説明するために、銀行口座への振込みを例に出します。
Aさんの銀行口座(残高:10000円)からBさんの銀行口座(残高5000円)へ5000円を振り込むとした場合、
- 処理①:Aさんの残高は10000円から5000円分を差し引かれる
- 処理②:AさんからBさんに送られる
- 処理③
- :Aさんから送られてきた5000円を受け取り、Bさんの残高が5000円から10000円に増える
という一連の流れが成立します。
トランザクションは、この一連の取引をひとまとまりで処理する必要があります。これは取引の整合性を求めるためです。
トランザクションの処理が分離した場合
しかしこのトランザクションの処理を分離してしまうとどうなるのでしょうか。
トランザクションが失敗した場合、そのトランザクションの実行前に戻ることになります。しかし処理が分離していることで一連の取引に矛盾が生じてしまうのです。
先ほどと同じようにAさんの銀行口座(残高:10000円)からBさんの銀行口座(残高5000円)へ5000円を振り込むとします。
例えば処理①は正しく行われましたが、処理②が何らかの原因によって正しく行われなかったとします。
トランザクションが正しく実行しなかったため、トランザクションの実行前に戻ることになります。
どこかへ行ってしまったAさんの5,000円
しかし、Aさんの銀行口座の残高は5,000円差し引かれたまま、またBさんの銀行口座の残高は5000円のまま変化していません。Aさんの銀行口座にあった5000円がどこかに消えてしまったのです。
取引の整合性を求めるためにはAさんの銀行口座に5000円が戻ってこなければいけないのですが、これでは正しい取引が行われたとはいえません。
トランザクションの整合性を確認するためには、一連の取引をひとまとめにしなければいけません。
最終的に正確に取引が行われたのか、または行われなかったのかというどちらかの結果にならなければいけないのです。
1-3. 仮想通貨におけるトランザクションは価値の移転を意味する
仮想通貨におけるトランザクションは、誰から誰にいくらの仮想通貨を送ったのかで表すことができます。
ただの電子データである仮想通貨に価値があるのは、「Aさんに1BTCを送金した」というようなトランザクションが耐改ざん性の高いブロックチェーンによって管理されていること。
そして、「この取引は正確に行われた」という確かな証拠があることによって生み出されています。
2. ビットコインのブロックチェーンにおけるトランザクションの一連の流れ
この章では、トランザクションがブロックチェーンネットワーク上でどのように作成され、ブロックチェーンに記録されていくのかを解説します。
ビットコインブロックチェーンにおけるトランザクションの作成から、ブロックチェーンへの記帳までのプロセスは以下の順番で行われます。
ブロックチェーンの記帳プロセス
- トランザクションの作成
- ビットコインネットワークへデータを送信
- ビットコインネットワーク上でのトランザクションの伝搬
- マイニングノードによって検証され、ブロックチェーンに記録
2-1. トランザクションの作成
トランザクションはわたしたちが仮想通貨の送金を行うたびに作成されます。
トランザクションが作成されると、通貨の所有者は署名を行います。
正常にトランザクションが作成され署名が行われていれば、そのトランザクションは有効になり、送金を実行するための準備が整ったことになります。
2-2. ビットコインネットワークへデータを送信
トランザクションがブロックチェーンに記録される前に、まずはビットコインネットワークに送信される必要があります。これは、トランザクションが正確なデータであることをノードが検証しなければいけないからです。
ノードとは、ブロックチェーンネットワークに貢献している参加者のことで、私たちがブロックチェーンネットワークに接続しているコンピュータを指します。
送信者は複数のノードにトランザクションを送信するので、一つのノードを信用する必要がありません。
2-3. ビットコインネットワーク上でトランザクションの伝搬
ノードにトランザクションが送られると、ノードはそのトランザクションが有効なものであるかを検証します。
有効なものであると確認されると、そのトランザクションは他のノードへ伝搬されます。
そしてどんどん波紋上に広がっていき、すべてのノードへと行き渡ります。
2-4. マイニングノードによって検証され、ブロックチェーンに記録
計算能力の高さを競う競争によって選出されたマイニングノードは、この有効となったトランザクションをブロックチェーンに記録することができます。
トランザクションは承認されると、ブロックチェーンに記帳され永続的に記録されます。
3. 「トランザクション手数料」はネットワーク利用者が支払うもの
仮想通貨は送金を行う度にトランザクション手数料が取られる仕組みとなっています。
たとえばイーサリアムであればgas(ガス)にあたるのがトランザクション手数料です。
トランザクション手数料はマイニングを行うためのインセンティブとしてマイナーに支払われます。
またトランザクション手数料は必ず支払わないといけないことから、システムを悪用するものに対しての抑止力としても働きます。
自身で金額を設定することができる
トランザクション手数料は自分で金額を設定することが可能です。
手数料を多く支払えば優先的にマイナーに処理され、送金時間を短縮することができるのです。
その反対に手数料の支払いが少ないと、とマイナーたちの取り分が少なくなるので敬遠し、処理されるまでに時間がかかってしまいます。
急を要する送金を行う場合には、トランザクション手数料を多く支払って、優先的に処理してもらうのも一つの手です。
4. トランザクションにおける4つの構造
トランザクションは、「UTXO(未使用アウトプットトランザクション)」「トランザクション・インプット」「トランザクション・アウトプット」「メタデータ」の4つの要素で構成されています。
- UTXO(Unspent Transaction Output)は、ネットワーク内にプールされている未使用の取引データ群のことで、秘密鍵を持っている通貨所有者だけがUTXOから通貨を移転させることができます。
- トランザクション・アウトプットとは作成されたUTXOであり、誰に仮想通貨を送ったのかを表しています。
- トランザクション・インプットは消費されたUTXOであり、誰かから仮想通貨が送られてきたことを表しています。
- メタデータは、トランザクションのデータサイズやIDなど、トランザクション自体に関する情報を表しています。
まとめ
これで「トランザクション」とはどのようなものかイメージできましたか?
トランザクションとは、取引の一連の流れのこと。
仮想通貨においては、取引の一連の流れが記載されたデータです。
しかし仮想通貨に紐づいているわけではないので、仮想通貨自体を送金しているわけではありません。あくまで取引データだけです。
この仕組みは銀行の仕組みと似ています。銀行の金庫にあるお金をわざわざ動かしたりしませんよね。
この点に関して仮想通貨の仕組みは銀行の仕組みと似ているのです。