概要
Mac でイーサリアム API を使った開発ができる環境を構築してみました
今回はイーサリアムの golang 実装である geth を使います
マイニングもできますがあくまでもローカルに構築した環境なので実際に報酬などは受け取れません
環境
- macOS 11.6.2
- geth 1.10.15-stable
geth のインストール
- brew install ethereum
geth ではなく ethereum という Formulae をインストールしましょう
genesis ファイルの作成
- mkdir eth_private_net
- vim eth_private_net/myGenesis.json
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0
},
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {}
}
初期化
- geth --datadir ./eth_private_net init ./eth_private_net/myGenesis.json
INFO [01-07|11:25:56.104] Maximum peer count ETH=50 LES=0 total=50
INFO [01-07|11:25:56.123] Set global gas cap cap=50,000,000
INFO [01-07|11:25:56.124] Allocated cache and file handles database=/path/to/eth_private_net/geth/chaindata cache=16.00MiB handles=16
INFO [01-07|11:25:56.166] Writing custom genesis block
INFO [01-07|11:25:56.174] Persisted trie from memory database nodes=0 size=0.00B time="357.389µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [01-07|11:25:56.177] Successfully wrote genesis state database=chaindata hash=7b2e8b..7e0432
INFO [01-07|11:25:56.178] Allocated cache and file handles database=/path/to/eth_private_net/geth/lightchaindata cache=16.00MiB handles=16
INFO [01-07|11:25:56.215] Writing custom genesis block
INFO [01-07|11:25:56.215] Persisted trie from memory database nodes=0 size=0.00B time="5.795µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [01-07|11:25:56.217] Successfully wrote genesis state database=lightchaindata hash=7b2e8b..7e0432
geth ノード起動
- geth --networkid “15” --nodiscover --datadir ./eth_private_net console
30303 で起動しています
動作確認
コンソールでイーサリアム API をコールできるコマンドを実行できます
> eth.getBlock(0)
{
difficulty: 16384,
extraData: "0x",
gasLimit: 134217728,
gasUsed: 0,
hash: "0x7b2e8be699df0d329cc74a99271ff7720e2875cd2c4dd0b419ec60d1fe7e0432",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x3333333333333333333333333333333333333333",
mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
nonce: "0x0000000000000042",
number: 0,
parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 507,
stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
timestamp: 0,
totalDifficulty: 16384,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
それ以外にもマイニング用の API や送金の API も試せます
- admin.nodeInfo
- net.peerCount
- eth.accounts
最後に
今回は開発環境を構築してみました
イーサリアムを使ったブロックチェーンアプリなどを構築する場合にはこんな感じで開発用の API を構築するようです
マイニングだけしたい場合には ethminer というツールがありますが GPU (opencl or cuda) が必要になり GPU がない環境でのマイニングは geth を使うことになります
0 件のコメント:
コメントを投稿