diff options
Diffstat (limited to 'core/gen_genesis_account.go')
-rw-r--r-- | core/gen_genesis_account.go | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/core/gen_genesis_account.go b/core/gen_genesis_account.go new file mode 100644 index 000000000..2dda122f2 --- /dev/null +++ b/core/gen_genesis_account.go @@ -0,0 +1,61 @@ +// generated by github.com/fjl/gencodec, do not edit. + +package core + +import ( + "encoding/json" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/common/math" +) + +func (g *GenesisAccount) MarshalJSON() ([]byte, error) { + type GenesisAccountJSON struct { + Code hexutil.Bytes `json:"code" optional:"true"` + Storage map[common.Hash]common.Hash `json:"storage" optional:"true"` + Balance *math.HexOrDecimal256 `json:"balance"` + Nonce *math.HexOrDecimal64 `json:"nonce" optional:"true"` + } + var enc GenesisAccountJSON + if g.Code != nil { + enc.Code = g.Code + } + if g.Storage != nil { + enc.Storage = g.Storage + } + enc.Balance = (*math.HexOrDecimal256)(g.Balance) + enc.Nonce = (*math.HexOrDecimal64)(&g.Nonce) + return json.Marshal(&enc) +} + +func (g *GenesisAccount) UnmarshalJSON(input []byte) error { + type GenesisAccountJSON struct { + Code hexutil.Bytes `json:"code" optional:"true"` + Storage map[common.Hash]common.Hash `json:"storage" optional:"true"` + Balance *math.HexOrDecimal256 `json:"balance"` + Nonce *math.HexOrDecimal64 `json:"nonce" optional:"true"` + } + var dec GenesisAccountJSON + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + var x GenesisAccount + if dec.Code != nil { + x.Code = dec.Code + } + if dec.Storage != nil { + x.Storage = dec.Storage + } + if dec.Balance == nil { + return errors.New("missing required field 'balance' for GenesisAccount") + } + x.Balance = (*big.Int)(dec.Balance) + if dec.Nonce != nil { + x.Nonce = uint64(*dec.Nonce) + } + *g = x + return nil +} |