Geth
Geth
Connect to Network
geth --datadir "/directory/path" --networkid 1
--datadir
- blockchain の保存先。 指定されなければ $HOME/.ethereum が使われる。 コマンド実行直後に画面に表示される。
Windows の場合は
C:\Users\USERNAME\AppData
の中が使われます。
- blockchain の保存先。 指定されなければ $HOME/.ethereum が使われる。 コマンド実行直後に画面に表示される。
Windows の場合は
-
--networkid
id name 1 Mainnet 2 Testnet
Create private network
方法は2通り
- network id にランダムな値を指定する。
--dev
オプション をつける。
Manage Account
Create
geth account new
パスワードの入力が求められる。 忘れると二度とアクセスできない。
List
geth account list
キーは --datadir
で指定された場所に保存される。 --keystore
の指定があればそちらが優先される。
Mining
--mine
オプションを付けることでマイニング可能。
geth --mine --minerthreads 2 --minergpus '0,1,2' --etherbase 'XXXXXXXXX' --unlock 'XXXXXXXX'
minerthreads
ハッシュ生成に使うスレッドの数。 デフォルトで 8。
minergpus
マイニングに使用するGPUを指定する。 GPU のリストを取得するには geth gpuinfo コマンドを使用する。 各GPUを使用するには 1, 2 GB の RAM が必要らしい。 デフォルトではGPUを使用しない。
etherbase
マイニングによる成果報酬が入るアドレス。
unlock
(調査中)
--rpccorsdomain "*"
- allow certain domains to communicate with geth.
"*"
allows all domains.
- allow certain domains to communicate with geth.
--rpcaddr "0.0.0.0"
- indicates to which IP address the geth server is reachable. above example, it can be acccessed as “0.0.0.0”.
Geth Console
Open Geth Console
geth attach /tmp/geth.ipc
While geth app is running.
Get Genesis Block
eth.getBlock(0)
Output Example
{
difficulty: 1,
extraData: "0x0000000000000000000000000000000000000000000000000000000000000000a957fcd806ea7ae65e067a8ac74780c05ca06b44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
gasLimit: 6283185,
gasUsed: 0,
hash: "0x72d70653618de2d2ad5eb3e48bab2c65b23ac22ad590b432eab666176b1f3677",
logsBloom: "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x0000000000000000000000000000000000000000",
mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
nonce: "0x0000000000000000",
number: 0,
parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 622,
stateRoot: "0xa9e6f764982046a0f43832f3989d8d8f1e9b4b94f1c2a43a40ecacf63a4ca40f",
timestamp: 0,
totalDifficulty: 1,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
Initialize blockchain by genesis file
geth --datadir directory/path init genesisFile.json
Open geth console
geth --networkid "15" --nodiscover --datadir ./ console 2>> geth_err.log
--datadir
- it must be the same directory of the one which is used for genesis block initialization.
--networkid
- it must be the same value as genesis block chainid.
--nodiscover
- stop discovering ethereum network node
- geth will start discovering node of the same network id as default.
console
- launch console
geth --dev --rpc --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcport "8545" --mine --unlock=0
geth --networkid "10" --nodiscover --datadir "/home/test_u/eth_private_net" --mine --unlock 0xa7653f153f9ead98dc3be08abfc5314f596f97c6 --rpc --rpcaddr "192.168.5.6" --rpcport "8545" --rpccorsdomain "*" console 2>> /home/test_u/eth_private_net/geth_err.log
geth --dev --networkid 11 --nodiscover --datadir .\ --mine --rpc --rpcaddr 0.0.0.0 --rpcport "8545" --rpccorsdomain "*" console 2>> geth_log.log
geth --dev --networkid 11 --nodiscover --datadir .\ --mine --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpccorsdomain "*" --rpcapi="db,eth,net,web3,personal,web3" console 2>> geth_log.log
Launch EthereumWallet and connect to the running geth
"C:\Program Files\Ethereum-Wallet\Ethereum Wallet.exe" --rpc http://localhost:8545
Console
Unit conversion
web3.fromWei(10000, "ether")
Account
Create Account
personal.newAccount("password")
// 0x...
List Account
eth.accounts
// address string Array
// => ['0xXXXXXX...', '0xYYYYYY...']
Unlock Account
personal.unlockAccount(eth.accounts[1])
Get Balance
eth.getBalance('0xXXXXXX...')
Transaction
Get Transaction
var transaction = eth.getTransaction('0xXXXXXXXXXX...')```
transaction
has the following attributes:
nonce
Get Transaction Receipt (Consumed GAS)
eth.getTransactionReceipt('0xXXXXXXX').gasUsed
send ETH
Before sending ethereum, the user must be unlocked.
eth.sendTransaction({from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(3)})
call contract function
// interface as object
var abi = [ { "constant": false, ... "type": "event" } ]]
var contractAbi = eth.contract(AbiOfContract);
var contract = contractAbi.at(contractAddress);
contract.functionName('xxx', 'yyy')
// Call function with parameter
contract.function_name.sendTransacton(param1, param2, {from: '0xXXXXXXX...'})
// example in stackoverflow
//var getData = contract.myFunction.getData(function parameters);
//web3.eth.sendTransaction({to:Contractaddress, from:Accountaddress, data: getData});