エスクローとは、取引において買い手と売り手の間にエスクローエージェントと呼ばれる第三者が介在し、代金と商品の安全な交換を保証するサービスです。本記事ではエスクローについて解説し、ブロックチェーンでどう実現できるのか、その応用もあわせて解説します。
目次
エスクローとは
実店舗で日用品を購入するような場合、支払いと商品の受け取りはほぼ同時に行われるため、買い手側が商品を受け取れない、売り手側が代金を受け取れないといったトラブルが発生することは稀です。
エスクローの代表的な利用例としてアメリカでの不動産の売買が挙げられますが、より身近なところではインターネット上での取引があります。インターネットオークションやフリマアプリ、クラウドソーシングサイトでエスクローを利用したという方もいるかもしれません。
エスクローの流れをステップを追って見てみましょう。買い手は注文した商品の代金をエスクローエージェントに預けます。エスクローエージェントは入金を確認し、売り手に代金を預かったことを通知します。売り手は買い手に商品を届け、買い手は商品を受け取ったことをエスクローエージェントに通知します。エスクローエージェントは買い手からの通知を受けて売り手に代金を送金し、取引が完了します。
「商品が届かない」「商品が異なる」といった問題が買い手から報告された場合、エスクローエージェントは預かった代金を買い手に返金します。買い手から商品の受取り通知がない場合は契約に基づき売り手に代金を送金します。エスクローエージェントは保証を提供する対価として代金の数パーセントを手数料として受け取り収益をあげています。
ブロックチェーンでどのように実現するか
従来のエスクローでは、買い手はエスクローエージェントに商品の代金を預け、取引の結果によってエスクローエージェントが預かっている代金を売り手に送金する、または買い手に返金するといった金銭の移動や手続きが伴います。ここではブロックチェーンを使って効率的にエスクローを実現する手法を説明します。
マルチシグを利用したエスクロー
ビットコインなどのマルチシグ(※)の仕組みを利用すると、エスクローの手続きをよりシンプルにすることができます。具体的にどのように実現できるのかみてみましょう。
※ マルチシグネチャの略。マルチシグアドレスは複数のプライベートキーを持ち、そのうちいくつかのキーでトランザクションに署名し送金を可能にします。
買い手、売り手、エスクローエージェントがそれぞれ1つずつ秘密鍵を持ち、2つの秘密鍵で資金にアクセスできる2 of 3のマルチシグアドレスを用意します。買い手はこのアドレスに商品の代金を送金します。売り手は当該アドレスに代金が送金されたことを確認し、商品を発送します。買い手は商品を受け取り、売り手への送金トランザクションに署名します。続いて売り手も同じトランザクションに署名すると、秘密鍵2つで署名されたことになり、代金が売り手に送金されます。
取引に問題があった場合はエスクローエージェントが間に入り問題を解決します。たとえば、商品が届かない場合は買い手とエスクローエージェントが買い手に送金するトランザクションに署名することで代金が買い手に戻ります。買い手が商品を受け取っているにも関わらず署名しない場合は、売り手とエスクローエージェントが売り手に送金するトランザクションに署名することで代金が売り手に支払われます。
従来のエスクローと比べてエスクローエージェントが介入する部分が少なくなり、取引のスピードアップ、手数料の低減につながり、ビットコインなどのネットワークを利用すれば送金コストの低減も期待できます。
Ethereumのスマートコントラクトを利用したエスクロー
初心者のための分散型アプリケーション開発チュートリアル Dapps for Beginnersでは、スマートコントラクトをエスクローアカウントのように機能させ、オークションにおけるエスクローを実現する方法についてコードサンプルを示しながら解説しています。
Two party contracts | Dapps for Beginners
チュートリアルのコードサンプルでは、オークションのシステムがコントラクトとして定義されています。はじめに問題が発生しないケースを元に大まかなオークションの流れを見てみましょう。
- アリスがギターを出品しオークションが始まります。
- アリスのギターのオークション(コントラクト)に対して、入札者たちは入札者情報、入札額のetherと合わせて入札者自身だけが知るランダムな数字から生成されたキーのハッシュを送信します。最高入札額で入札した場合、コントラクトは最高額入札者の情報を記憶し、etherはコントラクトにキープされます(ひとつ前の最高額入札者にはetherが返金されます)。コントラクトはオークションの終了期限まで入札を受付けます。
- オークション締切り後、最終的な最高額入札者である落札者のボブはアリスに入札時に送ったキーを送ります。
- アリスはボブから受け取ったハッシュのキーをコントラクトに渡します。このキーが正しい(SHA256関数を通して入札時にボブが使ったハッシュが得られる)場合、落札者しか知り得ない情報を知っているということが証明され、コントラクトはキープしていたetherをアリスに送金します。
- アリスは入金を受けてギターを配送します。
取引中に問題が発生する場合はどうでしょうか。アリスが期限内に正しいハッシュのキーをコントラクトに渡せなかった場合、コントラクトは破棄され、コントラクトがキープしているetherはボブに返金されます。アリスがボブにギターを送らなかった場合はどうでしょうか。コードサンプルでは、一定期間の後、落札者がコントラクトに対して商品が届かない旨通知し返金される機能が実装されていますが、実際はアリスがキーを受け取った時点で出金してしまうとボブに返金できなくなってしまいます。この問題は、出品者と落札者それぞれがコントラクトにデポジットと商品代金を預け、商品配送後に支払いか返金を決めた上、デポジットと商品および代金を適切に処理することで解消できます。
スマートコントラクトを利用したエスクローは、現金を人間が預からないエスクローを実現できる点で従来のエスクローと一線を画します。基本的なエスクローであればシンプルなスマートコントラクトとして記述できることに驚く方も少なくないのではないでしょうか。
ブロックチェーンを利用したエスクローの応用
従来のエスクローが保証してきた不動産やアート作品といった高額商品の取引に加え、ブロックチェーンの利用によりエスクローのコストが下がり、インターネットショッピングやオークション、クラウドソーシング、クラウドファンディングといった幅広い分野でブロックチェーンを利用したエスクローが広がりを見せる可能性があります。また、取引の履歴が改ざん不可能なデータとしてブロックチェーン上に記録されるため、安全な売り手または買い手であることの証明もしやすくなるでしょう。