Skip to content

Commit f896f80

Browse files
committed
chore: add the wrapper layer of versa
1 parent 83a9b13 commit f896f80

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

core/state/versadb.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package state
2+
3+
import (
4+
versa "github.com/bnb-chain/versioned-state-database"
5+
"github.com/ethereum/go-ethereum/core/types"
6+
"github.com/ethereum/go-ethereum/ethdb"
7+
"github.com/ethereum/go-ethereum/trie"
8+
"github.com/ethereum/go-ethereum/trie/trienode"
9+
"github.com/ethereum/go-ethereum/triedb"
10+
)
11+
12+
// VersaDB is embed in state.cachingDB
13+
type VersaDB struct {
14+
db versa.DataBase
15+
handler versa.StateHandler
16+
rwhandler versa.StateHandler
17+
codeDB ethdb.KeyValueStore
18+
}
19+
20+
func (v *VersaDB) OpenTrie(root common.Hash) (Trie, error) {
21+
// 1. open state, then set v.handler
22+
// 2. open root tree, then return
23+
}
24+
25+
func (v *VersaDB) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, trie Trie) (Trie, error) {
26+
// 1. get storage tree hash and version, use v.handler from root tree
27+
// 2. use tree hash and version open sub tree in versadb.
28+
}
29+
30+
func (v *VersaDB) CopyTrie(t Trie) Trie {
31+
// it used to prefetcher
32+
// 1. creaet S_RW state, set v.rwhandler, if have reuse the v.rwhandler
33+
// 2. then reopen tree to return
34+
}
35+
36+
func (v *VersaDB) ContractCode(addr common.Address, codeHash common.Hash) ([]byte, error) {
37+
// 1. set to v.codeDB
38+
}
39+
40+
func (v *VersaDB) ContractCodeSize(addr common.Address, codeHash common.Hash) (int, error) {
41+
// 1. get from v.codeDB
42+
}
43+
44+
func (v *VersaDB) DiskDB() ethdb.KeyValueStore {
45+
// return nil, it only used to snapshot
46+
}
47+
48+
func (v *VersaDB) TrieDB() *triedb.Database {
49+
// return nil, it used to snapsync
50+
}
51+
52+
func (v *VersaDB) NoTries() bool {
53+
// return false, not support fastnode
54+
}
55+
56+
// add method for versa, and for other dbs
57+
func (v *VersaDB) Flush() error {
58+
// return v.db.Flush(v.handler)
59+
}
60+
61+
// add method for versa, and for other dbs
62+
func (v *VersaDB) CloseState() error {
63+
// call defer CloseState() in state.Commit
64+
}
65+
66+
// add method for versa, and for other dbs
67+
func (v *VersaDB) Close() error {
68+
69+
}
70+
71+
// VersaTree used to NewState(root tree) and StateObject(subtree)
72+
type VersaTree struct {
73+
version int64
74+
handler versa.TreeHandler
75+
}
76+
77+
func (vt *VersaTree) GetKey([]byte) []byte {}
78+
79+
func (vt *VersaTree) GetAccount(address common.Address) (*types.StateAccount, error) {}
80+
81+
func (vt *VersaTree) GetStorage(addr common.Address, key []byte) ([]byte, error) {}
82+
83+
func (vt *VersaTree) UpdateAccount(address common.Address, account *types.StateAccount) error {}
84+
85+
func (vt *VersaTree) UpdateStorage(addr common.Address, key, value []byte) error {}
86+
87+
func (vt *VersaTree) DeleteAccount(address common.Address) error {}
88+
89+
func (vt *VersaTree) DeleteStorage(addr common.Address, key []byte) error {}
90+
91+
func (vt *VersaTree) UpdateContractCode(address common.Address, codeHash common.Hash, code []byte) error {
92+
}
93+
94+
func (vt *VersaTree) Hash() common.Hash {}
95+
96+
func (vt *VersaTree) Commit(collectLeaf bool) (common.Hash, *trienode.NodeSet, error) {}
97+
98+
func (vt *VersaTree) NodeIterator(startKey []byte) (trie.NodeIterator, error) {
99+
// 1. return nil, nil, not support, it used to dump cmd
100+
}
101+
102+
func (vt *VersaTree) Prove(key []byte, proofDb ethdb.KeyValueWriter) error {
103+
// 1. return errors.New("not support on versadb "), not support, it used to snapshot
104+
}

0 commit comments

Comments
 (0)