当前位置: 首页 > 编程日记 > 正文

从头到尾使用Geth的说明-3-geth参数说明和环境配置

1.参数说明

ETHEREUM选项:--config value                        TOML 配置文件--datadir "/home/user4/.ethereum"  数据库和keystore密钥的数据目录--keystore                            keystore存放目录(默认在datadir内)--nousb                               禁用监控和管理USB硬件钱包--networkid value                     网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)--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请求时间最大百分比(090)(默认值:0)--lightpeers value                    最大LES client peers数量(默认值:100)--lightkdf                            在KDF强度消费时降低key-derivation RAM&CPU使用--whitelist value                     使用逗号分隔的块编号到hash的映射来执行(<number>=<hash>)开发链选项:--dev               使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿--dev.period value  开发者模式下挖矿周期 (0 = 仅在交易pending时进行挖矿) (默认: 0)ETHASH选项:--ethash.cachedir                         ethash验证缓存目录(默认 = datadir目录内)--ethash.cachesinmem value                在内存保存的最近的ethash缓存个数  (每个缓存16MB ) (默认: 2)--ethash.cachesondisk value               在磁盘保存的最近的ethash缓存个数 (每个缓存16MB) (默认: 3)--ethash.dagdir "/home/user4/.ethash"  存ethash DAGs目录 (default = inside home folder)--ethash.dagsinmem value                  在内存保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 1)--ethash.dagsondisk value                 在磁盘保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 2)交易池选项:--txpool.locals value        将逗号分隔的帐户视为局部变量(没有刷新,包含优先级)--txpool.nolocals            为本地提交交易禁用价格豁免--txpool.journal value       本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp")--txpool.rejournal value     重新生成本地交易日志的时间间隔 (默认: 1小时)--txpool.pricelimit value    加入交易池的最小的gas价格限制(默认: 1)--txpool.pricebump value     价格波动百分比(相对之前已有交易) (默认: 10)--txpool.accountslots value  每个帐户保证可执行的最少交易槽数量  (默认: 16)--txpool.globalslots value   所有帐户可执行的最大交易槽数量 (默认: 4096)--txpool.accountqueue value  每个帐户允许的最多非可执行交易槽数量 (默认: 64)--txpool.globalqueue value   所有帐户非可执行交易最大槽数量  (默认: 1024)--txpool.lifetime value      非可执行交易最大入队时间(默认: 3小时)性能调优选项:--cache value            分配给内部缓存的内存的兆字节 (默认值为: 1024)--cache.database value   用于数据库io的缓存内存预留百分比 (default: 50)--cache.trie value       用于trie缓存的缓存内存预留百分比 (default: 25)--cache.gc value         用于trie修剪的缓存内存预留百分比 (default: 25)--trie-cache-gens value  需要保存在内存中的trie节点代数 (default: 120)帐户选项:--unlock value    需解锁账户用逗号分隔--password value  用于非交互式密码输入的密码文件API和控制台选项:--rpc                  启用HTTP-RPC服务器--rpcaddr value        HTTP-RPC服务器接口地址(默认值:"localhost")--rpcport value        HTTP-RPC服务器监听端口(默认值:8545)--rpcapi value         基于HTTP-RPC接口提供的API--ws                   启用WS-RPC服务器--wsaddr value         WWS-RPC服务器监听接口地址(default: "localhost")--wsport value         WS-RPC服务器监听端口(默认值:8546)--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          网卡监听端口(默认值:30303)--maxpeers value      最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)--maxpendpeers value  最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值: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线程数量(默认值:0)--miner.notify value           逗号分隔的HTTP URL列表,用于通知新工作包--miner.gasprice "1000000000"  挖矿交易的最低gas价格--miner.gastarget value        被挖区块的目标gas的底层(default: 8000000),即被记录的区块提供的gas要高于该值,否则不会被记录--miner.gaslimit value         被挖区块的目标gas的顶层(default: 8000000),即被记录的区块提供的gas要低于该值,否则不会被记录--miner.etherbase value        挖矿奖励地址(默认=第一个创建的帐户)(default: "0")--miner.extradata value        矿工设置的额外块数据(default = client version)--miner.recommit value         重新创建正在挖的块的时间间隔(default: 3s)--miner.noverify               禁用远程密封验证GAS价格选项:--gpoblocks value      用于检查gas价格的最近生成的块的个数 (default: 20)--gpopercentile value  建议的gas价格是一组最近的交易gas价格的该给定百分比的值(default: 60)虚拟机选项:--vmdebug         记录VM及合约调试的有用信息--vm.evm value    外部EVM配置(默认=内置解释器)--vm.ewasm value  外部ewasm配置(默认=内置解释器)日志和调试选项:--fakepow                 禁用proof-of-work验证--nocompaction            在导入后禁用db压缩--verbosity value         日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)--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: "0")

