トランザクションとは?初心者にもわかりやすく解説

トランザクションを初心者にも分かりやすく解説

仮想通貨の個別の取引やその記録のことをトランザクションといいます。ビットコインを始めとする多くの仮想通貨は、そのネットワークに接続されているノード(コンピュータ)がトランザクションを承認し、それをブロックとしてまとめてブロックチェーンに接続することによってその健全性を保っています。

今回の記事ではトランザクションがどのような仕組みで成り立っており、どのように承認されているのかについて解説いたします。

トランザクションとは?

トランザクションとは、仮想通貨の個別の取引、もしくはその記録のことです。例えば「AさんがBさんに5BTC支払った」という記録はトランザクションですし、「BさんがCさんに10LTC支払った」という記録もトランザクションです。

トランザクションを図解で解説

ビットコインやライトコインのような典型的な仮想通貨の場合、トランザクションは一定時間ごとにまとめられ、1つのブロック(トランザクションをしまう電子的な箱)の中に格納されます。新しく生成されたブロックは直近のブロックに接続されます。

最古のブロックから最新のブロックまでが1つのチェーンで結ばれたものをブロックチェーンと言います。ブロックチェーンは最古の取引から最新の取引までが全てまとめられた台帳のようなものです。このブロックチェーンが改ざんされない限りビットコインの不正な取得や使用は起こりえず、そしてブロックチェーンは改ざんが極めて難しいため、不正な取得や使用はまず起こりません。

トランザクションの仕組み

トランザクションの仕組みは仮想通貨によって異なりますが、ここではビットコインのトランザクションの仕組みについて解説します。ビットコインのトランザクションは、以下の4つのデータから構成されています。

  • UTXO
  • アウトプット
  • インプット
  • メタデータ

UTXOは、UTXOとは、「Unspent Transaction Output」の略で、日本語では「未使用トランザクションアウトプット」と訳されることが多いです。訳した文を見ても良くわかりませんが、要するにまだ使用していない(使用する権利のある)ビットコインのことです。

実はビットコインは残高を管理するのではなく、受取総額と支払総額の差額を管理することによって成り立っています。

例えば、ある日にAさんから10BTC受け取り、その後Bさんに7BTC支払い、更にその後Cさんから2BTC受け取ったとしましょう。この場合、あなたのウォレットの受取総額は12BTC、支払総額は7BTCです。差額は5BTCなので、あなたはビットコインのブロックチェーン上で5BTCを他人に送金する権利を有していることになります。

トランザクションを画像で解説

ビットコインウォレット(取引所でもOK)をお持ちの方は、それを開いてみてください。そこにあなたのビットコイン保有量が表示されているはずです。しかし、それはあなたのウォレットの中にビットコインが入っていることを意味しているわけではありません。その数字は、あなたのウォレットの受取総額と支払総額の取引の差額であり、あなたが使える権利を有するビットコインの量であると考えてください。

もちろん、普段はウォレットを仮想通貨を入れるための財布と捉えても特別不都合があるわけではありません。しかし、実際にウォレットに仮想通貨を入れているわけではないため、ウォレットの秘密鍵を盗まれてしまえば、ウォレットそのものが手元にあっても勝手に送金されてしまう可能性があることについては留意が必要です。

アウトプットとは受取人に関する情報、インプットとは支払人に関する情報です。

メタデータはトランザクションそのものの情報を表すおまけのデータのようなもので、トランザクションのデータサイズ、トランザクションIDなどが該当します。自分の取引が正確に承認されたか否かを知りたい場合は、そのIDを調べればOKです(調べ方は後述)。

取引から承認までの流れ

ビットコインのブロックチェーンは、各ユーザーが行ったトランザクションを、世界中に散らばったノードが承認することによって成り立っています。ビットコインの場合、承認の仕組みにはPoW(Proof Of Work)を採用しています。

これは計算能力の高いノードほど承認作業に参加しやすくなる(その結果、新規発行分や手数料を受け取りやすくなる)仕組みです。そのため、承認作業を行うマイナーは、その作業のために高いノードを大量に用意して稼働させています。ノードの購入費用も、それが使う電気代も高額なので、一部の大組織以外は事実上承認作業に参加できない状態が続いています。

さて、支払人がビットコインの送金手続きを行うと、概ね以下のような流れで承認作業が行われます。

  1. 支払い手続き
  2. トランザクションプールに滞留
  3. 検証
  4. 承認&ブロックチェーンへの記録

