Ethereum(8) - スマートコントラクト①

前回までの記事で、gethの起動とMist Walletの起動ができるようになりました。

今回はこの環境を使って、簡単なスマートコントラクトを実行してみます。

準備

スマートコントラクトを実行するために、下記の状態にしておきます。

  • gethを起動
  • アカウント(アドレス)を1つ作成
  • マイニングを開始
  • Mist Walletを起動

スマートコントラクトの内容

今回試すスマートコントラクトは下記になります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
pragma solidity ^0.4.11;
contract HelloEthereum {
string public msg1;

string private msg2;

address public owner;

uint8 public counter;

/// コンストラクタ
function HelloEthereum(string _msg1) {
// msg1に _msg1を設定
msg1 = _msg1;
// ownerに本コントラクトを生成したアドレスを設定
owner = msg.sender;
// counterに初期値として0を設定
counter = 0;
}

/// msg2の設定
function setMsg2(string _msg2) public {
// if文の例
if(owner != msg.sender) {
throw;
} else {
msg2 = _msg2;
}
}

// msg2の取得
function getMsg2() constant public returns(string) {
return msg2;
}

// カウンターの設定
function setCounter() public {
// for文のサンプル
for(uint8 i = 0; i < 3; i++) {
counter++;
}
}
}

メッセージを設定・取得したり、カウンターを設定する簡単な処理になります。

スマートコントラクトのデプロイ

Mist Walletの①Contractタブを選択し、②DEPLOY NEW CONTRACTをクリックします。



③FROMにはスマートコントラクトを生成するアカウント(オーナー)を指定します。

④SOLIDITY CONTRACT SOURCE CODEにはスマートコントラクトの内容(コード)を記述します。

⑤SELECT CONTRACT TO DEPLOYではHello Ethereumを選択します。

⑥引数msg1にはHello Worldを記入します。



画面を下にスクロールし⑦DEPLOYボタンをクリックします。



⑧Provide maximum feeには5000000を入力します。これはGas Limitに相当し、テスト環境のため大きめの値を設定しました。

⑨アカウント作成時に設定したパスワードを入力します。

⑩SEND TRANSACTIONをクリックします。この後はWALLETSタブに自動遷移します。



画面下にスクロールするとLATEST TRANSACTIONSにデプロイしたスマートコントラクトが表示されています。

Create Contractが薄い色の場合は、まだブロックに取り込まれていないので、色がはっきりするまで少々待ちます。

ブロックに取り込まれたら⑪Hello Ethereum 7569を選択します。



⑫デプロイしたスマートコントラクトの詳細が表示されます。

⑬Msg1には、デプロイ時に指定した文字が表示されています。



次回はMist Walletからこのスマートコントラクトのトランザクションを発行してみます。