--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 1500 --port 61910 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8201 --mine miner.etherbase=1 --unlock="0x39f03934f1d9afbff39a395364416e71eae375cd" --password="user" dumpconfig > ./geth.toml
$ geth --config ./geth.toml console 2>>geth.log

然后你在控制台查看就能看见personal.listWallets[1].status为unlocked

(3)日志

--verbosity value         日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)

一般这上面的配置我都不设置,就使用其默认的3,输出info选项

上面的运行命令中的:

$ geth --config ./geth.toml console 2>>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": 1500,"homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0,"ByzantiumBlock": 0},"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,指明挖矿奖励节点是哪一个
3gasLimit:gas 的消耗总量限制,用来限制区块能包含的交易信息总和。在这里我设置为最大值,这个地方是十分重要的,因为我看晚上的很多例子都是十分简单的,所以记录在区块中并没有耗费十分多的gas,所以这个地方就没有什么人强调它,但是当我想要部署一些十分大的合约的时候,就会告诉我out of gas等这类的信息,这样的信息一般都是你的gasLimit一开始设置得太小了。当然,好像说是gasLimit是可以改的,但是我改过,好像不太成功。不知道是不是我改的有问题,所以这里就不教你们(改成功的人可以告诉我)。所以最好的办法就是一开始把这里设置得大一些。


4》extraData//用来设置自己的专属信息,最多32字节长度
5》alloc // 预设一个账号以及账号的以太币数量
举例:

    "alloc": {"0xbdda794a097b41309700fdc5bdba880a7763c738": {"balance": "1000"}},

注意,该账户要在init初始化创世区块后,环境配置前使用geth account import命令将其导入,在keystore文件夹下生成其UTC文件

6nonce//一个64位的哈希,结合mixhash,它证明了在这个块上已经执行了足够多的计算:工作证明(Proof-of-Work, PoW)。nonce和mixhash的组合必须满足Yellowpaper 4.3.4.区块头有效性(44)中描述的一个数学条件,并允许验证块确实已被加密挖掘,因此,从这个方面来说,是有效的。nonce是一种加密安全的挖掘工作证明,它毫无疑问地证明在确定这个令牌值时已经花费了特定数量的计算。创世区块可随意设置

7mixhash//一个256位的哈希,结合nonce,证明在这个块上已经执行了足够多的计算:工作证明(PoW)。nonce和mixhash的组合必须满足Yellowpaper 4.3.4.区块头有效性(44)中描述的一个数学条件。它允许去验证块是否真的被加密地挖掘了,因此,从这个方面来说,它是有效的。创世区块可随意设置

8difficulty:初始块的难度值决定整个链的速度,如果难度过大,cpu挖矿就很难,这里设置较小难度0x40000。就是当我们想要调整整个链区块的上链速度时,我们就是通过这个值来设定的,难度值越大,区块的产生速度越慢
参考https://blog.csdn.net/ddffr/article/details/77095033

        5ffffa 6291450 放大十倍 一分钟五个2ffffd 3145725 五倍 一分钟五到十个之间个bffff4 12582900 二十倍 六分钟挖了八个3bfffc4 62914500 一百倍 六分钟两个12bffed4 314572500 五百倍 15分钟没有一个77fff88 125829000 两百倍 十分钟两个

