brew tap ethereum/ethereum
brew install ethereum
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make geth
/usr/local/Cellar/ethereum/版本
geth --help
geth version
mkdir myeth
cd myeth
vi genesis.json
{
"config": {
"chainId": 666999,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
geth init "/Users/chy/Desktop/myeth/genesis.json" --datadir "/Users/chy/Desktop/myeth/chaindata"
geth --datadir "/Users/chy/Desktop/myeth/chaindata" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 666999 –allow-insecure-unlock
再次加上参数–allow-insecure-unlock,重新启动私有链。现在执行解锁账户命令即可成功了。
geth相关命令
geth --datadir "/Users/chy/Desktop/myeth/chaindata" --rpc --rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 666999 --allow-insecure-unlock
ps aux | grep "geth"
kill -9 54148
enode的信息是节点在网络上的身份标志。如果其他节点准备加入这个网络中,就需要提供自己的enode值。RPC访问可以通过http://127.0.0.1:8545或http://localhost:8545,IPC访问可以通过**\.\pipe\geth.ipc**命令。命令是以服务的形式持续运行的,需要再打开一个命令行窗口,但是原先的窗口不可以关闭。输入命令如下:
geth attach rpc:http://localhost:8545
geth --datadir . --networkid 666999 console
geth --datadir . --networkid 666999 console 2>output.log
tail -f output.log
personal.newAccount()
miner.setEtherbase("0x19b4029dad20824db6dc201437f9cac2a7e1fc5c")
eth.coinbase
eth.accounts
miner.start(8)
这时切换到之前创建私有链的命令行窗口中,可以看到挖矿过程的输出结果。这里是指我们当时创建的第一个窗口。
如果是第一次挖矿,需要生成DAG相关文件,这个需要花费一定的时间。第二次以后就不需要了。
eth.getBalance(eth.accounts[0])
挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户。
getBalance()返回值的单位是wei,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币
停止挖矿,命令如下
miner.stop()
personal.unlockAccount(eth.accounts[0])
发起交易,由账户0转账200以太币到账户1,命令如下
personal.unlockAccount(eth.accounts[0])
amount = web3.toWei(200,'ether')
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})
eth.getBlock("pending", true).transactions
要使交易被处理,必须要挖矿。这里我们启动挖矿,然后等待挖到一个区块之后就停止挖矿。命令如下:
miner.start(1);admin.sleepBlocks(1);miner.stop();
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
此时,交易已经生效,账户1应该已经收到了200个以太币了。