Blockchain
Ethereum
solidity
Remix
ブロックチェーン

ブロックチェーン-Ethereumでスマートコントラクト開発入門編


スマートコントラクトとは?

事前に定義されたプログラム通りに、条件を満たした時に自動で契約を執行することをスマートコントラクトと言います。

例えば、電子マネーのオートチャージのように、 残高が3,000円を下回ったら、3,000円チャージする、のようなものです。


イーサリアム

イーサリアムとはブロックチェーンのネットワーク上でアプリケーションを実行できるプラットフォームです。

ETHと呼ばれる仮想通貨を消費して、プログラムの実行が可能です。

ブロックチェーンについてはこちらのブログを参照


Solidityとは?

Solidityとはイーサリアムプラットフォームスマートコントラクトを開発するためのJavaScriptライクな開発言語です。

ブラウザベースの統合開発環境Remixを利用すると、簡単に開発をスタートできます。

Remix


Getter Setterのサンプル

Remixにアクセスして、画面左上の+ボタンから新規ファイルを作成します。


プログラムの作成

今回は簡単なGetterSetterを作成します。

IDEで以下の内容を記述します。

contractValueにsetValueで値をセットし、getValueで値を取得します。


sample.sol

// バージョンプラグマの指定

pragma solidity ^0.4.0;

// サンプルコントラクトの宣言
contract Sample {
// サンプル変数の宣言
string contractValue;

// サンプル変数に値をセット
function setValue(string localValue) {
contractValue =localValue;
}

// サンプル変数の値を取得
function getValue() constant returns (string) {
return contractValue;
}
}



プログラムのコンパイルと、実行の準備

画面右側「Compile」タブの「Start to Compile」ボタンをクリックすると、コンパイルされます。

コンパイルが正常に終わったら、「Run」タブに切り替えます。

スクリーンショット 2018-05-30 18.56.53.png

Environmentはプログラムを実行する環境です。

JavaScriptVMを選択します。

Accountは実行するアカウントです。

複数存在しますが、今回はどれでも良いです。

イーサリアムでは、プログラムを実行するために ETHという仮想通貨を消費します。

アカウントIDの右側に(100ether)とありますが、これがアカウントが保有しているETHです。


プログラムの実行

それでは、先ほどのプログラムを実行してみましょう!

スクリーンショット 2018-05-30 19.03.40.png

先ほど作成した「Sample」を選択して「Deploy」をクリックします。

すると、アカウントID右側のetherが減ります。

イサーリアムではコントラクトに対してデータを送信する際、「Gas」と呼ばれるコストを消費します。

スクリーンショット 2018-05-30 19.10.32.png

setValueのlocalValueに「"ほげほげ"」を入力して、「transact」をクリックします。

スクリーンショット 2018-05-30 19.11.38.png

すると、またGasが消費されたのがわかります。

次にgetValueを実行します。

getValueをクリックすると、setValueでセットした値が表示されます。

スクリーンショット 2018-05-30 19.12.47.png

setValueの際はGasが消費されましたが、getValueの際はコントラクトに対してデータを送信しないので、Gasは消費されません。