Skip to content

Commit

Permalink
trie/triedb: add Reader to backend interface (ethereum#29988)
Browse files Browse the repository at this point in the history
  • Loading branch information
darioush authored Jun 14, 2024
1 parent 86150af commit fd5078c
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
12 changes: 5 additions & 7 deletions triedb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ type backend interface {

// Close closes the trie database backend and releases all held resources.
Close() error

// Reader returns a reader for accessing all trie nodes with provided state
// root. An error will be returned if the requested state is not available.
Reader(root common.Hash) (database.Reader, error)
}

// Database is the wrapper of the underlying backend which is shared by different
Expand Down Expand Up @@ -123,13 +127,7 @@ func NewDatabase(diskdb ethdb.Database, config *Config) *Database {
// Reader returns a reader for accessing all trie nodes with provided state root.
// An error will be returned if the requested state is not available.
func (db *Database) Reader(blockRoot common.Hash) (database.Reader, error) {
switch b := db.backend.(type) {
case *hashdb.Database:
return b.Reader(blockRoot)
case *pathdb.Database:
return b.Reader(blockRoot)
}
return nil, errors.New("unknown backend")
return db.backend.Reader(blockRoot)
}

// Update performs a state transition by committing dirty nodes contained in the
Expand Down
3 changes: 2 additions & 1 deletion triedb/hashdb/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/trie/trienode"
"github.com/ethereum/go-ethereum/trie/triestate"
"github.com/ethereum/go-ethereum/triedb/database"
)

var (
Expand Down Expand Up @@ -625,7 +626,7 @@ func (db *Database) Close() error {

// Reader retrieves a node reader belonging to the given state root.
// An error will be returned if the requested state is not available.
func (db *Database) Reader(root common.Hash) (*reader, error) {
func (db *Database) Reader(root common.Hash) (database.Reader, error) {
if _, err := db.node(root); err != nil {
return nil, fmt.Errorf("state %#x is not available, %v", root, err)
}
Expand Down

0 comments on commit fd5078c

Please sign in to comment.