9parentHash//整个父块头的Keccak 256位哈希,是指向父块的指针。但因为这里是初始区块,无父区块,所以为0

10timestamp//设置创世块的时间戳,不想设置可以为0

然后我们可以在终端查看生成的创世区块的信息,并得到第二个区块的信息来两相对比一下

> eth.getBlock(0)
{difficulty: 262144,extraData: "0x",gasLimit: 4294967295,gasUsed: 0,hash: "0xa0e580c6769ac3dd80894b2a256164a76b796839d2eb7f799ef6b9850ea5e82e",logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",miner: "0x0000000000000000000000000000000000000000",mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",nonce: "0x0000000000000042",number: 0,parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",size: 508,stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",timestamp: 0,totalDifficulty: 262144,transactions: [],transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",uncles: []
}
> eth.getBlock(1) {difficulty: 249472,extraData: "0xd983010803846765746888676f312e31302e318664617277696e",gasLimit: 4290772993,gasUsed: 0,hash: "0xb1c860c895da7d1e912bba497d163e8f5e775362588520c1d6054b67dcfafd94",logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",miner: "0x91b678137f09c8b4f294a14e88c09276522618cf",mixHash: "0x73c409df7e1724390f9d800ac1837c5d83c4b30b44019b41470e32b33b466fbd",nonce: "0x2df32680dccea609",number: 1,parentHash: "0xa0e580c6769ac3dd80894b2a256164a76b796839d2eb7f799ef6b9850ea5e82e",receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",size: 538,stateRoot: "0x29e67805ef5de0e2bad57ed29f78ca7c8613207bb8d0f5257a1ebe1508c37056",timestamp: 1531378117,totalDifficulty: 511616,transactions: [],transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",uncles: [] }

然后就能够运行初始化创世块命令:

geth --datadir data0 init genesis.json


然后就会生成一个文件夹data0,存放区块信息以及用户的私钥信息

然后就可以启动该私有链了:

geth --datadir data0 --networkid 314590 --ipcdisable --port 61910 --rpc --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8201 dumpconfig > ./geth.toml 


(5)配置

详细配置参数:

ETHEREUM选项:--config value                        TOML 配置文件--datadir "/home/user4/.ethereum"  数据库和keystore密钥的数据目录--networkid value                     网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)
API和控制台选项:--rpc                  启用HTTP-RPC服务器--rpcaddr value        HTTP-RPC服务器接口地址(默认值:"localhost")--rpcport value        HTTP-RPC服务器监听端口(默认值:8545)--rpcapi value         基于HTTP-RPC接口提供的API--ws                   启用WS-RPC服务器--wsaddr value         WWS-RPC服务器监听接口地址(default: "localhost")--wsport value         WS-RPC服务器监听端口(默认值:8546)--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 2345  //设置的是参数 ListenAddr = “:2345”,即该进程在服务器中占用的端口。该链占用的端口,其他链要与这个链相连,其节点的端口就是它
—rpc  //启用HTTP-RPC服务器,就是使用RPC的连接方式
—rpcapi  //后面设置的信息都会出现在参数HTTPModules 中,ethereum.toml比geth.toml多一个shh。声明该私有链所提供给外界调用的接口API
—rpccorsdomain  //允许跨域请求的域名列表,”*”说明没有限制
--rpcport 61910 //设置的是参数 HTTPPort = 61910,即要通过http方式接入区块链的端口号。访问该HTTP-RPC服务器的端口,通过该端口才能调用API

--ws的使用其实也是差不多的,如下面的例子:

geth --datadir data0 --networkid 1500 --port 61911 --rpc --rpcaddr 10.240.203.84 --rpcapi 'eth,net,web3,admin,personal,miner,debug' --rpccorsdomain '*' --rpcport 8202 --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 2>>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中测试币的申请

转载于:https://www.cnblogs.com/wanghui-garcia/p/10256520.html

相关文章:

OpenSSL中对称加密算法DES常用函数使用举例

