Fixed genesis
This commit is contained in:
parent
08fd0715f9
commit
d4d505c868
|
@ -23,13 +23,13 @@ var EmptyShaList = crypto.Sha3(ethutil.Encode([]interface{}{}))
|
|||
var EmptyListRoot = crypto.Sha3(ethutil.Encode(""))
|
||||
|
||||
func GenesisBlock(db ethutil.Database) *types.Block {
|
||||
genesis := types.NewBlock(ZeroHash256, ZeroHash160, nil, big.NewInt(131072), 42, "")
|
||||
genesis := types.NewBlock(ZeroHash256, ZeroHash160, nil, big.NewInt(2048), 42, "")
|
||||
genesis.Header().Number = ethutil.Big0
|
||||
genesis.Header().GasLimit = big.NewInt(1000000)
|
||||
genesis.Header().GasUsed = ethutil.Big0
|
||||
genesis.Header().Time = 0
|
||||
genesis.Header().MixDigest = make([]byte, 32)
|
||||
genesis.Header().SeedHash = make([]byte, 32)
|
||||
genesis.Header().MixDigest = make([]byte, 32)
|
||||
|
||||
genesis.Td = ethutil.Big0
|
||||
|
||||
|
@ -59,6 +59,10 @@ func GenesisBlock(db ethutil.Database) *types.Block {
|
|||
}
|
||||
|
||||
var genesisData = []byte(`{
|
||||
"0000000000000000000000000000000000000001": {"balance": "1"},
|
||||
"0000000000000000000000000000000000000002": {"balance": "1"},
|
||||
"0000000000000000000000000000000000000003": {"balance": "1"},
|
||||
"0000000000000000000000000000000000000004": {"balance": "1"},
|
||||
"dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"e4157b34ea9615cfbde6b4fda419828124b70c78": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"b9c015918bdaba24b4ff057a92a3873d6eb201be": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
|
@ -66,9 +70,5 @@ var genesisData = []byte(`{
|
|||
"cd2a3d9f938e13cd947ec05abc7fe734df8dd826": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"2ef47100e0787b915105fd5e3f4ff6752079d5cb": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"e6716f9544a56c530d868e4bfbacb172315bdead": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"1a26338f0d905e295fccb71fa9ea849ffa12aaf4": {"balance": "1606938044258990275541962092341162602522202993782792835301376"},
|
||||
"b0afc46d9ce366d06ab4952ca27db1d9557ae9fd": {"balance": "154162184000000000000000"},
|
||||
"f6b1e9dc460d4d62cc22ec5f987d726929c0f9f0": {"balance": "102774789000000000000000"},
|
||||
"cc45122d8b7fa0b1eaa6b29e0fb561422a9239d0": {"balance": "51387394000000000000000"},
|
||||
"b7576e9d314df41ec5506494293afb1bd5d3f65d": {"balance": "69423399000000000000000"}
|
||||
"1a26338f0d905e295fccb71fa9ea849ffa12aaf4": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}
|
||||
}`)
|
||||
|
|
|
@ -2,6 +2,7 @@ package types
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"sort"
|
||||
|
@ -40,7 +41,7 @@ type Header struct {
|
|||
// Extra data
|
||||
Extra string
|
||||
// Nonce
|
||||
Nonce uint64
|
||||
Nonce []byte
|
||||
// Mix digest for quick checking to prevent DOS
|
||||
MixDigest ethutil.Bytes
|
||||
// SeedHash used for light client verification
|
||||
|
@ -63,7 +64,7 @@ func (self *Header) rlpData(withNonce bool) []interface{} {
|
|||
self.Time,
|
||||
self.Extra}
|
||||
if withNonce {
|
||||
fields = append(fields, self.Nonce, self.MixDigest, self.SeedHash)
|
||||
fields = append(fields, self.SeedHash, self.MixDigest, self.Nonce)
|
||||
}
|
||||
|
||||
return fields
|
||||
|
@ -100,18 +101,23 @@ func NewBlock(parentHash []byte, coinbase []byte, root []byte, difficulty *big.I
|
|||
ParentHash: parentHash,
|
||||
Coinbase: coinbase,
|
||||
Difficulty: difficulty,
|
||||
Nonce: nonce,
|
||||
Time: uint64(time.Now().Unix()),
|
||||
Extra: extra,
|
||||
GasUsed: new(big.Int),
|
||||
GasLimit: new(big.Int),
|
||||
}
|
||||
header.setNonce(nonce)
|
||||
|
||||
block := &Block{header: header, Reward: new(big.Int)}
|
||||
|
||||
return block
|
||||
}
|
||||
|
||||
func (self *Header) setNonce(nonce uint64) {
|
||||
self.Nonce = make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(self.Nonce, nonce)
|
||||
}
|
||||
|
||||
func NewBlockWithHeader(header *Header) *Block {
|
||||
return &Block{header: header}
|
||||
}
|
||||
|
@ -191,11 +197,17 @@ func (self *Block) RlpDataForStorage() interface{} {
|
|||
}
|
||||
|
||||
// Header accessors (add as you need them)
|
||||
func (self *Block) Number() *big.Int { return self.header.Number }
|
||||
func (self *Block) NumberU64() uint64 { return self.header.Number.Uint64() }
|
||||
func (self *Block) MixDigest() []byte { return self.header.MixDigest }
|
||||
func (self *Block) SeedHash() []byte { return self.header.SeedHash }
|
||||
func (self *Block) Nonce() uint64 { return self.header.Nonce }
|
||||
func (self *Block) Number() *big.Int { return self.header.Number }
|
||||
func (self *Block) NumberU64() uint64 { return self.header.Number.Uint64() }
|
||||
func (self *Block) MixDigest() []byte { return self.header.MixDigest }
|
||||
func (self *Block) SeedHash() []byte { return self.header.SeedHash }
|
||||
func (self *Block) Nonce() uint64 {
|
||||
return binary.BigEndian.Uint64(self.header.Nonce)
|
||||
}
|
||||
func (self *Block) SetNonce(nonce uint64) {
|
||||
self.header.setNonce(nonce)
|
||||
}
|
||||
|
||||
func (self *Block) Bloom() []byte { return self.header.Bloom }
|
||||
func (self *Block) Coinbase() []byte { return self.header.Coinbase }
|
||||
func (self *Block) Time() int64 { return int64(self.header.Time) }
|
||||
|
@ -267,11 +279,10 @@ func (self *Header) String() string {
|
|||
GasUsed: %v
|
||||
Time: %v
|
||||
Extra: %v
|
||||
Nonce: %d
|
||||
MixDigest: %x
|
||||
SeedHash: %x
|
||||
|
||||
`, self.ParentHash, self.UncleHash, self.Coinbase, self.Root, self.TxHash, self.ReceiptHash, self.Bloom, self.Difficulty, self.Number, self.GasLimit, self.GasUsed, self.Time, self.Extra, self.Nonce, self.MixDigest, self.SeedHash)
|
||||
MixDigest: %x
|
||||
Nonce: %x`,
|
||||
self.ParentHash, self.UncleHash, self.Coinbase, self.Root, self.TxHash, self.ReceiptHash, self.Bloom, self.Difficulty, self.Number, self.GasLimit, self.GasUsed, self.Time, self.Extra, self.SeedHash, self.MixDigest, self.Nonce)
|
||||
}
|
||||
|
||||
type Blocks []*Block
|
||||
|
|
|
@ -151,7 +151,7 @@ func (self *worker) wait() {
|
|||
// Someone Successfully Mined!
|
||||
block := self.current.block
|
||||
if block.Number().Uint64() == work.Number && block.Nonce() == 0 {
|
||||
self.current.block.Header().Nonce = work.Nonce
|
||||
self.current.block.SetNonce(work.Nonce)
|
||||
self.current.block.Header().MixDigest = work.MixDigest
|
||||
self.current.block.Header().SeedHash = work.SeedHash
|
||||
|
||||
|
|
Loading…
Reference in New Issue