Geth 又名Go Ethereum.是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目。Geth可以被安装在很多操作系统上,包括Windows、Linux、Mac的OSX、Android或者IOS系统.
Geth官网:https://geth.ethereum.org/
Geth的Github地址:https://github.com/ethereum/go-ethereum
geth的作用:Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户的新建编辑删除,开启挖矿,ether币的转移,智能合约的部署和执行等等
首先在官网下载
geth help
新建 genesis.json在geth所在文件夹中
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {
}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x47b760",
"difficulty": "0x00002",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
打开cmd进入geth所在文件夹,执行初始化命令
geth --datadir data init genesis.json
完成上一步后,创世区块已经产生,geth启动时,默认使用IPC协议,为确保geth节点可以通过RPC协议访问,命令中需要带上RPC参数。
命令窗口执行命令
geth --datadir "E:\Geth\data" --rpc -rpcapi "eth,web3,miner,admin,personal,net" --rpccorsdomain "*" --nodiscover --networkid 15
命令以服务的形式持续运行,因此执行其他命令需要打开一个新的命令行窗口。
IPC协议接入,打开另一个窗口输入下面命令,可以使用IPC协议接入到节点上
命令
geth attach ipc:\\.\pipe\geth.ipc
RPC协议接入,打开另一个窗口输入下面命令,可以使用RPC协议接入到节点上
命令
geth attach ipc:http://127.0.0.1:8545
使用 personal.newAccount()命令,根据提示输入密码,执行结果如下:
personal.newAccount()
. 账户创建后,需要确定使用coinbase账户或者etherbase账户。更改原有的coinbase账户地址,可以通过address.miner对象的setEtherBase函数进行操作。这个操作将使用新的账户替换原有的coinbase账户。更改结果将显示为ture或false。
miner.setEtherbase()
miner.start()
或者
miner.start(4)
start中的参数代表用于挖矿的线程数量。该命令将自动执行挖矿程序。
在第一个窗口里可以看到挖矿记录。
停止挖矿
miner.stop()
相关参考博客
geth account new
geth是以太坊的go语言客户端。创建账户只需要执行geth account new命令。
查询账户
geth account list
keyfiles存储在~/.ethereum/keystore路径下,一般按照创建时间顺序排列,格式如下:
$ cd .ethereum/keystore
$ ls
UTC–2018-07-08T21-07-05.374654217Z–df90109c1497bc6f3a0cd98cdc114ec89481447e
UTC–2018-07-08T21-27-48.567366972Z–0ad31ccaf888cf8499de4cdfa18f8d746a1d27e7
keyfile的文件内容如下:
{
"address":"c9a9b585d1b524867d4f3a6441b1bc46257393be",
"crypto":{
"cipher":"aes-128-ctr",
"ciphertext":"41f06179f48158091dcf0d03d8b1c3e18470633753ca41bc539c5282fd0ee9f5",
"cipherparams":{
"iv":"2354704e5a7ef350aedb24dccfe7b975"
},
"kdf":"scrypt",
"kdfparams":{
"dklen":32,
"n":262144,
"p":1,
"r":8,
"salt":"5b188d2fe19bc786cec6eac97f2e20eef44884a7d4270dc915f05be99e66a7c5"
},
"mac":"156e6b733a217b9fc8d51f98acc8d37b7d07de753cc8daf3c2ecd313f86f05de"
},
"id":"9ad16a5a-8bbb-4d82-891c-15279aa40553",
"version":3
}
使用geth控制台创建新账户,需要在控制台模式下开启geth交互模式。
执行命令
geth console 2>> file_to_log_output
personal.newAccount()
使用 personal.newAccount()命令,根据提示输入密码,执行结果如下: