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参数说明和环境配置的更多相关文章

  1. 如何创建一个GETH节点(单节点,windows环境)

    所有命令都是在powershell上执行的 1.创建"创世块" 初始化配置 创建一个 hdgenesis.json文件,拷贝到geth根目录 {    "config&q ...

  2. 从头到尾使用Geth的说明-2-cli可用命令-有2个地方标红,之后查查源码后看看能不能解决

    geth - the go-ethereum command line interface 以太坊命令行接口 格式: geth [options] command [command options] ...

  3. Geth控制台使用及Web3.js使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3. Geth 控制台(REPL)实现了所有的web3 API及Admin API, 使用好 Geth 就是必修课.结合Geth命令用 ...

  4. Geth 控制台使用及 Web3.js 使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...

  5. 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 ...

  6. (转)Geth控制台使用及Web3.js使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...

  7. 以太坊geth主网全节点部署

    以太坊geth主网全节点部署 #环境 ubuntu 16.4 #硬盘500GB(目前占用200G) #客户端安装 # 查看下载页面最新版 # https://ethereum.github.io/go ...

  8. geth attach

    1. geth attachgeth attach ipc:\\.\pipe\geth.ipc2. "Error: insufficient funds for gas * price + ...

  9. geth

    >geth --networkid 123 --dev --datadir "d:/blockchain/project/ethereum" --rpc --rpcaddr ...

随机推荐

  1. MVC HtmlHelper用法

    HtmlHelper用来在视图中呈现 HTML 控件. 以下列表显示了当前可用的一些 HTML 帮助器. 本主题演示所列出的带有星号 (*) 的帮助器. ActionLink - Links to a ...

  2. HDFS的副本存放策略(全)

    HDFS的副本存放策略   HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduc ...

  3. Java 多态 ——一个案例 彻底搞懂它

    最近,发现基础真的hin重要.比如,Java中多态的特性,在学习中就是很难懂,比较抽象的概念.学的时候就犯糊涂,但日后会发现,基础在日常工作的理解中占有重要的角色. 下面,我将用一个代码实例,回忆和巩 ...

  4. OSX系统下配置Apache+PHP+MySQL+Navicat

    概述 OSX系统对于PHP运行非常友好,我们只需要进行简单的配置便可以开始进行使用,本篇文章将一步一步地介绍Apache.PHP和MySQL的安装与配置,为开始进行开发铺好路 Apache 启动Apa ...

  5. Python 利用字典实现类似 java switch case 功能

    def add(): print('add') def sub(): print('sub') def exit(): print('exit') choice = { '1' : add, '2' ...

  6. 【工具相关】web-HTML/CSS/JS Prettify的使用

    一,打开Sublime Text,代码如下面所示. 二,鼠标右键--->HTML/CSS/JS Prettify--->Prettify Code.代码如图所示,明显的代码变得整齐了.

  7. 从零开始学习html(三) 认识标签(第二部分)

    一.使用ul,添加新闻信息列表 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Ty ...

  8. 【转】巧用DOS tree命令+批处理 实现 指定文件 批量复制!

    转自:http://www.cnblogs.com/looky/archive/2010/01/24/1655292.html 今天一朋友叫我帮忙解决指定文件批量复制的问题,于是找了一大堆批处理命令, ...

  9. loadrunner 场景设计-制定负载测试计划

    by:授客 QQ:1033553122 场景设计-制定负载测试计划 步骤1.分析应用程序 你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉.这些应用程序的分析保证你在使用loadrunner进行 ...

  10. css文本属性用法总结

    稍稍总结了下css文本的一些属性用法,自己忘记的时候也可以用来查查,不用去查网站那么麻烦. 下面是部分总结,也希望对其他人有用 文本修饰 (1)text-decoration:  文本修饰(横线) 4 ...