Check coinbase for from/to inclusion
This commit is contained in:
parent
cb4d168ecc
commit
0a22dc2ce5
@ -275,16 +275,24 @@ func (sm *BlockManager) ProcessWithParent(block, parent *Block) (td *big.Int, me
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sm *BlockManager) ApplyDiff(state *state.State, parent, block *Block) (receipts Receipts, err error) {
|
func (sm *BlockManager) ApplyDiff(statedb *state.State, parent, block *Block) (receipts Receipts, err error) {
|
||||||
coinbase := state.GetOrNewStateObject(block.Coinbase)
|
coinbase := statedb.GetOrNewStateObject(block.Coinbase)
|
||||||
coinbase.SetGasPool(block.CalcGasLimit(parent))
|
coinbase.SetGasPool(block.CalcGasLimit(parent))
|
||||||
|
|
||||||
// Process the transactions on to current block
|
// Process the transactions on to current block
|
||||||
receipts, _, _, _, err = sm.ProcessTransactions(coinbase, state, block, parent, block.Transactions())
|
receipts, _, _, _, err = sm.ProcessTransactions(coinbase, statedb, block, parent, block.Transactions())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
statedb.Manifest().AddMessage(&state.Message{
|
||||||
|
To: block.Coinbase, From: block.Coinbase,
|
||||||
|
Input: nil,
|
||||||
|
Origin: nil,
|
||||||
|
Block: block.Hash(), Timestamp: block.Time, Coinbase: block.Coinbase, Number: block.Number,
|
||||||
|
Value: new(big.Int),
|
||||||
|
})
|
||||||
|
|
||||||
return receipts, nil
|
return receipts, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,9 +311,6 @@ func (sm *BlockManager) CalculateTD(block *Block) (*big.Int, bool) {
|
|||||||
// is greater than the previous.
|
// is greater than the previous.
|
||||||
if td.Cmp(sm.bc.TD) > 0 {
|
if td.Cmp(sm.bc.TD) > 0 {
|
||||||
return td, true
|
return td, true
|
||||||
|
|
||||||
// Set the new total difficulty back to the block chain
|
|
||||||
//sm.bc.SetTotalDifficulty(td)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, false
|
return nil, false
|
||||||
|
@ -175,7 +175,7 @@ func (self *Filter) bloomFilter(block *Block) bool {
|
|||||||
var fromIncluded, toIncluded bool
|
var fromIncluded, toIncluded bool
|
||||||
if len(self.from) > 0 {
|
if len(self.from) > 0 {
|
||||||
for _, from := range self.from {
|
for _, from := range self.from {
|
||||||
if BloomLookup(block.LogsBloom, from) {
|
if BloomLookup(block.LogsBloom, from) || bytes.Equal(block.Coinbase, from) {
|
||||||
fromIncluded = true
|
fromIncluded = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -186,7 +186,7 @@ func (self *Filter) bloomFilter(block *Block) bool {
|
|||||||
|
|
||||||
if len(self.to) > 0 {
|
if len(self.to) > 0 {
|
||||||
for _, to := range self.to {
|
for _, to := range self.to {
|
||||||
if BloomLookup(block.LogsBloom, ethutil.U256(new(big.Int).Add(ethutil.Big1, ethutil.BigD(to))).Bytes()) {
|
if BloomLookup(block.LogsBloom, ethutil.U256(new(big.Int).Add(ethutil.Big1, ethutil.BigD(to))).Bytes()) || bytes.Equal(block.Coinbase, to) {
|
||||||
toIncluded = true
|
toIncluded = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user