package btcwallet import ( "path/filepath" "github.com/roasbeef/btcd/chaincfg" "github.com/roasbeef/btcd/wire" "github.com/roasbeef/btcutil" // This is required to register bdb as a valid walletdb driver. In the // init function of the package, it registers itself. The import is used // to activate the side effects w/o actually binding the package name to // a file-level variable. _ "github.com/roasbeef/btcwallet/walletdb/bdb" ) var ( lnwalletHomeDir = btcutil.AppDataDir("lnwallet", false) defaultDataDir = lnwalletHomeDir defaultLogFilename = "lnwallet.log" defaultLogDirname = "logs" defaultLogDir = filepath.Join(lnwalletHomeDir, defaultLogDirname) btcdHomeDir = btcutil.AppDataDir("btcd", false) btcdHomedirCAFile = filepath.Join(btcdHomeDir, "rpc.cert") defaultRPCKeyFile = filepath.Join(lnwalletHomeDir, "rpc.key") defaultRPCCertFile = filepath.Join(lnwalletHomeDir, "rpc.cert") // defaultPubPassphrase is the default public wallet passphrase which is // used when the user indicates they do not want additional protection // provided by having all public data in the wallet encrypted by a // passphrase only known to them. defaultPubPassphrase = []byte("public") walletDbName = "lnwallet.db" ) // Config is a struct which houses configuration paramters which modify the // instance of BtcWallet generated by the New() function. type Config struct { // DataDir is the name of the directory where the wallet's persistent // state should be sotred. DataDir string // LogDir is the name of the directory which should be used to store // generated log files. LogDir string // DebugLevel is a string representing the level of verbosity the // logger should use. DebugLevel string // RPCHost is the host and port to use to reach the rpc sever. RPCHost string // localhost:18334 // RPCUser is the username which should be used to authentiate with the // rpc server. RPCUser string // RPCPass is the password which should be used to authenticate the // connection with the RPC server. RPCPass string // RPCNoTLS denotes if a TLS connection should be attempted when // connecting to the RPC server. RPCNoTLS bool // RPCCert directory where the TLS certificate of the RPC sever is // stored. If the RPCNoTLS is false, then this value will be unused. RPCCert string RPCKey string // CACert is the raw RPC cert for btcd. CACert []byte PrivatePass []byte PublicPass []byte HdSeed []byte NetParams *chaincfg.Params } // networkDir returns the directory name of a network directory to hold wallet // files. func networkDir(dataDir string, chainParams *chaincfg.Params) string { netname := chainParams.Name // For now, we must always name the testnet data directory as "testnet" // and not "testnet3" or any other version, as the chaincfg testnet3 // paramaters will likely be switched to being named "testnet3" in the // future. This is done to future proof that change, and an upgrade // plan to move the testnet3 data directory can be worked out later. if chainParams.Net == wire.TestNet3 { netname = "testnet" } return filepath.Join(dataDir, netname) }