仮想通貨

ビットコインのトランザクションとは?その意味や仕組み、手数料などを解説

仮想通貨でよく使われる「トランザクション」の意味とは?

仮想通貨界隈ではよく「トランザクション」という言葉を耳にするとは思いますが、本記事ではその言葉の意味や特徴、仕組みなどを徹底解説していきます。

トランザクションとは、仮想通貨のみに限らずIT分野全域における専門用語の一つであり、「取引データ」「処理」といった意味で用いられます。

それを簡単に言い表すと、買い物などで行われる「商品の購入→代金の支払い→商品の受け取り」などといった一連の取引処理の流れです。

そしてこれらの処理は一貫性を保証する必要がある為、一連の処理が一つの単位として管理されます。

例えば、銀行のデータベースにおけるトランザクション処理を例にして考えてみましょう。

銀行システムで自分の口座から預金を引き出す場合、大まかに以下のような流れとなります。

  1. 引き出し処理を行う
  2. 口座から金額を引き出す
  3. 預金残高のデータ(金額)増減を更新

これらの一連の引き出し処理を「トランザクション」と呼びますが、このプロセスは全てが成功するか、全て失敗に終わるかのどちらかでなければなりません。

上記の図のように「一つのオペレーションが成功で一方は失敗する」ような事が起こってしまっては、預金者が引き出しに成功した後、残高が引き出す前の状態から更新されていないという事になります。

これでは銀行は無限にお金を引き出されてしまいますよね。

ですので、トランザクションはデータ処理のプロセスにおいて矛盾を起こさないように、常にデータの整合性を保持する役割を持っているのです。

ビットコイントで用いられるトランザクションとは

さて、代表的な仮想通貨ビットコインにおいても上述したトランザクション機能によって送金が成り立つ仕組みとなっており、それは「価値の移動を表す取引データ」を意味します。

しかしそこには多少の違いがあり、上述した銀行におけるトランザクション処理では銀行という中央集権がその処理を管理していましたが、ビットコインの場合は中央管理者を置かずにこのトランザクション処理を実現させます。

では、ビットコインにおけるトランザクションのもう少し具体的な仕組みについて以下より簡単に述べていきます。

ビットコインのトランザクションの仕組み

分散型のビットコインでは、自分のビットコインを送金する際に「AさんがBさんへ1BTCを送金」といったようにその取引内容を他のコンピュータ(ノード)に知らせる必要があります。

この取引がビットコインにおけるトランザクションと呼ばれ、銀行システムとは違って自分のトランザクションをまとめて管理している運営者は存在しません。

さて、自分が行ったトランザクションは他のノードに知らされるわけですが、他のノードはこのAさんからBさんへの送金取引を安易に承認する事はできません。

なぜなら、この取引は嘘の可能性があるからです。

ですので、このトランザクションは後にマイナーによるマイニングで取引の不正が無いかチェックされます。

そこで行われるのが「マイニング」であり、マイナーのプルーフ・オブ・ワーク(PoW)によって承認されたトランザクションがブロックチェーンに新規追加されるのです。

ビットコインを支えるプルーフ・オブ・ワーク(PoW)の仕組みとは?ビットコインを支えるアルゴリズム「PoW」とは?PoW(プルーフ・オブ・ワーク)とは、ブロックチェーン上で取引の合意得るためのコ...

このようなプロセスを経て一つのトランザクションがやっと確定します。

ディフィカルティ(採掘難易度)を調整する仕組み

前述したように、AさんがBさんへとビットコインを送付する為にはPoWによるマイニングが必要なのですが、ビットコインの場合はそのPoWマイニングが10分掛かるようになっています。

これはビットコインのブロックチェーンのアルゴリズムによって、マイニングの平均終了時間がちょうど10分程に落ち着くように調整されている為です。

そもそもPoWマイニングには難易度の指標があり、それが高ければ高い程マイニングに時間が掛かりますが、逆に低ければ低い程時間は掛からなくなります。

