This article has been translated from English to Japanese.
イーサリアムは「スマートコントラクトプラットフォーム」として知られている。
プラットフォーム(またはコンピューティングプラットフォーム)とは、プログラムやアプリケーションなどのソフトウェアを実行(または「実行」)できる動作環境のことである。
しかし、スマートコントラクトとは一体何だろうか?
スマートコントラクトとは?
スマートコントラクトとは、ブロックチェーン上でホストされ実行される自動化されたコンピュータプログラムである。

「スマート」という名前にもかかわらず、「スマートコントラクト」は必ずしも賢くもなければ、法的拘束力があるわけでもない。
「スマート」ではなく「自動化」、「契約」ではなく「プログラム」という名称の方が適切だったかもしれないが、このコンセプトを考え出したのは私ではない。
90年代後半にこの用語を考案したニック・サボーは、スマートコントラクトを自動販売機に例えている。
ユーザーが機械にコインを投入し、投入した金額が正しいと仮定すると、機械が「自動実行」され、ユーザーが要求した商品が提供される。ユーザーと自動販売機以外は誰も関与しない。第三者の関与は必要ない。自動販売機の所有者でさえもだ。
このやりとりには、ほとんど、あるいはまったく信頼を必要としない。自動販売機は、お金を受け取ったら商品を渡す以外に選択肢がないのだ。

今度は、自動販売機のように明確で予測可能な条件を持つ契約を書き、ブロックチェーン技術を使って当事者間の契約条件を自動的に履行することを想像してみてほしい。
それがスマートコントラクトの役割である。
イーサリアムでは、スマートコントラクトはブロックチェーン上に提出されたコード化された指示の断片であり、ネットワーク参加者はこれらの契約を安全かつ信頼性の高い方法で実施し、保存することができる。
もう少し専門的な言葉で言えば、スマートコントラクトとは、Ethereumのブロックチェーン上の特定のアドレスに存在するコードとデータの集合体である。
スマートコントラクトは決定論的でもあるため、契約に関わる者は契約が実行された際にどのような結果が得られるかを知ることができる。
スマートコントラクトとは、あらかじめ定められた条件が満たされたときに自動的に実行されるブロックチェーン上のソフトウェアプログラムだと考えていただきたい。
これらの予め定められた条件は、 コードの行に 直接書き込まれており、従来の契約における「契約条件」 に相当する 。
スマートコントラクトが何であるか分かったところで、イーサリアムがスマートコントラクトのプラットフォームである理由を紹介しよう。
EVMとは何か?

いいえ、これは新しいタイプの電子音楽ではありません。
スマートコントラクトがコードで書かれた指示であるとすれば、それをイーサリアムブロックチェーン上で実行するのがイーサリアム仮想マシン(EVM)である。
「仮想マシン」とは、プログラムを実行したりアプリケーションを展開したりできる実際の物理コンピューターのような動作をするソフトウェアである。
基本的には、メインのコンピューター内に独立したコンピューターがあるかのように動作する、物理コンピューター上のソフトウェアプログラムである。
スマートコントラクト(単なるコンピュータプログラム)を実行するために「別のコンピュータ」が必要なのはなぜだろうか?
すべてのイーサリアム・ノード(単なるコンピュータ)が同じハードウェア、オペレーティングシステム(OS)、その他の設定を使用しているわけではないため、スマートコントラクトのコードが、特定の要件を持つさまざまな種類のコンピュータ設定をすべて処理することなく実行できるように、これらすべてを「抽象化」する方法が必要となる。
そうでないと、コンピュータの構成のタイプごとにスマートコントラクトの異なるバージョンを書かなければならなくなる! 👎
スマートコントラクトは、このような面倒なことはしたくない! デバイスやOSに依存しないことを望んでいる。
そこで登場するのがEVMだ。
スマートコントラクトの実行環境を提供し、つまりスマートコントラクトはあらゆる環境(「あらゆるコンピュータやOS」)で実行(「実行」)できる。
開発者はスマートコントラクトを記述し、それがソフトウェア業界の標準的な慣行である「Write once, run anywhere」(WORA)に従うことを確信できる。これは「Write once, run everywhere」(WORE)とも呼ばれる。
基本的に、スマートコントラクトはEVMを搭載したあらゆるコンピューター上で実行される。クールだろ?
しかし、クールなのはそれだけではない。
EVMの目的は、 すべての完全なイーサリアムノードに組み込まれた計算エンジン であることであるため 、 チューリング完全 である。
コンピューター用語で「チューリング完全」とは、EVMが理論上、コンピューティングとして考えられるものは何でも計算できることを意味する。
つまり、理論的には、どのようなコンピューターアプリケーションでもイーサリアムプラットフォーム上でプログラムし、実行することができるのだ。
スマートコントラクトは、Solidity、Vyper、Serpentなどの高レベルプログラミング言語を使用してコードで記述される。
このコードはEVMによって「バイトコード」と呼ばれるものにコンパイルされ、その後イーサリアムブロックチェーンにデプロイされる
EVMのおかげで、イーサリアムブロックチェーンはスマートコントラクトの枠を超え、分散型アプリケーション(dApps)の作成にも使用できる。
次のレッスンでは、分散型アプリケーション(dApps)についてさらに詳しく学んでいこう。