Ethereumはどうやってスマートコントラクトを実行しているのか?
ブロックチェーン上に保存されたコントラクトコードのハッシュ値から保存されているコントラクトコードを呼び出し、実行データと合わせてコンパイルし、その結果をブロックチェーンに戻します。このことを状態遷移と言います。
エクセルでデータ入力し保存すると元のファイルには戻りませんよね。その感じ。
コンピューターは[ インプット→演算→アウトプット ] この繰り返しをする装置です。Ethereumのネットワークを使ってその演算をさせる仕組みのことをEVM(Ethereum virtual machine)と言います。
それゆえに、EthereumはWorld computerと言われています。
なぜバーチャルなのか?本来はハードウェアとソフトウェアの組み合わせがコンピュータですが、ソフトウェアだけでそれを実行するからです。
一般の方がよく目にするVMはJAVAです。PCを使っていると『JAVAをインストールしてください』とよく目にすると思います。
では、このEVMですが後発のプラットフォームは実装できないのでしょうか?そして、既存のプログラミング言語では使えないのでしょうか?
そんな疑問が湧いてきます。
では、お答えしましょう。
(いや、かなりざっくりですがw )
EVMは後発プラットフォームに移植できます!
ブロックチェーン開発者の立場からしたら『Solidity開発がこれだけスタンダードになってるならば仕組みを丸ごと使いたい!』そう思うのは自然な流れですよね。あわよくば、EthereumのdAppに移籍してもらいたい。そんなふうに思うはずです。
そして、EVMを使う事で削減したリソースをブロックチェーンのロジック開発に回せるでしょう。
例えば、Æternityはブロックチェーン開発は独自で、アプリケーション開発はイーサリアムのテストネットを使い分業体制を敷いていました。RootstockやDfinityはそのまま開発言語を流用しています。
既存のプラグラミング言語も使えるようになます
Web Assembly(WASM)を使う手があります。
WASMはGoogle,Apple,Microsot,Mozillaなどが標準化したVMの仕組み、ブラウザ上で実行できる仕組みです。(Chrome,Safari,Edge,Firefox..)
Langage-Xと記述してあるところに各種言語が入ります。条件として各言語をWASM形式のファイルにするコンパイラが必要となります。
現在はC,C++,Rust向けが開発済みです、Solidityも対応が進んでいます(eWASM)。このWASMですがjavascriptのModuleのように扱えるのでjavascript経由で簡単に扱えるようです。そこも大きな利点となるでしょう。
ちなみに、EhtereumクライアントのParityはすでにWASMを実装したそうです。
後発プラットフォームのEOSも当初EVMを検討していましたが、現在はWASMで実装を目指しています。White paper v2でEVMが削除されています。これも先回り思考で動いてるのかもしれませんね。
ちなみに、Ethereum上の分散取引所dAppのBancorはEOSプラットフォーム上で動くことになっています。こちらのコードを見るとC++でコントラクトコードが書かれている様です。C++用のコンパイラはすでに開発済みだからでしょう。
この様に、コンパイラを各言語ごとに用意できれば多言語対応は可能になるでしょう。
やはりEVM経済圏とゆうよりWASM経済圏では?!
ここまでの文脈から、どうやらスマートコントラクト開発はWASM中心に回って行くような気がします。そして、WASMにするとEVMよりもメリットが多い様です。こちらの記事を参照ください。
WASM移行で得られるメリットは、スマートコントラクト開発の参入障壁がへり、既存の開発リソースを活用できる様になる。アプリ層とブロックチェーン層の分離により、アプリ側の要求によって最適な組み合わせを選択できる様になると思います。また単一障害点がなくなるのもメリットです。
MyEtherWalletのスクリーンショットですが、この様にネットワークを切り替えて使う様になると思います。(右側のドロップダウンメニューの部分)
手書きのイメージ
もちろん、トークン規格やデータ保存の仕組みなども共通化する必要がありますが不可能ではなさそうですね。
私の妄想はいかがでしたでしょうか.....。
ちなみに、ByzantiumハードフォークはEVMとブロックチェーン層の役割を整理する目的も持っていた様です。WASM以降を考えると頷けますよね。
過去記事を書いております。こちらも合わせてご覧ください。
『スマートコントラクトはWEB3.0の要です!』
エンジニアの方もエンジョイ勢も未来を楽しもうじゃありませんか!
EOSについても触れていますね!Bancorは、EOSのプラットホーム上で動くんですね。
動きますよ!
勉強になりました。ありがとうございます。
今回は自分のおさらいの為に書いた感じですが、整理されてなくて不満ですw
エンジョイ勢ww
私は7,8割がたエンジョイ勢なのかもしれません^^
WASMですか、また新たな謎ワードがどんどん出てきますね...
要するに慣れている手法でプログラミングできるってことですね。
はい!その通りです。全ては過去のリソースを
上手に活かしつつ、次につなげて行くかなんです。ブロックチェーン自体が過去の技術の集約ですからね。^ ^
ただ、ある程度制限のかかったSolidityの方が不用意なバグを起こさないような気がするんですよね。優秀なエンジニアばかりなら問題ないのですが…。