新しい社会経済のインフラとなり得る「スマートコントラクト」について概観
本記事では、スマートコントラクトについて解説します。
近年、スマートコントラクトという言葉を耳にする機会が増えました。特にブロックチェーンを用いたソリューションの例として用いられているのですが、具体的にどのような課題を解決しうるソリューションなのかということまで広く一般に知られているかというとそうでもないような気がします。スマートコントラクトとは一体どのようなもので、どのようなメリットをもたらすものなのでしょうか。
スマートコントラクトは自動的に実行される契約
名称から考えるとスマートコントラクトは、つまり、スマートなコントラクト(契約)ということになりますが、まずは通常のコントラクト(契約)と対比してみます。
通常のコントラクトは、個人や法人の間で取り交わされ、内容が文書によって明示され、条件に基づいて履行されます。その履行にあたっては信義則にのっとって行われ、お互いに信頼関係が存在する必要があります。つまり、相互に相手方を信頼するというのが基盤になります。
対して、スマートコントラクトは、定められたルール(プログラム)によってコントラクトが履行されます。ここでスマートとは、自動的に実行されるルール(プログラム)を指しています。相手方を信頼するというのが常に必要というわけではないというところが大きな違いです。
このような自動的にルールやプログラムによって実行されるコントラクトという考え方自体は新しいものではなく、例えば、ドイツの数学者であるGottfried Wilhelm Leibniz (ライプニッツ) によって1600年代後半に提唱されています。彼はすべての法的な内容や主張を、純粋な論理に置き換え、機械的処理で係争を解決させることを考えています。当時はある種荒唐無稽な話だったわけですが、現代においては十分実現可能なものとなりました。
そして、1990年代前半に、コンピューターサイエンティストであり、法学の研究者でもあった Nick Szabo が、分散台帳による契約の管理というアイデアを思いつき、スマートコントラクトという言葉を提唱しました。ビットコインが誕生する前のことです。時は経ち、今やスマートコントラクトは通常の契約と同じように扱われるデジタルソリューションとなりました。
スマートコントラクトはプログラム
スマートコントラクトとは何かという問いに関しては様々な説明の仕方があり得るのですが、一つには、ブロックチェーンの中に格納された小さいコンピュータープログラムであると言うことができます。スマートコントラクトをサポートしているブロックチェーン基盤はいくつかありますが、代表的なものは、Ethereum です。Ethereumでは、Ethereum Network と呼ばれるP2Pのネットワーク上で履行履歴をブロックチェーンに記録し、またいくつかのプログラミング言語、例えば CやJavaScriptに似ているSolidity、LISPに似ている LLL 等によってプログラミングすることでスマートコントラクトを実装します。
スマートコントラクトはプログラムと書きましたが、それゆえ、機能的特徴はまず自動的に処理が実行できる、ということがあげられます。契約に記載されている条件を満たしたとき、その内容を履行すべく実行します。契約に条件によって履行内容が異なるように記載されている場合も、その通りに分岐して処理を行います。つまり、こういうケースの場合は100%の額を支払うが、このようなケースの場合は20%しか支払わない等、複雑な場合分けが存在する契約も自ずから判断して決められた通りに履行します。他にもプログラムゆえに動作が速い。人手を介さないのでダイレクトな処理ができ、中間手数料も当たり前ですがない、もしくは低くなるようにサービスを設計できる等の利点があります。そして、ブロックチェーンを応用していることから、過去のデータの実行履歴をすべて記録・公開することができ、透明性も確保できます。
実際の活用例
では、実際にどういう活用事例があるかですが、例としては、 Ethereum を用いた Imbrex という不動産取引サービスがあげられます。
Imbrex は不動産取引のマーケットプレイスとして機能します。不動産のデータは改ざん不能な形で管理され、暗号化されたスマートコントラクト内のプログラム(契約内容)によって取引と支払いが確実かつ迅速に自動実行される形で不動産取引が行われます。これにより、取引おける不正や改ざんの防止、取引記録の透明度が高いことによる信頼性の担保、仲介者不在による仲介コストの削減等を実現しています。
また別の例として、ややメタ的な事例になりますが、仮想通貨(トークン)でありつつ、マーケットプレイス・コミュニティでもある district0x があげられます。
district0x は、Ethereumによるスマートコントラクトをベースとしたd0xINFRA Framework を提供しており、ユーザーはそれを活用することで district と呼ばれるマーケットを構築することができます。実際に、仕事の受発注ができる Ethlance、デジタル資産の取引ができる Memefactory 等のマーケットプレイスがあります。
更なる活用可能性:クラウドソーシング
他にも、スマートコントラクトにはどういう便利なユースケースがありうるか、ということなのですが、上記 imbrex や district0x の例のように、各種自動取引のプラットフォームとして実装されていくというのがわかりやすい方向性かなと思います。自動的かつ分散的に処理ができるがゆえに、従来、何らかのマーケットプレイスが必要となるような多数の参加者が存在する取引において、プラットフォームの代わりとなりうる仕組みになるわけですが、参加者の取引や資産を保護するような様々な機能を盛り込めるのがポイントです。
例えば、クラウドソーシングを実現するプラットフォームをイメージしてみます。発注者がゲームコンテンツの制作のために、ゲームに登場する多数のキャラクターのデザインを発注したいと考えます。この際に、プレイヤーの戦士のデザイン、モンスターのデザイン、武器のデザインはそれぞれ別のデザイナーに頼んでいくとします。
スマートコントラクトを使えば、発注者と受注するデザイナーの双方の本人確認やバックグラウンドチェックができます。発注者側はどういうプロフィールの会社で、過去の取引でちゃんと支払いをしたのかどうか、デザイナー側は過去にどのような仕事をしたのか、作品のデザインをしたのかを、わざわざ伝えることなく双方で確認できます。改ざん不能というブロックチェーンの特性によりその情報の信頼度は高くなります。そしてそれらのプロフィールや過去の履歴等の情報はそもそもデザイナーが同意した開示できる条件・範囲内でのみ開示できるように設定できます。そうすることで、プライバシーも担保できるようになります。仕事が終わった後の支払いも確実に行われ、銀行送金等もスムーズに自動実行してくれます。そして、場合によってはそれぞれの事情に応じて適切な税処理までしてくれるかもしれません。
また、このようなケースで問題になりうる作品の著作権管理に関しての公正な処理もスマートコントラクトでカバーできます。デザインしたデジタルコンテンツが無断利用されないように、ダウンロードされた履歴も変更不能な形で記録して追跡もするような枠組みも検討できるでしょう。
更なる活用可能性:クラウドファンディング
クラウド(crowd)続きになりますが、次に、クラウドファンディングでの活用例を想像してみます。プロダクトの開発や何らかの新規企画を立ち上げるために資金が必要な人達がクラウドファンディングを利用したいと考えます。スマートコントラクトベースのクラウドファンディングサイト上でプロジェクトを作り、ファンディングの目標を決め、プロジェクトの内容に賛同してくれる方々からの支援を募ります。ここではスマートコントラクトはプラットフォームとして、資金が必要な人達と支援者をつなぎ、このファンディングを支えます。利用者は(資金を求める人も支援する人も)問題のない人なのか。集まった資金は適切に管理され、正しくプロジェクトに渡されるのか。ファンディングが目標未達だった場合、あるいは最終的に成立しなかった場合、資金は支援者にきちんと返金されるのか。
これら不安にスマートコントラクトは応えます。前の例と同じく、資金が必要な人達と支援者の本人確認やバックグラウンドチェックを行うことができますし、ファンディングにおけるお金の授受も適切に管理し、取り扱うことができます。もし、プロジェクトが無事ファンディング目標に到達したら、スマートコントラクトにより集まったお金をプロジェクトのオーナーに渡されます。もし未達だったら自動的に支援者にお金が返金されます。また、スマートコントラクトは完全に分散されているので、誰も中央集権的にお金の管理をしなくてよいことになります。また、分散化されているということは、利用者みんなに情報が共有されているということを意味するわけですが、誰もがコントラクトの中身を検証することが可能です。それゆえ、誰かが不正を働こうとしてもバレてしまうことになります。
つまり、利用者は、ブロックチェーンによる履歴の透明性と改ざん不能性、スマートコントラクトの条件に基づく自動処理に信頼を寄せてクラウドファンディングを利用することができるということになります。
更なる活用可能性:IoT
他にも、IoTと結び付くことで、エッジコンピューティングを支える基盤としてスマートコントラクトが活きるという方向性も考えることができます。
例えば、自動車を運転中にちょっとした事故を起こしてしまったとします。その際、このケースでは保険金がおりるのかどうかというのが頭をよぎるのではないかなと思います。もし事故があなたの過失でないのであれば、あなたは過失側に自動車の修理の費用をカバーしてもらうことを期待するでしょう。でも、それを相手側に拒否されてしまったらどうするか。
もし事故発生時の時間、スピードや位置情報を記録するドライブレコーダーと、それを自動レポートするIoTデバイスが自動車に備え付けられていたら、その心配は杞憂で終わるでしょう。デバイスからブロックチェーンへと格納されたデータが、事故の状況を確かな証拠として明らかにし、スマートコントラクトのプログラムにより請求が行われ、自動的にあなたは保険金の支払いを受けることができるようになるでしょう。
終わりに
上記で見てきたように、スマートコントラクトは、取引の透明性を確保しながら複雑な契約を多数の参加者がいても自動実行することが可能であり、次世代の社会経済の基盤となりえるものだと見なすことができます。
それもあって、今日、多くの熱意をもった人たちが、スマートコントラクトの助けを用いて、社会的な課題を解決せんと様々なプロジェクトに取り組んでいます。
ですが、スマートコントラクトは魔法の杖かというともちろんそうではありません。プログラムという性質上、曖昧な内容や解釈を要する免責条項等は定義が難しく、従来の契約をそのままスマートコントラクトに置き換えれるわけではありません。また、仮にプログラムにバグや脆弱性があった場合、ブロックチェーンに誤った情報が書き込まれるリスクも存在します。従って、スマートコントラクトを使用する際は、プラットフォームやサービスの特性に応じて自由度と安全性のバランスを考慮することが大事です。つまりは、様々な利便性はあれどもその開発は通常のシステム開発と同様であるということは忘れてはいけないポイントです。要件を詳細に定義し、厳密に設計し、厳格なプログラムを実装していく必要があります。テストは十分に行われ、品質保証には万全を期するべきでしょう。
スマートコントラクトは、社会経済を支えていく新しいインフラたり得ますが、世の中で広く使われていくには、様々な挑戦と失敗を経験することが実際は避けられないかもしれません。しかし、それ以上に非常に魅力的なポテンシャルがあることも否めません。ローマは一日にしてならず、にならい、多くのPoCと実装を積み重ね、世界を変えていく武器の一つとして一歩一歩活用していきましょう。
おまけ
ブロックチェーンによりサプライチェーンをどう強靭にしていくかという記事をいかに書いています。こちらもご参考までに。
また、Twitter でも、自身のNoteの記事の他に、Medium での英語記事や、様々なビッグデータ、AI、先端技術関連のNewsを配信しています。ご興味がありましたらフォローください。
この記事が気に入ったらサポートをしてみませんか?