【ブロックチェーン決済の仕組み】トランザクションを解説

【ブロックチェーン決済の仕組み】トランザクションを解説

銀行口座の入出金、あるいはECサイトでの商品販売など、商取引には決済システムが不可欠です。決済システムはこれまで中央集権型の制御サーバーを使って処理するのが当然でした。これはトランザクション管理をサーバー集中型でしか実現できなかったためです。しかしこの課題に「サトシ・ナカモト」が取り組み、2008年、ブロックチェーン技術の考案により分散環境でのトランザクション管理を実現しました。

本記事では、従来から用いられていたトランザクション管理のやり方を確認しながら、この問題をブロックチェーンがどう解決したのか、どのような課題が残っているのかを見ていきます。

決済システムには中央集権型のトランザクション管理が必須だった

まず、従来から存在する中央集権型のトランザクション処理とはどのようなものでしょうか。もしトランザクション管理が行われなければ銀行からの引き出しで何が起こるのかを見てみましょう。

もしトランザクション管理ができていないと何が起こるのか

Aさんの銀行口座残高が1万円のとき、Aさんの家族・Aさん本人が別々のATMでほぼ同時に1万円を引き出そうとしています。もしトランザクション管理をしていないと(もちろんこのようなシステム欠陥を銀行が見逃すはずはありませんが)、それぞれ1万円、計2万円が引き出される異常が発生してしまいます。

同一資源(Aさん口座)へのトランザクションは分けて行う!

Aさん家族によるトランザクション①、Aさん本人によるトランザクション②、これらを並列処理したら口座残高が残っているかのように銀行システムが誤認し、残高以上の引き出しが行われ、結果的に口座残高がマイナス値になる異常状態が発生してしまいます。ではこのような異常を避けるにはどうすればよいでしょうか?Aさん家族・Aさん本人による口座引き出しが同時に発生したとしても、この2つの取引を順番に実行すれば口座管理の異常は発生しません。

資源を排他制御してトランザクションを実行する

つまりトランザクション①・トランザクション②のうちどちらか一方の処理に着手するとき、Aさん口座という資源にロック(排他制御)を掛け、着手したトランザクションが完了するまでその他のトランザクション実行を待機させれば良いことが分かります。こうすればトランザクション①が正常終了した時点でAさん口座は残高ゼロになっており、トランザクション②は残高確認時点で不足しているので破棄されます。

時系列で言うと、次のような順次実行処理になります。

「資源管理サーバー」による資源の中央集権管理

ここで重要なのは、トランザクションに関係する資源、この場合で言うとAさん口座資源への排他制御を「資源管理サーバー」が集中して行っていることです。

この一括管理を行うため、どんなに規模の大きな銀行でも、トランザクション管理を中央集権型のサーバーで処理する必要があります。当然、この資源管理サーバーの性能・負荷によって銀行業務全体が制約を受けるので、中央集権型の構成は銀行にとっても望ましくはありません。本当なら銀行業務の負荷を多数のサーバーに分散並列処理したいのですが、トランザクションを管理するため集中管理やむなしというのが常識でした。

トランザクション管理を分散環境で実現する方法:ブロックチェーン

そこで、分散環境で決算システムを実現するという課題に対する提案がブロックチェーンです。

ただし、後述するようにこの方式単体だけでは排他制御が完全ではなく、他の制御ルールと組み合わせてトランザクション管理する必要があります。

どのように課題解決したかというと、前述の銀行システムがリアルタイムの排他制御でトランザクション管理するのに対し、ブロックチェーンではとりあえず複数のトランザクションを並列で処理し始め、後追いで検証作業をするという方法です。つまり異常状態が一時的に発生することを容認しています。

「資源管理サーバー」による資源の中央集権管理

ブロックチェーンにはシステム構成上、集中管理するサーバーが存在しません。既存のブロックチェーンの末尾に、数個のトランザクション(取引内容)が入った1MB程度のサイズの新しく作ったブロックを連結するマイニングと呼ばれる作業で処理が進んでいきます。ブロックチェーンの状態も、マイニングを行うマイナー達がP2P(Point-to-Point)通信による相互通信・相互承認によって「これが現状だ」という認識を互いに持っているだけ、ブロックチェーンの本体データがどこかに存在して誰かが更新作業を担当している訳ではありません。

