This only happens with certain xpubs. Code:
#[test]
fn test_address_looping() {
let wallet =
Wallet::new("wpkh([5d14cd2a/84h/1h/0h]tpubDCWhawC5a8Rgx6y7rk5qHtueax2MVWfdfobzEcmcSvQUDYq94dnqyx6KAFbxCocxQnnLuFcRYFWmvXS9DtWRYqJeU33pcvsam9AaozJXS1P/0/*)",
None,
Network::Testnet,
MemoryDatabase::new()).unwrap();
for _ in 0..15 {
let address = wallet.get_address(AddressIndex::New).unwrap();
println!("{}: {}", address.index, address.address.to_string());
}
println!("wallet.sync()");
let client = get_electrum_client(-1, "ssl://electrum.blockstream.info:60002").unwrap();
let blockchain = ElectrumBlockchain::from(client);
wallet.sync(&blockchain, SyncOptions { progress: None }).unwrap();
for _ in 0..15 {
let address = wallet.get_address(AddressIndex::New).unwrap();
println!("{}: {}", address.index, address.address.to_string());
}
}
Output:
0: tb1qghhpvphu6rd6ygwuurw3p9cg7se84taj2vssdu
1: tb1q79crajpg7y838vmqngerx6eqv5tuytzlk7cx3n
2: tb1qcae3r5r6pv7p59s9vy3depphz3vffuqhrxm0e3
3: tb1qemh2gefeeydc8k649tqlhz4egr3pktnt72h9xz
4: tb1qckls5f7xrz29k3jtuw67ul6dp6mlz39m6r0xmj
5: tb1qvycmqxyffvllmt7u8732nr7l576s9al6qlfleq
6: tb1qrxm4qpdjevpzjmh7x7048kng6ys0audzz50jwn
7: tb1q285u2994gsyuplqajm0ttadh238pp2clsutxc3
8: tb1q5cfe3nrwtl4qfxyavnagxe7lqchskdjvkeqw50
9: tb1qpa8375ve0um755svsm7u8r73ltk5xc0hwmp240
10: tb1qc3nd440fqzx3zzwvm2n47g5dn2ahpcs74e58rw
11: tb1qur22cvhcwtez5d7f0jeajg6ul22chqvcqwv3pg
12: tb1qyud6sa4dseyx5k8vzp9yhq2nef9p5zrcv7pjny
13: tb1qq50glc8hh20k8fh39u9xedshy6plra69cx4xxt
14: tb1q92llgymvnl90y2a6ku2fztfw4heg400psph740
wallet.sync()
3: tb1qemh2gefeeydc8k649tqlhz4egr3pktnt72h9xz
4: tb1qckls5f7xrz29k3jtuw67ul6dp6mlz39m6r0xmj
5: tb1qvycmqxyffvllmt7u8732nr7l576s9al6qlfleq
6: tb1qrxm4qpdjevpzjmh7x7048kng6ys0audzz50jwn
7: tb1q285u2994gsyuplqajm0ttadh238pp2clsutxc3
8: tb1q5cfe3nrwtl4qfxyavnagxe7lqchskdjvkeqw50
9: tb1qpa8375ve0um755svsm7u8r73ltk5xc0hwmp240
10: tb1qc3nd440fqzx3zzwvm2n47g5dn2ahpcs74e58rw
11: tb1qur22cvhcwtez5d7f0jeajg6ul22chqvcqwv3pg
12: tb1qyud6sa4dseyx5k8vzp9yhq2nef9p5zrcv7pjny
13: tb1qq50glc8hh20k8fh39u9xedshy6plra69cx4xxt
14: tb1q92llgymvnl90y2a6ku2fztfw4heg400psph740
15: tb1qzyzavz6qc9qn52hxrfhpddztas84r69ytqzgyh
16: tb1qgfwvg3tpvkedzl5exmmwjlpzx74rtmkw0dtemg
17: tb1qh6vsnhff77tr9g0yg5jum0n3h5ccesnhldfsjw
One would expect get_address subsequent to sync to return an address at index 15.
Build environment
- BDK tag/commit: a328607
- OS+version: Ubuntu 22.04
- Rust/Cargo version: 1.54.0
- Rust/Cargo target: x86_64
This only happens with certain xpubs. Code:
Output:
One would expect
get_addresssubsequent tosyncto return an address at index 15.Build environment