みなさんこんにちは。
不完備契約って知ってますか?
不完備契約とは、取引で発生し得る全ての状況とその対応を事前に全て記載することのできない契約、あるいは取引で発生した全ての事柄を第3者に立証することができないような状況で結ばれる契約のことをいう。
https://glossary.mizuho-sc.com/faq/show/222?category_id=52&site_domain=default
企業金融では、主に取引で発生し得る全ての状況とその対応を事前に全て記載する完備契約を前提として議論が行われてきた。しかし、契約を完備契約にすることは困難であり、実際に契約締結後の再交渉がしばしば行われている。例えば、銀行が破綻した場合に発生し得る出来事を事前に全て議論し、その対応を完全に契約に明記することは困難である。このような不完備契約にもとづく理論分析が進められている。
もちろん人間は神ではないので未来を先読みすることはできず、将来発生しうるすべての状況を想定して契約を作ることはできません。
※神とは情報の非対称性が存在しない全情報を把握する存在の比喩で言っています
なので、再交渉からの再契約という手続きを踏むことが普通ですよね。
しかし一方で再契約を禁止された契約をつくるとしたら、どうしますか…?
未来は読めないのでどう頑張っても不完備契約になります。じゃあもう以下の二択しかないですね。
- 徹底的に現在の情報をフル活用して、可能な限り未来のいかなる状況にも対応できるようにする
- 再契約できる契約しかしないことにする
上記2つのアプローチをとらずに、「再契約を禁止された契約」を使うのは、それなりの可能性で不完備性から損失をきたすことになるでしょう。
スマートコントラクト
先程の文章に、ブロックチェーンにプログラム自体を記録し、そのプログラムを動作させるトランザクションを送信して、そのプログラムの動作結果もブロックチェーンに保存する、いわゆる「スマートコントラクト」という語を当てはめます。
なんとなんと、まあお気づきの方は多いでしょうが、スマートコントラクトはアップデートできないので不完備契約になってしまうのですね。
以下、当てはめた結果。
再契約すなわちプログラムのアップデートが禁止された「スマートコントラクト」をつくるとしたら、どうしますか…?
- 形式検証など、徹底的に現在の情報を活用して、可能な限り未来に起きううるいかなるバグも潰しておく
- 分散型でありながらアップデートできるシステムしか作らないようにする
こうなりますね。
前者は、「形式検証」によりスマートコントラクトのバグを徹底的に潰すアプローチをとる「Tezos」や「Zilliqa」が該当します。
一方で後者は、「Tendermint」「Substrate」といった、独自ブロックチェーンの開発キットが該当します。
独自ブロックチェーンをつくって、その独自ブロックチェーンの機能としてスマートコントラクトのような振る舞いをする好きな機能を実装すれば良い。
その独自ブロックチェーンは、ガバナンス次第でネットワークアップデートすることができるので、分散型でありながら、アップデートできるシステムをつくることができるのです。
上記の2つのアプローチをとらずに、「再契約ができないスマートコントラクト」を実装していくのは、それなりの可能性で不完備性から損失をきたすことになるでしょう。
おそらくそれがThe DAO事件なのかな。
競争優位性
まず、Tendermint、Substrateに関しては、無限に共存可能であり、無限の競争優位性があることを説明しましょう。
Tendermintで作られたブロックチェーンは大体Cosmosネットワークに入り、Substrateで作られたブロックチェーンは大体Polkadotネットワークに入るでしょう(理論上は交差つまりTendermintで作ったブロックチェーンをPolkadotネットワークに入れることも、Substrateで作ったブロックチェーンをCosmosネットワークに入れることも可能)。
が、CosmosネットワークとPolkadotネットワーク自体も相互運用可能な設計になっている、たとえばCosmosネットワーク上のトークンがPolkadotネットワーク内に流通することは理論上可能であるため、競争に陥るどころか、無限に共存が可能なのです。Cosmosの設計が非常に柔軟にできるようになっているため。
したがってTendermint、Substrateに関してはスマートコントラクトプラットフォームと違い、食い合うことがありません。
なのでスマートコントラクトプラットフォームの競争優位性を中心に見ていきます。
スマートコントラクトプラットフォームの競争優位性
競争優位性は、差別化によって生まれますが、各スマートコントラクトプラットフォームはどのような点が差別化になるでしょうか。
ざっと考えられるのは、以下の3つです。
- プログラム言語のスイッチングコスト
- スマートコントラクトのネットワーク効果
- 独自ブロックチェーン作成に比べたコストの低さ
スイッチングコスト
まず、プログラム言語のスイッチングコストをみてみましょう。
形式検証というものは「書けば自動でバグが直る」ような魔法ではないので、形式検証のプロセスを経る必要があり、ナイーブなスマートコントラクトに比べれば多少スイッチングコストが高めだと考えられます。つまりは、多少は差別化と囲い込みの効果があります。
逆に言えばナイーブなスマートコントラクトのほうはスイッチングコストは小さく、囲い込みの効果はあまり大きくありません。
ネットワーク効果
ネットワーク効果はよく聞く単語だと思います。
スマートコントラクトプラットフォームでも、「スマートコントラクトプラットフォームを使う人が増えるほどそのスマートコントラクトプラットフォームを使う人が増える」というポジティブフィードバックが働きます。
なのでスマートコントラクトプラットフォームは先行者優位を築けばネットワーク効果により差別化ができるというのは、Ethereumファンからよく聞く言説ではないでしょうか。
あながち間違ってもないのですが、懸念点が2つもあります。
まず、Cosmosなど、無限に共存可能で、無限にネットワーク効果が働くエコシステムと競争できるのか。これは、説明するまでもないでしょう。
もうひとつは、Ethermintの存在が、スマートコントラクトプラットフォームが簡単にコピー可能であり、破滅的競争に陥る可能性があることを示したのではないかという点です。
Ethermintは、Ethereumの機能をそのままTendermintを使って実装したブロックチェーンです。Ethereumのスナップショットもコピーするため、Ethereumが築き上げてきたネットワークをいとも簡単にコピーしてしまいます。
Tendermint, Cosmosにより、このネットワーク効果の観点は大きな修正を余儀なくされるように思われます。
コストの低さ
しかしながら、独自ブロックチェーンによる分散型システムという選択は、スマートコントラクトプラットフォームすべてを飲み込むものとは限りません。
独自ブロックチェーンをつくるには、TendermintやSubstrateというキットがあり、かなり簡単になっていながらも、当然ただのスマートコントラクトプログラムを書くだけよりも手間がかかります。
したがって、独自ブロックチェーンをつくるコストと天秤にかけ、メリットが見合わないような分散型システムが、スマートコントラクトプラットフォームに載っていくようになるでしょう。
しかしながら、スマートコントラクトプラットフォームは概して「渋滞すればするほど料金が高い」という問題に直面します。人気になればなるほどこのコスト優位性は低下します。
結果として、コアなしと呼ばれる、破滅的競争が起きる環境が整う可能性があります。
この破滅的競争はブロックチェーンとしてだけでなくアセットしても破滅的なものになります。例えばEthermintのPhotonというトークンで安くスマートコントラクトが使えるならEthereumのEtherはPhotonと同レベルまで安くなってもおかしくない。
まとめ
結論としては、形式検証のアプローチをとるスマートコントラクトプラットフォームは、ナイーブなスマートコントラクトよりはスイッチングコストを保つでしょう。
ナイーブなスマートコントラクトは破滅的競争に陥る可能性があり、形式検証スマートコントラクトプラットフォームが、独自ブロックチェーンアプローチでは救えない低コスト需要を拾うような構造になるのではないでしょうか。
スマートコントラクトの時代が来る来る言われながら来る来る詐欺状態になっているのも、スマートコントラクトが不完備性をもったままブームになったからであり、独自ブロックチェーンアプローチまたは形式検証アプローチが流行し、主に鍵管理あたりのユーザーインターフェースが改善すれば再認識されるのではないかとも思います。
追記
アップデートできるスマートコントラクトコードを書くことは当然できるが、
- 分散的にアップデートするなら非常に複雑なコードになるしそれ自体がバグの温床。独自チェーンにガバナンス組み込むほうが早い
- 集権的にアップデートするならnemのような仕組みのほうが早い
また、BitcoinサイドチェーンやEthereumサイドチェーンは不完備性の解決にはなるが、親チェーンの競合関係は続く。Polkadotのリレーチェーンも競合関係が続くのでこのへんあまり解決できていないが、Cosmosの設計だと親すら共存可能。