3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-14 11:15:51 +00:00

Fix failed precondition in maybeLookaheadScripts

This commit is contained in:
Devrandom 2014-08-10 16:34:41 -07:00 committed by Mike Hearn
parent 2d3bfc07c7
commit 588e314b06

View File

@ -173,8 +173,13 @@ public class KeyChainGroup {
if (chains.isEmpty())
return;
int numLeafKeys = chains.get(chains.size() - 1).getLeafKeys().size();
int numLeafKeys = 0;
for (DeterministicKeyChain chain : chains) {
numLeafKeys += chain.getLeafKeys().size();
}
checkState(marriedKeysScripts.size() <= numLeafKeys, "Number of scripts is greater than number of leaf keys");
if (marriedKeysScripts.size() == numLeafKeys)
return;
@ -620,13 +625,14 @@ public class KeyChainGroup {
BloomFilter filter = new BloomFilter(size, falsePositiveRate, nTweak);
if (basic.numKeys() > 0)
filter.merge(basic.getFilter(size, falsePositiveRate, nTweak));
for (Map.Entry<ByteString, Script> entry : marriedKeysScripts.entrySet()) {
filter.insert(entry.getKey().toByteArray());
filter.insert(ScriptBuilder.createP2SHOutputScript(entry.getValue()).getProgram());
}
for (DeterministicKeyChain chain : chains) {
if (isMarried(chain)) {
for (Map.Entry<ByteString, Script> entry : marriedKeysScripts.entrySet()) {
filter.insert(entry.getKey().toByteArray());
filter.insert(ScriptBuilder.createP2SHOutputScript(entry.getValue()).getProgram());
}
} else {
if (!isMarried(chain)) {
filter.merge(chain.getFilter(size, falsePositiveRate, nTweak));
}
}