diff --git a/drongo b/drongo index c87d5cc3..29cd4b79 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit c87d5cc3c2c17bb00e5088b2136713574d3bc651 +Subproject commit 29cd4b7909a2d891107af55b1d4d6c2690cfa2ab diff --git a/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java b/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java index bbf698ef..a379fbc7 100644 --- a/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java +++ b/src/main/java/com/sparrowwallet/sparrow/net/ElectrumServer.java @@ -1566,12 +1566,13 @@ public class ElectrumServer { private WalletNode createNodeForMatch(Wallet wallet, SilentPaymentScanMatch match, Map walletAddresses, KeyPurpose purpose, int newIndex) { WalletNode purposeNode = wallet.getNode(purpose); - Set created = purposeNode.fillToIndex(wallet, newIndex); - WalletNode addressNode = created.stream().filter(n -> n.getIndex() == newIndex).findFirst().orElseThrow(() -> new IllegalStateException("fillToIndex did not create node at index " + newIndex)); - addressNode.setSilentPaymentTweak(match.tweak()); + WalletNode addressNode = purposeNode.addSilentPaymentChild(wallet, newIndex, match.tweak()); + if(addressNode == null) { + throw new IllegalStateException("Silent payment child already exists at index " + newIndex); + } if(walletAddresses.containsKey(wallet.getAddress(addressNode))) { - purposeNode.getChildren().removeAll(created); + purposeNode.getChildren().remove(addressNode); return null; }