Addressed comments
This commit is contained in:
parent
674595d6c9
commit
80cfa77826
@ -59,7 +59,7 @@ type Database struct {
|
|||||||
// EXTCODESIZE calls.
|
// EXTCODESIZE calls.
|
||||||
codeSizeCache *lru.Cache
|
codeSizeCache *lru.Cache
|
||||||
|
|
||||||
dataCache *lru.Cache
|
storeCache *lru.Cache
|
||||||
|
|
||||||
Tracing bool
|
Tracing bool
|
||||||
}
|
}
|
||||||
@ -68,7 +68,7 @@ type Database struct {
|
|||||||
// implements Ethereum's state.Database interface. An error is returned if the
|
// implements Ethereum's state.Database interface. An error is returned if the
|
||||||
// latest state failed to load. The underlying storage structure is defined by
|
// latest state failed to load. The underlying storage structure is defined by
|
||||||
// the Cosmos SDK IAVL tree.
|
// the Cosmos SDK IAVL tree.
|
||||||
func NewDatabase(stateDB, codeDB dbm.DB, dataCacheSize int) (*Database, error) {
|
func NewDatabase(stateDB, codeDB dbm.DB, storeCacheSize int) (*Database, error) {
|
||||||
// Initialize an implementation of Ethereum state.Database and create a
|
// Initialize an implementation of Ethereum state.Database and create a
|
||||||
// Cosmos SDK multi-store.
|
// Cosmos SDK multi-store.
|
||||||
db := &Database{
|
db := &Database{
|
||||||
@ -95,8 +95,13 @@ func NewDatabase(stateDB, codeDB dbm.DB, dataCacheSize int) (*Database, error) {
|
|||||||
db.codeDB = codeDB
|
db.codeDB = codeDB
|
||||||
db.ethTrieDB = ethtrie.NewDatabase(&core.EthereumDB{CodeDB: codeDB})
|
db.ethTrieDB = ethtrie.NewDatabase(&core.EthereumDB{CodeDB: codeDB})
|
||||||
|
|
||||||
db.codeSizeCache, _ = lru.New(codeSizeCacheSize)
|
var err error
|
||||||
db.dataCache, _ = lru.New(dataCacheSize)
|
if db.codeSizeCache, err = lru.New(codeSizeCacheSize); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if db.storeCache, err = lru.New(storeCacheSize); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return db, nil
|
return db, nil
|
||||||
}
|
}
|
||||||
@ -136,7 +141,7 @@ func (db *Database) OpenTrie(root ethcmn.Hash) (ethstate.Trie, error) {
|
|||||||
store: db.accountsCache,
|
store: db.accountsCache,
|
||||||
accountsCache: db.accountsCache,
|
accountsCache: db.accountsCache,
|
||||||
storageCache: db.storageCache,
|
storageCache: db.storageCache,
|
||||||
dataCache: db.dataCache,
|
storeCache: db.storeCache,
|
||||||
ethTrieDB: db.ethTrieDB,
|
ethTrieDB: db.ethTrieDB,
|
||||||
empty: isRootEmpty(root),
|
empty: isRootEmpty(root),
|
||||||
root: rootHashFromVersion(db.stateStore.LastCommitID().Version),
|
root: rootHashFromVersion(db.stateStore.LastCommitID().Version),
|
||||||
@ -158,11 +163,11 @@ func (db *Database) OpenStorageTrie(addrHash, root ethcmn.Hash) (ethstate.Trie,
|
|||||||
// a contract storage trie does not need an accountCache, storageCache or
|
// a contract storage trie does not need an accountCache, storageCache or
|
||||||
// an Ethereum trie because it will not be used upon commitment.
|
// an Ethereum trie because it will not be used upon commitment.
|
||||||
return &Trie{
|
return &Trie{
|
||||||
store: db.storageCache,
|
store: db.storageCache,
|
||||||
dataCache: db.dataCache,
|
storeCache: db.storeCache,
|
||||||
prefix: addrHash.Bytes(),
|
prefix: addrHash.Bytes(),
|
||||||
empty: isRootEmpty(root),
|
empty: isRootEmpty(root),
|
||||||
root: rootHashFromVersion(db.stateStore.LastCommitID().Version),
|
root: rootHashFromVersion(db.stateStore.LastCommitID().Version),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ type Trie struct {
|
|||||||
// ordering.
|
// ordering.
|
||||||
storageCache store.CacheKVStore
|
storageCache store.CacheKVStore
|
||||||
|
|
||||||
dataCache *lru.Cache
|
storeCache *lru.Cache
|
||||||
|
|
||||||
// Store is an IAVL KV store that is part of a larger store except it used
|
// Store is an IAVL KV store that is part of a larger store except it used
|
||||||
// for a specific prefix. It will either be an accountsCache or a
|
// for a specific prefix. It will either be an accountsCache or a
|
||||||
@ -69,11 +69,11 @@ func (t *Trie) TryGet(key []byte) ([]byte, error) {
|
|||||||
key = t.prefixKey(key)
|
key = t.prefixKey(key)
|
||||||
}
|
}
|
||||||
keyStr := string(key)
|
keyStr := string(key)
|
||||||
if cached, ok := t.dataCache.Get(keyStr); ok {
|
if cached, ok := t.storeCache.Get(keyStr); ok {
|
||||||
return cached.([]byte), nil
|
return cached.([]byte), nil
|
||||||
}
|
}
|
||||||
value := t.store.Get(key)
|
value := t.store.Get(key)
|
||||||
t.dataCache.Add(keyStr, value)
|
t.storeCache.Add(keyStr, value)
|
||||||
return value, nil
|
return value, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ func (t *Trie) TryUpdate(key, value []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t.store.Set(key, value)
|
t.store.Set(key, value)
|
||||||
t.dataCache.Add(string(key), value)
|
t.storeCache.Add(string(key), value)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ func (t *Trie) TryDelete(key []byte) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t.store.Delete(key)
|
t.store.Delete(key)
|
||||||
t.dataCache.Remove(string(key))
|
t.storeCache.Remove(string(key))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user