Merge branch 'develop' into interop
Conflicts: peer.go
This commit is contained in:
@ -188,6 +188,8 @@ func (sm *StateManager) ApplyTransactions(coinbase []byte, state *State, block *
|
||||
// Process each transaction/contract
|
||||
var receipts []*Receipt
|
||||
var validTxs []*Transaction
|
||||
var ignoredTxs []*Transaction // Transactions which go over the gasLimit
|
||||
|
||||
totalUsedGas := big.NewInt(0)
|
||||
|
||||
for _, tx := range txs {
|
||||
@ -196,6 +198,12 @@ func (sm *StateManager) ApplyTransactions(coinbase []byte, state *State, block *
|
||||
if IsNonceErr(err) {
|
||||
continue
|
||||
}
|
||||
if IsGasLimitErr(err) {
|
||||
ignoredTxs = append(ignoredTxs, tx)
|
||||
// We need to figure out if we want to do something with thse txes
|
||||
ethutil.Config.Log.Debugln("Gastlimit:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
ethutil.Config.Log.Infoln(err)
|
||||
}
|
||||
@ -207,6 +215,9 @@ func (sm *StateManager) ApplyTransactions(coinbase []byte, state *State, block *
|
||||
validTxs = append(validTxs, tx)
|
||||
}
|
||||
|
||||
// Update the total gas used for the block (to be mined)
|
||||
block.GasUsed = totalUsedGas
|
||||
|
||||
return receipts, validTxs
|
||||
}
|
||||
|
||||
@ -226,6 +237,7 @@ func (sm *StateManager) ApplyTransaction(coinbase []byte, state *State, block *B
|
||||
script []byte
|
||||
)
|
||||
totalGasUsed = big.NewInt(0)
|
||||
snapshot := state.Snapshot()
|
||||
|
||||
ca := state.GetAccount(coinbase)
|
||||
// Apply the transaction to the current state
|
||||
@ -266,6 +278,14 @@ func (sm *StateManager) ApplyTransaction(coinbase []byte, state *State, block *B
|
||||
}
|
||||
}
|
||||
|
||||
parent := sm.bc.GetBlock(block.PrevHash)
|
||||
total := new(big.Int).Add(block.GasUsed, totalGasUsed)
|
||||
limit := block.CalcGasLimit(parent)
|
||||
if total.Cmp(limit) > 0 {
|
||||
state.Revert(snapshot)
|
||||
err = GasLimitError(total, limit)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user