// createWatchingOnlyWallet func createWatchingOnlyWallet(cfg *config) error { // Get the public key. reader := bufio.NewReader(os.Stdin) pubKeyString, err := promptHDPublicKey(reader) if err != nil { return err } // Ask if the user wants to encrypt the wallet with a password. pubPass, err := promptConsolePublicPass(reader, []byte{}, cfg) if err != nil { return err } netDir := networkDir(cfg.DataDir, activeNet.Params) // Create the wallet. dbPath := filepath.Join(netDir, walletDbName) fmt.Println("Creating the wallet...") // Create the wallet database backed by bolt db. db, err := walletdb.Create("bdb", dbPath) if err != nil { return err } defer db.Close() // Create the address manager. waddrmgrNamespace, err := db.Namespace(waddrmgrNamespaceKey) if err != nil { return err } manager, err := waddrmgr.CreateWatchOnly(waddrmgrNamespace, pubKeyString, []byte(pubPass), activeNet.Params, nil) if err != nil { return err } defer manager.Close() // Create the stake manager/store. wstakemgrNamespace, err := db.Namespace(wstakemgrNamespaceKey) if err != nil { return err } stakeStore, err := wstakemgr.Create(wstakemgrNamespace, manager, activeNet.Params) if err != nil { return err } defer stakeStore.Close() fmt.Println("The watching only wallet has been created successfully.") return nil }
// createSimulationWallet is intended to be called from the rpcclient // and used to create a wallet for actors involved in simulations. func createSimulationWallet(cfg *config) error { // Simulation wallet password is 'password'. privPass := []byte("password") // Public passphrase is the default. pubPass := []byte(defaultPubPassphrase) // Generate a random seed. seed, err := hdkeychain.GenerateSeed(hdkeychain.RecommendedSeedLen) if err != nil { return err } netDir := networkDir(cfg.DataDir, activeNet.Params) // Write the seed to disk, so that we can restore it later // if need be, for testing purposes. seedStr, err := pgpwordlist.ToStringChecksum(seed) if err != nil { return err } err = ioutil.WriteFile(filepath.Join(netDir, "seed"), []byte(seedStr), 0644) if err != nil { return err } // Create the wallet. dbPath := filepath.Join(netDir, walletDbName) fmt.Println("Creating the wallet...") // Create the wallet database backed by bolt db. db, err := walletdb.Create("bdb", dbPath) if err != nil { return err } defer db.Close() // Create the address manager. waddrmgrNamespace, err := db.Namespace(waddrmgrNamespaceKey) if err != nil { return err } manager, err := waddrmgr.Create(waddrmgrNamespace, seed, []byte(pubPass), []byte(privPass), activeNet.Params, nil) if err != nil { return err } defer manager.Close() // Create the stake manager/store. wstakemgrNamespace, err := db.Namespace(wstakemgrNamespaceKey) if err != nil { return err } stakeStore, err := wstakemgr.Create(wstakemgrNamespace, manager, activeNet.Params) if err != nil { return err } defer stakeStore.Close() fmt.Println("The wallet has been created successfully.") return nil }