Skip to content

Commit

Permalink
chore: add the wrapper layer of versa
Browse files Browse the repository at this point in the history
  • Loading branch information
joeylichang committed Aug 7, 2024
1 parent 83a9b13 commit f896f80
Showing 1 changed file with 104 additions and 0 deletions.
104 changes: 104 additions & 0 deletions core/state/versadb.go
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
}

0 comments on commit f896f80

Please sign in to comment.