PR

暗号通貨のルールとスマートコントラクト

 ビットコインは、上記のような履歴蓄積の機能を持つブロックチェーンを使って、暗号通貨システムを実現している。そのために、ブロックチェーンに暗号通貨としての正しい履歴データ(コインの送金データ)のみを蓄積するように、登録すべきデータに別のチェック項目(ルール)を設けている。例えば「一度送金したコインは、再度送金できない(二重送金の禁止)」のようなルールだ。

 この「ルール」として、暗号通貨向けではない任意の「ルール」(プログラム)が実現できるように、履歴蓄積システムの上に「スマートコントラクト」と呼ばれるレイヤーを設けたのが、イーサリアムである。スマートコントラクトとは、プログラムとして記述される、計算機上で自動的に実行処理される契約を意味する。

 イーサリアムでは、ブロックチェーン上に「プログラム(コントラクト=契約)」と「プログラムに対する入力データ」が記録される。さらに、これらのデータから自動的に導出できる「プログラムに対する出力(あるいはプログラムの内部状態)」も、履歴として蓄積される。これにより、事前に記録・公開された「プログラム」に従って、自分の入力が誰もが検証できるような形で、正しく処理されるのである。

 ビットコインでは、所有コインを超える支払いを阻止するために、「過去のトランザクションXでもらったコインのうち、zビットコインをAに送金する」という表現が、支払いトランザクション(コインの送金データ)のデータ構造に組み込まれている。

 支払いトランザクションの正当性を検証する時に、データ管理者は以下の三つを確認する。「本人がトランザクションXの受け取り手である、トランザクションXがほかの送金データに使われていない、Aに送金する金額がトランザクションXでもらった金額より少ない」である。

 これがプログラムの形式であれば、「Aにzドルを送る」という入力データに対して、プログラムの内部状態から、入力データの生成者の残高がzドル以上あると確認し、残高からzドルを引き、Aの残高にzドルを追加し、それをプログラムの内部状態として出力するようなプログラムになる。

 データ管理者は、プログラムとその最新の内部状態を読み出し、入力データとプログラムに従った処理をし、その結果をブロックチェーンに履歴として書き込む。このようにして、プログラムを記述できることによって、ブロックチェーンが「送金」など一つの処理に専任することなく、様々なプログラムの入出力の正しさを担保してくれるものになるのである。しかも、一つのブロックチェーンで複数のプログラムを実行できる。

 スマートコントラクトが、ほかのプログラム実行基盤と比べて特徴的なのは「プログラムが事前にブロックチェーン上に公開されている」点である。すなわち、事前に公表されたプログラムに基づいて、誰の入力も公平に処理されると保証される。サーバーやクラウド内で処理され、どのような論理で結果が導出されているのか外部からは分からず、出力結果の妥当性も検証できない、いわば「ブラックボックス状態」であるほかの一般的なプログラムと、対照的である。

 その一方で、ブロックチェーン上に掲載されたプログラム自身の妥当性を保証する仕組みは備わっていない。イーサリアム上の「The DAO」のプログラムにバグがあり、大規模の資金の流出があったことは記憶に新しい。

ブロックチェーンがもたらす公平性と透明性

 本稿では、ビットコインやイーサリアムに使われているブロックチェーンを中心に、履歴蓄積システムとして活用されている要素技術と構成の概要を紹介した。

 ブロックチェーンは、構築するサービスの目的によって、ルールやデータ構造、誰がどの役割を担うか、などの設計が異なってくる。

 例えばビットコインはtrustless(信用ある第三者が不要)な通貨システムをうたい、ビットコインの仕様と稼働するプログラム(コード)を信頼すれば、極めて大きな権限を持って通貨システムを運用する機関は不要であるとしている。さらに、特定のプレーヤーが管理者権限を持つことによる不公平を解消するために、誰でもデータ管理者になれるようにも設計されている。

 ただし、信頼するプログラムに問題が見つかった際、どのような民主的な手続きで改善できるか、といった運営上の問題は、ビットコイン、イーサリアム両方にとって今後も大きな課題になるだろう。あるいは、仕様やコードのみを信頼するtrustlessなサービスではなく、信頼できる公平な管理機関を想定できるサービスであれば、ブロックチェーンの運営コストは大きく変わりそうだ。

 データやプログラムに透明性をもたらすブロックチェーンは、いまだに発展途上とはいえ、ユーザーが猜疑心なく安心して使え、公平感のあるITサービスの実現につながる可能性がある。サービス提供者に強く依存するサービスから、ユーザー中心のサービスへ、ITサービスの設計が大きく変わる分岐点になるかもしれない。

佐古 和恵(さこ かずえ)
NEC セキュリティ研究所 技術主幹
佐古 和恵(さこ かずえ) 電子投票、電子抽選、電子入札をはじめ、セキュリティとプライバシーと公平性を実現する暗号プロトコルの研究に従事。 ISO/IEC JTC1 SC27(情報セキュリティ) WG5(ID管理とプライバシー)委員。匿名認証方式に関するISO規格29191並びにISO規格20008-2のエディタを務める。2012-2013 国際暗号学会ASIACRYPTプログラム委員長、2013 Financial Cryptography実行委員長、2016年RSAコンフェランス暗号トラックプログラム委員長、2012-2014 電子情報通信学会理事 2015- 日本応用数理学会理事 日本学術会議連携会員。博士(工学)