從頭至尾使用Geth的說明-3-geth參數說明和環境配置

 1.參數說明html

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)挖礦node

好比咱們通常打開geth console後,進行了某筆交易後,必需要本身運行miner.start()進行挖礦,而後再運行miner.stop()來中止挖礦web

這個過程是十分繁瑣的。,因此你能夠在geth console命令中使用--mine參數來進行挖礦:數據庫

礦工選項:
--mine 啓動挖礦 --miner.etherbase value 挖礦獎勵地址(默認=第一個建立的賬戶)(default: "0")

--mine表示啓動挖礦,--miner.etherbase=1代表挖礦獎勵給第二個建立的帳戶,默認爲0,則第一個建立的帳戶npm

而後你的命令能夠以下,舉個例子:json

$ 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]),會發現第二個帳戶的餘額一直在增長bootstrap

可是上面這種形式的挖礦,它是在沒有交易的時候也在進行挖礦,這就致使空區塊變得不少。而這種開發者模式的區塊鏈就能夠很好地解決這個問題:api

開發鏈選項:
  --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中測試幣的申請

相關文章
相關標籤/搜索