Skip to content

Commit a758e16

Browse files
authored
core/state: implement GetCodeSize for VerkleDB (ethereum#75)
implement core/state: implement GetCodeSize for VerkleDB
1 parent 825884a commit a758e16

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

core/state/database.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,16 @@ func (db *VerkleDB) ContractCode(addrHash, codeHash common.Hash) ([]byte, error)
270270

271271
// ContractCodeSize retrieves a particular contracts code's size.
272272
func (db *VerkleDB) ContractCodeSize(addrHash, codeHash common.Hash) (int, error) {
273-
panic("need to merge #31 for this to work")
273+
if code := db.codeCache.Get(nil, codeHash.Bytes()); len(code) > 0 {
274+
return len(code), nil
275+
}
276+
code := rawdb.ReadCode(db.db.DiskDB(), codeHash)
277+
if len(code) > 0 {
278+
db.codeCache.Set(codeHash.Bytes(), code)
279+
db.codeSizeCache.Add(codeHash, len(code))
280+
return len(code), nil
281+
}
282+
return 0, nil
274283
}
275284

276285
// TrieDB retrieves the low level trie database used for data storage.

0 commit comments

Comments
 (0)