https://geth.ethereum.org/downloads/
略
Geth需要使用genesis.json文件生成创世区块,同时需要提供保存区块数据和账户私钥(keystore)的目录。
mkdir myeth cd myeth vim genesis.json { "config": { "chainId": 22, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0, "eip150Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x400", "extraData" : "", "gasLimit" : "0x2fefd8", "nonce" : "0x0000000000000032", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }在不同的网络上,chain ID不同:
chain ID:1 主网公链chain ID:2 Morden网络(仅对部分人开放)chain ID:3 Ropsten网络chain ID:4 Rinkeby网络chain ID 大于4的是私有网络
输入geth init命令、genesis.json文件、存储区块数据和keystore的文件夹,进行初始化。
geth --identity mytest --datadir /www/ethereum/eth/test init /www/ethereum/genesis.json注:路径需要换成你自己的路径
常用参数选项含义如下:
–identity:指定节点 ID,方便在一大群节点中识别出自己的节点; –rpc:表示开启 HTTP-RPC 服务; –rpcport:指定 HTTP-RPC 服务监听端口号(默认为 8545); –rpcaddr:指定IP地址; –rpcapi “eth,web3,miner,admin,personal,net” :这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。 –datadir:指定区块链数据的存储位置; –port:指定和其他节点连接所用的端口号(默认为 30303); –nodiscover:关闭节点发现机制,防止加入有同样初始配置的陌生节点; –maxpeers 0 如果你不想有人连上你的测试链,就用maxpeers 0。或者,你可以调整参数,当你确切的知道有几个节点要连接上来的时候。
enode的信息是节点在网络上的身份标志。如果其他节点准备加入这个网络中,就需要提供自己的enode值。 RPC访问可以通过http://127.0.0.1:8545或http://localhost:8545,IPC访问可以通过**\.\pipe\geth.ipc**命令。
命令是以服务的形式持续运行的,需要再打开一个命令行窗口,输入
Geth attach rpc:http://localhost:8545这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
eth:包含一些跟操作区块链相关的方法; net:包含一些查看p2p网络状态的方法; admin:包含一些与管理节点相关的方法; miner:包含启动和停止挖矿的一些方法; personal:主要包含一些管理账户的方法; txpool:包含一些查看交易内存池的方法; web3:包含了以上对象,还包含一些单位换算的方法。
进入以太坊 Javascript Console 后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。
personal.newAccount():创建账户; personal.unlockAccount():解锁账户; eth.accounts:枚举系统中的账户; eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei); eth.blockNumber:列出区块总数; eth.getTransaction():获取交易; eth.getBlock():获取区块; miner.start():开始挖矿; miner.stop():停止挖矿; web3.fromWei():Wei 换算成以太币; web3.toWei():以太币换算成 Wei; txpool.status:交易池中的状态; admin.addPeer():连接到其他节点;