そのようなマイニングの難易度における指標の事を「ディフィカルティー(採掘難易度)」と呼んでおり、難易度を調整する事を「難易度調整(Retargeting)」と呼んでいます。

そして、上述の通りビットコインはブロックの生成時間を10分に保つように難易度調整がされており、この調整は2週間に1度の間隔で実行されています。

このような仕組みによってビットコインはセキュリティ性の強いブロックチェーンを維持しており、AさんがBさんへ送った1BTCのトランザクションをより安全に確定させる事ができるのです。

なお、ディフィカルティと難易度調整はトランザクションにおいて非常に重要な部分であり、ディフィカルティがあまりにも低いと安易に攻撃を受けてしまいます。

2018年5月、ビットコインと違って難易度調整を1ブロック毎に設定するモナコインは、ディフィカルティが低い時点を狙う攻撃を受けてしまいました。

このように、マイニングの難易度が低い場合は取引の承認が早くなる反面、ハッカーから攻撃を受けてしまうリスクも背負ってしまうのです。

未確認トランザクションとは?トランザクションが詰まる原因

さて、前述したトランザクションにおいて巷で「トランザクション詰まり」という言葉が聞こえてくるかと思いますが、それは一体何なのかについて解説します。

未確認トランザクション

ビットコインのトランザクションの仕組みにおいて、その取引の承認はおよそ10分であると説明しました。10分おきにブロックチェーン上にストックされているトランザクションは承認されるのですが、現状のビットコインは一度に全てのトランザクションを捌けるわけではありません。

つまり、今あなたが誰かに送金したとしても、それがすぐに10分後に承認されるわけではないのが現実なのです。

では、そのトランザクションはどうなるのかというと、「まだ承認がされていないトランザクション」として保留されます。

このように、まだ承認がされていないトランザクションの事を「未確認とトランザクション」といいます。

2018年6月22日の21時現在、ビットコインの未確認トランザクションはおよそ5,000程度となっています。

引用:Blockchain.info

この数字は常に変動しており、この未確認トンランザクションは1万件を超えていたりもします。

そのように大量の未確認トランザクションが存在している事から、トランザクションの処理が混み合って遅延しているこの状態を「トランザクション詰まり」と呼んでいます。

ビットコインの使用者が増えた一方で、狭い道路に大量の車が走って混雑するような状況になってしまっており、これは「スケーラビリティ問題」とも呼ばれています。

仮想通貨の話題沸騰によって生じたリスク「スケーラビリティ問題」とは仮想通貨の知名度上昇が、新たなリスクを孕む結果に2014年、「Mt.GOX破綻事件」の報道を受けて、国内におけるビットコインの知...

トランザクション詰まりの解決方法

上述したように、トランザクションのボリュームは当初から右肩上がりに増加しています。

引用:Blockchain.info

上記の図を見ると、2017年12月はトランザクション数のピークに達していた事が分かります。

仮想通貨を送付するユーザーにとっては、この問題はどうする事もできず、ただ待つしかありません。

しかし、ビットコイン利用者であるユーザーにとってこのようなトランザクションのボリュームから来る「トランザクション詰まり」の解決方法が一つあり、それが「トランザクション手数料を多く支払うこと」です。

トランザクション手数料について

ビットコインの取引の際には、マイニングをしてその取引を承認してくれるマイナーの為に手数料を支払う必要があるのですが、マイナーがトランザクションを承認する優先度はこの手数料の高さで決定されるのです。

この手数料はマイナーの報酬となり、それを高く払う事でマイナーもそれを優先的に承認するインセンティブとなります。

以下のbitFlyerのBTC送付画面のように、1BTCを送付するとすれば0.0004BTC(現在の時価でおよそ300円)の手数料が掛かりますが、この手数料はトランザクションのデータ量によって変化しており、任意で多く支払う事も可能です。

引用:bitFlyer

