@@ -54,6 +54,8 @@ type Database interface {
5454 // Arbitrum: Read activated Stylus contracts
5555 ActivatedAsm (moduleHash common.Hash ) (asm []byte , err error )
5656 ActivatedModule (moduleHash common.Hash ) (module []byte , err error )
57+ WasmStore () ethdb.KeyValueStore
58+ WasmCacheTag () uint32
5759
5860 // OpenTrie opens the main account trie.
5961 OpenTrie (root common.Hash ) (Trie , error )
@@ -158,12 +160,15 @@ func NewDatabase(db ethdb.Database) Database {
158160// is safe for concurrent use and retains a lot of collapsed RLP trie nodes in a
159161// large memory cache.
160162func NewDatabaseWithConfig (db ethdb.Database , config * trie.Config ) Database {
163+ wasmdb , wasmTag := db .WasmDataBase ()
161164 cdb := & cachingDB {
162165 // Arbitrum only
163166 activatedAsmCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](activatedWasmCacheSize ),
164167 activatedModuleCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](activatedWasmCacheSize ),
168+ wasmTag : wasmTag ,
165169
166170 disk : db ,
171+ wasmdb : wasmdb ,
167172 codeSizeCache : lru.NewCache [common.Hash , int ](codeSizeCacheSize ),
168173 codeCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](codeCacheSize ),
169174 triedb : trie .NewDatabase (db , config ),
@@ -173,12 +178,15 @@ func NewDatabaseWithConfig(db ethdb.Database, config *trie.Config) Database {
173178
174179// NewDatabaseWithNodeDB creates a state database with an already initialized node database.
175180func NewDatabaseWithNodeDB (db ethdb.Database , triedb * trie.Database ) Database {
181+ wasmdb , wasmTag := db .WasmDataBase ()
176182 cdb := & cachingDB {
177183 // Arbitrum only
178184 activatedAsmCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](activatedWasmCacheSize ),
179185 activatedModuleCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](activatedWasmCacheSize ),
186+ wasmTag : wasmTag ,
180187
181188 disk : db ,
189+ wasmdb : wasmdb ,
182190 codeSizeCache : lru.NewCache [common.Hash , int ](codeSizeCacheSize ),
183191 codeCache : lru.NewSizeConstrainedCache [common.Hash , []byte ](codeCacheSize ),
184192 triedb : triedb ,
@@ -190,13 +198,23 @@ type cachingDB struct {
190198 // Arbitrum
191199 activatedAsmCache * lru.SizeConstrainedCache [common.Hash , []byte ]
192200 activatedModuleCache * lru.SizeConstrainedCache [common.Hash , []byte ]
201+ wasmTag uint32
193202
194203 disk ethdb.KeyValueStore
204+ wasmdb ethdb.KeyValueStore
195205 codeSizeCache * lru.Cache [common.Hash , int ]
196206 codeCache * lru.SizeConstrainedCache [common.Hash , []byte ]
197207 triedb * trie.Database
198208}
199209
210+ func (db * cachingDB ) WasmStore () ethdb.KeyValueStore {
211+ return db .wasmdb
212+ }
213+
214+ func (db * cachingDB ) WasmCacheTag () uint32 {
215+ return db .wasmTag
216+ }
217+
200218// OpenTrie opens the main account trie at a specific root hash.
201219func (db * cachingDB ) OpenTrie (root common.Hash ) (Trie , error ) {
202220 if db .triedb .IsVerkle () {
0 commit comments