github.com/bigzoro/my_simplechain@v0.0.0-20240315012955-8ad0a2a29bb9/cmd/dummytx/db/db_test.go (about) 1 package db 2 3 import ( 4 "encoding/binary" 5 "github.com/bigzoro/my_simplechain/core/rawdb" 6 "github.com/bigzoro/my_simplechain/core/state" 7 ethdb "github.com/bigzoro/my_simplechain/ethdb/leveldb" 8 "github.com/syndtr/goleveldb/leveldb" 9 "testing" 10 11 "github.com/bigzoro/my_simplechain/common" 12 ) 13 14 func TestInsetIdHash(t *testing.T) { 15 hashDb, err := NewLDBDatabase("./IdHash", 0, 0) 16 if err != nil { 17 t.Fatal(err) 18 } 19 20 TxId := common.BytesToHash(common.FromHex("0xd962b109b0bfdef7d6568cff8e6fe24d55e80d5749f6d80ddea66c0647dbb03a")) 21 hashData := common.FromHex("0xe267591b78ab7ffc97fab9e9ae55ae2db067225dde4e989b7ec071b125ca6b94") 22 23 if err := hashDb.InsertHash(hashData, TxId); err != nil { 24 t.Fatal("InsertHash failed: ", err) 25 } 26 27 re, err := hashDb.GetHashId(hashData) 28 if err != nil { 29 t.Fatal(err) 30 } 31 if re != TxId { 32 t.Fatal("the hash not equal ") 33 } 34 35 //fmt.Println(re.String(),err) 36 } 37 func encodeBlockNumber(number uint64) []byte { 38 enc := make([]byte, 8) 39 binary.BigEndian.PutUint64(enc, number) 40 return enc 41 } 42 func TestModifyBlock(t *testing.T) { 43 db, err := leveldb.OpenFile("/home/lixuecheng/goProject/src/github.com/simplechainleague/testtpsdata/test-node-1/sipe/chaindata", nil) 44 if err != nil { 45 t.Fatal("openFile" + err.Error()) 46 } 47 defer db.Close() 48 headBlockKey := []byte("LastBlock") 49 blockBodyPrefix := []byte("b") 50 hash := common.BytesToHash(common.FromHex("0x1e40eae5b5d314e9463889336834b0cc700e4f6a30ad91aaa1ad10a012de2df6")) 51 data, err := db.Get(headBlockKey[:], nil) 52 if err != nil { 53 t.Fatal("read block failed " + err.Error()) 54 } 55 t.Log("get block", data) 56 57 key := append(append(blockBodyPrefix, encodeBlockNumber(5)...), hash.Bytes()...) 58 data1, err := db.Get(key[:], nil) 59 if err != nil { 60 t.Fatal("get block body failed " + err.Error()) 61 } 62 t.Log("get block body", data1) 63 64 configPrefix := append([]byte("ethereum-config-")) 65 data2, err := db.Get(configPrefix[:], nil) 66 if err != nil { 67 t.Fatal("get block body failed " + err.Error()) 68 } 69 t.Log("get block body", data2) 70 } 71 72 func TestModifyState(t *testing.T) { 73 //db, err := leveldb.OpenFile("/home/lixuecheng/goProject/src/github.com/simplechainleague/testtpsdata/test-node-1/sipe/chaindata", nil) 74 //if err != nil { 75 // t.Fatal("openFile" + err.Error()) 76 //} 77 //defer db.Close() 78 //headBlockKey := []byte("LastBlock") 79 //data, err := db.Get(headBlockKey[:], nil) 80 //if err != nil { 81 // t.Fatal("read block failed " + err.Error()) 82 //} 83 //t.Log("get block", data) 84 85 root := common.BytesToHash(common.FromHex("0x1411d96a8527236473e10d150bac66e5ce25c5eda58f5fd4836606befc436a3f")) 86 //key := append([]byte("secure-key-"), root.Bytes()...) 87 t.Log("get key ", root) 88 //data1, err := db.Get(root[:], nil) 89 //if err != nil { 90 // t.Fatal("get block failed " + err.Error()) 91 //} 92 //t.Log("get state ", data1) 93 db, err := ethdb.New("/home/lixuecheng/goProject/src/github.com/simplechainleague/testtpsdata/test-node-1/sipe/chaindata", 0, 0, "") 94 if err != nil { 95 t.Fatal("get ethDB failed " + err.Error()) 96 } 97 ethDB := rawdb.NewDatabase(db) 98 statedb, err := state.New(root, state.NewDatabase(ethDB)) 99 if err != nil { 100 t.Fatal("get statedb failed " + err.Error()) 101 } 102 account := common.HexToAddress("0x701b014b225b2127299eea5d3dcd2071f3321004") 103 //statedb.SetBalance(account, big.NewInt(0)) 104 t.Log("balance ", statedb.GetBalance(account)) 105 106 it := db.NewIteratorWithPrefix(root.Bytes()) 107 for { 108 if !it.Next() { 109 break 110 } 111 t.Log("key ", common.Bytes2Hex(it.Key()), "value ", common.Bytes2Hex(it.Value())) 112 } 113 err = db.Put(root.Bytes(), nil) 114 if err != nil { 115 t.Fatal("delete failed " + err.Error()) 116 } 117 db.Close() 118 //TxId := common.BytesToHash(common.FromHex("0x345e53a66830c2e67757b13eda9cb64573ead9c8a61e5f29ab539cc99b0b7aed")) 119 //data2, err := db.Get(TxId[:], nil) 120 //if err != nil { 121 // t.Fatal("get block failed " + err.Error()) 122 //} 123 //t.Log("get block", "block", data2) 124 }