Remixをgethの接続

Remixとは

f:id:adrenaline2017:20190706101334p:plain

Solidityでコントラクトを開発する為のIDEです。 Remixはローカルで立ち上げる方法とクラウドIDEの2種類があります。

gethとは

「Go Ethereum」の略で、Ethereumのフルノードを操作するためのクライアントソフトです。BitcoinでいうBitcoin coreの様なものです。

Gethの設定

$ brew tap ethereum/ethereum
$ brew install ethereum

Gethの初期化

eth_private_netフォルダにgenesis.jsonファイルを作成

$ mkdir -p /Users/ユーザー名/Documents/eth_private_net
$ cd /Users/ユーザー名/Documents/eth_private_net
$ vim genesis.json
{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x400",
"alloc": {},
"coinbase": "0x3333333333333333333333333333333333333333",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x8000000",
"config": {}
}

Gethの初期化

geth --datadir /Users/ユーザー名/Documents/eth_private_net init /Users/ユーザー名/Documents/eth_private_net/genesis.json

Gethの起動

geth --networkid "10" --nodiscover --datadir "/Users/ユーザー名/Documents/eth_private_net" console 2>> /Users/ユーザー名/Documents/eth_private_net/geth_err.log

マイニング

アカウント作成

> personal.newAccount()

アカウントの確認

> eth.accounts

コインベースアカウントの確認

> eth.coinbase

マイニングの開始

> miner.start()

マイニングの確認

> eth.mining

アカウント1番目の残高

> web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")

マイニングの停止

> miner.stop()

送金

アカウントのアンロック

personal.unlockAccount(eth.accounts[0])

アカウント1からアカウント2に5ether送金

> eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:web3.toWei(5, "ether")})

Remixとgethの接続

Gethの起動

geth --networkid "10" --nodiscover --datadir "/Users/ユーザー名/Documents/eth_private_net" --mine --unlock 0 --rpc --rpcaddr "localhost" --rpcport "8545" --rpccorsdomain "*" console 2>>/Users/ユーザー名/Documents/eth_private_net/geth_err.log

マイニングの開始

> miner.start()

Remixのアクセス

Remixブラウザにアクセス

Environment項目の「Web3 Provider」を選択

Web3 Provider Endpointに「http://localhost:8545」 が設定されているのを確認し「OK」をクリック

新規にコントラクトを作成

pragma solidity ^0.4.11;
 
contract HelloAddress {
    
    address public owner;
    
    function HelloAddress(){
        owner = msg.sender;
    }
   
    function getOwnerAddress() constant returns (address){
        return owner;
    }
    
}

デプロイをクリック

「getOwnerAddress」ボタンをクリックしアドレスが表示されるか確認