マイナー達は、インセンティブ(報酬)目当てで新しいブロックを他のマイナーよりも先に計算完了しようと競い合っています。マイナー達は独立して計算を進めているので、図のようにそれぞれが計算中のブロックの内容は互いに異なっています。これらマイナーのうち、最初に計算を完了させた者がいち早く他のマイナーへブロック情報を通知します。通知を受信した他のマイナーは計算結果の検証を行い、正しく計算できていることが確認できれば自分が計算中のブロックを破棄、自身のブロックチェーンに検証したブロックを追加します。

この仕組みでトランザクション管理できるのは、勝者総取りの決まりのためです。つまりトランザクション①を計算している複数のマイナー、トランザクション②を計算している複数のマイナーが存在したとしても、一番早く計算し、その結果を他のマイナーに承認してもらった結果だけが新しいブロックチェーンとして残り報酬を得ます。例えば自分がトランザクション②の計算中に、他者のトランザクション①を含む新ブロックの通知を受け取った場合、その結果が正しければ自分のマイニングを中止して新ブロックを承認します。トランザクション①の後ろに連結させるブロックを計算するときには、トランザクション②は残高不足(トランザクション①で使用された仮想通貨は、使用済仮想通貨としてマイニングされブロックチェーンへ通知される)なので、以降マイニング対象から外れます。

各マイナーの承認結果に分岐が発生

以上は理想的なタイミングで動作した、つまり最初に計算完了させたマイナーが他のマイナーに完了を通知し、他のマイナー全員が承認した例です。実際には各マイナーは互いに独立してマイニングを行っているので、複数のマイナーが同時に異なるマイニング結果を通知する場合があり、誰からの通知が一番早く届くかは受け取るマイナー毎に遅延ずれがあるため、各マイナーの承認結果に分岐が発生します。

勝者だと思い込んだ複数のマイナーは、新しいブロックの計算結果をP2P通信で通知、つまり本来、関係でメインチェーン上だけで伸びて行くべきですが、各マイナーは独自の判断で通知された新しいブロックを承認するのでマイナー間で認識上の分岐が発生します。

マイナー間の認識を統一させるには、何等かの方法により分岐を解消しなければなりません。

分岐が発生するケース

分岐を解消するため、ブロックチェーンには別のルールが設けられています。

分岐発生以降、多数派のマイナーが計算作業を続けているチェーンをメインチェーンとして残し、少数派のチェーンを破棄するというルールです。マイニング報酬はメインチェーンでの計算のみに与えられ、サブチェーン上の計算には与えられません(マイニング報酬の仮想通貨が使用可能になるのは100ブロック程度が自分のマイニングしたブロックの後ろに連結された段階です。それまで報酬は凍結されているので、サブチェーン上のブロックへのマイニング報酬は結局受け取れません)。

マイナーは短い方の分岐上でブロック計算を続けても他者から承認が得られず自分の計算作業が報酬獲得につながらないのでサブチェーン上での作業を放棄、自分の持つ限られた計算能力をメインチェーン上での計算に振り向けます。このため、一時的に分岐が発生したとしても後続するチェーンの数に差が出るので、分岐発生後、数ブロックのうちにどのチェーンが生き残るのか勝敗決着が付きます。

ブロックチェーン分岐の解消

このため矛盾するトランザクション①・トランザクション②が別々の分岐上に残っていたとしても、分岐後すぐにサブチェーンが消滅、なかったことになります。この図の場合、トランザクション①が生き残り、トランザクション②はなかったことになりロールバックが発生します(なかったことになる)

トランザクション管理の保留期間の影響

最終的には取引結果が確定するものの、この仕組みでは矛盾するトランザクションが一時的に両立したり、しばらく経過するとサブチェーン上のトランザクションが消滅して取引結果が覆ったりする不安定動作を起こす決済システムが出来上がってしまいます。顧客が銀行取引・商取引でコロコロ取引結果の覆る体験をしたらサービスに対し不信感を持ちます。これは顧客側から見えてはならないふるまいなので一時的な変化を抑制しなければなりません。システムが安定して動作していることを示すためサービス提供側は次のような対策を用います。

