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  }