From 2970fc4b02f372228f3db11ad2fbd521226e7cd8 Mon Sep 17 00:00:00 2001 From: jangko Date: Tue, 15 Feb 2022 10:26:03 +0700 Subject: [PATCH] refactor chain_config and add decodeNetworkParams allow custom network not only loaded from file but also decoded from json string --- nimbus/chain_config.nim | 49 +++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/nimbus/chain_config.nim b/nimbus/chain_config.nim index e58a7abb6..db51776f8 100644 --- a/nimbus/chain_config.nim +++ b/nimbus/chain_config.nim @@ -192,21 +192,8 @@ template to(a: string, b: type UInt256): UInt256 = # json_serialization decode table stuff UInt256.fromHex(a) -proc loadNetworkParams*(fileName: string, cg: var NetworkParams): +proc loadNetworkParams*(cc: CustomChain, cg: var NetworkParams): bool {.raises: [Defect].} = - var cc: CustomChain - try: - cc = Json.loadFile(fileName, CustomChain, allowUnknownFields = true) - except IOError as e: - error "Network params I/O error", fileName, msg=e.msg - return false - except JsonReaderError as e: - error "Invalid network params file format", fileName, msg=e.formatMsg("") - return false - except: - var msg = getCurrentExceptionMsg() - error "Error loading network params file", fileName, msg - return false cg.genesis = cc.genesis cg.config.chainId = cc.config.chainId @@ -253,6 +240,40 @@ proc loadNetworkParams*(fileName: string, cg: var NetworkParams): return true +proc loadNetworkParams*(fileName: string, cg: var NetworkParams): + bool {.raises: [Defect].} = + var cc: CustomChain + try: + cc = Json.loadFile(fileName, CustomChain, allowUnknownFields = true) + except IOError as e: + error "Network params I/O error", fileName, msg=e.msg + return false + except JsonReaderError as e: + error "Invalid network params file format", fileName, msg=e.formatMsg("") + return false + except: + var msg = getCurrentExceptionMsg() + error "Error loading network params file", fileName, msg + return false + + loadNetworkParams(cc, cg) + +proc decodeNetworkParams*(jsonString: string, cg: var NetworkParams): + bool {.raises: [Defect].} = + + var cc: CustomChain + try: + cc = Json.decode(jsonString, CustomChain, allowUnknownFields = true) + except JsonReaderError as e: + error "Invalid network params format", msg=e.formatMsg("") + return false + except: + var msg = getCurrentExceptionMsg() + error "Error decoding network params", msg + return false + + loadNetworkParams(cc, cg) + proc parseGenesisAlloc*(data: string, ga: var GenesisAlloc): bool = try: ga = Json.decode(data, GenesisAlloc, allowUnknownFields = true)