LoginSignup
6
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-30

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

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

例えば、電子マネーのオートチャージのように、 残高が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は消費されません。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3