从头到尾使用Geth的说明-3-geth参数说明和环境配置
1.参数说明
ETHEREUM选项:
--config value TOML 配置文件
--datadir "/home/user4/.ethereum" 数据库和keystore密钥的数据目录
--keystore keystore存放目录(默认在datadir内)
--nousb 禁用监控和管理USB硬件钱包
--networkid value 网络标识符(整型, =Frontier, =Morden (弃用), =Ropsten, =Rinkeby) (默认: )
--testnet Ropsten网络:预配置的POW(proof-of-work)测试网络
--rinkeby RRinkeby网络: 预配置的POA(proof-of-authority)测试网络
--syncmode "fast" 同步模式 ("fast", "full", or "light")
--gcmode value 区块链垃圾收集模式 ("full", "archive") (default: "full")
--ethstats value 上报ethstats service URL (nodename:secret@host:port)
--identity value 自定义节点名
--lightserv value 允许LES请求时间最大百分比( – )(默认值:)
--lightpeers value 最大LES client peers数量(默认值:)
--lightkdf 在KDF强度消费时降低key-derivation RAM&CPU使用
--whitelist value 使用逗号分隔的块编号到hash的映射来执行(<number>=<hash>) 开发链选项:
--dev 使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿
--dev.period value 开发者模式下挖矿周期 ( = 仅在交易pending时进行挖矿) (默认: ) ETHASH选项:
--ethash.cachedir ethash验证缓存目录(默认 = datadir目录内)
--ethash.cachesinmem value 在内存保存的最近的ethash缓存个数 (每个缓存16MB ) (默认: )
--ethash.cachesondisk value 在磁盘保存的最近的ethash缓存个数 (每个缓存16MB) (默认: )
--ethash.dagdir "/home/user4/.ethash" 存ethash DAGs目录 (default = inside home folder)
--ethash.dagsinmem value 在内存保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: )
--ethash.dagsondisk value 在磁盘保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: ) 交易池选项:
--txpool.locals value 将逗号分隔的帐户视为局部变量(没有刷新,包含优先级)
--txpool.nolocals 为本地提交交易禁用价格豁免
--txpool.journal value 本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp")
--txpool.rejournal value 重新生成本地交易日志的时间间隔 (默认: 1小时)
--txpool.pricelimit value 加入交易池的最小的gas价格限制(默认: )
--txpool.pricebump value 价格波动百分比(相对之前已有交易) (默认: )
--txpool.accountslots value 每个帐户保证可执行的最少交易槽数量 (默认: )
--txpool.globalslots value 所有帐户可执行的最大交易槽数量 (默认: )
--txpool.accountqueue value 每个帐户允许的最多非可执行交易槽数量 (默认: )
--txpool.globalqueue value 所有帐户非可执行交易最大槽数量 (默认: )
--txpool.lifetime value 非可执行交易最大入队时间(默认: 3小时) 性能调优选项:
--cache value 分配给内部缓存的内存的兆字节 (默认值为: )
--cache.database value 用于数据库io的缓存内存预留百分比 (default: )
--cache.trie value 用于trie缓存的缓存内存预留百分比 (default: )
--cache.gc value 用于trie修剪的缓存内存预留百分比 (default: )
--trie-cache-gens value 需要保存在内存中的trie节点代数 (default: ) 帐户选项:
--unlock value 需解锁账户用逗号分隔
--password value 用于非交互式密码输入的密码文件 API和控制台选项:
--rpc 启用HTTP-RPC服务器
--rpcaddr value HTTP-RPC服务器接口地址(默认值:"localhost")
--rpcport value HTTP-RPC服务器监听端口(默认值:)
--rpcapi value 基于HTTP-RPC接口提供的API
--ws 启用WS-RPC服务器
--wsaddr value WWS-RPC服务器监听接口地址(default: "localhost")
--wsport value WS-RPC服务器监听端口(默认值:)
--wsapi value 基于WS-RPC的接口提供的API
--wsorigins value websockets请求允许的源
--ipcdisable 禁用IPC-RPC服务器(默认是打开的)
--ipcpath 包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--rpccorsdomain value 允许跨域请求的逗号分隔域名列表(浏览器强制)
--rpcvhosts value 接受请求的虚拟主机名的逗号分隔列表(服务器强制的)。接受“*”通配符.(default: "localhost")
--jspath loadScript JavaScript加载脚本的根路径 (default: ".")
--exec value 执行JavaScript语句(需要结合console/attach命令一起使用)
--preload value 预加载到控制台的逗号分隔的JavaScript文件列表 网络选项:
--bootnodes value 用于P2P发现bootstrap的逗号分隔的enode url(为轻量级服务器设置v4+v5)
--bootnodesv4 value 用于P2P v4发现bootstrap的逗号分隔的enode url(轻服务器, 全节点)
--bootnodesv5 value 用于P2P v5发现bootstrap的逗号分隔的enode url(轻服务器, 轻节点)
--port value 网卡监听端口(默认值:)
--maxpeers value 最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:)
--maxpendpeers value 最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值:)
--nat value NAT端口映射机制 (any|none|upnp|pmp|extip:<IP>)(default: "any")
--nodiscover 禁用节点发现机制(手动添加节点)
--v5disc 启用实验性的RLPx V5(Topic发现)机制
--netrestrict value 限制对给定IP网络的网络通信(CIDR掩码)
--nodekey value P2P节点密钥文件
--nodekeyhex value 十六进制的P2P节点密钥(用于测试) 矿工选项:
--mine 启动挖矿
--miner.threads value 挖矿使用的CPU线程数量(默认值:)
--miner.notify value 逗号分隔的HTTP URL列表,用于通知新工作包
--miner.gasprice "" 挖矿交易的最低gas价格
--miner.gastarget value 被挖区块的目标gas的底层(default: ),即被记录的区块提供的gas要高于该值,否则不会被记录
--miner.gaslimit value 被挖区块的目标gas的顶层(default: ),即被记录的区块提供的gas要低于该值,否则不会被记录
--miner.etherbase value 挖矿奖励地址(默认=第一个创建的帐户)(default: "")
--miner.extradata value 矿工设置的额外块数据(default = client version)
--miner.recommit value 重新创建正在挖的块的时间间隔(default: 3s)
--miner.noverify 禁用远程密封验证 GAS价格选项:
--gpoblocks value 用于检查gas价格的最近生成的块的个数 (default: )
--gpopercentile value 建议的gas价格是一组最近的交易gas价格的该给定百分比的值(default: ) 虚拟机选项:
--vmdebug 记录VM及合约调试的有用信息
--vm.evm value 外部EVM配置(默认=内置解释器)
--vm.ewasm value 外部ewasm配置(默认=内置解释器) 日志和调试选项:
--fakepow 禁用proof-of-work验证
--nocompaction 在导入后禁用db压缩
--verbosity value 日志详细度:=silent, =error, =warn, =info, =debug, =detail (default: )
--vmodule value 每个模块详细度:以 <pattern>=<level>的逗号分隔列表 (比如 eth/*=6,p2p=5)
--backtrace value 请求特定日志记录堆栈跟踪 (比如 "block.go:271")
--debug 带有调用站点位置(文件和行号)的日志消息
--pprof 启用pprof HTTP服务器
--pprofaddr value pprof HTTP服务器监听接口 (default: "127.0.0.1")
--pprofport value pprof HTTP服务器监听端口 (default: 6060)
--memprofilerate value 按该给定频率打开memory profiling(default: 524288)
--blockprofilerate value 按指定频率打开block profiling (default: 0)
--cpuprofile value 将CPU profile写入指定文件
--trace value 将execution trace写入指定文件 METRICS和状态选项:
--metrics 启用metrics标准收集和报告
--metrics.influxdb 启用metrics导出/推送到外部的InfluxDB数据库
--metrics.influxdb.endpoint value 将metrics报告给InfluxDB数据库API端点(default: "http://localhost:8086")
--metrics.influxdb.database value 将报告的metrics推送到的InfluxDB数据库的名称(default: "geth")
--metrics.influxdb.username value 授权访问数据库的用户名 (default: "test")
--metrics.influxdb.password value 授权访问数据库的密码 (default: "test")
--metrics.influxdb.host.tag host 连接到所有测量值的InfluxDB数据库主机标记(default: "localhost") WHISPER(实验)选项:
--shh 启用Whisper
--shh.maxmessagesize value 可接受的最大的消息大小 (default: 1048576)
--shh.pow value 可接受的最小的POW (default: 0.2)
--shh.restrict-light 限制两个Whisper客户端之间的连接 弃用选项:
--minerthreads value 用于挖矿的CPU线程数(已弃用,现在使用--miner.threads) (default: 0)
--targetgaslimit value 被挖区块的目标gas底层(弃用, 现在使用--miner.gastarget) (default: 8000000)
--gasprice "1000000000" 挖去交易的最小gas价格(弃用, 现在使用--miner.gasprice)
--etherbase value 区块挖矿奖励的address(default = 第一个账户, 弃用, 现在使用--miner.etherbase) (default: "0")
--extradata value 被矿工设置的区块额外数据(default = client version, 弃用, 现在使用 --miner.extradata) 其他选项:
--override.constantinople value 手动指定constantinople分支区块,覆盖绑定设置 (default: 0)
--help, -h 显示帮助信息 版权:
Copyright 2013-2018 The go-ethereum Authors
在下面只介绍我自己使用过的参数设置,没用过的之后如果用再补充:
(1)挖矿
比如我们一般打开geth console后,进行了某笔交易后,必须要自己运行miner.start()进行挖矿,然后再运行miner.stop()来停止挖矿
这个过程是十分繁琐的。,所以你可以在geth console命令中使用--mine参数来进行挖矿:
矿工选项:
--mine 启动挖矿
--miner.etherbase value 挖矿奖励地址(默认=第一个创建的帐户)(default: "")
--mine表示启动挖矿,--miner.etherbase=1表明挖矿奖励给第二个创建的账户,默认为0,则第一个创建的账户
然后你的命令可以如下,举个例子:
$ geth --datadir data0 --networkid 1500 --port 61910 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8201 --mine miner.etherbase=1 dumpconfig > ./geth.toml
$ geth --config ./geth.toml console 2>>geth.log
这个时候你在终端中查看eth.mining的状态为true,表示正在挖矿;然后查看eth.gerBalance(eth.accounts[1]),会发现第二个账户的余额一直在增加
但是上面这种形式的挖矿,它是在没有交易的时候也在进行挖矿,这就导致空区块变得很多。而这种开发者模式的区块链就可以很好地解决这个问题:
开发链选项:
--dev 使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿
--dev.period value 开发者模式下挖矿周期 (0 = 仅在交易pending时进行挖矿) (默认: 0)
这两个参数十分有用,但是这个比较不好的一点就是,它下一次开启的时候,所有数据就被清空了;如果是个人进行学习的,这一点可能就不是很好
(2)解锁
一般要解锁某一个账户,我们就是在控制台运行personal.unlockAccount(eth.accounts[1],password,unlockTime),要手动解锁,但是如果我们希望某一个账户在环境运行时就一直是解锁状态的话,就使用帐户选项:
帐户选项:
--unlock value 需解锁账户用逗号分隔
--password value 用于非交互式密码输入的密码文件
下面举个例子:
$ geth --datadir data0 --networkid --port --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport --mine miner.etherbase= --unlock="0x39f03934f1d9afbff39a395364416e71eae375cd" --password="user" dumpconfig > ./geth.toml
$ geth --config ./geth.toml console 2>>geth.log
然后你在控制台查看就能看见personal.listWallets[1].status为unlocked
(3)日志
--verbosity value 日志详细度:=silent, =error, =warn, =info, =debug, =detail (default: )
一般这上面的配置我都不设置,就使用其默认的3,输出info选项
上面的运行命令中的:
$ geth --config ./geth.toml console >>geth.log
2>> geth.log 表示把控制台日志输出到geth.log文件
然后你就能够新开一个命令行终端,运行tail -f geth.log命令来实时显示日志,这样日志信息就不会出现在终端中,让你在终端运行命令的时候可读性较差
(4)私有链配置步骤
在做测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,需要搭建一个私有的以太坊网络
以太坊节点之间能够互相链接需要满足:
- 相同的协议版本,如rinkeby\ropsten\mainnet\private
- 相同的networkid,对应上面的协议为4/3/1/自定义
所以搭建私有网络最方便的方法就是通过geth命令中--networkid选项,设置一个与主网不同的networkid(主网的networkid为1)
举例:
首先是创建一个文件夹geth:
mkdir geth
cd geth
然后在当前目录下构建一个创世块文件:
{
"config": {
"chainId": ,
"homesteadBlock": ,
"eip155Block": ,
"eip158Block": ,
"ByzantiumBlock":
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x40000",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": {}
}
解释:
1》config
chainId与networkid的区别与相同:
chainid 在eip155里有用到,目前来看是做重放保护的
networkid 是区分网络的,只有networkid的值相同的网络才能相连
config.chainId // 区块链的ID,在 geth 命令中的 --networkid 参数需要与 chainId 的值一致
config.homesteadBlock // Homestead 硬分叉区块高度,指定从什么区块开始实现Homestead 硬分叉,这里设置为初始区块
config.eip155Block // 指明从那个节点开始实现eip155该协议,详情看ethereum/EIPs-155 Simple replay attack protection 35,36
config.eip158Block //指明从那个节点开始实现eip155该协议,详情看ethereum/EIPs-158 State clearing 被EIP-161取代
config.ByzantiumBlock//指明什么时候实现拜占庭分叉
2》coinbase//160bits,指明挖矿奖励节点是哪一个
3》gasLimit:gas
的消耗总量限制,用来限制区块能包含的交易信息总和。在这里我设置为最大值,这个地方是十分重要的,因为我看晚上的很多例子都是十分简单的,所以记录在区块中并没有耗费十分多的gas,所以这个地方就没有什么人强调它,但是当我想要部署一些十分大的合约的时候,就会告诉我out
of
gas等这类的信息,这样的信息一般都是你的gasLimit一开始设置得太小了。当然,好像说是gasLimit是可以改的,但是我改过,好像不太成功。不知道是不是我改的有问题,所以这里就不教你们(改成功的人可以告诉我)。所以最好的办法就是一开始把这里设置得大一些。
4》extraData//用来设置自己的专属信息,最多32字节长度
5》alloc // 预设一个账号以及账号的以太币数量
举例:
"alloc": {
"0xbdda794a097b41309700fdc5bdba880a7763c738": {
"balance": ""
}
},
注意,该账户要在init初始化创世区块后,环境配置前使用geth account import命令将其导入,在keystore文件夹下生成其UTC文件
6》nonce//一个64位的哈希,结合mixhash,它证明了在这个块上已经执行了足够多的计算:工作证明(Proof-of-Work, PoW)。nonce和mixhash的组合必须满足Yellowpaper 4.3.4.区块头有效性(44)中描述的一个数学条件,并允许验证块确实已被加密挖掘,因此,从这个方面来说,是有效的。nonce是一种加密安全的挖掘工作证明,它毫无疑问地证明在确定这个令牌值时已经花费了特定数量的计算。创世区块可随意设置
7》mixhash//一个256位的哈希,结合nonce,证明在这个块上已经执行了足够多的计算:工作证明(PoW)。nonce和mixhash的组合必须满足Yellowpaper 4.3.4.区块头有效性(44)中描述的一个数学条件。它允许去验证块是否真的被加密地挖掘了,因此,从这个方面来说,它是有效的。创世区块可随意设置
8》difficulty:初始块的难度值决定整个链的速度,如果难度过大,cpu挖矿就很难,这里设置较小难度0x40000。就是当我们想要调整整个链区块的上链速度时,我们就是通过这个值来设定的,难度值越大,区块的产生速度越慢
参考https://blog.csdn.net/ddffr/article/details/77095033
5ffffa 放大十倍 一分钟五个
2ffffd 五倍 一分钟五到十个之间个
bffff4 二十倍 六分钟挖了八个
3bfffc4 一百倍 六分钟两个
12bffed4 五百倍 15分钟没有一个
77fff88 两百倍 十分钟两个
9》parentHash//整个父块头的Keccak 256位哈希,是指向父块的指针。但因为这里是初始区块,无父区块,所以为0
10》timestamp//设置创世块的时间戳,不想设置可以为0
然后我们可以在终端查看生成的创世区块的信息,并得到第二个区块的信息来两相对比一下
> eth.getBlock()
{
difficulty: ,
extraData: "0x",
gasLimit: ,
gasUsed: ,
hash: "0xa0e580c6769ac3dd80894b2a256164a76b796839d2eb7f799ef6b9850ea5e82e",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x0000000000000000000000000000000000000000",
mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
nonce: "0x0000000000000042",
number: ,
parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: ,
stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
timestamp: ,
totalDifficulty: ,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
> eth.getBlock()
{
difficulty: ,
extraData: "0xd983010803846765746888676f312e31302e318664617277696e",
gasLimit: ,
gasUsed: ,
hash: "0xb1c860c895da7d1e912bba497d163e8f5e775362588520c1d6054b67dcfafd94",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x91b678137f09c8b4f294a14e88c09276522618cf",
mixHash: "0x73c409df7e1724390f9d800ac1837c5d83c4b30b44019b41470e32b33b466fbd",
nonce: "0x2df32680dccea609",
number: ,
parentHash: "0xa0e580c6769ac3dd80894b2a256164a76b796839d2eb7f799ef6b9850ea5e82e",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: ,
stateRoot: "0x29e67805ef5de0e2bad57ed29f78ca7c8613207bb8d0f5257a1ebe1508c37056",
timestamp: ,
totalDifficulty: ,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
然后就能够运行初始化创世块命令:
geth --datadir data0 init genesis.json

然后就会生成一个文件夹data0,存放区块信息以及用户的私钥信息
然后就可以启动该私有链了:
geth --datadir data0 --networkid --ipcdisable --port --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport dumpconfig > ./geth.toml
(5)配置
详细配置参数:
ETHEREUM选项:
--config value TOML 配置文件
--datadir "/home/user4/.ethereum" 数据库和keystore密钥的数据目录
--networkid value 网络标识符(整型, =Frontier, =Morden (弃用), =Ropsten, =Rinkeby) (默认: )
API和控制台选项:
--rpc 启用HTTP-RPC服务器
--rpcaddr value HTTP-RPC服务器接口地址(默认值:"localhost")
--rpcport value HTTP-RPC服务器监听端口(默认值:)
--rpcapi value 基于HTTP-RPC接口提供的API
--ws 启用WS-RPC服务器
--wsaddr value WWS-RPC服务器监听接口地址(default: "localhost")
--wsport value WS-RPC服务器监听端口(默认值:)
--wsapi value 基于WS-RPC的接口提供的API
--wsorigins value websockets请求允许的源
--ipcdisable 禁用IPC-RPC服务器(默认是打开的)
--ipcpath 包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--rpccorsdomain value 允许跨域请求的逗号分隔域名列表(浏览器强制)
--rpcvhosts value 接受请求的虚拟主机名的逗号分隔列表(服务器强制的)。接受“*”通配符.(default: "localhost")
--jspath loadScript JavaScript加载脚本的根路径 (default: ".")
--exec value 执行JavaScript语句(需要结合console/attach命令一起使用)
--preload value 预加载到控制台的逗号分隔的JavaScript文件列表
三种连接方式:
1.IPC 方式连接
geth attach ethereum/data0/geth.ipc 或
geth --ipcpath ~/.ethereum/geth.ipc attach
2.TCP 连接控制台——连接远程控制台
geth --exec 'eth.coinbase' attach http://localhost:8545
3.WebSocket 方式
geth attach ws://localhost:8546
下面是测试
上图,配置的是rpc,其实ipc和ws都有其默认值:

上图表示的在同一个区块链上进行的两种不同配置信息的设置
左边ethereum.toml的配置信息是:
geth --datadir data0 --networkid 1500 --ipcdisable --port 2345 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug,shh' --nodiscover --rpccorsdomain '*' --rpcport 61910 dumpconfig > ./ethereum.toml
然后右边geth.toml的配置信息是:
geth --datadir data0 --networkid 1500 --port 61910 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8201 dumpconfig > ./geth.toml
然后我们从图中就可以看见两者配置后配置信息中很明显的差别了:
—datadir //就是你初始化得到的区块所在的文件夹
—networkid //1=主网, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby(默认: 1),所以你只要写除此之外的数字即可,当然,要与你genesis.json中设置的chainid的值相等。只有networkid的值相同的网络才能相连
—ipcdisable //ethereum.toml中则无参数 IPCPath = “geth.ipc",不能使用IPC连接。禁用IPC-RPC服务器,web3有三种方法来连接区块链以访问其API,有RPC、IPC、WS,这里的意思应该就是不允许通过IPC的方式连接,在这里我们选择的连接方式是RPC —nodiscover // ethereum.toml则参数为 NoDiscovery = true,geth.toml没有设置这个,则为NoDiscovery = false,说明该节点能够被发现。只是能不能被发现的区别,都是可以被连接的
--port //设置的是参数 ListenAddr = “:2345”,即该进程在服务器中占用的端口。该链占用的端口,其他链要与这个链相连,其节点的端口就是它
—rpc //启用HTTP-RPC服务器,就是使用RPC的连接方式
—rpcapi //后面设置的信息都会出现在参数HTTPModules 中,ethereum.toml比geth.toml多一个shh。声明该私有链所提供给外界调用的接口API
—rpccorsdomain //允许跨域请求的域名列表,”*”说明没有限制
--rpcport //设置的是参数 HTTPPort = 61910,即要通过http方式接入区块链的端口号。访问该HTTP-RPC服务器的端口,通过该端口才能调用API
--ws的使用其实也是差不多的,如下面的例子:
geth --datadir data0 --networkid --port --rpc --rpcaddr 10.240.203.84 --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport --ws --wsorigins '*' --wsapi 'eth,net,web3,admin,personal,miner,debug,bzz,shh' --shh dumpconfig > ./geth.toml
可以安装 websocket 测试工具 wscat
npm install -g wscat
然后用其来测试 Websocket:
wscat -c ws://127.0.0.1:8546
⚠️上面的例子中没有使用--rpcaddr参数,那么就默认使用localhost,即你可以使用http://localhost:8202来连接该私有链,但是如果你想要从另一个电脑来连接这台电脑上的私有链时,一定要记得设置为--rpcaddr 本机IP,否则你是连接不上的
dumpconfig > ./geth.toml:因为这些配置文件比较长,将其记录在geth.toml中,下次调用时即可直接运行geth.toml
运行:
geth --config ./geth.toml console >>geth.log
console:启动起命令行,没有的话,你将不能在终端输入命令


2>>geth.log:启动及挖矿等的日志信息将会写到geth.log中,这样就不会有挖矿信息一直出现,想要输入语句是总是被刷走的烦恼
然后通过:
tail -f geth.log
来查看日志文件
(6)测试网络
--testnet Ropsten网络:预配置的POW(proof-of-work)测试网络
--rinkeby Rinkeby网络: 预配置的POA(proof-of-authority)测试网络
上面的例子都是在本地创建一个私有链,网上其实也有两个可用的私有链网络,你也可以使用--networkid=3/4来声明连接的是测试网络,或者使用--testnet/--rinkeby参数声明
具体使用可见本博客:
rinkeby测试网络的连接
Rinkeby中测试币的申请
从头到尾使用Geth的说明-3-geth参数说明和环境配置的更多相关文章
- 如何创建一个GETH节点(单节点,windows环境)
所有命令都是在powershell上执行的 1.创建"创世块" 初始化配置 创建一个 hdgenesis.json文件,拷贝到geth根目录 { "config&q ...
- 从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决
geth - the go-ethereum command line interface 以太坊命令行接口 格式: geth [options] command [command options] ...
- Geth控制台使用及Web3.js使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3. Geth 控制台(REPL)实现了所有的web3 API及Admin API, 使用好 Geth 就是必修课.结合Geth命令用 ...
- Geth 控制台使用及 Web3.js 使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...
- Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约
目录 目录 1.什么是 Truffle? 2.适合 Truffle 开发的客户端 3.Truffle的源代码地址 4.如何安装? 4.1.安装 Go-Ethereum 1.7.2 4.2.安装 Tru ...
- (转)Geth控制台使用及Web3.js使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...
- 以太坊geth主网全节点部署
以太坊geth主网全节点部署 #环境 ubuntu 16.4 #硬盘500GB(目前占用200G) #客户端安装 # 查看下载页面最新版 # https://ethereum.github.io/go ...
- geth attach
1. geth attachgeth attach ipc:\\.\pipe\geth.ipc2. "Error: insufficient funds for gas * price + ...
- geth
>geth --networkid 123 --dev --datadir "d:/blockchain/project/ethereum" --rpc --rpcaddr ...
随机推荐
- MVC HtmlHelper用法
HtmlHelper用来在视图中呈现 HTML 控件. 以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ActionLink - Links to a ...
- HDFS的副本存放策略(全)
HDFS的副本存放策略 HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduc ...
- Java 多态 ——一个案例 彻底搞懂它
最近,发现基础真的hin重要.比如,Java中多态的特性,在学习中就是很难懂,比较抽象的概念.学的时候就犯糊涂,但日后会发现,基础在日常工作的理解中占有重要的角色. 下面,我将用一个代码实例,回忆和巩 ...
- OSX系统下配置Apache+PHP+MySQL+Navicat
概述 OSX系统对于PHP运行非常友好,我们只需要进行简单的配置便可以开始进行使用,本篇文章将一步一步地介绍Apache.PHP和MySQL的安装与配置,为开始进行开发铺好路 Apache 启动Apa ...
- Python 利用字典实现类似 java switch case 功能
def add(): print('add') def sub(): print('sub') def exit(): print('exit') choice = { '1' : add, '2' ...
- 【工具相关】web-HTML/CSS/JS Prettify的使用
一,打开Sublime Text,代码如下面所示. 二,鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示,明显的代码变得整齐了.
- 从零开始学习html(三) 认识标签(第二部分)
一.使用ul,添加新闻信息列表 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Ty ...
- 【转】巧用DOS tree命令+批处理 实现 指定文件 批量复制!
转自:http://www.cnblogs.com/looky/archive/2010/01/24/1655292.html 今天一朋友叫我帮忙解决指定文件批量复制的问题,于是找了一大堆批处理命令, ...
- loadrunner 场景设计-制定负载测试计划
by:授客 QQ:1033553122 场景设计-制定负载测试计划 步骤1.分析应用程序 你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉.这些应用程序的分析保证你在使用loadrunner进行 ...
- css文本属性用法总结
稍稍总结了下css文本的一些属性用法,自己忘记的时候也可以用来查查,不用去查网站那么麻烦. 下面是部分总结,也希望对其他人有用 文本修饰 (1)text-decoration: 文本修饰(横线) 4 ...