EthereumのプライベートネットとRemix (Browser-Solidity)を接続し、Contractをデプロイしてみます。
開発環境
macOS High Sierra バージョン10.13.2
Geth 1.7.3-stable
プライベートネットに関しては下記の関連ページをご参照下さい。
関連ページ
Gethをインストールしてプライベートネットにつなぐ[Mac]
Gethの起動
Contractをプライベートネットへデプロイするには、Gethを起動しマイニングしている状態(miner.start())が必要となります。
まずGethを起動させます。下記コマンドを実行すると、–unlockで指定したアドレスのアカウントのPassphraseが聞かれるのであらかじめ設定していたワードを入力して下さい(関連ページではhoge1と入力)。
1 |
geth --networkid "10" --nodiscover --datadir "/Users/ユーザー名/Documents/eth_private_net" --mine --unlock 0x324b45fda436c8161120350a918bafd59d1dbed2 --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" console 2>>/Users/ユーザー名/Documents/eth_private_net/geth_err.log |
主なコマンドオプションの説明
–networkid
ネットワーク識別子。1、2、3以外を指定します。
–datadir
ご自身の環境を適切に設定して下さい。詳しくは関連ページをご参照下さい。
–unlock
上記コマンドではアドレスそのものを指定しましたが、アカウントのインデックスを指定することもできます。関連ページの説明の流れではeth.accounts[0]と同じであるため –unlock 0 のように指定することも可能です。
–rpc
GethのJSON-RPCサーバとしての機能を有効化します。ブラウザからHTTP通信ができるようになります。
–prcaddr
JSON-RPCサーバのアドレス。つまりGethを実行しているマシンのIPアドレスを設定します。デフォルトではlocalhostが設定されます。
–rpcport
JSON-RPCサーバのポート番号。
–rpccorsdomain
クロスドメインを許可するIPアドレスを設定します。今回は全て(*)に指定しています。
Remix (Browser-Solidity)
次にRemix での作業となります。今回Remixはダウンロードせずにネットワーク上のを利用しますが、その場合URLに注意して下さい。httpsではなくhttpでアクセスして下さい。JSON-RPCでのアクセスの際にAjaxが利用されていますが、httpsからhttpへのAjax通信がブロックされてしまうためです。
Remixに関しては下記の関連ページもご参照下さい。
Remix (Browser-Solidity)を利用する[Hello World]
まず「Environment」項目の「Web3 Provider」を選択します。
下記のようなウィンドウが表示されたら「Web3 Provider Endpoint」に「http://localhost:8545」が設定されているのを確認し「OK」をクリックします。Gethを起動させた際のオプションである「–prcaddr(IPアドレス)」と「–rpcport(ポート番号)」に合わせる必要があります。
次に下記のsolidityコードを入力します。このコントラクト(HelloAddress)の送信者アカウントのアドレスを取得するだけのコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pragma solidity ^0.4.11; contract HelloAddress { address public owner; //コンストラクタ function HelloAddress(){ owner = msg.sender; } //アドレスを返す function getOwnerAddress() constant returns (address){ return owner; } } |
5行目
アドレス型の状態変数を宣言しています。
9行目
msg.senderは、このコントラクトの送信者(coinbaseアカウント)のアドレスを取得することのできる予約語(グローバル変数)です。
「Create」をクリックしコントラクトをデプロイします。「getOwnerAddress」ボタンが表示されたら、そのボタンをクリックしアドレスを表示させてみます。Gethを起動した際に–unlockオプションで指定したアカウントのアドレスが表示されるはずです。