Documentation ¶
Overview ¶
Package loader provides a concurrent safe implementation of a wallet loader.
It is intended to allow creating and opening wallets as well as managing services like ticket buyer by RPC servers as well other subsystems.
This is a copy of the original upstream dcrwallet loader package, which was made internal for the 1.5 release cycle.
Index ¶
- func DisableLog()
- func UseLogger(logger slog.Logger)
- type Loader
- func (l *Loader) CreateNewWallet(ctx context.Context, pubPassphrase, privPassphrase, seed []byte) (w *wallet.Wallet, err error)
- func (l *Loader) CreateWatchingOnlyWallet(ctx context.Context, extendedPubKey string, pubPass []byte) (w *wallet.Wallet, err error)
- func (l *Loader) DbDirPath() string
- func (l *Loader) LoadedWallet() (*wallet.Wallet, bool)
- func (l *Loader) NetworkBackend() (n wallet.NetworkBackend, ok bool)
- func (l *Loader) OpenExistingWallet(ctx context.Context, pubPassphrase []byte) (w *wallet.Wallet, rerr error)
- func (l *Loader) RunAfterLoad(fn func(*wallet.Wallet))
- func (l *Loader) UnloadWallet() error
- func (l *Loader) WalletExists() (bool, error)
- type LoaderOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DisableLog ¶
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until either UseLogger or SetLogWriter are called.
Types ¶
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader implements the creating of new and opening of existing wallets, while providing a callback system for other subsystems to handle the loading of a wallet. This is primarely intended for use by the RPC servers, to enable methods and services which require the wallet when the wallet is loaded by another subsystem.
Loader is safe for concurrent access.
func (*Loader) CreateNewWallet ¶
func (l *Loader) CreateNewWallet(ctx context.Context, pubPassphrase, privPassphrase, seed []byte) (w *wallet.Wallet, err error)
CreateNewWallet creates a new wallet using the provided public and private passphrases. The seed is optional. If non-nil, addresses are derived from this seed. If nil, a secure random seed is generated.
func (*Loader) CreateWatchingOnlyWallet ¶
func (l *Loader) CreateWatchingOnlyWallet(ctx context.Context, extendedPubKey string, pubPass []byte) (w *wallet.Wallet, err error)
CreateWatchingOnlyWallet creates a new watch-only wallet using the provided extended public key and public passphrase.
func (*Loader) LoadedWallet ¶
LoadedWallet returns the loaded wallet, if any, and a bool for whether the wallet has been loaded or not. If true, the wallet pointer should be safe to dereference.
func (*Loader) NetworkBackend ¶
func (l *Loader) NetworkBackend() (n wallet.NetworkBackend, ok bool)
NetworkBackend returns the associated wallet network backend, if any, and a bool describing whether a non-nil network backend was set.
func (*Loader) OpenExistingWallet ¶
func (l *Loader) OpenExistingWallet(ctx context.Context, pubPassphrase []byte) (w *wallet.Wallet, rerr error)
OpenExistingWallet opens the wallet from the loader's wallet database path and the public passphrase. If the loader is being called by a context where standard input prompts may be used during wallet upgrades, setting canConsolePrompt will enable these prompts.
func (*Loader) RunAfterLoad ¶
RunAfterLoad adds a function to be executed when the loader creates or opens a wallet. Functions are executed in a single goroutine in the order they are added.
func (*Loader) UnloadWallet ¶
UnloadWallet stops the loaded wallet, if any, and closes the wallet database. Returns with errors.Invalid if the wallet has not been loaded with CreateNewWallet or LoadExistingWallet. The Loader may be reused if this function returns without error.
func (*Loader) WalletExists ¶
WalletExists returns whether a file exists at the loader's database path. This may return an error for unexpected I/O failures.
type LoaderOption ¶ added in v0.5.0
type LoaderOption func()
LoaderOption is similar to the upstream btcwallet.LoaderOption type, but not yet used.
func LoaderWithExternalWalletDB ¶ added in v0.5.0
func LoaderWithExternalWalletDB(backend kvdb.Backend) LoaderOption