diff options
author | obscuren <geffobscura@gmail.com> | 2015-05-31 21:53:17 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-06-04 04:39:17 +0800 |
commit | b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5 (patch) | |
tree | 941b22f81006fd88655fc3266debf9d2a556915d /core/types/block.go | |
parent | fa4aefee44c5dd32fb7e0d02960c1550e9c8a330 (diff) | |
download | go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.gz go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.zst go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.zip |
types: block json unmarshal method added
Diffstat (limited to 'core/types/block.go')
-rw-r--r-- | core/types/block.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/core/types/block.go b/core/types/block.go index c93452fa7..d7963981e 100644 --- a/core/types/block.go +++ b/core/types/block.go @@ -1,7 +1,9 @@ package types import ( + "bytes" "encoding/binary" + "encoding/json" "fmt" "io" "math/big" @@ -80,6 +82,28 @@ func (self *Header) RlpData() interface{} { return self.rlpData(true) } +func (h *Header) UnmarshalJSON(data []byte) error { + var ext struct { + ParentHash string + Coinbase string + Difficulty string + GasLimit string + Time uint64 + Extra string + } + dec := json.NewDecoder(bytes.NewReader(data)) + if err := dec.Decode(&ext); err != nil { + return err + } + + h.ParentHash = common.HexToHash(ext.ParentHash) + h.Coinbase = common.HexToAddress(ext.Coinbase) + h.Difficulty = common.String2Big(ext.Difficulty) + h.Time = ext.Time + h.Extra = []byte(ext.Extra) + return nil +} + func rlpHash(x interface{}) (h common.Hash) { hw := sha3.NewKeccak256() rlp.Encode(hw, x) |