decred.org/dcrwallet/v3@v3.1.0/wallet/udb/testdata/v2.db.go (about) 1 // Copyright (c) 2017 The Decred developers 2 // Use of this source code is governed by an ISC 3 // license that can be found in the LICENSE file. 4 5 // This file should compiled from the commit the file was introduced, otherwise 6 // it may not compile due to API changes, or may not create the database with 7 // the correct old version. This file should not be updated for API changes. 8 9 package main 10 11 import ( 12 "bytes" 13 "compress/gzip" 14 "encoding/hex" 15 "fmt" 16 "io" 17 "os" 18 19 "github.com/decred/dcrd/blockchain/stake" 20 "github.com/decred/dcrd/chaincfg" 21 "github.com/decred/dcrd/wire" 22 "github.com/decred/dcrutil" 23 "github.com/decred/dcrutil/hdkeychain" 24 _ "github.com/decred/dcrwallet/wallet/internal/bdb" 25 "github.com/decred/dcrwallet/wallet/udb" 26 "github.com/decred/dcrwallet/wallet/walletdb" 27 "github.com/decred/dcrwallet/walletseed" 28 ) 29 30 const dbname = "v2.db" 31 32 var ( 33 pubPass = []byte("public") 34 privPass = []byte("private") 35 ) 36 37 var chainParams = &chaincfg.TestNet2Params 38 39 // From testnet2 ticket 4516ef1d548f3284c1a27b3e706c4677392031df7071ad2022050af376837033 40 const ticketPurchaseHex = "01000000024bf0a303a7e6d174833d9eb761815b61f8ba8c6fa8852a6bf51c703daefc0ef60400000000ffffffff4bf0a303a7e6d174833d9eb761815b61f8ba8c6fa8852a6bf51c703daefc0ef60500000000ffffffff056f78d37a00000000000018baa914ec97b165a5f028b50fb12ae717c5f6c1b9057b5f8700000000000000000000206a1e7f686bc0e548bbb92f487db6da070e43a34117288ed59100000000000058000000000000000000001abd76a914000000000000000000000000000000000000000088ac00000000000000000000206a1e9d8e8bdc618035be32a14ab752af2e331f9abf3651074a7a000000000058000000000000000000001abd76a914000000000000000000000000000000000000000088ac00000000ad480000028ed59100000000009c480000010000006b483045022100c240bdd6a656c20e9035b839fc91faae6c766772f76149adb91a1fdcf20faf9c02203d68038b83263293f864b173c8f3f00e4371b67bf36fb9ec9f5132bdf68d2858012102adc226dec4de09a18c5a522f8f00917fb6d4eb2361a105218ac3f87d802ae3d451074a7a000000009c480000010000006a47304402205af53185f2662a30a22014b0d19760c1bfde8ec8f065b19cacab6a7abcec76a202204a2614cfcb4db3fc1c86eb0b1ca577f9039ec6db29e9c44ddcca2fe6e3c8bd5d012102adc226dec4de09a18c5a522f8f00917fb6d4eb2361a105218ac3f87d802ae3d4" 41 42 func main() { 43 err := setup() 44 if err != nil { 45 fmt.Fprintf(os.Stderr, "setup: %v\n", err) 46 os.Exit(1) 47 } 48 err = compress() 49 if err != nil { 50 fmt.Fprintf(os.Stderr, "compress: %v\n", err) 51 os.Exit(1) 52 } 53 } 54 55 func setup() error { 56 db, err := walletdb.Create("bdb", dbname) 57 if err != nil { 58 return err 59 } 60 defer db.Close() 61 seed, err := walletseed.GenerateRandomSeed(hdkeychain.RecommendedSeedLen) 62 if err != nil { 63 return err 64 } 65 err = udb.Initialize(db, chainParams, seed, pubPass, privPass, false) 66 if err != nil { 67 return err 68 } 69 70 _, _, smgr, err := udb.Open(db, chainParams, pubPass) 71 if err != nil { 72 return err 73 } 74 75 ticketPurchaseBytes, err := hex.DecodeString(ticketPurchaseHex) 76 if err != nil { 77 return err 78 } 79 var ticketPurchase wire.MsgTx 80 err = ticketPurchase.Deserialize(bytes.NewReader(ticketPurchaseBytes)) 81 if err != nil { 82 return err 83 } 84 85 return walletdb.Update(db, func(tx walletdb.ReadWriteTx) error { 86 ns := tx.ReadWriteBucket([]byte("wstakemgr")) 87 88 vb := stake.VoteBits{ 89 Bits: 1, 90 ExtendedBits: []byte{0, 0, 0, 4}, 91 } 92 return smgr.InsertSStx(ns, dcrutil.NewTx(&ticketPurchase), vb) 93 }) 94 } 95 96 func compress() error { 97 db, err := os.Open(dbname) 98 if err != nil { 99 return err 100 } 101 defer os.Remove(dbname) 102 defer db.Close() 103 dbgz, err := os.Create(dbname + ".gz") 104 if err != nil { 105 return err 106 } 107 defer dbgz.Close() 108 gz := gzip.NewWriter(dbgz) 109 _, err = io.Copy(gz, db) 110 if err != nil { 111 return err 112 } 113 return gz.Close() 114 }