主要包括3个文件&#xff1a; 1. cryptotest.h:#ifndef _CRYPTOTEST_H_ #define _CRYPTOTEST_H_#include <string>using namespace std;typedef enum {GENERAL 0,ECB,CBC,CFB,OFB,TRIPLE_ECB,TRIPLE_CBC }CRYPTO_MODE;string DES_Encrypt(const string cleartext, const…

从原理到落地,七大维度读懂协同过滤推荐算法

作者丨gongyouliu来源 | 大数据与人工智能导语&#xff1a;本文会从协同过滤思想简介、协同过滤算法原理介绍、离线协同过滤算法的工程实现、近实时协同过滤算法的工程实现、协同过滤算法应用场景、协同过滤算法的优缺点、协同过滤算法落地需要关注的几个问题等7个方面来讲述。…

sql查询语句优化需要注意的几点

为了获得稳定的执行性能&#xff0c;SQL语句越简单越好。对复杂的SQL语句&#xff0c;要设法对之进行简化。 常见的简化规则如下&#xff1a; 1&#xff09;不要有超过5个以上的表连接&#xff08;JOIN&#xff09; 2&#xff09;考虑使用临时表或表变量存放中间结果。 3&#…

决策树算法原理(ID3,C4.5)

决策树算法原理(CART分类树) CART回归树 决策树的剪枝 决策树可以作为分类算法&#xff0c;也可以作为回归算法&#xff0c;同时特别适合集成学习比如随机森林。 1. 决策树ID3算法的信息论基础 1970年昆兰找到了用信息论中的熵来度量决策树的决策选择过程&#xff0c;昆兰把这…

对称加密算法之RC4介绍及OpenSSL中RC4常用函数使用举例

RC4是一种对称密码算法&#xff0c;它属于对称密码算法中的序列密码(streamcipher,也称为流密码)&#xff0c;它是可变密钥长度&#xff0c;面向字节操作的流密码。 RC4是流密码streamcipher中的一种&#xff0c;为序列密码。RC4加密算法是Ron Rivest在1987年设计出的密钥长度…

SpringMVC中实现的token,防表单重复提交

一&#xff1a;首先创建一个token处理类 &#xff0c;这里的类名叫 TokenHandlerprivate static Logger logger Logger.getLogger(TokenHandler.class);static Map<String, String> springmvc_token new HashMap<String, String>();//生成一个唯一值的tokenSupp…

利用CxImage实现编解码Gif图像代码举例

