aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-24 04:48:45 +0800
committerobscuren <geffobscura@gmail.com>2015-03-24 04:48:45 +0800
commitbfb9ed881d3b7de3a4a68686a1f90d84decc8667 (patch)
tree6bd7c8ade2193f4506ba37d8eff3259148b1f884 /core
parentebf4408d738474835582485bb4ef45bf55a05a9c (diff)
downloaddexon-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.go23
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