3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ethereum スマートコントラクト開発日記(2)

Posted at

Ethereum スマートコントラクト開発日記(2)

前回でテスト用ネットワークとその上での送金を確認できたので、今回からスマートコントラクトの開発を始めていきます。

Solidity で開発するには大別して

  1. solidity のコンパイラをインストールする
  2. Browser - Solidity(SolidityのWebIDE)を使用する

とりあえずここではお手軽に Browser-Solidity を使用していく。

Remix を接続

先に geth を RPC接続可能な設定で起動する。

$ geth --networkid 4649 --nodiscover --maxpeers 0 --rpc --rpccorsdomain "*" --datadir ~/eth/data console 2>> ~/eth/data/eth.log

あと、miner.start() でマイニングを開始しておくこと(もう起動オプションでマイニングは走らせっぱなしでも良い)。
Browser-Solidity を開き、右上「Run」のタブを開いて Environment を Web3 Provider に変更。接続先を入力するダイアログが出てくるのでそのままOKを押す。

2-connect-remix.png

エラー等が出ず、Account に作成したアカウントの一覧が表示されていれば成功。

コントラクト作成・実行

Browser-Solidity 左上の + ボタンを押して新規ファイルを作成、Hello.sol という名前でコントラクトを作ってみる。

pragma solidity ^0.4.8;

contract Hello {
    string public greeting;
    
    function Hello(string _greeting) public {
        greeting = _greeting;
    }
    
    function setGreeting(string _greeting) public {
        greeting = _greeting;
    }
    
    function say() public constant returns (string) {
        return greeting;
    }
}

「Run]タブに移動し、適当な _greeting を指定して 「Create」 を押す。先にアカウントを unlockAccount しておかないとエラーになるので unlock しておきます。
Create後、トランザクションが実行されたタイミングでコントラクトが実行され実行ログが表示されます。

2-create-hello.png

別アカウントでの実行

前回記事の手数料と同じく、EtherBaseのアカウントから発行されたトランザクションはマイニング時の手数料報酬として同アカウントに戻ってくるので残高に変化は出ません。
別のアカウントからトランザクションを発生させてみましょう。

  1. 実行用アカウントに sendTransaction で ether を送金
  2. 実行用アカウントを unlock
  3. Browser-Solidity の Account を実行用アカウントに切り替え
  4. setGreeting に別のテキストを設定し、実行

実行すると Hello.greeting の内容が変更される事、実行用アカウントの残高から手数料が引かれている事が確認できます。

2-setGreeting-other.png

まとめ

なんとなくコントラクトの実行方法が掴めた。これから本来なら自分でトークンを作ってみて受け渡しして〜 というのが学習フローなのですが流石にそっちはもっと良い記事がたくさんあるので何か違う事できないか考え中です(もしかしたら永遠に考えるだけかもしれない)。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?