合意形成するまで取引確定を遅らせる

仮想通貨取引所での通貨取引や、代替えの商品がない一品物のオークションなどでは、売買成立するまで通貨・商品の引き渡しができません。サブチェーンの発生リスクがほぼ消滅するトランザクション確定まで時間がかかるので、それまで売買成立が保留されることになります。一般にはブロックチェーンの分岐発生後、

・ビットコイン … 分岐後6ブロック連結が伸びた場合、結果が覆ることはほぼない(ビットコインのブロック追加速度:計算難易度調整により10分/ブロック目標で制御される ⇒ 確定まで60分程度)

・イーサリアム … 分岐後20ブロック連結が伸びた場合、結果が覆ることはほぼない(イーサリアムのブロック追加速度:計算難易度調整により15秒/ブロック目標で制御される ⇒ 確定まで5分程度)

が確定に必要な時間です。これだけの時間待機すると、メインチェーンはそのトランザクション結果を覆すのが不可能なほど伸びているので売買が確定したと見做す運用が行われています。

逆に言うと、オークションの締め切り直前に仮想通貨で最高額入札があったら、売買成立確定まで5~60分待たされることになり、締め切り時刻がその分延期されることになります。延期の期間中にさらに最高額入札があるような白熱したオークションでは、いつまでもオークションが成立しない事態に陥ります。このため従来のような競売人の仕切りでその場で売買成立させる立会い式のオークション実施は困難です。このため仮想通貨での支払いがO.K.の場合、オンラインのネットオークション形式で実施されることになります。

既存通貨と仮想通貨を仮想通貨取引所で交換する場合でも、売買確定するまで同様に時間が掛かるので、売り買いが揃っていたとしても実際の引き渡しまで5~60分待たされることになります。

店頭決済の場合、店舗側がリスクを負う

日本でも仮想通貨が使える小売店が徐々に増えてきています。例えば、ビックカメラとその関連会社の店舗は仮想通貨導入に積極的です。ただし、換金性の高い商品(商品券・ギフトカードなど)や高額決済などは仮想通貨取引の対象外になるようです。

小売店の店頭で顧客が仮想通貨を使って決済する場合、売買成立まで顧客を店頭で5~60分間も待たせる訳には行きません(待たせたら「では取引不要」と顧客が帰ってしまいます)。商機を逃さないため少額取引の場合、まだトランザクションがブロックチェーン上で承認される前に、店舗あるいは店舗の加盟する決済代行会社が損失リスクを負って即時決済します。これを「ゼロ承認(Zero-Confirmation)」と言います。もし、最終的にブロックチェーン上でトランザクション承認が得られない場合には、店舗側が損失として費用負担します。仮想通貨のレート変動リスクについても店舗側の負担になります。

ブロックチェーンでの取引はまだ発展途上、今後に期待

以上のようにブロックチェーンはトランザクション管理の課題を一応解決していますが、既存の決済システムに比べ取引確定までの待ち時間が長いなど機能がやや劣るのが現状です。

また1秒あたりに処理可能なトランザクション件数も、クレジット決済会社などと比較すると、桁違いレベルで低性能です。

ブロックチェーンによる商取引は機能・性能共に発展途上で、現状では銀行決済・ECサイト取引の代替えにはなり得ません。

一方で、ブロックチェーンは分散システム特有の対故障性を備え、政府・有力機関などの意向に左右されにくい公平性、高いハッキング耐性など、クレジット決済などの既存金融システムにはない利点があります。今後のシステム改良・普及次第ですが、ブロックチェーンの普及は現代の金融システムから疎外された経済弱者が豊かになっていくきっかけになる可能性を持っています。

今後もこちらでは、NFT関連の役立つ情報をお届けしていきます。NFTや暗号資産など、ブロックチェーン技術にご興味のある方は当社に是非ご連絡ください。

NFT解説カテゴリの最新記事

NFT GUIDEをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む