mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 09:23:48 +00:00
cmd, consensus, eth: split ethash related config to it own
This commit is contained in:
parent
bb57f1f1e5
commit
533e03ea23
6 changed files with 99 additions and 87 deletions
|
|
@ -217,27 +217,27 @@ var (
|
||||||
EthashCachesInMemoryFlag = cli.IntFlag{
|
EthashCachesInMemoryFlag = cli.IntFlag{
|
||||||
Name: "ethash.cachesinmem",
|
Name: "ethash.cachesinmem",
|
||||||
Usage: "Number of recent ethash caches to keep in memory (16MB each)",
|
Usage: "Number of recent ethash caches to keep in memory (16MB each)",
|
||||||
Value: eth.DefaultConfig.EthashCachesInMem,
|
Value: eth.DefaultConfig.Ethash.CachesInMem,
|
||||||
}
|
}
|
||||||
EthashCachesOnDiskFlag = cli.IntFlag{
|
EthashCachesOnDiskFlag = cli.IntFlag{
|
||||||
Name: "ethash.cachesondisk",
|
Name: "ethash.cachesondisk",
|
||||||
Usage: "Number of recent ethash caches to keep on disk (16MB each)",
|
Usage: "Number of recent ethash caches to keep on disk (16MB each)",
|
||||||
Value: eth.DefaultConfig.EthashCachesOnDisk,
|
Value: eth.DefaultConfig.Ethash.CachesOnDisk,
|
||||||
}
|
}
|
||||||
EthashDatasetDirFlag = DirectoryFlag{
|
EthashDatasetDirFlag = DirectoryFlag{
|
||||||
Name: "ethash.dagdir",
|
Name: "ethash.dagdir",
|
||||||
Usage: "Directory to store the ethash mining DAGs (default = inside home folder)",
|
Usage: "Directory to store the ethash mining DAGs (default = inside home folder)",
|
||||||
Value: DirectoryString{eth.DefaultConfig.EthashDatasetDir},
|
Value: DirectoryString{eth.DefaultConfig.Ethash.DatasetDir},
|
||||||
}
|
}
|
||||||
EthashDatasetsInMemoryFlag = cli.IntFlag{
|
EthashDatasetsInMemoryFlag = cli.IntFlag{
|
||||||
Name: "ethash.dagsinmem",
|
Name: "ethash.dagsinmem",
|
||||||
Usage: "Number of recent ethash mining DAGs to keep in memory (1+GB each)",
|
Usage: "Number of recent ethash mining DAGs to keep in memory (1+GB each)",
|
||||||
Value: eth.DefaultConfig.EthashDatasetsInMem,
|
Value: eth.DefaultConfig.Ethash.DatasetsInMem,
|
||||||
}
|
}
|
||||||
EthashDatasetsOnDiskFlag = cli.IntFlag{
|
EthashDatasetsOnDiskFlag = cli.IntFlag{
|
||||||
Name: "ethash.dagsondisk",
|
Name: "ethash.dagsondisk",
|
||||||
Usage: "Number of recent ethash mining DAGs to keep on disk (1+GB each)",
|
Usage: "Number of recent ethash mining DAGs to keep on disk (1+GB each)",
|
||||||
Value: eth.DefaultConfig.EthashDatasetsOnDisk,
|
Value: eth.DefaultConfig.Ethash.DatasetsOnDisk,
|
||||||
}
|
}
|
||||||
// Transaction pool settings
|
// Transaction pool settings
|
||||||
TxPoolNoLocalsFlag = cli.BoolFlag{
|
TxPoolNoLocalsFlag = cli.BoolFlag{
|
||||||
|
|
@ -910,22 +910,22 @@ func setTxPool(ctx *cli.Context, cfg *core.TxPoolConfig) {
|
||||||
|
|
||||||
func setEthash(ctx *cli.Context, cfg *eth.Config) {
|
func setEthash(ctx *cli.Context, cfg *eth.Config) {
|
||||||
if ctx.GlobalIsSet(EthashCacheDirFlag.Name) {
|
if ctx.GlobalIsSet(EthashCacheDirFlag.Name) {
|
||||||
cfg.EthashCacheDir = ctx.GlobalString(EthashCacheDirFlag.Name)
|
cfg.Ethash.CacheDir = ctx.GlobalString(EthashCacheDirFlag.Name)
|
||||||
}
|
}
|
||||||
if ctx.GlobalIsSet(EthashDatasetDirFlag.Name) {
|
if ctx.GlobalIsSet(EthashDatasetDirFlag.Name) {
|
||||||
cfg.EthashDatasetDir = ctx.GlobalString(EthashDatasetDirFlag.Name)
|
cfg.Ethash.DatasetDir = ctx.GlobalString(EthashDatasetDirFlag.Name)
|
||||||
}
|
}
|
||||||
if ctx.GlobalIsSet(EthashCachesInMemoryFlag.Name) {
|
if ctx.GlobalIsSet(EthashCachesInMemoryFlag.Name) {
|
||||||
cfg.EthashCachesInMem = ctx.GlobalInt(EthashCachesInMemoryFlag.Name)
|
cfg.Ethash.CachesInMem = ctx.GlobalInt(EthashCachesInMemoryFlag.Name)
|
||||||
}
|
}
|
||||||
if ctx.GlobalIsSet(EthashCachesOnDiskFlag.Name) {
|
if ctx.GlobalIsSet(EthashCachesOnDiskFlag.Name) {
|
||||||
cfg.EthashCachesOnDisk = ctx.GlobalInt(EthashCachesOnDiskFlag.Name)
|
cfg.Ethash.CachesOnDisk = ctx.GlobalInt(EthashCachesOnDiskFlag.Name)
|
||||||
}
|
}
|
||||||
if ctx.GlobalIsSet(EthashDatasetsInMemoryFlag.Name) {
|
if ctx.GlobalIsSet(EthashDatasetsInMemoryFlag.Name) {
|
||||||
cfg.EthashDatasetsInMem = ctx.GlobalInt(EthashDatasetsInMemoryFlag.Name)
|
cfg.Ethash.DatasetsInMem = ctx.GlobalInt(EthashDatasetsInMemoryFlag.Name)
|
||||||
}
|
}
|
||||||
if ctx.GlobalIsSet(EthashDatasetsOnDiskFlag.Name) {
|
if ctx.GlobalIsSet(EthashDatasetsOnDiskFlag.Name) {
|
||||||
cfg.EthashDatasetsOnDisk = ctx.GlobalInt(EthashDatasetsOnDiskFlag.Name)
|
cfg.Ethash.DatasetsOnDisk = ctx.GlobalInt(EthashDatasetsOnDiskFlag.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1160,8 +1160,8 @@ func MakeChain(ctx *cli.Context, stack *node.Node) (chain *core.BlockChain, chai
|
||||||
engine = ethash.NewFaker()
|
engine = ethash.NewFaker()
|
||||||
if !ctx.GlobalBool(FakePoWFlag.Name) {
|
if !ctx.GlobalBool(FakePoWFlag.Name) {
|
||||||
engine = ethash.New(
|
engine = ethash.New(
|
||||||
stack.ResolvePath(eth.DefaultConfig.EthashCacheDir), eth.DefaultConfig.EthashCachesInMem, eth.DefaultConfig.EthashCachesOnDisk,
|
stack.ResolvePath(eth.DefaultConfig.Ethash.CacheDir), eth.DefaultConfig.Ethash.CachesInMem, eth.DefaultConfig.Ethash.CachesOnDisk,
|
||||||
stack.ResolvePath(eth.DefaultConfig.EthashDatasetDir), eth.DefaultConfig.EthashDatasetsInMem, eth.DefaultConfig.EthashDatasetsOnDisk,
|
stack.ResolvePath(eth.DefaultConfig.Ethash.DatasetDir), eth.DefaultConfig.Ethash.DatasetsInMem, eth.DefaultConfig.Ethash.DatasetsOnDisk,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -320,15 +320,25 @@ func MakeDataset(block uint64, dir string) {
|
||||||
d.release()
|
d.release()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EthashConfig are the configuration parameters of the ethash.
|
||||||
|
type EthashConfig struct {
|
||||||
|
CacheDir string
|
||||||
|
CachesInMem int
|
||||||
|
CachesOnDisk int
|
||||||
|
DatasetDir string
|
||||||
|
DatasetsInMem int
|
||||||
|
DatasetsOnDisk int
|
||||||
|
|
||||||
|
// Miscellaneous options
|
||||||
|
PowFake bool
|
||||||
|
PowTest bool
|
||||||
|
PowShared bool
|
||||||
|
}
|
||||||
|
|
||||||
// Ethash is a consensus engine based on proot-of-work implementing the ethash
|
// Ethash is a consensus engine based on proot-of-work implementing the ethash
|
||||||
// algorithm.
|
// algorithm.
|
||||||
type Ethash struct {
|
type Ethash struct {
|
||||||
cachedir string // Data directory to store the verification caches
|
EthashConfig
|
||||||
cachesinmem int // Number of caches to keep in memory
|
|
||||||
cachesondisk int // Number of caches to keep on disk
|
|
||||||
dagdir string // Data directory to store full mining datasets
|
|
||||||
dagsinmem int // Number of mining datasets to keep in memory
|
|
||||||
dagsondisk int // Number of mining datasets to keep on disk
|
|
||||||
|
|
||||||
caches map[uint64]*cache // In memory caches to avoid regenerating too often
|
caches map[uint64]*cache // In memory caches to avoid regenerating too often
|
||||||
fcache *cache // Pre-generated cache for the estimated future epoch
|
fcache *cache // Pre-generated cache for the estimated future epoch
|
||||||
|
|
@ -365,16 +375,18 @@ func New(cachedir string, cachesinmem, cachesondisk int, dagdir string, dagsinme
|
||||||
log.Info("Disk storage enabled for ethash DAGs", "dir", dagdir, "count", dagsondisk)
|
log.Info("Disk storage enabled for ethash DAGs", "dir", dagdir, "count", dagsondisk)
|
||||||
}
|
}
|
||||||
return &Ethash{
|
return &Ethash{
|
||||||
cachedir: cachedir,
|
EthashConfig: EthashConfig{
|
||||||
cachesinmem: cachesinmem,
|
CacheDir: cachedir,
|
||||||
cachesondisk: cachesondisk,
|
CachesInMem: cachesinmem,
|
||||||
dagdir: dagdir,
|
CachesOnDisk: cachesondisk,
|
||||||
dagsinmem: dagsinmem,
|
DatasetDir: dagdir,
|
||||||
dagsondisk: dagsondisk,
|
DatasetsInMem: dagsinmem,
|
||||||
caches: make(map[uint64]*cache),
|
DatasetsOnDisk: dagsondisk,
|
||||||
datasets: make(map[uint64]*dataset),
|
},
|
||||||
update: make(chan struct{}),
|
caches: make(map[uint64]*cache),
|
||||||
hashrate: metrics.NewMeter(),
|
datasets: make(map[uint64]*dataset),
|
||||||
|
update: make(chan struct{}),
|
||||||
|
hashrate: metrics.NewMeter(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -382,12 +394,14 @@ func New(cachedir string, cachesinmem, cachesondisk int, dagdir string, dagsinme
|
||||||
// purposes.
|
// purposes.
|
||||||
func NewTester() *Ethash {
|
func NewTester() *Ethash {
|
||||||
return &Ethash{
|
return &Ethash{
|
||||||
cachesinmem: 1,
|
EthashConfig: EthashConfig{
|
||||||
caches: make(map[uint64]*cache),
|
CachesInMem: 1,
|
||||||
datasets: make(map[uint64]*dataset),
|
},
|
||||||
tester: true,
|
caches: make(map[uint64]*cache),
|
||||||
update: make(chan struct{}),
|
datasets: make(map[uint64]*dataset),
|
||||||
hashrate: metrics.NewMeter(),
|
tester: true,
|
||||||
|
update: make(chan struct{}),
|
||||||
|
hashrate: metrics.NewMeter(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -436,7 +450,7 @@ func (ethash *Ethash) cache(block uint64) []uint32 {
|
||||||
current, future := ethash.caches[epoch], (*cache)(nil)
|
current, future := ethash.caches[epoch], (*cache)(nil)
|
||||||
if current == nil {
|
if current == nil {
|
||||||
// No in-memory cache, evict the oldest if the cache limit was reached
|
// No in-memory cache, evict the oldest if the cache limit was reached
|
||||||
for len(ethash.caches) > 0 && len(ethash.caches) >= ethash.cachesinmem {
|
for len(ethash.caches) > 0 && len(ethash.caches) >= ethash.CachesInMem {
|
||||||
var evict *cache
|
var evict *cache
|
||||||
for _, cache := range ethash.caches {
|
for _, cache := range ethash.caches {
|
||||||
if evict == nil || evict.used.After(cache.used) {
|
if evict == nil || evict.used.After(cache.used) {
|
||||||
|
|
@ -473,7 +487,7 @@ func (ethash *Ethash) cache(block uint64) []uint32 {
|
||||||
ethash.lock.Unlock()
|
ethash.lock.Unlock()
|
||||||
|
|
||||||
// Wait for generation finish, bump the timestamp and finalize the cache
|
// Wait for generation finish, bump the timestamp and finalize the cache
|
||||||
current.generate(ethash.cachedir, ethash.cachesondisk, ethash.tester)
|
current.generate(ethash.CacheDir, ethash.CachesOnDisk, ethash.tester)
|
||||||
|
|
||||||
current.lock.Lock()
|
current.lock.Lock()
|
||||||
current.used = time.Now()
|
current.used = time.Now()
|
||||||
|
|
@ -481,7 +495,7 @@ func (ethash *Ethash) cache(block uint64) []uint32 {
|
||||||
|
|
||||||
// If we exhausted the future cache, now's a good time to regenerate it
|
// If we exhausted the future cache, now's a good time to regenerate it
|
||||||
if future != nil {
|
if future != nil {
|
||||||
go future.generate(ethash.cachedir, ethash.cachesondisk, ethash.tester)
|
go future.generate(ethash.CacheDir, ethash.CachesOnDisk, ethash.tester)
|
||||||
}
|
}
|
||||||
return current.cache
|
return current.cache
|
||||||
}
|
}
|
||||||
|
|
@ -498,7 +512,7 @@ func (ethash *Ethash) dataset(block uint64) []uint32 {
|
||||||
current, future := ethash.datasets[epoch], (*dataset)(nil)
|
current, future := ethash.datasets[epoch], (*dataset)(nil)
|
||||||
if current == nil {
|
if current == nil {
|
||||||
// No in-memory dataset, evict the oldest if the dataset limit was reached
|
// No in-memory dataset, evict the oldest if the dataset limit was reached
|
||||||
for len(ethash.datasets) > 0 && len(ethash.datasets) >= ethash.dagsinmem {
|
for len(ethash.datasets) > 0 && len(ethash.datasets) >= ethash.DatasetsInMem {
|
||||||
var evict *dataset
|
var evict *dataset
|
||||||
for _, dataset := range ethash.datasets {
|
for _, dataset := range ethash.datasets {
|
||||||
if evict == nil || evict.used.After(dataset.used) {
|
if evict == nil || evict.used.After(dataset.used) {
|
||||||
|
|
@ -536,7 +550,7 @@ func (ethash *Ethash) dataset(block uint64) []uint32 {
|
||||||
ethash.lock.Unlock()
|
ethash.lock.Unlock()
|
||||||
|
|
||||||
// Wait for generation finish, bump the timestamp and finalize the cache
|
// Wait for generation finish, bump the timestamp and finalize the cache
|
||||||
current.generate(ethash.dagdir, ethash.dagsondisk, ethash.tester)
|
current.generate(ethash.DatasetDir, ethash.DatasetsOnDisk, ethash.tester)
|
||||||
|
|
||||||
current.lock.Lock()
|
current.lock.Lock()
|
||||||
current.used = time.Now()
|
current.used = time.Now()
|
||||||
|
|
@ -544,7 +558,7 @@ func (ethash *Ethash) dataset(block uint64) []uint32 {
|
||||||
|
|
||||||
// If we exhausted the future dataset, now's a good time to regenerate it
|
// If we exhausted the future dataset, now's a good time to regenerate it
|
||||||
if future != nil {
|
if future != nil {
|
||||||
go future.generate(ethash.dagdir, ethash.dagsondisk, ethash.tester)
|
go future.generate(ethash.DatasetDir, ethash.DatasetsOnDisk, ethash.tester)
|
||||||
}
|
}
|
||||||
return current.dataset
|
return current.dataset
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/consensus/ethash"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/eth"
|
"github.com/ethereum/go-ethereum/eth"
|
||||||
"github.com/ethereum/go-ethereum/internal/jsre"
|
"github.com/ethereum/go-ethereum/internal/jsre"
|
||||||
|
|
@ -96,7 +97,9 @@ func newTester(t *testing.T, confOverride func(*eth.Config)) *tester {
|
||||||
ethConf := ð.Config{
|
ethConf := ð.Config{
|
||||||
Genesis: core.DeveloperGenesisBlock(15, common.Address{}),
|
Genesis: core.DeveloperGenesisBlock(15, common.Address{}),
|
||||||
Etherbase: common.HexToAddress(testAddress),
|
Etherbase: common.HexToAddress(testAddress),
|
||||||
PowTest: true,
|
Ethash: ethash.EthashConfig{
|
||||||
|
PowTest: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
if confOverride != nil {
|
if confOverride != nil {
|
||||||
confOverride(ethConf)
|
confOverride(ethConf)
|
||||||
|
|
|
||||||
|
|
@ -216,18 +216,18 @@ func CreateConsensusEngine(ctx *node.ServiceContext, config *Config, chainConfig
|
||||||
}
|
}
|
||||||
// Otherwise assume proof-of-work
|
// Otherwise assume proof-of-work
|
||||||
switch {
|
switch {
|
||||||
case config.PowFake:
|
case config.Ethash.PowFake:
|
||||||
log.Warn("Ethash used in fake mode")
|
log.Warn("Ethash used in fake mode")
|
||||||
return ethash.NewFaker()
|
return ethash.NewFaker()
|
||||||
case config.PowTest:
|
case config.Ethash.PowTest:
|
||||||
log.Warn("Ethash used in test mode")
|
log.Warn("Ethash used in test mode")
|
||||||
return ethash.NewTester()
|
return ethash.NewTester()
|
||||||
case config.PowShared:
|
case config.Ethash.PowShared:
|
||||||
log.Warn("Ethash used in shared mode")
|
log.Warn("Ethash used in shared mode")
|
||||||
return ethash.NewShared()
|
return ethash.NewShared()
|
||||||
default:
|
default:
|
||||||
engine := ethash.New(ctx.ResolvePath(config.EthashCacheDir), config.EthashCachesInMem, config.EthashCachesOnDisk,
|
engine := ethash.New(ctx.ResolvePath(config.Ethash.CacheDir), config.Ethash.CachesInMem, config.Ethash.CachesOnDisk,
|
||||||
config.EthashDatasetDir, config.EthashDatasetsInMem, config.EthashDatasetsOnDisk)
|
config.Ethash.DatasetDir, config.Ethash.DatasetsInMem, config.Ethash.DatasetsOnDisk)
|
||||||
engine.SetThreads(-1) // Disable CPU mining
|
engine.SetThreads(-1) // Disable CPU mining
|
||||||
return engine
|
return engine
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import (
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
|
"github.com/ethereum/go-ethereum/consensus/ethash"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/eth/downloader"
|
"github.com/ethereum/go-ethereum/eth/downloader"
|
||||||
"github.com/ethereum/go-ethereum/eth/gasprice"
|
"github.com/ethereum/go-ethereum/eth/gasprice"
|
||||||
|
|
@ -33,16 +34,18 @@ import (
|
||||||
|
|
||||||
// DefaultConfig contains default settings for use on the Ethereum main net.
|
// DefaultConfig contains default settings for use on the Ethereum main net.
|
||||||
var DefaultConfig = Config{
|
var DefaultConfig = Config{
|
||||||
SyncMode: downloader.FastSync,
|
SyncMode: downloader.FastSync,
|
||||||
EthashCacheDir: "ethash",
|
Ethash: ethash.EthashConfig{
|
||||||
EthashCachesInMem: 2,
|
CacheDir: "ethash",
|
||||||
EthashCachesOnDisk: 3,
|
CachesInMem: 2,
|
||||||
EthashDatasetsInMem: 1,
|
CachesOnDisk: 3,
|
||||||
EthashDatasetsOnDisk: 2,
|
DatasetsInMem: 1,
|
||||||
NetworkId: 1,
|
DatasetsOnDisk: 2,
|
||||||
LightPeers: 20,
|
},
|
||||||
DatabaseCache: 128,
|
NetworkId: 1,
|
||||||
GasPrice: big.NewInt(18 * params.Shannon),
|
LightPeers: 20,
|
||||||
|
DatabaseCache: 128,
|
||||||
|
GasPrice: big.NewInt(18 * params.Shannon),
|
||||||
|
|
||||||
TxPool: core.DefaultTxPoolConfig,
|
TxPool: core.DefaultTxPoolConfig,
|
||||||
GPO: gasprice.Config{
|
GPO: gasprice.Config{
|
||||||
|
|
@ -59,9 +62,9 @@ func init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
DefaultConfig.EthashDatasetDir = filepath.Join(home, "AppData", "Ethash")
|
DefaultConfig.Ethash.DatasetDir = filepath.Join(home, "AppData", "Ethash")
|
||||||
} else {
|
} else {
|
||||||
DefaultConfig.EthashDatasetDir = filepath.Join(home, ".ethash")
|
DefaultConfig.Ethash.DatasetDir = filepath.Join(home, ".ethash")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -92,12 +95,7 @@ type Config struct {
|
||||||
GasPrice *big.Int
|
GasPrice *big.Int
|
||||||
|
|
||||||
// Ethash options
|
// Ethash options
|
||||||
EthashCacheDir string
|
Ethash ethash.EthashConfig
|
||||||
EthashCachesInMem int
|
|
||||||
EthashCachesOnDisk int
|
|
||||||
EthashDatasetDir string
|
|
||||||
EthashDatasetsInMem int
|
|
||||||
EthashDatasetsOnDisk int
|
|
||||||
|
|
||||||
// Transaction pool options
|
// Transaction pool options
|
||||||
TxPool core.TxPoolConfig
|
TxPool core.TxPoolConfig
|
||||||
|
|
@ -109,10 +107,7 @@ type Config struct {
|
||||||
EnablePreimageRecording bool
|
EnablePreimageRecording bool
|
||||||
|
|
||||||
// Miscellaneous options
|
// Miscellaneous options
|
||||||
DocRoot string `toml:"-"`
|
DocRoot string `toml:"-"`
|
||||||
PowFake bool `toml:"-"`
|
|
||||||
PowTest bool `toml:"-"`
|
|
||||||
PowShared bool `toml:"-"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type configMarshaling struct {
|
type configMarshaling struct {
|
||||||
|
|
|
||||||
|
|
@ -54,19 +54,19 @@ func (c Config) MarshalTOML() (interface{}, error) {
|
||||||
enc.MinerThreads = c.MinerThreads
|
enc.MinerThreads = c.MinerThreads
|
||||||
enc.ExtraData = c.ExtraData
|
enc.ExtraData = c.ExtraData
|
||||||
enc.GasPrice = c.GasPrice
|
enc.GasPrice = c.GasPrice
|
||||||
enc.EthashCacheDir = c.EthashCacheDir
|
enc.EthashCacheDir = c.Ethash.CacheDir
|
||||||
enc.EthashCachesInMem = c.EthashCachesInMem
|
enc.EthashCachesInMem = c.Ethash.CachesInMem
|
||||||
enc.EthashCachesOnDisk = c.EthashCachesOnDisk
|
enc.EthashCachesOnDisk = c.Ethash.CachesOnDisk
|
||||||
enc.EthashDatasetDir = c.EthashDatasetDir
|
enc.EthashDatasetDir = c.Ethash.DatasetDir
|
||||||
enc.EthashDatasetsInMem = c.EthashDatasetsInMem
|
enc.EthashDatasetsInMem = c.Ethash.DatasetsInMem
|
||||||
enc.EthashDatasetsOnDisk = c.EthashDatasetsOnDisk
|
enc.EthashDatasetsOnDisk = c.Ethash.DatasetsOnDisk
|
||||||
enc.TxPool = c.TxPool
|
enc.TxPool = c.TxPool
|
||||||
enc.GPO = c.GPO
|
enc.GPO = c.GPO
|
||||||
enc.EnablePreimageRecording = c.EnablePreimageRecording
|
enc.EnablePreimageRecording = c.EnablePreimageRecording
|
||||||
enc.DocRoot = c.DocRoot
|
enc.DocRoot = c.DocRoot
|
||||||
enc.PowFake = c.PowFake
|
enc.PowFake = c.Ethash.PowFake
|
||||||
enc.PowTest = c.PowTest
|
enc.PowTest = c.Ethash.PowTest
|
||||||
enc.PowShared = c.PowShared
|
enc.PowShared = c.Ethash.PowShared
|
||||||
return &enc, nil
|
return &enc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -140,22 +140,22 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error {
|
||||||
c.GasPrice = dec.GasPrice
|
c.GasPrice = dec.GasPrice
|
||||||
}
|
}
|
||||||
if dec.EthashCacheDir != nil {
|
if dec.EthashCacheDir != nil {
|
||||||
c.EthashCacheDir = *dec.EthashCacheDir
|
c.Ethash.CacheDir = *dec.EthashCacheDir
|
||||||
}
|
}
|
||||||
if dec.EthashCachesInMem != nil {
|
if dec.EthashCachesInMem != nil {
|
||||||
c.EthashCachesInMem = *dec.EthashCachesInMem
|
c.Ethash.CachesInMem = *dec.EthashCachesInMem
|
||||||
}
|
}
|
||||||
if dec.EthashCachesOnDisk != nil {
|
if dec.EthashCachesOnDisk != nil {
|
||||||
c.EthashCachesOnDisk = *dec.EthashCachesOnDisk
|
c.Ethash.CachesOnDisk = *dec.EthashCachesOnDisk
|
||||||
}
|
}
|
||||||
if dec.EthashDatasetDir != nil {
|
if dec.EthashDatasetDir != nil {
|
||||||
c.EthashDatasetDir = *dec.EthashDatasetDir
|
c.Ethash.DatasetDir = *dec.EthashDatasetDir
|
||||||
}
|
}
|
||||||
if dec.EthashDatasetsInMem != nil {
|
if dec.EthashDatasetsInMem != nil {
|
||||||
c.EthashDatasetsInMem = *dec.EthashDatasetsInMem
|
c.Ethash.DatasetsInMem = *dec.EthashDatasetsInMem
|
||||||
}
|
}
|
||||||
if dec.EthashDatasetsOnDisk != nil {
|
if dec.EthashDatasetsOnDisk != nil {
|
||||||
c.EthashDatasetsOnDisk = *dec.EthashDatasetsOnDisk
|
c.Ethash.DatasetsOnDisk = *dec.EthashDatasetsOnDisk
|
||||||
}
|
}
|
||||||
if dec.TxPool != nil {
|
if dec.TxPool != nil {
|
||||||
c.TxPool = *dec.TxPool
|
c.TxPool = *dec.TxPool
|
||||||
|
|
@ -170,13 +170,13 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error {
|
||||||
c.DocRoot = *dec.DocRoot
|
c.DocRoot = *dec.DocRoot
|
||||||
}
|
}
|
||||||
if dec.PowFake != nil {
|
if dec.PowFake != nil {
|
||||||
c.PowFake = *dec.PowFake
|
c.Ethash.PowFake = *dec.PowFake
|
||||||
}
|
}
|
||||||
if dec.PowTest != nil {
|
if dec.PowTest != nil {
|
||||||
c.PowTest = *dec.PowTest
|
c.Ethash.PowTest = *dec.PowTest
|
||||||
}
|
}
|
||||||
if dec.PowShared != nil {
|
if dec.PowShared != nil {
|
||||||
c.PowShared = *dec.PowShared
|
c.Ethash.PowShared = *dec.PowShared
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue