diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-24 04:48:45 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-24 04:48:45 +0800 |
commit | bfb9ed881d3b7de3a4a68686a1f90d84decc8667 (patch) | |
tree | 6bd7c8ade2193f4506ba37d8eff3259148b1f884 /core | |
parent | ebf4408d738474835582485bb4ef45bf55a05a9c (diff) | |
download | dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar.gz dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar.bz2 dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar.lz dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar.xz dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.tar.zst dexon-bfb9ed881d3b7de3a4a68686a1f90d84decc8667.zip |
Gas validation and clean up of legacy code
Diffstat (limited to 'core')
-rw-r--r-- | core/block_processor.go | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/core/block_processor.go b/core/block_processor.go index 14567732f..0fb698614 100644 --- a/core/block_processor.go +++ b/core/block_processor.go @@ -61,7 +61,7 @@ func (sm *BlockProcessor) TransitionState(statedb *state.StateDB, parent, block coinbase.SetGasPool(block.Header().GasLimit) // Process the transactions on to parent state - receipts, _, _, _, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), transientProcess) + receipts, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), transientProcess) if err != nil { return nil, err } @@ -104,39 +104,38 @@ func (self *BlockProcessor) ChainManager() *ChainManager { return self.bc } -func (self *BlockProcessor) ApplyTransactions(coinbase *state.StateObject, statedb *state.StateDB, block *types.Block, txs types.Transactions, transientProcess bool) (types.Receipts, types.Transactions, types.Transactions, types.Transactions, error) { +func (self *BlockProcessor) ApplyTransactions(coinbase *state.StateObject, statedb *state.StateDB, block *types.Block, txs types.Transactions, transientProcess bool) (types.Receipts, error) { var ( - receipts types.Receipts - handled, unhandled types.Transactions - erroneous types.Transactions - totalUsedGas = big.NewInt(0) - err error - cumulativeSum = new(big.Int) + receipts types.Receipts + totalUsedGas = big.NewInt(0) + err error + cumulativeSum = new(big.Int) ) for _, tx := range txs { receipt, txGas, err := self.ApplyTransaction(coinbase, statedb, block, tx, totalUsedGas, transientProcess) if err != nil && (IsNonceErr(err) || state.IsGasLimitErr(err) || IsInvalidTxErr(err)) { - return nil, nil, nil, nil, err + return nil, err } if err != nil { statelogger.Infoln("TX err:", err) } receipts = append(receipts, receipt) - handled = append(handled, tx) cumulativeSum.Add(cumulativeSum, new(big.Int).Mul(txGas, tx.GasPrice())) } block.Reward = cumulativeSum - block.Header().GasUsed = totalUsedGas + if block.GasUsed().Cmp(totalUsedGas) != 0 { + return nil, ValidationError(fmt.Sprintf("gas used error (%v / %v)", block.GasUsed(), totalUsedGas)) + } if transientProcess { go self.eventMux.Post(PendingBlockEvent{block, statedb.Logs()}) } - return receipts, handled, unhandled, erroneous, err + return receipts, err } // Process block will attempt to process the given block's transactions and applies them |