僅使用 toml 配置文件在 –testnet 模式下執行 geth
我正在使用 Geth 配置文件 (*.toml) 來管理我的專用網路節點的配置。該命令
geth --config=config/<config-name>.toml
用於在每個堆棧(dev、prod 等)上執行節點prod 堆棧針對乙太坊主網路執行,在這種情況下,toml 配置很明顯(大部分是預設配置)。但是,對於開發堆棧,我需要提供一個可以
geth
在該--testnet
模式下執行的配置。我應該提供哪種
toml
配置來執行節點,就好像它是使用--testnet
標誌執行的一樣?我嘗試執行
geth --testnet dumpconfig
,但唯一的區別實際上是網路 ID,但這不足以針對 Ropsten 執行。關於如何在 TOML 文件中定義測試網配置的任何指示?謝謝你。
如果您打算建立自己的專用網路,我相信您最好從頭開始,即使用自己的創世文件和節點配置。但這並不是這裡真正關心的問題。
config.toml
在放棄之前,我花了很多時間嘗試使用該文件的所有內容。一些參數(如 networkId)已成功初始化,而其他參數未應用(未返回錯誤)。我想,儘管經過多次試驗,我仍然遺漏了一些內容。但是我可以分享我學到的東西,也許你會弄清楚。這是我的
config.toml
文件範例[Eth] NetworkId = 1515 [Node] DataDir = '/home/jfo/privateNetworks/geth_PoA/node1' HTTPHost = 'localhost' HTTPPort = 8501 HTTPModules = ['personal','db','eth','net','web3'] [Node.P2P] StaticNodes = ["enode://398e0338de829b887e050a1665bcaef2282ad7066054c8e1b8fe580e53e0fa36a8c62c4174b064a30f76ea26629317966a65100952d78e3ef5f6f176910fd322@127.0.0.1:30301"] ListenAddr = ':30311'
我從來沒有讓我的節點找到我的引導節點,並且我已經嘗試了
p2p/server.go
(link1,link2)中定義的所有可能的參數。也許數據類型[]*discover.Node
是導致問題的原因。我怎麼知道這些領域?通過 grepping geth 原始碼。這個命令
~/Downloads/go-ethereum-master$ grep -rwn "type Config struct" --exclude-dir=vendor/
會還給你
p2p/server.go:60:type Config struct { swarm/api/config.go:42:type Config struct { console/console.go:52:type Config struct { consensus/ethash/ethash.go:382:type Config struct { core/vm/interpreter.go:30:type Config struct { core/vm/runtime/runtime.go:34:type Config struct { whisper/whisperv5/config.go:19:type Config struct { whisper/whisperv6/config.go:20:type Config struct { dashboard/config.go:29:type Config struct { node/config.go:49:type Config struct { eth/gasprice/gasprice.go:34:type Config struct { eth/config.go:73:type Config struct { eth/gen_config.go:19: type Config struct { eth/gen_config.go:60: type Config struct {
例如在
cmd/geth/config.go
(連結) 你會發現type gethConfig struct { Eth eth.Config Shh whisper.Config Node node.Config Ethstats ethstatsConfig Dashboard dashboard.Config }
從那裡你可以跳轉到
eth/config.go
(連結)找到關於[Eth]
參數type Config struct { // The genesis block, which is inserted if the database is empty. // If nil, the Ethereum main net block is used. Genesis *core.Genesis `toml:",omitempty"` // Protocol options NetworkId uint64 // Network ID to use for selecting peers to connect to SyncMode downloader.SyncMode // Light client options LightServ int `toml:",omitempty"` // Maximum percentage of time allowed for serving LES requests LightPeers int `toml:",omitempty"` // Maximum number of LES client peers // Database options SkipBcVersionCheck bool `toml:"-"` DatabaseHandles int `toml:"-"` DatabaseCache int // Mining-related options Etherbase common.Address `toml:",omitempty"` MinerThreads int `toml:",omitempty"` ExtraData []byte `toml:",omitempty"` GasPrice *big.Int // Ethash options Ethash ethash.Config // Transaction pool options TxPool core.TxPoolConfig // Gas Price Oracle options GPO gasprice.Config // Enables tracking of SHA3 preimages in the VM EnablePreimageRecording bool // Miscellaneous options DocRoot string `toml:"-"` }
ropsten 的參數也在原始碼中定義