let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)";
let change_descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/1/*)";
let wallet_opt = Wallet::load()
- .network(network)
.descriptor(KeychainKind::External, Some(descriptor))
.descriptor(KeychainKind::Internal, Some(change_descriptor))
.extract_keys()
+ .check_network(network)
.load_wallet(&mut db)
.expect("wallet");
let mut wallet = match wallet_opt {
/// .keymap(KeychainKind::External, external_keymap)
/// .keymap(KeychainKind::Internal, internal_keymap)
/// // ensure loaded wallet's genesis hash matches this value
- /// .genesis_hash(genesis_hash)
+ /// .check_genesis_hash(genesis_hash)
/// // set a lookahead for our indexer
/// .lookahead(101)
/// .load_wallet(&mut conn)?
self
}
- /// Check for `network`.
- pub fn network(mut self, network: Network) -> Self {
+ /// Checks that the given network matches the one loaded from persistence.
+ pub fn check_network(mut self, network: Network) -> Self {
self.check_network = Some(network);
self
}
- /// Check for a `genesis_hash`.
- pub fn genesis_hash(mut self, genesis_hash: BlockHash) -> Self {
+ /// Checks that the given `genesis_hash` matches the one loaded from persistence.
+ pub fn check_genesis_hash(mut self, genesis_hash: BlockHash) -> Self {
self.check_genesis_hash = Some(genesis_hash);
self
}
{
let mut db = open_db(&file_path).context("failed to recover db")?;
let _ = Wallet::load()
- .network(Network::Testnet)
+ .check_network(Network::Testnet)
.load_wallet(&mut db)?
.expect("wallet must exist");
}
let wallet = Wallet::load()
.descriptor(KeychainKind::External, Some(external_desc))
.descriptor(KeychainKind::Internal, Some(internal_desc))
- .network(Network::Testnet)
+ .check_network(Network::Testnet)
.load_wallet(&mut db)?
.expect("wallet must exist");
assert_matches!(
Wallet::load()
- .network(Network::Regtest)
+ .check_network(Network::Regtest)
.load_wallet(&mut open_db(&file_path)?),
Err(LoadWithPersistError::InvalidChangeSet(LoadError::Mismatch(
LoadMismatch::Network {
))),
"unexpected network check result: Regtest (check) is not Testnet (loaded)",
);
- assert_matches!(
- Wallet::load()
- .network(Network::Bitcoin)
- .load_wallet(&mut open_db(&file_path)?),
- Err(LoadWithPersistError::InvalidChangeSet(LoadError::Mismatch(
- LoadMismatch::Network {
- loaded: Network::Testnet,
- expected: Network::Bitcoin,
- }
- ))),
- "unexpected network check result: Bitcoin (check) is not Testnet (loaded)",
- );
let mainnet_hash = BlockHash::from_byte_array(ChainHash::BITCOIN.to_bytes());
assert_matches!(
- Wallet::load().genesis_hash(mainnet_hash).load_wallet(&mut open_db(&file_path)?),
+ Wallet::load().check_genesis_hash(mainnet_hash).load_wallet(&mut open_db(&file_path)?),
Err(LoadWithPersistError::InvalidChangeSet(LoadError::Mismatch(LoadMismatch::Genesis { .. }))),
"unexpected genesis hash check result: mainnet hash (check) is not testnet hash (loaded)",
);
let mut db = Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
let wallet_opt = Wallet::load()
- .network(NETWORK)
.descriptor(KeychainKind::External, Some(EXTERNAL_DESC))
.descriptor(KeychainKind::Internal, Some(INTERNAL_DESC))
.extract_keys()
+ .check_network(NETWORK)
.load_wallet(&mut db)?;
let mut wallet = match wallet_opt {
Some(wallet) => wallet,
let mut conn = Connection::open(DB_PATH)?;
let wallet_opt = Wallet::load()
- .network(NETWORK)
.descriptor(KeychainKind::External, Some(EXTERNAL_DESC))
.descriptor(KeychainKind::Internal, Some(INTERNAL_DESC))
.extract_keys()
+ .check_network(NETWORK)
.load_wallet(&mut conn)?;
let mut wallet = match wallet_opt {
Some(wallet) => wallet,
let mut db = Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), DB_PATH)?;
let wallet_opt = Wallet::load()
- .network(NETWORK)
.descriptor(KeychainKind::External, Some(EXTERNAL_DESC))
.descriptor(KeychainKind::Internal, Some(INTERNAL_DESC))
.extract_keys()
+ .check_network(NETWORK)
.load_wallet(&mut db)?;
let mut wallet = match wallet_opt {
Some(wallet) => wallet,
let mut db =
Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), args.db_path)?;
let wallet_opt = Wallet::load()
- .network(args.network)
.descriptor(KeychainKind::External, Some(args.descriptor.clone()))
.descriptor(KeychainKind::Internal, Some(args.change_descriptor.clone()))
.extract_keys()
+ .check_network(args.network)
.load_wallet(&mut db)?;
let mut wallet = match wallet_opt {
Some(wallet) => wallet,