今回はちょっとマニアックな話になります。
イーサリアムで一躍有名になった自動化システム「Smart Contract」(スマートコントラクト)。
これが一体なんなのか?
情報を振り下げてまとめてみました。
スマートコントラクトの歴史
今ではイーサリアムのメイン機能として認知されていますが、この仕組み自体はそもそも、1996年にコンピューター科学者であるニック・ザボー(Nick Szabo)という人によって造られていて、当初は「インターネット上の見知らぬ人の間でなされる電子商取引(今でいうeコマースなど)のプロトコル(手順)」として設計されています。
一方、イーサリアムの構想は2013年からVitalik Buterin(ヴィタリック・ブテリン)という人によって提唱されていますので、それ以前からすでに存在していた仕組み、ということになりますね。
ちなみにニック・ザボー氏はスマートコントラクトを開発した2年後の1998年に “ビットゴールド”と呼ばれる分散型デジタル通貨の仕組みを設計していますが、これは実装されていないそうです。
あと、ちょっと話が逸れてビットコインの話になるんですが、この人が今でいうビットコインの生みの親「ナカモトサトシ」であるという調査結果もあるようです。
ウォールストリートジャーナルより
話を戻しますが、スマートコントラクト自体は仮想通貨のために作られたわけではないですが、その歴史は仮想通貨の歴史と深く関わりがあるということですね。
仮想通貨のスマートコントラクトとは
一番わかりやすい考え方として、自動販売機が例に挙げられることが多いです。
コインを入れれば、あとは全て自動で処理を行うのでこれも一種のスマートコントラクトとして考えられます。
自販機では、ちゃんと指定されたお金を入れさえすれば、確実に望んだ結果(欲しいジュース)が得られますよね。(・・・壊れてさえいなければの話ですが)
こうやって、一連の動作を全自動で実行させるようにコンピュータで設定できる仕組みを作ったものがこのスマートコントラクトです。
一方で仮想通貨のブロックチェーンは意図的に外部から改竄できないことで有名ですが、これとスマートコントラクトを合体させることでセキュリティーの高いシステムを構築することができるというわけです。
スマートコントラクトの仕組み
もっと難しい話をすると、イーサリアムのスマートコントラクトはコントラクト・コード「EVM Code」というもので動いています。
ただし、実際に開発する時にはこのコードをそのまま人が打ち込むわけではなく、Solidityという言語を使うのが一般的です。これはまずイーサリアムの仕様を実装したクライアント「Geth」などをインストールするところから始まります。
もう、実際に開発やってみたいって人は下のリンク先に超詳しく記載されているので、それを参考にすると良いです。
Ethereum入門
まあもちろん専門の知識が必要になってくるので、簡単にはできませんよ。
僕なんてさっぱりわかりません。
その他のスマートコントラクト
現在はイーサリアム以外の多数の仮想通貨にもスマートコントラクトが採用されています。
NEO(ネオ):
中国版のイーサリアムと言われていますが、こちらはC、C#、C++、JavaScript、Pythonなどいろんな開発環境でスマートコントラクトの開発ができます。
詳しくは過去記事を参照。
Ethereum Classic(イーサリアムクラシック):
基本的には開発環境も同じで、本家と大差ないですが、実際に導入するとなるとプラットフォーム自体の規模が重要になってくるはずです。そうなるとやっぱり今の状況下では開発側としてはイーサリアムの方がいいのかもしれないですね。知名度が違いますし。
詳しくは過去記事を参照。
Lisk(リスク):
開発環境はJavascriptです。
この言語なら僕でも死ぬ気で頑張ればなんとか開発できそうです。
あと、ほかの違いを挙げるならサイドチェーンを積極的に採用しているところとか。
ただこれは別の話になるのでここでは詳しく話しませんが、簡単に言うと、ブロックチェーンの脇にもう一つ補助的なブロックチェーンがあるって思えばいいです。
詳しくは過去記事を参照。
最近のスマートコントラクト事情
1月17日には、DMMがブロックチェーン技術を使ったスマートコントラクト事業を開始したと発表しました。
itmedia
同社はすでに仮想通貨事業に参戦していて、マイニング事業も手がけているそうですが、今回は投機による仮想通貨ではなくて純粋な使用目的で使われる仮想通貨に焦点を当てて、プロダクトを作り、サービスを展開していくということです。