Gif(Graphics Interchange Format&#xff0c;图形交换格式)是由CompuServe公司在1987年开发的图像文件格式&#xff0c;分为87a和89a两种版本。Gif是基于LZW算法的无损压缩算法。Gif图像是基于颜色表的&#xff0c;最多只支持8位(256色)。Gif减少了图像调色板中的色彩数量&…

SpringBoot b2b2c 多用户商城系统 ssm b2b2c

来源&#xff1a; SpringBoot b2b2c 多用户商城系统 ssm b2b2c用java实施的电子商务平台太少了&#xff0c;使用spring cloud技术构建的b2b2c电子商务平台更少&#xff0c;大型企业分布式互联网电子商务平台&#xff0c;推出PC微信APP云服务的云商平台系统&#xff0c;其中包括…

AI“生死”落地:谁有资格入选AI Top 30+案例?

2019 年&#xff0c;人工智能应用落地的重要性正在逐步得到验证&#xff0c;这是关乎企业生死攸关的一环。科技巨头、AI 独角兽还有起于草莽的创业公司在各领域进行着一场多方角斗。进行平台布局的科技巨头们&#xff0c;正在加快承载企业部署 AI 应用的步伐&#xff0c;曾经无…

liunx 下su 和sudo 的区别

一. 使用 su 命令临时切换用户身份1、su 的适用条件和威力su命令就是切换用户的工具&#xff0c;怎么理解呢&#xff1f;比如我们以普通用户beinan登录的&#xff0c;但要添加用户任务&#xff0c;执行useradd &#xff0c;beinan用户没有这个权限&#xff0c;而这个权限恰恰由…

非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

RSA算法&#xff0c;在1977年由Ron Rivest、Adi Shamirh和LenAdleman&#xff0c;在美国的麻省理工学院开发完成。这个算法的名字&#xff0c;来源于三位开发者的名字。RSA已经成为公钥数据加密标准。 RSA属于公开密钥密码体制。公开密钥体制就是产生两把密钥&#xff0c;一把…

依图科技CEO朱珑:“智能密度”对AI发展意味着什么?

8月9日&#xff0c;由中央网信办、工业和信息化部、公安部联合指导&#xff0c;厦门市政府主办的“中国人工智能峰会”于厦门召开。中国工程院院士、北京大学教授高文&#xff0c;依图科技创始人兼CEO朱珑博士等出席峰会并发表了主题演讲。当前&#xff0c;人工智能正在扮演越来…

Office 2016使用NTKO OFFICE控件提示“文件存取错误”的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 之前使用NTKO&#xff0c;电脑安装的说OFFICE2007,但是前2天电脑固态硬盘坏了 &#xff0c;重新安装了系统&#xff0c;安装的说win10和office2016&#xff0c;再访问网站使用ntko时&#xff0c;却提示“文件存取错误”&…

如何制作一个类似Tiny Wings的游戏 Cocos2d-x 2.1.4

在第一篇《如何使用CCRenderTexture创建动态纹理》基础上&#xff0c;增加创建动态山丘&#xff0c;原文《How To Create A Game Like Tiny Wings with Cocos2D 2.X Part 1》&#xff0c;在这里继续以Cocos2d-x进行实现。有关源码、资源等在文章下面给出了地址。 步骤如下&…

腾讯优图开源业界首个3D医疗影像大数据预训练模型

整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;近日&#xff0c;腾讯优图首个医疗AI深度学习预训练模型 MedicalNet 正式对外开源。这也是全球第一个提供多种 3D 医疗影像专用预训练模型的项目&#xff0c;将为全球医疗AI发展提供基础。许多研…

接口冲突的一种解决方法

问题描述&#xff1a;在一个大的项目中往往会包括很多模块&#xff0c;会有不同的部门或公司来负责实现某个模块&#xff0c;也有可能有第三方或客户的参与。假如他们都用到了某个开源软件&#xff0c;底层模块根据自身的需求对这个开源软件进行了修改或裁减。上层也用到了此开…

程序员:请你不要对业务「置之不理」

成长是条孤独的路&#xff0c;一个人会走得更快&#xff1b;有志同道合者同行&#xff0c;会走得更远。本篇内容整理自 21 天鲲鹏新青年计划线上分享内容。鲲鹏新青年计划是由 TGO 鲲鹏会组织的线上分享活动&#xff0c;希望能帮助更多同学一起学习、成长。12 月 28 日&#xf…

史上最简单的人脸识别项目登上GitHub趋势榜

来源 | GitHub Trending整理 | Freesia译者 | TommyZihao出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;导读&#xff1a;近日&#xff0c;一个名为 face_recognition 的人脸识别项目登上了 GitHub Trending 趋势榜&#xff0c;赚足了眼球。自开源至截稿&#xff0…

Centos 64位 Install certificate on apache 即走https协议

2019独角兽企业重金招聘Python工程师标准>>> 一: 先要apache 请求ssl证书的csr 一下是步骤&#xff1a; 重要注意事项 An Important Note Before You Start 在生成CSR文件时同时生成您的私钥&#xff0c;如果您丢了私钥或忘了私钥密码&#xff0c;则颁发 证书给您…

C/C++中“#”和“##”的作用和用法

在C/C的宏中&#xff0c;”#”的功能是将其后面的宏参数进行字符串化操作(Stringfication)&#xff0c;简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。而”##”被称为连接符(concatenator)&#xff0c;用来将两个子串Token连接为一个Token。注意这里连接…

国贫县山西永和:“一揽子”保险“保”脱贫

永和是吕梁山特困连片地区的深度贫困县&#xff0c;生产生活条件极差。 范丽芳 摄 永和是吕梁山特困连片地区的深度贫困县&#xff0c;生产生活条件极差。 范丽芳 摄 中新网太原1月16日电 题&#xff1a;国贫县山西永和&#xff1a;“一揽子”保险“保”脱贫 作者范丽芳 李海金…

内存泄漏检测工具VLD在VS2010中的使用举例

Visual LeakDetector(VLD)是一款用于Visual C的免费的内存泄露检测工具。它的特点有&#xff1a;(1)、它是免费开源的&#xff0c;采用LGPL协议&#xff1b;(2)、它可以得到内存泄露点的调用堆栈&#xff0c;可以获取到所在文件及行号&#xff1b;(3)、它可以得到泄露内存的完整…

天下武功,唯快不破,论推荐系统的“实时性”

作者 | 王喆转载自知乎王喆的机器学习笔记导读&#xff1a;周星驰著名的电影《功夫》里面有一句著名的台词——“天下武功&#xff0c;无坚不摧&#xff0c;唯快不破”。如果说推荐系统的架构是那把“无坚不摧”的“玄铁重剑”&#xff0c;那么推荐系统的实时性就是“唯快不破”…

新疆兵团开展迎新春“送文化下基层”慰问演出活动

演员表演舞蹈。 戚亚平 摄 演员表演舞蹈。 戚亚平 摄演员表演豫剧《花木兰》选段。 戚亚平 摄为物业公司员工送春联。 戚亚平 摄公安民警收到春联后留影。 戚亚平 摄走进退休职工家中表演节目。 戚亚平 摄为退休职工送春联。 戚亚平 摄 1月16日&#xff0c;2019年迎新春新疆生产…

Python爬取B站5000条视频,揭秘为何千万人为它流泪

作者 | Yura编辑 | 胡巍巍来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;导语&#xff1a;我们特邀作者Yura爬取B站5000条视频&#xff0c;为你揭秘电影《哪吒》的更多“优秀梗”&#xff0c;看完还能Get新技能&#xff0c;赶快往下滑吧。这个夏天&#xff0c;《哪…

父域与子域之的信任关系

搭了一个测试环境&#xff0c;做一个父、子域间信任关系的测试&#xff0c;过程如下&#xff1a;两台测试服务器&#xff0c;主域为primary.com&#xff0c;子域为child.primary.com客户机Clientpri加入父域&#xff0c;客户机Clientcli加入子域&#xff0c;父域中有一个用户为…

Ubantu安装maven

2019独角兽企业重金招聘Python工程师标准>>> 一、下载maven http://maven.apache.org/download.cgi 二、解压到指定目录 tar -xvf apache-maven-3.6.0-bin.tar.gz 三、添加环境变量 cd /etc vi profile 向其中添加 export M2_HOMEmaven所在目录 export M2$M2_HOME/b…

Leptonica在VS2010中的编译及简单使用举例

在tesseract-ocr中会用到leptonica库&#xff0c;这里对leptonica简单介绍下。Leptonica是一个开源的图像处理和图像分析库&#xff0c;它的license是BSD 2-clause。它主要包括的操作有&#xff1a;位图操作、仿射变换、形态学操作、连通区域填充、图像变换及像素掩模、融合、增…

IJCAI 2019精选论文一览,从底层到应用都有了

作者 | 神经小姐姐来源 | HyperAI超神经&#xff08;ID: HyperAI&#xff09;导语&#xff1a;为期一周的 IJCAI 第一天议程已经圆满结束。在前三天的工作坊上&#xff0c;全球各地人工智能行业人士&#xff0c;在此讨论 AI 在各个领域与方向的最新研究成果与未来动向。超神经特…

UITableView 添加长按手势UILongPressGestureRecognizer

2019独角兽企业重金招聘Python工程师标准>>> 给UITableView 添加长按手势&#xff0c;识别长按哪一行。 长按手势类UILongPressGestureRecognizer&#xff0c; 属性minimumPressDuration表示最短长按的时间 添加手势代码&#xff1a; UILongPressGestureRecogniz…