Skip to content

Commit d996b94

Browse files
Move HashedAddressChecker to addressfilter
1 parent 218fdc8 commit d996b94

File tree

5 files changed

+30
-22
lines changed

5 files changed

+30
-22
lines changed
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
// Copyright 2026, Offchain Labs, Inc.
22
// For license information, see https://github.com/OffchainLabs/nitro/blob/master/LICENSE.md
33

4-
package txfilter
4+
package addressfilter
55

66
import (
77
"sync"
88
"sync/atomic"
99

1010
"github.com/ethereum/go-ethereum/common"
1111
"github.com/ethereum/go-ethereum/core/state"
12-
13-
"github.com/offchainlabs/nitro/restrictedaddr"
1412
)
1513

1614
// Default parameters for HashedAddressChecker, used in NewDefaultHashedAddressChecker
@@ -24,7 +22,7 @@ const (
2422
// the HashStore; this checker only manages async execution and per-tx
2523
// aggregation.
2624
type HashedAddressChecker struct {
27-
store *restrictedaddr.HashStore
25+
store *HashStore
2826
workChan chan workItem
2927
}
3028

@@ -44,7 +42,7 @@ type workItem struct {
4442

4543
// NewHashedAddressChecker constructs a new checker backed by a HashStore.
4644
func NewHashedAddressChecker(
47-
store *restrictedaddr.HashStore,
45+
store *HashStore,
4846
workerCount int,
4947
queueSize int,
5048
) *HashedAddressChecker {
@@ -60,7 +58,7 @@ func NewHashedAddressChecker(
6058
return c
6159
}
6260

63-
func NewDefaultHashedAddressChecker(store *restrictedaddr.HashStore) *HashedAddressChecker {
61+
func NewDefaultHashedAddressChecker(store *HashStore) *HashedAddressChecker {
6462
return NewHashedAddressChecker(
6563
store,
6664
restrictedAddrWorkerCount,
@@ -83,11 +81,13 @@ func (c *HashedAddressChecker) worker() {
8381
}
8482

8583
func (s *HashedAddressCheckerState) TouchAddress(addr common.Address) {
84+
s.pending.Add(1)
8685
select {
8786
case s.checker.workChan <- workItem{addr: addr, state: s}:
88-
s.pending.Add(1)
87+
// ok
8988
default:
90-
// queue full: drop work conservatively
89+
// queue full: drop check (fail-open, false negative possible)
90+
s.pending.Done()
9191
}
9292
}
9393

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2026, Offchain Labs, Inc.
22
// For license information, see https://github.com/OffchainLabs/nitro/blob/master/LICENSE.md
33

4-
package txfilter
4+
package addressfilter
55

66
import (
77
"crypto/sha256"
@@ -12,8 +12,6 @@ import (
1212
"github.com/stretchr/testify/require"
1313

1414
"github.com/ethereum/go-ethereum/common"
15-
16-
"github.com/offchainlabs/nitro/restrictedaddr"
1715
)
1816

1917
func mustState(t *testing.T, s any) *HashedAddressCheckerState {
@@ -29,10 +27,10 @@ func TestHashedAddressCheckerSimple(t *testing.T) {
2927
addrFiltered := common.HexToAddress("0x000000000000000000000000000000000000dead")
3028
addrAllowed := common.HexToAddress("0x000000000000000000000000000000000000beef")
3129

32-
store := restrictedaddr.NewHashStore()
30+
store := NewHashStore()
3331

34-
filteredHash := sha256.Sum256(append(salt, addrFiltered.Bytes()...))
35-
store.Load(salt, [][32]byte{filteredHash}, "test")
32+
hash := sha256.Sum256(append(salt, addrFiltered.Bytes()...))
33+
store.Load(salt, []common.Hash{hash}, "test")
3634

3735
checker := NewDefaultHashedAddressChecker(store)
3836

@@ -80,15 +78,15 @@ func TestHashedAddressCheckerHeavy(t *testing.T) {
8078

8179
const filteredCount = 500
8280
filteredAddrs := make([]common.Address, filteredCount)
83-
filteredHashes := make([][32]byte, filteredCount)
81+
filteredHashes := make([]common.Hash, filteredCount)
8482

8583
for i := range filteredAddrs {
8684
addr := common.BytesToAddress([]byte{byte(i + 1)})
8785
filteredAddrs[i] = addr
8886
filteredHashes[i] = sha256.Sum256(append(salt, addr.Bytes()...))
8987
}
9088

91-
store := restrictedaddr.NewHashStore()
89+
store := NewHashStore()
9290
store.Load(salt, filteredHashes, "heavy")
9391

9492
checker := NewDefaultHashedAddressChecker(store)

address-filter/service.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,7 @@ func (s *Service) GetHashStoreDigest() string {
9898
func (s *Service) GetLoadedAt() time.Time {
9999
return s.store.LoadedAt()
100100
}
101+
102+
func (s *Service) GetStore() *HashStore {
103+
return s.store
104+
}

execution/gethexec/node.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/ethereum/go-ethereum/common"
1919
"github.com/ethereum/go-ethereum/core"
2020
"github.com/ethereum/go-ethereum/core/rawdb"
21+
"github.com/ethereum/go-ethereum/core/state"
2122
"github.com/ethereum/go-ethereum/core/types"
2223
"github.com/ethereum/go-ethereum/eth"
2324
"github.com/ethereum/go-ethereum/eth/filters"
@@ -370,6 +371,12 @@ func CreateExecutionNode(
370371
return nil, fmt.Errorf("failed to create restricted addr service: %w", err)
371372
}
372373

374+
var addressChecker state.AddressChecker
375+
if addressFilterService != nil {
376+
addressChecker = addressfilter.NewDefaultHashedAddressChecker(addressFilterService.GetStore())
377+
execEngine.SetAddressChecker(addressChecker)
378+
}
379+
373380
execNode := &ExecutionNode{
374381
ExecutionDB: executionDB,
375382
Backend: backend,

system_tests/tx_address_filter_test.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ import (
1313
"github.com/ethereum/go-ethereum/common"
1414
"github.com/ethereum/go-ethereum/crypto"
1515

16-
"github.com/offchainlabs/nitro/restrictedaddr"
16+
addressfilter "github.com/offchainlabs/nitro/address-filter"
1717
"github.com/offchainlabs/nitro/solgen/go/localgen"
18-
"github.com/offchainlabs/nitro/txfilter"
1918
)
2019

2120
func isFilteredError(err error) bool {
@@ -25,17 +24,17 @@ func isFilteredError(err error) bool {
2524
return strings.Contains(err.Error(), "internal error")
2625
}
2726

28-
func newHashedChecker(addrs []common.Address) *txfilter.HashedAddressChecker {
29-
store := restrictedaddr.NewHashStore()
27+
func newHashedChecker(addrs []common.Address) *addressfilter.HashedAddressChecker {
28+
store := addressfilter.NewHashStore()
3029
if len(addrs) > 0 {
3130
salt := []byte("test-salt")
32-
hashes := make([][32]byte, len(addrs))
31+
hashes := make([]common.Hash, len(addrs))
3332
for i, addr := range addrs {
3433
hashes[i] = sha256.Sum256(append(salt, addr.Bytes()...))
3534
}
3635
store.Load(salt, hashes, "test")
3736
}
38-
return txfilter.NewDefaultHashedAddressChecker(store)
37+
return addressfilter.NewDefaultHashedAddressChecker(store)
3938
}
4039

4140
func TestAddressFilterDirectTransfer(t *testing.T) {

0 commit comments

Comments
 (0)