decred.org/dcrwallet/v3@v3.1.0/wallet/udb/testdata/v3.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 = "v3.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  	return udb.Initialize(db, chainParams, seed, pubPass, privPass)
    58  }
    59  
    60  func compress() error {
    61  	db, err := os.Open(dbname)
    62  	if err != nil {
    63  		return err
    64  	}
    65  	defer os.Remove(dbname)
    66  	defer db.Close()
    67  	dbgz, err := os.Create(dbname + ".gz")
    68  	if err != nil {
    69  		return err
    70  	}
    71  	defer dbgz.Close()
    72  	gz := gzip.NewWriter(dbgz)
    73  	_, err = io.Copy(gz, db)
    74  	if err != nil {
    75  		return err
    76  	}
    77  	return gz.Close()
    78  }