今回は仮想通貨・ブロックチェーンを勉強したことのある人であれば必ず聞いたことがあるであろう「スマートコントラクト」という言葉について、少し自分の意見を交えながら、その本質についてまとめていこうと思います。
「スマートコントラクト(smart contract)」は日本語では「契約の自動執行」と訳され、我々はしばしば「イーサリアムのスマートコントラクトが〜」といった形で、何気なく「スマートコントラクト」という単語を使用しますが、この単語の厳密な意味について考えたことがある人は少ないですし、あまり議論も活発ではありません。
一方でこの概念はパブリックブロックチェーンの性質を考える上では必要不可欠なものであり、議論をすることで、真にブロックチェーンという技術が適している活用領域や不向きな領域について検討でき、不毛な議論を避けることができるのではないかと思います。
そこで今回はスマートコントラクトの歴史を簡単にまとめた上で、「スマートコントラクト」という言葉の誤解について、私見を述べたいと思います。
スマートコントラクトの歴史
Nick Szaboによるsmart contractの提唱
さて、「スマートコントラクト」という単語はブロックチェーン以前から議論されていた概念であり、1994年にアメリカの暗号学者であるNick Szabo氏によって提唱されたのが始まりです。
彼はスマートコントラクトの提唱だけではなく、1998年には分散型デジタル通貨「Bitgold」を提唱するなど、現在の仮想通貨・ブロックチェーンの源流とも言える概念を発表していることから、一時期「サトシ・ナカモトではないか」との噂もありました(本人は否定していたようですが。詳しくはBitcoin Wikiをどうぞ)。
かの有名な投資家Navalは「BitcoinはBitgoldという巨人の肩に乗っている」と形容していたこともあります。
さて、Szaboの論文の内容で非常に有名なのが、スマートコントラクトを自動販売機に例えたことです。
かいつまんで説明すると、スマートコントラクトの源流は「humble-vending machine」であり、購入したい飲み物の金額分のお金を投入(=インプット)することで、同額の飲み物がアウトプットします。この特定の条件を満たした場合のインプットに対して契約が成立し、第三者の介在を要することなく契約を自動執行できる。そしてこのようなハードウェアのみならずソフトウェアを含む、価値を持ちデジタルな手法で管理されているあらゆる種類の財産についてコントラクトを埋め込むことができるのがスマートコントラクトである、という主張です。
Ethereumの登場
このようなSzaboの提唱したスマートコントラクトの概念は当初ほとんど関心を持たれなかったようです。これはスマートコントラクトをサポートできるデジタルプラットフォームや分散型台帳の不在が起因しているようで、実際にスマートコントラクトを実行するための議論や活動がアクティブに行われたという形跡はありません。
スマートコントラクトの概念が一躍脚光を浴びることになったきっかけはEthereumの登場でした。
先行する仮想通貨BitcoinはSzaboの言葉を借りれば「Smart money」に過ぎませんでした。すなわち決済についてはある程度セキュアに実行できますが、チューリング不完全でありループ処理が難しいことなどから、より複雑なコントラクトの記述には不向きでした。
これに対してBitcoinの機能を拡張し、チューリング完全により幅広いコントラクトの記述が可能になったEthereumの機能のことを、Ethereum生みの親Vitalikは「スマートコントラクトである」という形容をしたわけです。
ここまでが現在のスマートコントラクトに関するざっくりとした議論です。
ブロックチェーンで実現される「スマートコントラクト」の本質はどこにあるか?
このような歴史を踏まえると、ブロックチェーンで実現されるスマートコントラクトの意義は「コードの検証が容易であり、改ざんを検知できる」ことにあるように思われます。
これまでは契約を自動執行しようと思っても、価値の移転が改ざんなく行われることを保証できませんでしたが、ブロックチェーンの登場により、価値の移転を行う際に改ざんが難しく(※諸説あり)行われたとしても、それを検知できるようになりました。
さらにブロックにデータを格納しておくことで、半永続的にその取引データを残しておくことができ、これまでの取引では国や地域によって異なっていた商慣行などのズレ、およびこれに起因するビジネスの摩擦を解消することができるようになりました。
これらの点にブロックチェーンにおいてスマートコントラクトを実行することの意義があるのではないかと思われます。
「スマートコントラクト」という言葉は適切か
さて、ここまでスマートコントラクトに関する歴史を簡単に見てきたわけですが、現在のEthereumを議論する際の「スマートコントラクト」という単語の使われ方にはいくつかの課題があるのではないかと個人的には思っています。
問題提起を込めて以下順番に見ていきたいと思います。
言説①「スマートコントラクトは自動販売機に例えられる」
いまだにEthereumにおけるスマートコントラクトとは何か?という議論の時に自動販売機を引き合いに出すことが多いのですが、厳密にはEthereumにおけるスマートコントラクトとSzaboが形容した自動販売機は性質が異なる点に留意する必要があるかと思います。
そもそも自動販売機のように特定のインプットに対してアウトプットを出力するだけであれば関数で足りるわけで、彼自身「Smart contracts go beyond the vending machine in proposing to embed contracts in all sorts of property that is valuable and controlled by digital means」という主張をしていることは、自動販売機はあくまでも例えに過ぎず、それ自体がスマートコントラクトであるわけではないと言うことの証左であると考えられます。
個人的には自動販売機に例えられるのはスマートコントラクトではなく関数なのでは?と思っています。
言説②Ethereumにおける「契約の自動執行」と言う言葉によるミスリード
また個人的にはEthereumの「contract」および「契約の自動執行」と言う言葉が一人歩きすることで、あたかもスマートコントラクトには法的効果があるかのような誤解が生まれているような気がします。
例えば「契約の自動執行ができるので裁判所いらず!」「差し押さえを自動でできる!」などと言う主張が一時期夢物語のように語られていましたが、これはやや論理の飛躍があるように思われます。
本来Szaboが提唱したスマートコントラクトで言う「コントラクト」には民法上の債権法(契約法)における「契約」の意味は存在せず、あくまでもスマートコントラクトとはデジタルに表現される資産を予め定められたルールに従って自動的に移転させる仕組み(by斎藤賢璽先生)に過ぎないからです。Ethereumにおいても、Vitalikは法的拘束力を有する契約をEthereumに実装することを意図していたわけではありません(開発初期のVitalikのブログを参照)。
実際に彼は法学上の単語として解釈されることについて、「スマートコントラクトと名付けたことを後悔している」とTwitterで述べ、代替案として「persistent scripts」といった名称の使用を提案しています。
To be clear, at this point I quite regret adopting the term "smart contracts". I should have called them something more boring and technical, perhaps something like "persistent scripts".
— vitalik.eth (@VitalikButerin) October 13, 2018
同じくイーサリアム開発者のVlad氏は「stored procedures」という名称を提案しています。
このようにあくまでもプログラム上の概念と法的拘束力を有する契約は峻別されるべきであり、別概念であることには留意する必要があるのではないか、と言うのが個人的な意見です。
今回はスマートコントラクトと言う概念の歴史を簡単にみた上で、これにまつわる議論が錯綜していることを取り上げました。
スマートコントラクトは1994年にSzaboにより提唱された概念で、ブロックチェーン以前から存在したものであり、本来価値を持ちデジタルな手法で管理されているあらゆる種類の財産についてコントラクトを埋め込むことができるものでした。そしてイーサリアムの登場により一躍脚光を浴びましたが、そのイーサリアムの議論における「スマートコントラクト」と言う単語の使われ方にはやや課題があるように思われますし、個人的には現在でも統一した定義は存在しないことが、議論の錯綜に拍車をかけていると思います。それゆえ今後の議論ではスマートコントラクトが指し示す価値の移転とは何を指しているのかについてより留意する必要があるのではないかと思います。
この記事がよかったと思った方は、ぜひ下のボタンからシェアしてくださると嬉しいです!