decred.org/dcrwallet/v3@v3.1.0/wallet/udb/testdata/v4.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 "compress/gzip" 13 "fmt" 14 "io" 15 "os" 16 17 "github.com/decred/dcrd/chaincfg" 18 "github.com/decred/dcrutil/hdkeychain" 19 _ "github.com/decred/dcrwallet/wallet/internal/bdb" 20 "github.com/decred/dcrwallet/wallet/udb" 21 "github.com/decred/dcrwallet/wallet/walletdb" 22 "github.com/decred/dcrwallet/walletseed" 23 ) 24 25 const dbname = "v4.db" 26 27 var ( 28 pubPass = []byte("public") 29 privPass = []byte("private") 30 ) 31 32 var chainParams = &chaincfg.TestNet2Params 33 34 func main() { 35 err := setup() 36 if err != nil { 37 fmt.Fprintf(os.Stderr, "setup: %v\n", err) 38 os.Exit(1) 39 } 40 err = compress() 41 if err != nil { 42 fmt.Fprintf(os.Stderr, "compress: %v\n", err) 43 os.Exit(1) 44 } 45 } 46 47 func setup() error { 48 db, err := walletdb.Create("bdb", dbname) 49 if err != nil { 50 return err 51 } 52 defer db.Close() 53 seed, err := walletseed.GenerateRandomSeed(hdkeychain.RecommendedSeedLen) 54 if err != nil { 55 return err 56 } 57 err = udb.Initialize(db, chainParams, seed, pubPass, privPass) 58 if err != nil { 59 return err 60 } 61 62 amgr, _, _, err := udb.Open(db, chainParams, pubPass) 63 if err != nil { 64 return err 65 } 66 67 return walletdb.Update(db, func(tx walletdb.ReadWriteTx) error { 68 ns := tx.ReadWriteBucket([]byte("waddrmgr")) 69 70 err := amgr.Unlock(ns, privPass) 71 if err != nil { 72 return err 73 } 74 75 data := []struct { 76 lastUsedExtChild uint32 77 lastUsedIntChild uint32 78 }{ 79 {0, 0}, 80 {9, 9}, 81 {5, 15}, 82 {19, 20}, 83 {20, 19}, 84 {29, 30}, 85 {30, 29}, 86 {1<<31 - 1, 1<<31 - 1}, 87 } 88 for i := range data { 89 acct := uint32(i + 1) 90 _, err := amgr.NewAccount(ns, fmt.Sprintf("account-%d", acct)) 91 if err != nil { 92 return err 93 } 94 err = amgr.MarkUsedChildIndex(tx, acct, 0, data[i].lastUsedExtChild) 95 if err != nil { 96 return err 97 } 98 err = amgr.MarkUsedChildIndex(tx, acct, 1, data[i].lastUsedIntChild) 99 if err != nil { 100 return err 101 } 102 } 103 return nil 104 }) 105 } 106 107 func compress() error { 108 db, err := os.Open(dbname) 109 if err != nil { 110 return err 111 } 112 defer os.Remove(dbname) 113 defer db.Close() 114 dbgz, err := os.Create(dbname + ".gz") 115 if err != nil { 116 return err 117 } 118 defer dbgz.Close() 119 gz := gzip.NewWriter(dbgz) 120 _, err = io.Copy(gz, db) 121 if err != nil { 122 return err 123 } 124 return gz.Close() 125 }