Wallet
A Bitcoin wallet. The Wallet acts as a way of coherently interfacing with output descriptors and related transactions. Its main components are:
Output descriptors from which it can derive addresses.
A Database where it tracks transactions and utxos related to the descriptors.
Signers that can contribute signatures to addresses instantiated from the descriptors.
Samples
fun main() {
//sampleStart
val externalDescriptor = "wpkh(tprv8hwWMmPE4BVNxGdVt3HhEERZhondQvodUY7Ajyseyhudr4WabJqWKWLr4Wi2r26CDaNCQhhxEfVULesmhEfZYyBXdE/84h/1h/0h/0/*)"
val internalDescriptor = "wpkh(tprv8hwWMmPE4BVNxGdVt3HhEERZhondQvodUY7Ajyseyhudr4WabJqWKWLr4Wi2r26CDaNCQhhxEfVULesmhEfZYyBXdE/84h/1h/0h/1/*)"
val sqliteDatabaseConfig = DatabaseConfig.Sqlite(SqliteDbConfiguration("bdk-sqlite"))
val wallet = Wallet(
descriptor = externalDescriptor,
changeDescriptor = internalDescriptor,
network = Network.TESTNET,
databaseConfig = sqliteDatabaseConfig,
)
//sampleEnd
}
Parameters
The main (or "external") descriptor.
? The change (or "internal") descriptor.
The network to act on.
The database configuration.
Constructors
Create a BDK wallet.
Functions
Return a derived address using the external descriptor, see AddressIndex for available address index selection strategies. If none of the keys in the descriptor are derivable (i.e. the descriptor does not end with a * character) then the same address will always be returned for any AddressIndex.
Return the wallet's balance, across different categories. See Balance for the categories. Note that this method only operates on the internal database, which first needs to be Wallet.sync manually.
Return a derived address using the internal (change) descriptor. If the wallet doesn't have an internal descriptor it will use the external descriptor. See AddressIndex for available address index selection strategies. If none of the keys in the descriptor are derivable (i.e. does not end with /\*) then the same address will always be returned for any AddressIndex.
Return the list of transactions made and received by the wallet. Note that this method only operate on the internal database, which first needs to be Wallet.sync manually.
Return the list of unspent outputs of this wallet. Note that this method only operates on the internal database, which first needs to be Wallet.sync manually.
Sign a transaction with all the wallet's signers, in the order specified by every signer's SignerOrdering
.
Sync the internal database with the blockchain.