そして上の赤枠の通り、記載されている追加の手数料を支払う事でトランザクションの優先度を高める事ができます。

これを見ると最高で+0.0005BTCとされており、1BTCであれば合計0.0009BTC(現在の時価でおよそ700円)を支払えば優先度を最大まで高める事ができます。

トランザクション手数料はどのように決まるのか

このようなマイナーに支払うトランザクション手数料は、BTCの送金額に比例するわけではなく、送付するBTCのデータ量によって決まります。

これは言ってしまえば100BTCでも0.001BTCでも、仮にデータ量が同じであれば手数料も同じというわけです。

なお、取引量が増えるとその分ビットコインのネットワークが混雑することになるので、手数料がどんどん高くなっていきます。

なので、ネットワークの混雑に伴って手数料が引き上がると手数料が低いトランザクションが後回しにされてしまいます。

よって、本来の低い手数料レートであっても上乗せして支払う必要が出てくるのです。

トランザクションの構成要素の仕組み

では、トランザクションに関してもっと具体的な中身の部分を見ていきましょう。
上述したトランザクションは以下の通り、主に4つの構成要素で成り立っています。

  1. UTXO(未使用トランザクションアウトプット)
  2. インプット
  3. アウトプット
  4. メタデータ

では、それらを順に解説していきます。

UTXO(未使用トランザクションアウトプット)

UTXOとは「unspent transaction output」の略であり、ビットコインの残高管理の方法として用いられる仕組みです。

これは「未使用のトランザクションアウトプット」「分割不可能なビットコインの取引データ」とも言い表す事ができますが、それは一体どのような仕組みなのでしょうか?

そもそもビットコインのブロックチェーンでは、自分のアカウントやウォレットに纏まった残高が記録されているわけではなく、たくさんの取引データがUTXOとして分散されており、そのいくつもの取引データのトランザクションから残高を算出しています。

これは現実でバラバラとした紙幣や小銭などの現金が入った財布と同じような性質であり、財布の中のお金は一目ですぐに把握できるわけではなく、紙幣や小銭を一枚ずつ数える必要があります。

そのように、トランザクションによって行き交いする仮想通貨ウォレットの残高も同じで、ブロックチェーン上に散らばったUTXOを自分が所有権を持つアドレス毎に振り分けて計算されているのです。

このようにUTXOはビットコインのトランザクションにおいて重要な役割を果たしており、それは後述するトランザクションのインプットとアウトプットから構成されます。

トランザクションのインプットとアウトプット

ブロックチェーン上でのトランザクションは「インプット」と「アウトプット」の両方で成り立っています。

インプットとは誰からビットコインが送付されてきたかを表し、アウトプットとは逆に誰にビットコインを送付したのかを表します。

簡単に表すと「インプット=着金」「アウトプット=送金」であり、上述したUTXOはこれらの仕組みから構成されてるのです。

そして、下記図のようにUTXOはトランザクションにおけるアウトプットから来るようになっています。

このようにトランザクションアウトプットがUTXOとなり、そのUTXOは次のトンランザクションインプットへと流れていきます。

つまり、トランザクションのプロセスにおいて、誰も消費していないアウトプットがUTXO(未使用のトランザクションアウトプット)となるわけです。

そしてアウトプットとインプットのプロセスは取引がされる限り永続的に続けられ、これがブロックチェーンの取引データ内で行われているのです。

UTXOは分割が不可能

このUTXOは分割が不可能であり、特定の所有者によって固められたビットコインであると言えます。

それは実際の硬貨や紙幣の価値を物理的に半分に分けられないのと同じであり、UTXOも分けられません。

もし、10BTCを持っているアドレスが4BTCのみを他のアドレスに送付しようとする際、おつり分をもう一つのアドレスを作成して受け取らなければなりません。

なぜなら10BTCのUTXOを4BTCと6BTCに分ける事は出来ないからです。

なので、おつりとなる6BTCを別のアウトプットとして生成し、おつり用のウォレットに紐つける必要があるのです。

