|
1 | 1 | package core
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "encoding/json" |
| 5 | + "fmt" |
4 | 6 | "math/big"
|
| 7 | + "os" |
5 | 8 |
|
6 | 9 | "github.com/ethereum/go-ethereum/core/types"
|
7 | 10 | "github.com/ethereum/go-ethereum/crypto"
|
@@ -31,24 +34,39 @@ func GenesisBlock(db ethutil.Database) *types.Block {
|
31 | 34 | genesis.SetTransactions(types.Transactions{})
|
32 | 35 | genesis.SetReceipts(types.Receipts{})
|
33 | 36 |
|
| 37 | + var accounts map[string]struct{ Balance string } |
| 38 | + err := json.Unmarshal(genesisData, &accounts) |
| 39 | + if err != nil { |
| 40 | + fmt.Println("enable to decode genesis json data:", err) |
| 41 | + os.Exit(1) |
| 42 | + } |
| 43 | + |
34 | 44 | statedb := state.New(genesis.Root(), db)
|
35 |
| - for _, addr := range []string{ |
36 |
| - "dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6", |
37 |
| - "e4157b34ea9615cfbde6b4fda419828124b70c78", |
38 |
| - "b9c015918bdaba24b4ff057a92a3873d6eb201be", |
39 |
| - "6c386a4b26f73c802f34673f7248bb118f97424a", |
40 |
| - "cd2a3d9f938e13cd947ec05abc7fe734df8dd826", |
41 |
| - "2ef47100e0787b915105fd5e3f4ff6752079d5cb", |
42 |
| - "e6716f9544a56c530d868e4bfbacb172315bdead", |
43 |
| - "1a26338f0d905e295fccb71fa9ea849ffa12aaf4", |
44 |
| - } { |
| 45 | + for addr, account := range accounts { |
45 | 46 | codedAddr := ethutil.Hex2Bytes(addr)
|
46 |
| - account := statedb.GetAccount(codedAddr) |
47 |
| - account.SetBalance(ethutil.Big("1606938044258990275541962092341162602522202993782792835301376")) //ethutil.BigPow(2, 200) |
48 |
| - statedb.UpdateStateObject(account) |
| 47 | + accountState := statedb.GetAccount(codedAddr) |
| 48 | + accountState.SetBalance(ethutil.Big(account.Balance)) |
| 49 | + statedb.UpdateStateObject(accountState) |
49 | 50 | }
|
50 | 51 | statedb.Sync()
|
51 | 52 | genesis.Header().Root = statedb.Root()
|
52 | 53 |
|
| 54 | + fmt.Printf("+++ genesis +++\nRoot: %x\nHash: %x\n", genesis.Header().Root, genesis.Hash()) |
| 55 | + |
53 | 56 | return genesis
|
54 | 57 | }
|
| 58 | + |
| 59 | +var genesisData = []byte(`{ |
| 60 | + "dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 61 | + "e4157b34ea9615cfbde6b4fda419828124b70c78": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 62 | + "b9c015918bdaba24b4ff057a92a3873d6eb201be": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 63 | + "6c386a4b26f73c802f34673f7248bb118f97424a": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 64 | + "cd2a3d9f938e13cd947ec05abc7fe734df8dd826": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 65 | + "2ef47100e0787b915105fd5e3f4ff6752079d5cb": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 66 | + "e6716f9544a56c530d868e4bfbacb172315bdead": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 67 | + "1a26338f0d905e295fccb71fa9ea849ffa12aaf4": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}, |
| 68 | + "b0afc46d9ce366d06ab4952ca27db1d9557ae9fd": {"balance": "154162184000000000000000"}, |
| 69 | + "f6b1e9dc460d4d62cc22ec5f987d726929c0f9f0": {"balance": "102774789000000000000000"}, |
| 70 | + "cc45122d8b7fa0b1eaa6b29e0fb561422a9239d0": {"balance": "51387394000000000000000"}, |
| 71 | + "b7576e9d314df41ec5506494293afb1bd5d3f65d": {"balance": "69423399000000000000000"} |
| 72 | +}`) |
0 commit comments