From a6e95c4938aa952d72afd4850e4cf21bc727e227 Mon Sep 17 00:00:00 2001 From: Austin Larson Date: Fri, 30 May 2025 11:46:07 -0400 Subject: [PATCH 1/2] feat(triedb): expose backend for custom use --- triedb/database.go | 14 ++++++++++---- triedb/database.libevm.go | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/triedb/database.go b/triedb/database.go index 6ec8b157a74..92663fec937 100644 --- a/triedb/database.go +++ b/triedb/database.go @@ -47,9 +47,9 @@ var HashDefaults = &Config{ HashDB: hashdb.Defaults, } -// backend defines the methods needed to access/update trie nodes in different -// state scheme. -type backend interface { +// Backend defines the methods needed to access/update trie nodes in different +// state schemes. +type Backend interface { // Scheme returns the identifier of used storage scheme. Scheme() string @@ -87,7 +87,7 @@ type Database struct { config *Config // Configuration for trie database diskdb ethdb.Database // Persistent database to store the snapshot preimages *preimageStore // The store for caching preimages - backend backend // The backend for managing trie nodes + backend Backend // The backend for managing trie nodes } // NewDatabase initializes the trie database with default settings, note @@ -343,3 +343,9 @@ func (db *Database) SetBufferSize(size int) error { func (db *Database) IsVerkle() bool { return db.config.IsVerkle } + +// Backend returns the underlying backend of the trie database, which +// implements the methods for accessing additional custom methods. +func (db *Database) Backend() Backend { + return db.backend +} diff --git a/triedb/database.libevm.go b/triedb/database.libevm.go index c20b674852b..f2c879d9eda 100644 --- a/triedb/database.libevm.go +++ b/triedb/database.libevm.go @@ -29,7 +29,7 @@ import ( // BackendDB defines the intersection of methods shared by [hashdb.Database] and // [pathdb.Database]. It is defined to export an otherwise internal type used by // the non-libevm geth implementation. -type BackendDB backend +type BackendDB Backend // A ReaderProvider exposes its underlying Reader as an interface. Both // [hashdb.Database] and [pathdb.Database] return concrete types so Go's lack of From ef056eafd144ab64e2afeb9f67cc69d7138ed493 Mon Sep 17 00:00:00 2001 From: Austin Larson Date: Fri, 30 May 2025 13:49:58 -0400 Subject: [PATCH 2/2] address comments --- triedb/database.go | 14 ++++---------- triedb/database.libevm.go | 7 ++++++- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/triedb/database.go b/triedb/database.go index 92663fec937..6ec8b157a74 100644 --- a/triedb/database.go +++ b/triedb/database.go @@ -47,9 +47,9 @@ var HashDefaults = &Config{ HashDB: hashdb.Defaults, } -// Backend defines the methods needed to access/update trie nodes in different -// state schemes. -type Backend interface { +// backend defines the methods needed to access/update trie nodes in different +// state scheme. +type backend interface { // Scheme returns the identifier of used storage scheme. Scheme() string @@ -87,7 +87,7 @@ type Database struct { config *Config // Configuration for trie database diskdb ethdb.Database // Persistent database to store the snapshot preimages *preimageStore // The store for caching preimages - backend Backend // The backend for managing trie nodes + backend backend // The backend for managing trie nodes } // NewDatabase initializes the trie database with default settings, note @@ -343,9 +343,3 @@ func (db *Database) SetBufferSize(size int) error { func (db *Database) IsVerkle() bool { return db.config.IsVerkle } - -// Backend returns the underlying backend of the trie database, which -// implements the methods for accessing additional custom methods. -func (db *Database) Backend() Backend { - return db.backend -} diff --git a/triedb/database.libevm.go b/triedb/database.libevm.go index f2c879d9eda..5636b81224f 100644 --- a/triedb/database.libevm.go +++ b/triedb/database.libevm.go @@ -29,7 +29,7 @@ import ( // BackendDB defines the intersection of methods shared by [hashdb.Database] and // [pathdb.Database]. It is defined to export an otherwise internal type used by // the non-libevm geth implementation. -type BackendDB Backend +type BackendDB backend // A ReaderProvider exposes its underlying Reader as an interface. Both // [hashdb.Database] and [pathdb.Database] return concrete types so Go's lack of @@ -51,6 +51,11 @@ type DBOverride interface { ReaderProvider } +// Backend returns the underlying backend of the trie database. +func (db *Database) Backend() BackendDB { + return db.backend +} + func (db *Database) overrideBackend(diskdb ethdb.Database, config *Config) bool { if config.DBOverride == nil { return false