github.com/bigzoro/my_simplechain@v0.0.0-20240315012955-8ad0a2a29bb9/cmd/modify/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"github.com/bigzoro/my_simplechain/common"
     6  	"github.com/bigzoro/my_simplechain/core/rawdb"
     7  	"github.com/bigzoro/my_simplechain/core/state"
     8  	ethdb "github.com/bigzoro/my_simplechain/ethdb/leveldb"
     9  	"log"
    10  )
    11  
    12  func main() {
    13  
    14  	path := flag.String("path", "", "leveldb file")
    15  	stateRoot := flag.String("root", "", "state root")
    16  	acc := flag.String("acc", "", "account")
    17  	flag.Parse()
    18  	log.Printf("params: %v %v %v", *path, *stateRoot, *acc)
    19  	root := common.BytesToHash(common.FromHex(*stateRoot))
    20  
    21  	db, err := ethdb.New(*path, 0, 0, "")
    22  	if err != nil {
    23  		log.Fatal("get ethDB failed " + err.Error())
    24  	}
    25  	ethDB := rawdb.NewDatabase(db)
    26  	statedb, err := state.New(root, state.NewDatabase(ethDB))
    27  	if err != nil {
    28  		log.Fatal("get statedb failed " + err.Error())
    29  	}
    30  	account := common.HexToAddress(*acc)
    31  	log.Printf("balance: %v\n ", statedb.GetBalance(account))
    32  
    33  	rs, err := db.Get(root.Bytes())
    34  	if err != nil {
    35  		log.Fatal("get state root failed " + err.Error())
    36  	}
    37  	log.Printf("get state root: %v", rs)
    38  	//it := db.NewIteratorWithPrefix(root.Bytes())
    39  	//for {
    40  	//	if !it.Next() {
    41  	//		break
    42  	//	}
    43  	//	t.Log("key ", common.Bytes2Hex(it.Key()), "value ", common.Bytes2Hex(it.Value()))
    44  	//}
    45  	err = db.Delete(root.Bytes())
    46  	if err != nil {
    47  		log.Fatal("delete failed " + err.Error())
    48  	}
    49  	defer db.Close()
    50  	rs, err = db.Get(root.Bytes())
    51  	if err != nil {
    52  		log.Fatal("after modify, get state root failed " + err.Error())
    53  	}
    54  	log.Printf("after modify, get state root: %v", rs)
    55  	log.Println("dummy transaction exit")
    56  }