【Ethereum開発】スマートコントラクトの概念
スマートコントラクトはmetamask(詳しくはこちら参照)でつくったアカウントのようなものであると考えることができます。これは人間ではなく、コードによって制御されます。
このコードがスマートコントラクトのふるまいを記述します。
コントラクトアカウントの中身
コントラクトアカウントには、コードと命令が格納されているため、なんらかの方法により実行する必要があります。
注意すべきは、metamaskで生成した外部アカウントとスマートコントラクトのアカウントとはまったくの別物であることというです。
作成したスマートコントラクトアカウントは特定のネットワーク上で作成し、ネットワーク経由でアクセスすることはできません。つまり、rinkebyで作成したコントラクトアカウントは、main、ropsten、kovanからアクセスすることはできません。
コントラクトのソースをRinkebyネットワークにデプロイすると、コントラクトのインスタンスが作成されます。これらのインスタンスとコントラクトのソースコードの関係は、いわゆる「クラス」と「インスタンス」の関係と非常によく似ています。
そう、ちょうどこんなかんじ
これはオブジェクトの動作の定義です。クラスのコピーがインスタンスに作成されます。
なので、ブロックチェーンにもオブジェクト指向の概念が登場します。ですので、一般的なオブジェクト指向プログラミングのクラスやインスタンスの考え方を身に着けておきましょう。
Solidity
solidityはスマートコントラクトを記述するための言語です。
コントラクトの実行を容易にしてくれる多くの機能を言語の中にもっています。solidityは強い型付け言語であり、javascriptに似ていると考えられています。
solidityの仕組みは以下の図のようにあらわせます。
solidityのソースコードはsolidity compilerによってコンパイルされると二つのファイルを吐き出します。最初のバイトコードには理論ネットワークに展開される実際のバイトコードを含みます。もう一方は、ABI(アプリケーションバイナリインターフェース)と呼ばれるものです。ABIは展開されたスマートコントラクトと対話できるアプリケーションを作成するためのキーです。
続きは随時アップしていく予定ですが、ここからじぶんで開発を学んでいきたいひとは、
世界最大級のオンライン学習サイトUdemyから「Ethereum and Solidity: The Complete Developer's Guide」を探してみてください。