もしこれがおつり受け取り用のアドレスを指定していない場合、全てがマイナーの報酬としてトランザクションフィーになって流れていきます。

coinbaseとは

トランザクションにおけるcoinbaseとは、ブロックの一番最初のトランザクションの事であり、あの米大手仮想通貨取引所である「Coinbase」の事ではありません。
主にマイニングによって生成されるブロックの初めのトランザクションをcoinbaseと呼んでいますが、これがマイナーの報酬として割り当てられます。

なお、coinbaseは最初のブロックなので、インプット(着金)の記述はありません。

メタデータとは

メタデータとは、取引データの情報が書かれているデータです。

これにはトランザクションにおけるデータのサイズや、トランザクションが作成された日時やIDなどが記載されており、後述するトランザクションIDを用いて自身のトランザクションの履歴などを確認する事が出来ます。

トランザクションID(TX ID)とは?

トランザクションID(TX ID)とは、あるアドレスから他のアドレスにどの程度の量が送られたかを表すIDであり、このIDは誰もが確認する事が可能です。

例えばbitFlyerからビットコインを他のアドレスへ送付した時は、bitFlyerの「お取引レポート」から「入出金」へアクセスする事でトランザクションIDを確認出来ます。

引用:bitFlyer

このIDはブロックチェーン上で自分の取引がどうなっているのかの進捗を確認する時に用いる事ができ、各取引所やデータサイトなどでトランザクションIDを入力すれば進捗を見る事ができます。

ビットコインのトランザクション履歴を確認する方法

ビットコインのトランザクション履歴はリアルタイムで誰でも見る事が可能です。

ビットコインはその送り主が取引(トランザクション)を作り、パブリックなネットワークに放出しますが、そのトランザクションはネット上に全て公開されています。

Blockchain.infoを確認すると、自分が送付したビットコインから、その受取人がさらに他人へ送付したビットコインの履歴までを追跡出来るようになっています。

引用:Blockchain.info

このサイトのトップページには新規生成された最新のブロックの情報が掲載されており、中を覗くと下記図のようにトランザクションの履歴が閲覧できます。

なお、アドレスを踏むと詳細ページに飛びます。

もし、自分のトランザクション履歴を確認しようと思えば、ページの右上にある検索窓から確認したい自分のビットコインアドレスをペーストして見つけましょう。

このように簡単に追跡が可能な事から、ビットコインは取引が透明化されているようにも思います。
ですが、そのトランザクションを送ったアドレスの所有者までは公開されません。

よって、トランザクションは「誰でも簡単に追跡出来るけどアドレスの所有者は誰なのかは分からない」というものなのです。

ビットコインのトランザクション処理は今後実用化するのか

以上がトランザクションについてでしたが、今後この仕組みは私達の生活を取り巻く日常の支払いで活用されるようになるのでしょうか。

結論から言うと、上述した通り現状トランザクションにおける様々な問題がある為、普及にはまだまだ時間がかかるでしょう。

未確認トランザクションがまだまだ多い事や、ブロックの容量が需要に追いつかない事など、これはビットコインに限らずイーサリアムでも同様に起こっている問題です。

まだ何ら世界を変えているわけでもない現状の仮想通貨でもこれだけのトランザクションに関する問題がある事から、今後の潜在的需要を織り込むとさらにスケールしていく必要があるでしょう。

このような問題を解決する為に現在様々な解決策やアルトコインが誕生しています。

しかし、分散化を捨てて利便性のみを選ぶなら、間違いなく既存のVISAのようなペイメントサービスの方が高性能であると言えるでしょう。

どうしてもビットコインのような分散型のコインはセキュリティ性を高める為には、多少利便性を落としてしまわなければならないのです。

現在はビットコインではライトニングネットワーク、イーサリアムはライデンネットワークと呼ばれるソリューション技術が誕生していますが、今後どれくらいでそれらが完成形に近くかが成功の鍵となりそうです。

関連記事