core, core/state, trie: EIP158, reprice & skip empty account write
This commit implements EIP158 part 1, 2, 3 & 4 1. If an account is empty it's no longer written to the trie. An empty account is defined as (balance=0, nonce=0, storage=0, code=0). 2. Delete an empty account if it's touched 3. An empty account is redefined as either non-existent or empty. 4. Zero value calls and zero value suicides no longer consume the 25k reation costs. params: moved core/config to params Signed-off-by: Jeffrey Wilcke <jeffrey@ethereum.org>
This commit is contained in:
		| @@ -41,13 +41,16 @@ func ExampleGenerateChain() { | ||||
| 		db, _   = ethdb.NewMemDatabase() | ||||
| 	) | ||||
|  | ||||
| 	chainConfig := ¶ms.ChainConfig{ | ||||
| 		HomesteadBlock: new(big.Int), | ||||
| 	} | ||||
| 	// Ensure that key1 has some funds in the genesis block. | ||||
| 	genesis := WriteGenesisBlockForTesting(db, GenesisAccount{addr1, big.NewInt(1000000)}) | ||||
|  | ||||
| 	// This call generates a chain of 5 blocks. The function runs for | ||||
| 	// each block and adds different features to gen based on the | ||||
| 	// block index. | ||||
| 	chain, _ := GenerateChain(nil, genesis, db, 5, func(i int, gen *BlockGen) { | ||||
| 	chain, _ := GenerateChain(chainConfig, genesis, db, 5, func(i int, gen *BlockGen) { | ||||
| 		switch i { | ||||
| 		case 0: | ||||
| 			// In block 1, addr1 sends addr2 some ether. | ||||
| @@ -77,7 +80,7 @@ func ExampleGenerateChain() { | ||||
|  | ||||
| 	// Import the chain. This runs all block validation rules. | ||||
| 	evmux := &event.TypeMux{} | ||||
| 	blockchain, _ := NewBlockChain(db, MakeChainConfig(), FakePow{}, evmux) | ||||
| 	blockchain, _ := NewBlockChain(db, chainConfig, FakePow{}, evmux) | ||||
| 	if i, err := blockchain.InsertChain(chain); err != nil { | ||||
| 		fmt.Printf("insert error (block %d): %v\n", chain[i].NumberU64(), err) | ||||
| 		return | ||||
|   | ||||
		Reference in New Issue
	
	Block a user