
『スマートコントラクト』というキーワードを聞いたことはあるけれど、それが実際に何をするモノなのかは良く分かっていない。
という方も少なからずいらっしゃるハズ。
かく言う私も、今回の記事のためにリサーチするまでは、しっかりと説明できるほど理解しているわけではありませんでした。
そこで今回は、スマートコントラクトの仕組みを、実際に導入している事例を交えて解説していきたいと思います。
スマートコントラクトとは
スマートコントラクトは仮想通貨特有のものに思われがちですが、その概念は仮想通貨やブロックチェーンが世に出るずっと前からありました。
1994年にNick Szabo(ニック・スザボ)氏というコンピューター科学者・法学者・暗号学者によって提唱されたものが最初のものになります。
スザボ氏は、スマートコントラクトが導入されたものの具体例として、自動販売機を挙げています。
上の図はスマートコントラクトの定義を表したものです。
下の説明文にあるように、自動販売機はお金を入れて商品を選ぶと、商品が出て来ます。
- お金を入れる(契約の開始)
- 商品の選択してボタンを押す(契約の実行)
- 商品と釣り銭の払出し(契約の完了)
という順序で契約は執行されます。
現代社会に生きる私たちは、自動販売機にお金を入れてボタンを押せば、商品が出てくると信じています。
それは誰かが保証しているからではなく、そういう機械であると知っているからです。
自動販売機で商品を買う時、他人との売買の合意や売買契約書は必要ありません。
この自動販売機にお金を入れて、商品を選ぶと、商品が出てくるように、所定の手続きを踏めば、契約を自動で執行してくれる仕組みのことをスマートコントラクトと言うのです。
Ethereumをはじめとする仮想通貨のスマートコントラクトとは、この仕組みをブロックチェーンのプラットフォームにプログラムとして記述したものを指します。
契約内容をプログラムで定義して、その定義条件に合致した場合は、BTCやETHといった仮想通貨で取引を行います。
そしてその契約が、プログラムで定義されたとおり正確に履行されかどうかも自動的にチェックしますし、定義された条件に合わない場合、契約は行われません。
それと共に、契約の履行内容をブロックチェーンに記録するので、契約内容の改ざんも防止できるのです。
スマートコントラクトがよく分からない理由
今ご紹介したように、スマートコントラクトは、考え方であり概念です。
先ほど自動販売機を具体例にあげましたが、契約の内容によっては自動販売機のようにボタンを押しても商品がすぐに出てくるとは限らない場合もあります。
自動販売機を例に挙げておきながら、リアルタイムに商品が出てこないというのは、イメージに合いませんよね。
この辺りがスマートコントラクトが概念であるために、分かりにくくなっている理由の一つです。
特に理解しづらくさせている原因が、スマートコントラクトを説明する時に必ず出てくるDApps(Decentralized Applications)です。
DAppsは要約すると、ブロックチェーンを用いた自律分散型アプリケーションと言うことができます。
この自律分散型アプリケーションとは、特定の管理者やサーバを持たず、ネットワーク上に分散してデータを保持しているアプリケーションを指します。
ここではソフトウェア開発共有サービスである『GitHub(ギットハブ)』の定義を基にしたいと思います。
- 中央管理を受けない自律分散型のアプリケーションであること
- オープンソースで提供され、アプリケーションの変更は参加者の合意のもとで行うこと
- ブロックチェーンによって、デジタル情報が安全に分散保存されていること
- アプリケーションでやり取りされる価値をトークン化し、ネットワーク健全性の維持に貢献した参加者への報酬として与えること
この『GitHub』の定義に合わせると、仮想通貨であるBTCやETH、そしてスマートコントラクトもDAppsであるということになります。
DAppsは、定義の範囲が非常に広く、極端なことをいってしまえば、ブロックチェーン上で動くアプリケーションは全てDAppsであるということもできてしまいます。
これがスマートコントラクトを分かりにくくしている理由です。
DAppsを分類するには、ブロックチェーンとどのような関係になっているかで分類することができます。
仮想通貨そのものもDAppsになると、先ほどお伝えしましたが、その中でもBitcoinやEthereumのように、独自のブロックチェーンを持つものは『TYPE_1』に分類されます。
そして、Ethereumのブロックチェーンをプラットフォームとして、その上で動くスマートコントラクトはブロックチェーン上で動く『TYPE_2』に分類することができます。
そしてEthereumのスマートコントラクト上で稼働し、ERC-20トークンを発行しているDAppsは『TYPE_3』に分類されるのです。
パソコンやスマホに例えるのなら、『TYPE_1』はOS(OperatingSystem)で、『TYPE_2』はそのOSで動くアプリになります。
そして『TYPE_3』は、アプリの能力を高めるアドオンやプラグインということになるでしょう。
そこでここからは、『スマートコントラクトは概念的なものであり、その仕組みや契約内容を定義したプログラムである』として、その活用事例からどのように役立つのかを探っていきたいと思います。
スマートコントラクトの活用事例
これまでにスマートコントラクトがもっとも多用されたのはICOだったのではないでしょうか。
ICOの事例
ICOの場合、上の図のようにICOの告知以前にスマートコントラクトを用意して、あとはスケジュールに合わせてイベントを発生させれば良いだけです。
そしてその間にやることも、最初から決められるので、その内容に沿ってプログラミングすれば良いだけになります。
その上、プログラムというのは再利用するのが当たり前であり、しかもオープンソースで作られています。
オープンソースは、ソースコード(プログラミング言語で記述された文字列)を無償で公開し、誰でも自由に改良・再配布ができるようにしたソフトウェアです。
なので先のICOで作られたソースをそのまま再利用することも可能ですし、多少のアレンジを加えるだけで自分たちが欲しいスマートコントラクトが簡単に作れるのです。
蛇足になりますが、一般的なソフトウェアは利用料が必要となります。
Office系ソフトやセキュリティソフトが有料なのはそのためです。
もちろんソースコードを公開することはありませんし、開発者や製作者でなければ改編は不可能です。
これは無料アプリでも同じです。
ゲームアプリやLINEなどのメッセージアプリも、導入に関しては無料ですが、キャラクターのアイテムやスタンプを使おうと思ったら、課金が必要になります。
無料で使うことはできますが、プログラムの改編はできないようになっています。
運送業のSmartBoxの事例
こちらは海外の宅配便の事例になります。
マンションやアパートといった集合住宅への宅配は、どこの国でも問題になっているようです。
中でも再配達の問題を解決する方法の一つが、宅配ボックスです。
ただ、集合住宅で宅配ボックスを用意するとなると、色々と問題が出てきます。
特に重要なのが、届けたい本人に届いたのか確認が取れないという点です。
そこでこの事例の宅配便では、SmartBox(スマートボックス)と呼ばれるカギ付きの宅配ボックスと、ブロックチェーン&スマートコントラクトを利用して、あるサービスを開始しました。
配達員がSmartBoxに宅配品を入れてロックをかけると、そのデータがスマートコントラクトに送信されます。
データを受け取ったスマートコントラクトは、定義されたプログラム通りに、その宅配品を注文した人に商品が届いたことをメールで連絡します。
その時、メールにはSmartBoxを解錠するための電子鍵(QRコード)が添付されていて、ロックされたSmartBoxはその電子鍵でしか開けられないようになっています。
注文した人は、電子鍵を使ってSmartBoxのロックを解除して、宅配品を受け取れば良いワケです。
このSmartBox宅配のメリットは、従来の宅配ボックスの範ちゅうにとどまりません。
一番は、集合住宅の戸数分の宅配ボックスを用意する必要がない点です。
SmartBoxの解錠鍵は本人にしか届きませんから、戸別にSmartBoxを用意しなくても良いのです。
その上、SmartBoxのロックを外せるのは、電子鍵を持っている人だけなので、盗難の心配もありませんし、ロックを外せたことで本人確認と受け取り確認が取れるのです。
この事例ではまだ実現していませんが、法整備が整えば、本人確認が必要なキャッシュカードや重要書類もSmartBox経由で届けることが可能になる点です。
スマートコントラクトは、一連の流れをブロックチェーンに記録することができるので、本人確認も取れるということです。
次は、スマートコントラクトを使った音楽サイトの事例です。
音楽や書籍には、それを作った人に払われる『印税』がありますが、印税が製作者に支払われるまでには1年近く時間がかかっていました。
それをブロックチェーン&スマートコントラクトを使って、リアルタイムに処理できるようにしたのがこちらのサイトです。
そのサイトに今回紹介するブロックチェーン&スマートコントラクトのイメージ図がありました。
それがこちらになります。
一つひとつ説明していくと、かなり長くなってしまいますし、今回取り上げているスマートコントラクトとは関係していないテクノロジーもあります。
そこでここでは、スマートコントラクトの働きに絞ってお伝えします。
まず、このサイト内で使われる通貨はETHです。
ユーザーが欲しい楽曲(コンテンツ)をネットで検索し、このサイトでコンテンツをETHで購入します。
そして、購入したコンテンツをDL(ダウンロード)することで、ユーザーとの契約が完了します。
ユーザーとの契約が完了したことで、発生した印税がアーティストにリアルタイムで支払われます。
コンテンツが売れても、今までは待たなければならなかった報酬がすぐにアーティストの手に入るのです。
スマートコントラクトのメリット
ここまでスマートコントラクトの仕組みと事例をお伝えしてまいりました。
ではなぜ今、このスマートコントラクトが注目されているのでしょうか?
先の事例からそのメリットを紐解いていきたいと思います。
仲介者が不要になる
インターネット上で購入者が販売者から商品を購入する際は、信頼できる仲介者を介してお金と商品の交換契約を結ぶことで取引が行われます。
現金による直接取引ができないインターネット上では、キャッシュカードなどを使って買い物をしますが、このキャッシュカードを出している銀行や企業が仲介者になります。
これに対しスマートコントラクトでは、仲介者を介在させることなく代金と商品の交換の契約を行うことができます。
購入者と販売者間で交わす契約内容をあらかじめブロックチェーン上にプログラミングしておくことで、 定めた契約条件が満たされると自動的に取引が行われるのです。
上の図(ICOの例)で考えると、矢印の部分に仲介者が入ることになります。
一方、スマートコントラクトの場合は、契約が自動執行されるので仲介者が不要になるのです。
この仲介者が不要になる理由は、単にスマートコントラクトで契約が自動執行されるからだけではありません。
ブロックチェーンや分散型ネットワークの特徴であるトラストレス(信用がおける第三者が不要になる)を実現しているからです。
コストを削減できる
仲介者が不要になれば、仲介者に対して支払っていたコストを減らすことができます。
ネット上の買い物であれば、仲介者に支払う手数料が不要になります。
先ほどネット上では現金による直接取引ができないとお伝えしましたが、スマートコントラクトを使うことで、仮想通貨を使った直接取引を実現しているのです。
先ほどの音楽サイトの例にもあるように、これまではアーティストの楽曲(コンテンツ)が売れたとしても、すぐに報酬が入ってくるわけではありませんでした。
でもスマートコントラクトを使えば、仲介者を介していないので、購入者がアーティストから直接楽曲(コンテンツ)を購入できるような形にすることが可能になります。
こちらの例で言えば、レコード会社やその配信サイトなど、多くの仲介者が存在することになります。
仲介者が入れば入るほど、そこに支払うべきコストが発生します。
しかしスマートコントラクトを使えば、仲介者に支払っていたコストをアーティストたちが分配することもできますし、消費者に安く提供することもできるのです。
物流SmartBoxの事例では、再配達というコストを抑えられるだけでなく、ブロックチェーン&スマートコントラクトでKYC(Know Your Customer)ができているので、本人確認が必要なキャッシュカードや重要書類も配送できる可能性もあります。
そして重要なのが、時間の短縮です。
物流業従事者が、再配達による労働時間延長の問題を抱えているのはご存知だと思います。
でもこのSmartBoxを使えば、再配達の必要がなくなるので、労働時間の短縮にもつながるのです。
スマートコントラクトを使うことで、今までは仕方なくかけざるを得なかったコストを徹底的に減らすことも可能になるのです。
サービスの向上
スマートコントラクトは、先に使われたプログラムを再利用することができますので、ユーザーの評判が良かったサービスを繰り返し使うこともできます。
例えば先の音楽サイトではこんなことが考えられます。
あるアーティストが発表したコマーシャルソングがヒットしたとしましょう。
そのアーティストは、先にご紹介したサイト『ujo』を使い、ショートバージョンとフルバージョンの2つをUPし、ショートバージョンの方は少し安く販売することも可能です。
契約内容の改ざん防止
スマートコントラクトを利用する最大のメリットは、トラストレスなブロックチェーン上でやり取りを行うことで、自動的にやり取りが全て記録に残り改ざんが出来なくなることです。
契約の実行履歴が公開もされるため、取引の透明性も高くなります。
先に挙げた仲介者が不要になる点も合わせると、詐欺や二重売買などのトラブルも避けることができるのです。
近い将来、売買契約のような比較的単純な取引は、そのほとんどがスマートコントラクト上で行えなければ、信用されないという未来が来るでしょう。
スマートコントラクトのメリットまとめ
ここまで挙げてきたスマートコントラクトのメリットをまとめてみました。
- 契約内容が自動執行されるので、仲介者が不要になる
- 仲介者が不要になるので、仲介者に支払うコストを削減できる
- 仲介者に支払うコスト以外にも、コスト削減が可能になる
- プログラムを再利用できるので、サービスの向上につながる
- 契約内容の改ざんができないので、仲介トラブルを避けられる
このようにスマートコントラクトは、今までできなかったことを実現できる可能性を秘めているのです。
スマートコントラクトのデメリット
スマートコントラクトですが、デメリットがないわけではありません。
どんなものにもメリットがあるように、デメリットも必ず存在します。
ETHの『The DAO』事件を覚えておられるでしょうか。
『The DAO』事件は、ETHのブロックチェーン上に書かれたスマートコントラクトを実行するDAppsにバグがあり、それをクラッカーに狙われ、資金流出した事件でした。
結局『The DAO』事件で起こった資金流出を防ぐため、Ethereumの巻き戻しハードフォークを行うことになりました。
このように契約の変更が不可であるというメリットが、場合によってはデメリットにもなるのです。
上記で述べた改ざんできないというメリットは同時にデメリットにもなりえます。
スマートコントラクトのプログラムにミスがあった場合、その影響度は計り知れません。
『The DAO』事件のように、数十億、数百億の被害が出てしまう可能性も否定できないのです。
また同じように、契約を結んでからの条件の変更が難しいという点があります。
スマートコントラクトにおける契約は、Solidityというプログラミング言語で組まれます。
スマートコントラクトの内容は、ブロックチェーンのプラットフォーム上にあるので、誰でも閲覧可能ですが、その記述はこのSolidityの記述のみ閲覧可能なのです。
つまりプログラマでもない限り、そこに何かが書かれているかを知ることは不可能になります。
そうなると一般の方が理解するにはハードルが高くなり、普通の言語をどうのようにしてプログラミング言語に変更するのかという問題が出てきます。
現在、スマートコントラクトを一般の契約に使われにくくしている最大の原因は、このプログラム言語の記述にあると言われています。
また、契約内容をプログラミングする際、曖昧な内容や解釈を要する免責条項などは定義できないため、従来の契約をそっくりそのまま代替することは難しくなります。
例えば裁判の場合、犯した罪は同じであっても、様々な要因が重なり合って判断され、下される判決の内容は異なる場合がほとんどです。
このように、情状酌量の余地という不特定多数の条件が絡み合う場合の判断を、プログラム上に書き込むことはほぼ不可能になります。
ということで、デメリットもまとめてみました。
- プログラムにバグやミスは許されない
- 閲覧はできるが、プログラム言語のみの閲覧になっている
- 閲覧しても何が書かれているか、判別できないので閲覧の意味がない
- 複雑な契約にはPGMが組めないので、対応がほぼ不可能である
スマートコントラクトの今後の課題
スマートコントラクトが実現するビジネスの高効率化。
社会生活がより便利になるなど大きな恩恵がもたらされるでしょう。
しかし、このように期待値の高いスマートコントラクトだからこそ、今後の課題が多くあります。
- 安全性
- 手数料
- オラクル
- 実行速度
- プライバシー保護
安全性は先にお伝えした通りです。
手数料の問題
手数料の問題は、Ethereumの場合はスマートコントラクトを動かすgas代がかかりますし、EOSはアカウントを作る際に必要になります。
ただこの手数料は、Ethereum財団や開発者への報酬となりますので、これを圧迫することは避けねばなりません。
gas代は見えやすいので、使う側としては節約したくなりますが、開発者にとっては重要な収入源となりますし、スケーラビリティ問題とも関わってきますので、その折り合いを付けて行く必要があるのは間違いありません。
オラクル
次のオラクルというのは、データベースのオラクルではなく、スマートコントラクトを実行する時に、外部データを引っ張ってくる必要がある場合の指令のことです。
この外部データをどこから引っ張ってくるのか?
果たして引っ張ってきたその外部データは正しいのか?
そしてそのデータが正しいのかを誰がどう判断するのか?
といった問題を抱えています。
実行速度の問題
また、実行速度の問題も残っています。
ノードごとに処理速度の差が出てしまい、ハイスペックノードに処理が集中してしまいます。
次のアップデートハードフォークであるSelenityではPoWからPoSへの変更が行われると共に、ブロックサイズを小さくするという話も出ています。
これはブロックサイズを小さくすることで、各ノードにかかる負荷を減少させる狙いがあります。
またBTCのライトニングネットワークと同じように、マイクロペイメントに対応できる対策だとも言われています。
ただ、具体的な解決策が提示されていないので、今後どのような進展を見せるのかはまだまだ注視していく必要があります。
プライバシーの問題
一番の問題は、プライバシーの問題だと言われています。
ブロックチェーンは誰もが閲覧できるようになっていますが、これがプライバシー問題へと発展する可能性もあります。
イーサリアムではzk-SNARKというプライバシー保護技術を導入しています。
しかし、zk-SNARKを利用したトランザクションは、大量の手数料(gas)を必要とするため、今後は改善する必要があるのです。
スマートコントラクト全体の問題
スマートコントラクトは大きな可能性を秘めていますが、可能性が大きい分、その反動も大きく、技術的な問題が存在します。
スマートコントラクトが一般社会に進出し、世の中の仕組みを大きく変えていくには、まだまだ時間が必要だと言わざるを得ません。
ですがスマートコントラクトは、ブロックチェーンテクノロジーとともに、世界を大きく変える技術であることを、疑う余地はありません。
これからも多くの取引や契約が、スマートコントラクトを基軸に考えられるのは間違いないでしょう。
そしてその中から、一般の社会にも大きく影響を与える何かが生まれてくると思います。
それが仮想通貨の世界を、そして現実社会を大きく動かすことになるかも知れません。
ここまで『スマートコントラクト』その仕組みを事例を交えて解説してまいりましたが、いかがだったでしょうか?
それでは最後までお読みいただき、ありがとうございました。