| 
									
										
										
										
											2014-12-04 10:28:02 +01:00
										 |  |  | package core | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2014-08-21 14:47:58 +02:00
										 |  |  | 	"math/big" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-23 13:48:44 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/core/types" | 
					
						
							| 
									
										
										
										
											2014-10-31 12:37:43 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/crypto" | 
					
						
							| 
									
										
										
										
											2014-10-23 15:01:27 +02:00
										 |  |  | 	"github.com/ethereum/go-ethereum/ethutil" | 
					
						
							| 
									
										
										
										
											2014-12-23 13:48:44 +01:00
										 |  |  | 	"github.com/ethereum/go-ethereum/state" | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  * This is the special genesis block. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var ZeroHash256 = make([]byte, 32) | 
					
						
							|  |  |  | var ZeroHash160 = make([]byte, 20) | 
					
						
							| 
									
										
										
										
											2014-10-29 10:34:40 +01:00
										 |  |  | var ZeroHash512 = make([]byte, 64) | 
					
						
							| 
									
										
										
										
											2014-10-31 12:37:43 +01:00
										 |  |  | var EmptyShaList = crypto.Sha3(ethutil.Encode([]interface{}{})) | 
					
						
							| 
									
										
										
										
											2014-11-03 23:45:16 +01:00
										 |  |  | var EmptyListRoot = crypto.Sha3(ethutil.Encode("")) | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-23 13:48:44 +01:00
										 |  |  | func GenesisBlock() *types.Block { | 
					
						
							| 
									
										
										
										
											2014-12-23 18:35:36 +01:00
										 |  |  | 	genesis := types.NewBlock(ZeroHash256, ZeroHash160, nil, big.NewInt(131072), crypto.Sha3(big.NewInt(42).Bytes()), "") | 
					
						
							| 
									
										
										
										
											2014-12-23 13:48:44 +01:00
										 |  |  | 	genesis.Header().Number = ethutil.Big0 | 
					
						
							|  |  |  | 	genesis.Header().GasLimit = big.NewInt(1000000) | 
					
						
							|  |  |  | 	genesis.Header().GasUsed = ethutil.Big0 | 
					
						
							|  |  |  | 	genesis.Header().Time = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	genesis.SetUncles([]*types.Header{}) | 
					
						
							|  |  |  | 	genesis.SetTransactions(types.Transactions{}) | 
					
						
							|  |  |  | 	genesis.SetReceipts(types.Receipts{}) | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-23 13:48:44 +01:00
										 |  |  | 	statedb := state.New(genesis.Trie()) | 
					
						
							|  |  |  | 	for _, addr := range []string{ | 
					
						
							|  |  |  | 		"51ba59315b3a95761d0863b05ccc7a7f54703d99", | 
					
						
							|  |  |  | 		"e4157b34ea9615cfbde6b4fda419828124b70c78", | 
					
						
							|  |  |  | 		"b9c015918bdaba24b4ff057a92a3873d6eb201be", | 
					
						
							|  |  |  | 		"6c386a4b26f73c802f34673f7248bb118f97424a", | 
					
						
							|  |  |  | 		"cd2a3d9f938e13cd947ec05abc7fe734df8dd826", | 
					
						
							|  |  |  | 		"2ef47100e0787b915105fd5e3f4ff6752079d5cb", | 
					
						
							|  |  |  | 		"e6716f9544a56c530d868e4bfbacb172315bdead", | 
					
						
							|  |  |  | 		"1a26338f0d905e295fccb71fa9ea849ffa12aaf4", | 
					
						
							|  |  |  | 	} { | 
					
						
							|  |  |  | 		codedAddr := ethutil.Hex2Bytes(addr) | 
					
						
							|  |  |  | 		account := statedb.GetAccount(codedAddr) | 
					
						
							|  |  |  | 		account.SetBalance(ethutil.Big("1606938044258990275541962092341162602522202993782792835301376")) //ethutil.BigPow(2, 200) | 
					
						
							|  |  |  | 		statedb.UpdateStateObject(account) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	statedb.Sync() | 
					
						
							|  |  |  | 	genesis.Header().Root = statedb.Root() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return genesis | 
					
						
							|  |  |  | } |