大數據

ETH geth私鏈搭建linux安裝(以太坊是一個用於分散式應用程序的全球性開源平臺)

一.下載對應系統的geth包

https://ethereum.github.io/go-ethereum/downloads/

二.下載安裝包

https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.18-f5382591.tar.gz

三.解壓安裝包

 tar -zxvf geth-linux-amd64-1.9.18-f5382591.tar.gz 

四.進入文件夾

cd geth-linux-amd64-1.9.18-f5382591

五.啟動參數詳細介紹

以太坊客戶端Geth命令用法-參數詳解
命令用法
geth [選項] 命令 [命令選項] [參數…]
命令:
account 管理賬戶
attach 啟動交互式JavaScript環境(連接到節點)
bug 上報bug Issues
console 啟動交互式JavaScript環境
copydb 從文件夾創建本地鏈
dump Dump(分析)一個特定的塊存儲
dumpconfig 顯示配置值
export 導出區塊鏈到文件
import 導入一個區塊鏈文件
init 啟動並初始化一個新的創世紀塊
js 執行指定的JavaScript文件(多個)
license 顯示許可信息
makecache 生成ethash驗證緩存(用於測試)
makedag 生成ethash 挖礦DAG(用於測試)
monitor 監控和可視化節點指標
removedb 刪除區塊鏈和狀態數據庫
version 打印版本號
wallet 管理Ethereum預售錢包
help,h 顯示一個命令或幫助一個命令列表
ETHEREUM 配置選項:
--config value TOML 配置文件
--datadir “xxx” 數據庫和keystore密鑰的數據目錄
--keystore keystore存放目錄(默認在datadir內)
--nousb 禁用監控和管理USB硬件錢包
--networkid value 網絡標識符(整型, 1=Frontier, 2=Morden (棄用), 3=Ropsten, 4=Rinkeby) (默認: 1)
--testnet Ropsten網絡:預先配置的POW(proof-of-work)測試網絡
--rinkeby Rinkeby網絡: 預先配置的POA(proof-of-authority)測試網絡
--syncmode "fast" 同步模式 ("fast", "full", or "light")
--ethstats value 上報ethstats service URL (nodename:secret@host:port)
--identity value 自定義節點名
--lightserv value 允許LES請求時間最大百分比(0 – 90)(默認值:0)
--lightpeers value 最大LES client peers數量(默認值:20)
--lightkdf 在KDF強度消費時降低key-derivation RAM&CPU使用
開發者(模式)選項:
--dev 使用POA共識網絡,默認預分配一個開發者賬戶並且會自動開啟挖礦。
--dev.period value 開發者模式下挖礦週期 (0 = 僅在交易時) (默認: 0)
交易池選項:
--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 分配給內部緩存的內存MB數量,緩存值(最低16 mb /數據庫強制要求)(默認:128)
--trie-cache-gens value 保持在內存中產生的trie node數量(默認: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 WS-RPC服務器監聽接口地址(默認值:“localhost”)
--wsport value WS-RPC服務器監聽端口(默認值:8546)
--wsapi value 基於WS-RPC的接口提供的API
--wsorigins value websockets請求允許的源
--ipcdisable 禁用IPC-RPC服務器
--ipcpath 包含在datadir裡的IPC socket/pipe文件名(轉義過的顯式路徑)
--rpccorsdomain value 允許跨域請求的域名列表(逗號分隔)(瀏覽器強制)
--jspath loadScript JavaScript加載腳本的根路徑(默認值:“.”)
--exec value 執行JavaScript語句(只能結合console/attach使用)
--preload value 預加載到控制檯的JavaScript文件列表(逗號分隔)
網絡選項:
--bootnodes value 用於P2P發現引導的enode urls(逗號分隔)(對於light servers用v4+v5代替)
--bootnodesv4 value 用於P2P v4發現引導的enode urls(逗號分隔) (light server, 全節點)
--bootnodesv5 value 用於P2P v5發現引導的enode urls(逗號分隔) (light server, 輕節點)
--port value 網卡監聽端口(默認值:30303)
--maxpeers value 最大的網絡節點數量(如果設置為0,網絡將被禁用)(默認值:25)
--maxpendpeers value 最大嘗試連接的數量(如果設置為0,則將使用默認值)(默認值:0)
--nat value NAT端口映射機制 (any|none|upnp|pmp|extip:<IP>) (默認: “any”)
--nodiscover 禁用節點發現機制(手動添加節點)
--v5disc 啟用實驗性的RLPx V5(Topic發現)機制
--nodekey value P2P節點密鑰文件
--nodekeyhex value 十六進制的P2P節點密鑰(用於測試)
礦工選項:
--mine 打開挖礦
--minerthreads value 挖礦使用的CPU線程數量(默認值:8)
--etherbase value 挖礦獎勵地址(默認=第一個創建的帳戶)(默認值:“0”)
--targetgaslimit value 目標gas限制:設置最低gas限制(低於這個不會被挖?) (默認值:“4712388”)
--gasprice value 挖礦接受交易的最低gas價格
--extradata value 礦工設置的額外塊數據(默認=client version)
GAS 價格選項:
--gpoblocks value 用於檢查gas價格的最近塊的個數 (默認: 10)
--gpopercentile value 建議gas價參考最近交易的gas價的百分位數,(默認: 50)
虛擬機的選項:
--vmdebug 記錄VM及合約調試信息
日誌和調試選項:
--metrics 啟用metrics收集和報告
--fakepow 禁用proof-of-work驗證
--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服務器監聽接口(默認值:127.0.0.1)
--pprofport value pprof HTTP服務器監聽端口(默認值:6060)
--memprofilerate value 按指定頻率打開memory profiling (默認:524288)
--blockprofilerate value 按指定頻率打開block profiling (默認值:0)
--cpuprofile value 將CPU profile寫入指定文件
--trace value 將execution trace寫入指定文件
WHISPER 實驗選項:
--shh 啟用Whisper
--shh.maxmessagesize value 可接受的最大的消息大小 (默認值: 1048576)
--shh.pow value 可接受的最小的POW (默認值: 0.2)
棄用選項:
--fast 開啟快速同步
--light 啟用輕客戶端模式
其他選項:
–help, -h 顯示幫助

六.下載火星節點配置文件
由於國內以太坊節點非常稀少,並且國內外網絡不通暢等原因導致國內服務器同步區塊數據非常緩慢還容易丟包,由EthFans發起的星火節點計劃可以幫助我們加快同步速度。

下載節點列表:https://upyun-assets.ethfans.org/uploads/doc/file/b0c5266be42f43f1baf7207c432bede6.json?_upd=static-nodes.json

下載後將static-nodes.json文件放在區塊存儲目錄下即可。

7.創建初始賬戶

geth --datadir /ethereum account new

8.創建創世文件

{
"config": {
    "chainId": 100,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "ethash": {}
},
"nonce": "0x42",
"timestamp": "0x0",
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
"gasLimit": "0x1388",
"difficulty": "0x1",
"alloc": {
    "0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A": {
        "balance": "100000000000000000000000000000000"
    }
}

}

其中的 alloc 屬性是給賬戶分配餘額 。切記,餘額是以wei為單位的,就是balance值要除以10的18次方才等於eth的數量。
9.初始化創世區塊

geth --datadir /ethereum init /ethereum/genesis.json

10.生成配置文件夾

geth --datadir '/ethereum' --networkid 100  --cache 512 --rpc --rpcaddr '0.0.0.0' --rpcport 8545 --rpcapi 'db,eth,net,web3,personal' --rpccorsdomain '*'  --allow-insecure-unlock  dumpconfig > /ethereum/geth_config

--networkid指定網絡ID 1代表主網絡 2代表測試網絡 沒有提供則默認測試網絡,亂寫代表創建私有鏈
11.後臺運行

nohup geth --config /ethereum/geth_config  >> /var/log/geth.log  2>&1  &

12.監控區塊同步日誌

tail -f /var/log/geth.log

13.進入控制檯

geth attach /ethereum/geth.ipc

14.使用命令查看當前同步情況

eth.syncing
如果返回的是false,證明同步完成了,可以使用當前節點。
否則會返回同步狀態

currentBlock為當前下載到的區塊高度,請注意,下載塊不等於同步數據了,下載塊是一個簡單快速的過程,只驗證相關的工作量證明,在下載塊的同時geth也在一直下載所有的區塊數據,當數據下載完成後屆時才會處理曾經發生過的所有交易,重新組裝整個鏈。

15.api調用推薦地址

各編程語言現成類庫
Java:https://github.com/web3j/web3j
Python:https://github.com/ethereum/web3.py
PHP:https://github.com/sc0Vu/web3.php
NodeJs:https://github.com/ethereum/web3.js

16.後期推出各大主流幣交易所錢包處理代碼

Leave a Reply

Your email address will not be published. Required fields are marked *