// createWallet prompts the user for information needed to generate a new wallet // and generates the wallet accordingly. The new wallet will reside at the // provided path. The bool passed back gives whether or not the wallet was // restored from seed, while the []byte passed is the private password required // to do the initial sync. func createWallet(cfg *config) error { dbDir := networkDir(cfg.AppDataDir, activeNet.Params) stakeOptions := &wallet.StakeOptions{ VoteBits: cfg.VoteBits, StakeMiningEnabled: cfg.EnableStakeMining, BalanceToMaintain: cfg.BalanceToMaintain, RollbackTest: cfg.RollbackTest, PruneTickets: cfg.PruneTickets, AddressReuse: cfg.ReuseAddresses, TicketAddress: cfg.TicketAddress, TicketMaxPrice: cfg.TicketMaxPrice, TicketFee: cfg.TicketFee, } loader := wallet.NewLoader(activeNet.Params, dbDir, stakeOptions, cfg.AutomaticRepair, cfg.UnsafeMainNet, cfg.AddrIdxScanLen, cfg.AllowHighFees, cfg.RelayFee) reader := bufio.NewReader(os.Stdin) privPass, pubPass, seed, err := prompt.Setup(reader, []byte(wallet.InsecurePubPassphrase), []byte(cfg.WalletPass)) fmt.Println("Creating the wallet...") _, err = loader.CreateNewWallet(pubPass, privPass, seed) if err != nil { return err } fmt.Println("The wallet has been created successfully.") return nil }
// Setup prompts for, from a buffered reader, the private and/or public // encryption passphrases to secure a wallet and a previously derived wallet // seed to use, if any. privPass and pubPass will always be non-nil values // (private encryption is required and choosing to not use public data // encryption will still encrypt the data with an insecure default), and a // randomly generated seed of the recommended length will be generated and // returned after the user has confirmed the seed has been backed up to a secure // location. func Setup(r *bufio.Reader) (privPass, pubPass, seed []byte, err error) { return prompt.Setup(r, []byte(wallet.InsecurePubPassphrase), nil) }