| 
									
										
										
										
											2017-04-14 10:29:00 +02:00
										 |  |  | // Copyright 2017 The go-ethereum Authors | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | // This file is part of the go-ethereum library. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // The go-ethereum library is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | // it under the terms of the GNU Lesser General Public License as published by | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | // (at your option) any later version. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // The go-ethereum library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
					
						
							|  |  |  | // GNU Lesser General Public License for more details. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // You should have received a copy of the GNU Lesser General Public License | 
					
						
							|  |  |  | // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package eth | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"math/big" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"os/user" | 
					
						
							|  |  |  | 	"path/filepath" | 
					
						
							|  |  |  | 	"runtime" | 
					
						
							| 
									
										
										
										
											2018-02-05 18:40:32 +02:00
										 |  |  | 	"time" | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/common" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/common/hexutil" | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 	"github.com/ethereum/go-ethereum/consensus/ethash" | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	"github.com/ethereum/go-ethereum/core" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/eth/downloader" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/eth/gasprice" | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/params" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // DefaultConfig contains default settings for use on the Ethereum main net. | 
					
						
							|  |  |  | var DefaultConfig = Config{ | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 	SyncMode: downloader.FastSync, | 
					
						
							|  |  |  | 	Ethash: ethash.Config{ | 
					
						
							|  |  |  | 		CacheDir:       "ethash", | 
					
						
							|  |  |  | 		CachesInMem:    2, | 
					
						
							|  |  |  | 		CachesOnDisk:   3, | 
					
						
							|  |  |  | 		DatasetsInMem:  1, | 
					
						
							|  |  |  | 		DatasetsOnDisk: 2, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	NetworkId:     1, | 
					
						
							| 
									
										
										
										
											2018-02-05 14:41:53 +01:00
										 |  |  | 	LightPeers:    100, | 
					
						
							| 
									
										
										
										
											2018-02-05 18:40:32 +02:00
										 |  |  | 	DatabaseCache: 768, | 
					
						
							|  |  |  | 	TrieCache:     256, | 
					
						
							|  |  |  | 	TrieTimeout:   5 * time.Minute, | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 	GasPrice:      big.NewInt(18 * params.Shannon), | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 13:40:47 +03:00
										 |  |  | 	TxPool: core.DefaultTxPoolConfig, | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	GPO: gasprice.Config{ | 
					
						
							| 
									
										
										
										
											2018-01-10 12:57:36 +00:00
										 |  |  | 		Blocks:     20, | 
					
						
							|  |  |  | 		Percentile: 60, | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	home := os.Getenv("HOME") | 
					
						
							|  |  |  | 	if home == "" { | 
					
						
							|  |  |  | 		if user, err := user.Current(); err == nil { | 
					
						
							|  |  |  | 			home = user.HomeDir | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if runtime.GOOS == "windows" { | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 		DefaultConfig.Ethash.DatasetDir = filepath.Join(home, "AppData", "Ethash") | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 		DefaultConfig.Ethash.DatasetDir = filepath.Join(home, ".ethash") | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //go:generate gencodec -type Config -field-override configMarshaling -formats toml -out gen_config.go | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2017-04-25 14:31:15 +03:00
										 |  |  | 	NetworkId uint64 // Network ID to use for selecting peers to connect to | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	SyncMode  downloader.SyncMode | 
					
						
							| 
									
										
										
										
											2018-02-05 18:40:32 +02:00
										 |  |  | 	NoPruning bool | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// 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 | 
					
						
							| 
									
										
										
										
											2018-02-05 18:40:32 +02:00
										 |  |  | 	TrieCache          int | 
					
						
							|  |  |  | 	TrieTimeout        time.Duration | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Mining-related options | 
					
						
							|  |  |  | 	Etherbase    common.Address `toml:",omitempty"` | 
					
						
							|  |  |  | 	MinerThreads int            `toml:",omitempty"` | 
					
						
							|  |  |  | 	ExtraData    []byte         `toml:",omitempty"` | 
					
						
							|  |  |  | 	GasPrice     *big.Int | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Ethash options | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 	Ethash ethash.Config | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 13:40:47 +03:00
										 |  |  | 	// Transaction pool options | 
					
						
							|  |  |  | 	TxPool core.TxPoolConfig | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | 	// Gas Price Oracle options | 
					
						
							|  |  |  | 	GPO gasprice.Config | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Enables tracking of SHA3 preimages in the VM | 
					
						
							|  |  |  | 	EnablePreimageRecording bool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Miscellaneous options | 
					
						
							| 
									
										
										
										
											2017-11-24 22:10:27 +08:00
										 |  |  | 	DocRoot string `toml:"-"` | 
					
						
							| 
									
										
										
										
											2017-04-12 16:27:23 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type configMarshaling struct { | 
					
						
							|  |  |  | 	ExtraData hexutil.Bytes | 
					
						
							|  |  |  | } |