diff --git a/command/server/chains/mainnet.go b/command/server/chains/mainnet.go index 8d6f163256b6283938fc18e2ad0d988067918edd..ac074ed8cb0407635be6543556aac07ff0639e35 100644 --- a/command/server/chains/mainnet.go +++ b/command/server/chains/mainnet.go @@ -53,7 +53,7 @@ var mainnetBor = &Chain{ Difficulty: big.NewInt(1), Mixhash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), Coinbase: common.HexToAddress("0x0000000000000000000000000000000000000000"), - Alloc: readPrealloc("allocs/bor_mainnet.json"), + Alloc: readPrealloc("allocs/mainnet.json"), }, Bootnodes: []string{ "enode://0cb82b395094ee4a2915e9714894627de9ed8498fb881cec6db7c65e8b9a5bd7f2f25cc84e71e89d0947e51c76e85d0847de848c7782b13c0255247a6758178c@44.232.55.71:30303", diff --git a/command/server/command.go b/command/server/command.go index 2feb0be79115356ca8cebde623f7109f07aba276..59c106fea21bb11546e462b19796b33663cbd090 100644 --- a/command/server/command.go +++ b/command/server/command.go @@ -88,7 +88,6 @@ func (c *Command) Run(args []string) int { // TODO: Metrics // TODO: apis // TODO: Graphql - // TODO: embed // register the ethereum backend ethCfg, err := config.buildEth() @@ -143,6 +142,7 @@ func (c *Command) setupMetrics() error { // Start system runtime metrics collection go metrics.CollectProcessMetrics(3 * time.Second) + return nil } diff --git a/command/server/config.go b/command/server/config.go index 7b01f6885f18b1d8471e73ea47a9150b8ce6aea6..c8dd5c27c5df0f3e2d6d89d753f6da4ab1604f02 100644 --- a/command/server/config.go +++ b/command/server/config.go @@ -3,6 +3,7 @@ package server import ( "crypto/ecdsa" "fmt" + "io/ioutil" "math/big" "os" "path/filepath" @@ -50,6 +51,7 @@ type Config struct { EthStats *string TxPool *TxPoolConfig Sealer *SealerConfig + JsonRPC *JsonRPCConfig } type P2PConfig struct { @@ -92,6 +94,9 @@ type SealerConfig struct { GasPrice *big.Int } +type JsonRPCConfig struct { +} + func DefaultConfig() *Config { return &Config{ Chain: stringPtr("mainnet"), @@ -137,7 +142,18 @@ func DefaultConfig() *Config { } func readConfigFile(path string) (*Config, error) { - return nil, nil + data, err := ioutil.ReadFile(path) + if err != nil { + return nil, err + } + // TODO: Use hcl as config format + ext := filepath.Ext(path) + switch ext { + case ".toml": + return readLegacyConfig(data) + default: + return nil, fmt.Errorf("file path extension '%s' not found", ext) + } } func (c *Config) loadChain() error { @@ -219,6 +235,7 @@ func (c *Config) buildNode() (*node.Config, error) { Name: clientIdentifier, DataDir: *c.DataDir, Version: params.VersionWithCommit(gitCommit, gitDate), + IPCPath: clientIdentifier + ".ipc", P2P: p2p.Config{ MaxPeers: int(*c.P2P.MaxPeers), ListenAddr: *c.P2P.Bind + ":" + strconv.Itoa(int(*c.P2P.Port)), diff --git a/command/server/config_legacy.go b/command/server/config_legacy.go new file mode 100644 index 0000000000000000000000000000000000000000..0d96b2e023f9b058d01d883aba785aa333d6e353 --- /dev/null +++ b/command/server/config_legacy.go @@ -0,0 +1,33 @@ +package server + +import ( + "bytes" + + "github.com/naoina/toml" +) + +type legacyConfig struct { + Node struct { + P2P struct { + StaticNodes []string + TrustedNodes []string + } + } +} + +func (l *legacyConfig) Config() *Config { + c := DefaultConfig() + c.P2P.Discovery.StaticNodes = l.Node.P2P.StaticNodes + c.P2P.Discovery.TrustedNodes = l.Node.P2P.TrustedNodes + return c +} + +func readLegacyConfig(data []byte) (*Config, error) { + var legacy legacyConfig + + r := toml.NewDecoder(bytes.NewReader(data)) + if err := r.Decode(&legacy); err != nil { + return nil, err + } + return legacy.Config(), nil +} diff --git a/command/server/config_legacy_test.go b/command/server/config_legacy_test.go new file mode 100644 index 0000000000000000000000000000000000000000..399481fc9bcd14e50bb362e3ce0a4d9dae85ba18 --- /dev/null +++ b/command/server/config_legacy_test.go @@ -0,0 +1,21 @@ +package server + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestConfigLegacy(t *testing.T) { + toml := `[Node.P2P] +StaticNodes = ["node1"] +TrustedNodes = ["node2"]` + + config, err := readLegacyConfig([]byte(toml)) + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, config.P2P.Discovery.StaticNodes, []string{"node1"}) + assert.Equal(t, config.P2P.Discovery.TrustedNodes, []string{"node2"}) +} diff --git a/go.mod b/go.mod index 296d727ec4a41f9232137e4f1a3b271aa29ea07f..dfc33fc8c752b5260165438cb00603213bd7b7f3 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/ethereum/go-ethereum -go 1.15 +go 1.16 require ( github.com/Azure/azure-pipeline-go v0.2.2 // indirect