①送金手続き

まず、ビットコインの支払人は、支払い手続きを行います。支払い手続きとは「私のウォレットから受取人のウォレットにビットコインを移したいので承認してください」という、いわば「お願い」です。お願いはまず、トランザクションプールというプールに集められます。

②トランザクションプールに滞留

トランザクションプールには、支払人の、あるいは支払人以外の「お願い」がたくさん滞留しています。マイナーはこのプールの中から自分が承認したいトランザクションを選び出します(取引手数料を高めに設定すると、マイナーに優先的に承認してもらえます)。

この時点では支払人はすでに送金手続きを行ったものの、まだ受取人が使えるようにはなっていないという、いわば宙ぶらりんの状態です。

③検証

マイナーはコンピュータを使って高度な計算を行い、承認作業を行います。

④承認&ブロックチェーンへの記録

承認された支払人のトランザクションは、同時期に承認された他のトランザクションと一緒に、新たに生成されたブロックにまとめられ、ブロックチェーンに繋げられます。この段階で、支払人のトランザクションは1段階の承認を得たことになります。

ブロックチェーンの承認

ただし、この段階で受取人のもとにビットコインが送られることはほぼありませせん。承認が1回だけだと不正送金のリスクを否定しきれないからです。

支払人のトランザクションが入ったブロックの次に新しいブロックが接続されると、その時点で2つの承認を得たことになります。更に新しいブロックが接続されると、3つの承認を得たことになります。承認数が増えれば増えるほど不正送金のリスクは小さくなり、それが十分に小さくなったときに、初めて受取人に権利が与えられます。

ビットコインの送金時間は10分と言われますが、それは承認数を1回にした場合の数字です。承認数を増やせば、その分だけ時間がかかります。

ブロックチェーンの承認回数が増えると不正送金のリスクが下がる

何回承認されればOKとするか、は仮想通貨取引所やウォレットによって異なりますが、ビットコインの場合、最近は3~6段階が主流です。承認数が少ないほど早く送金できますが、そのかわり不正送金のリスクも高まります。

また、仮想通貨によって安全が確保できる承認数は異なります。例えば、イーサリアム(ETH)はビットコインと比べて多くの承認数を必要とすることが多いです(イーサリアムはブロック生成間隔が短いため、送金時間自体はビットコインよりも短いことが多いです)。

トランザクションの確認方法

ビットコインを送金してから実際にそれが承認されるまでにはかなりの時間がかかるため、送金がうまく言っていないのではないかと心配になることが多々あるかと思います。そんなときは、自分のトランザクションがブロックチェーン上でどのような扱いになっているかを確認しましょう。

トランザクションの確認のためには前述のトランザクションIDが必要です。仮想通貨取引所から送金した場合は、その取引所のサイト内から確認できます。

次に、Blockchain.infoで、トランザクションIDを検索します(他のサイトでも出来ますが、ここが一番使いやすいかと思います)。するとその取引の承認状況が表示されます。「未承認の取引!」と表示された場合は、その取引はまだ誰にも承認されていない状態なので、まだそれなりに長い時間待つ必要があります。「1確認」「2確認」などと表示されているときは、ある程度承認されているので、もう少し待てばOKです。

トランザクションによる問題点

ビットコインの仕組みはよくできていますがそれでも完璧なものではなく、いくつかの弱点を抱えています。その中でも特に大きいのが、トランザクション展性という問題です。

トランザクション展性

トランザクション展性とは、前述のトランザクションIDを、第三者が自由に書き換えられてしまう脆弱性のことです。トランザクションIDは、トランザクションのデータ全体のハッシュ値です。ハッシュ値とはハッシュ関数によって算出される、元データとは全く無関係に見える値です。なにか適当な値をハッシュ関数に通すと、別の値が出てくるのです。

第三者はインプットに含まれる署名を書き換えることによって、送金者や受取人を買えないまま、全く別のトランザクションIDを生成できます。

仮にトランザクションIDを書き換えると、どのようなことが起こるのでしょうか。もし、あなたの使っているウォレットがトランザクションIDだけで残高計算を行っているのでなければ、特に問題は起きません。しかし、それを行っている場合は、ビットコインの再送を外部から行えるようになってしまい、いわゆる二重支払いが発生します。

このような問題を解決するために提案されたのがSegwitという技術です。Segwitはすでにビットコインに搭載されており、一定の効果を得ています。

0 0

この記事の共有はここから