-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: add the wrapper layer of versa
- Loading branch information
1 parent
83a9b13
commit f896f80
Showing
1 changed file
with
104 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
package state | ||
|
||
import ( | ||
versa "github.com/bnb-chain/versioned-state-database" | ||
"github.com/ethereum/go-ethereum/core/types" | ||
"github.com/ethereum/go-ethereum/ethdb" | ||
"github.com/ethereum/go-ethereum/trie" | ||
"github.com/ethereum/go-ethereum/trie/trienode" | ||
"github.com/ethereum/go-ethereum/triedb" | ||
) | ||
|
||
// VersaDB is embed in state.cachingDB | ||
type VersaDB struct { | ||
db versa.DataBase | ||
handler versa.StateHandler | ||
rwhandler versa.StateHandler | ||
codeDB ethdb.KeyValueStore | ||
} | ||
|
||
func (v *VersaDB) OpenTrie(root common.Hash) (Trie, error) { | ||
// 1. open state, then set v.handler | ||
// 2. open root tree, then return | ||
} | ||
|
||
func (v *VersaDB) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, trie Trie) (Trie, error) { | ||
// 1. get storage tree hash and version, use v.handler from root tree | ||
// 2. use tree hash and version open sub tree in versadb. | ||
} | ||
|
||
func (v *VersaDB) CopyTrie(t Trie) Trie { | ||
// it used to prefetcher | ||
// 1. creaet S_RW state, set v.rwhandler, if have reuse the v.rwhandler | ||
// 2. then reopen tree to return | ||
} | ||
|
||
func (v *VersaDB) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) { | ||
// 1. set to v.codeDB | ||
} | ||
|
||
func (v *VersaDB) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) { | ||
// 1. get from v.codeDB | ||
} | ||
|
||
func (v *VersaDB) DiskDB() ethdb.KeyValueStore { | ||
// return nil, it only used to snapshot | ||
} | ||
|
||
func (v *VersaDB) TrieDB() *triedb.Database { | ||
// return nil, it used to snapsync | ||
} | ||
|
||
func (v *VersaDB) NoTries() bool { | ||
// return false, not support fastnode | ||
} | ||
|
||
// add method for versa, and for other dbs | ||
func (v *VersaDB) Flush() error { | ||
// return v.db.Flush(v.handler) | ||
} | ||
|
||
// add method for versa, and for other dbs | ||
func (v *VersaDB) CloseState() error { | ||
// call defer CloseState() in state.Commit | ||
} | ||
|
||
// add method for versa, and for other dbs | ||
func (v *VersaDB) Close() error { | ||
|
||
} | ||
|
||
// VersaTree used to NewState(root tree) and StateObject(subtree) | ||
type VersaTree struct { | ||
version int64 | ||
handler versa.TreeHandler | ||
} | ||
|
||
func (vt *VersaTree) GetKey([]byte) []byte {} | ||
|
||
func (vt *VersaTree) GetAccount(address common.Address) (*types.StateAccount, error) {} | ||
|
||
func (vt *VersaTree) GetStorage(addr common.Address, key []byte) ([]byte, error) {} | ||
|
||
func (vt *VersaTree) UpdateAccount(address common.Address, account *types.StateAccount) error {} | ||
|
||
func (vt *VersaTree) UpdateStorage(addr common.Address, key, value []byte) error {} | ||
|
||
func (vt *VersaTree) DeleteAccount(address common.Address) error {} | ||
|
||
func (vt *VersaTree) DeleteStorage(addr common.Address, key []byte) error {} | ||
|
||
func (vt *VersaTree) UpdateContractCode(address common.Address, codeHash common.Hash, code []byte) error { | ||
} | ||
|
||
func (vt *VersaTree) Hash() common.Hash {} | ||
|
||
func (vt *VersaTree) Commit(collectLeaf bool) (common.Hash, *trienode.NodeSet, error) {} | ||
|
||
func (vt *VersaTree) NodeIterator(startKey []byte) (trie.NodeIterator, error) { | ||
// 1. return nil, nil, not support, it used to dump cmd | ||
} | ||
|
||
func (vt *VersaTree) Prove(key []byte, proofDb ethdb.KeyValueWriter) error { | ||
// 1. return errors.New("not support on versadb "), not support, it used to snapshot | ||
} |