diff --git a/internal/cli/server/chains/chain.go b/internal/cli/server/chains/chain.go index 05c12ef0b0..570619609d 100644 --- a/internal/cli/server/chains/chain.go +++ b/internal/cli/server/chains/chain.go @@ -1,6 +1,9 @@ package chains import ( + "encoding/json" + "io/ioutil" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" ) @@ -19,6 +22,29 @@ var chains = map[string]*Chain{ } func GetChain(name string) (*Chain, bool) { - chain, ok := chains[name] - return chain, ok + chain, err := ImportFromFile(name) + if err != nil { + chain, ok := chains[name] + return chain, ok + } + return chain, true +} + +func ImportFromFile(filename string) (*Chain, error) { + data, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + + return importChain(data) +} + +func importChain(content []byte) (*Chain, error) { + var chain *Chain + + if err := json.Unmarshal(content, &chain); err != nil { + return nil, err + } + + return chain, nil }