|
|
|
@ -34,8 +34,8 @@ type Filter struct { |
|
|
|
|
addresses []common.Address |
|
|
|
|
topics [][]common.Hash |
|
|
|
|
|
|
|
|
|
block common.Hash // Block hash if filtering a single block
|
|
|
|
|
begin, end int64 // Range interval if filtering multiple blocks
|
|
|
|
|
block *common.Hash // Block hash if filtering a single block
|
|
|
|
|
begin, end int64 // Range interval if filtering multiple blocks
|
|
|
|
|
|
|
|
|
|
matcher *bloombits.Matcher |
|
|
|
|
} |
|
|
|
@ -78,7 +78,7 @@ func (sys *FilterSystem) NewRangeFilter(begin, end int64, addresses []common.Add |
|
|
|
|
func (sys *FilterSystem) NewBlockFilter(block common.Hash, addresses []common.Address, topics [][]common.Hash) *Filter { |
|
|
|
|
// Create a generic filter and convert it into a block filter
|
|
|
|
|
filter := newFilter(sys, addresses, topics) |
|
|
|
|
filter.block = block |
|
|
|
|
filter.block = &block |
|
|
|
|
return filter |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -96,8 +96,8 @@ func newFilter(sys *FilterSystem, addresses []common.Address, topics [][]common. |
|
|
|
|
// first block that contains matches, updating the start of the filter accordingly.
|
|
|
|
|
func (f *Filter) Logs(ctx context.Context) ([]*types.Log, error) { |
|
|
|
|
// If we're doing singleton block filtering, execute and return
|
|
|
|
|
if f.block != (common.Hash{}) { |
|
|
|
|
header, err := f.sys.backend.HeaderByHash(ctx, f.block) |
|
|
|
|
if f.block != nil { |
|
|
|
|
header, err := f.sys.backend.HeaderByHash(ctx, *f.block) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
} |
|
|
|
|