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 | |
parent | fa4aefee44c5dd32fb7e0d02960c1550e9c8a330 (diff) | |
download | go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.gz go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.bz2 go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.lz go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.xz go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.tar.zst go-tangerine-b26f5e0bb7e8922c80bc3513d1ebce2c99a081f5.zip |
types: block json unmarshal method added
-rw-r--r-- | common/big.go | 8 | ||||
-rw-r--r-- | core/genesis.go | 4 | ||||
-rw-r--r-- | core/types/block.go | 24 |
3 files changed, 30 insertions, 6 deletions
diff --git a/common/big.go b/common/big.go index 3257b179d..05d56daba 100644 --- a/common/big.go +++ b/common/big.go @@ -36,16 +36,16 @@ func Big(num string) *big.Int { return n } -// BigD +// Bytes2Big // -// Shortcut for new(big.Int).SetBytes(...) -func Bytes2Big(data []byte) *big.Int { +func BytesToBig(data []byte) *big.Int { n := new(big.Int) n.SetBytes(data) return n } -func BigD(data []byte) *big.Int { return Bytes2Big(data) } +func Bytes2Big(data []byte) *big.Int { return BytesToBig(data) } +func BigD(data []byte) *big.Int { return BytesToBig(data) } func String2Big(num string) *big.Int { n := new(big.Int) diff --git a/core/genesis.go b/core/genesis.go index e72834822..a9b7339f3 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -36,7 +36,7 @@ func GenesisBlock(db common.Database) *types.Block { Balance string Code string } - err := json.Unmarshal(GenesisData, &accounts) + err := json.Unmarshal(GenesisAccounts, &accounts) if err != nil { fmt.Println("enable to decode genesis json data:", err) os.Exit(1) @@ -57,7 +57,7 @@ func GenesisBlock(db common.Database) *types.Block { return genesis } -var GenesisData = []byte(`{ +var GenesisAccounts = []byte(`{ "0000000000000000000000000000000000000001": {"balance": "1"}, "0000000000000000000000000000000000000002": {"balance": "1"}, "0000000000000000000000000000000000000003": {"balance": "1"}, 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) |