From fffa4c06fe73c1fd1f1ef8688415ccd9f73ac060 Mon Sep 17 00:00:00 2001
From: Andreas Schildbach
Date: Thu, 14 Feb 2019 20:17:47 +0100
Subject: [PATCH] ScriptPattern: Rename the matchers and extraction helpers for
"pay to" script types into an abbreviated form.
---
.../java/org/bitcoinj/core/BloomFilter.java | 2 +-
.../bitcoinj/core/FullPrunedBlockChain.java | 4 +-
.../java/org/bitcoinj/core/LegacyAddress.java | 6 +-
.../java/org/bitcoinj/core/PeerGroup.java | 2 +-
.../java/org/bitcoinj/core/Transaction.java | 6 +-
.../bitcoinj/core/TransactionOutPoint.java | 28 +++----
.../org/bitcoinj/core/TransactionOutput.java | 32 ++++----
.../main/java/org/bitcoinj/script/Script.java | 78 +++++++++----------
.../org/bitcoinj/script/ScriptPattern.java | 32 ++++----
.../signers/CustomTransactionSigner.java | 2 +-
.../signers/LocalTransactionSigner.java | 6 +-
.../signers/MissingSigResolutionSigner.java | 10 +--
.../org/bitcoinj/wallet/KeyChainGroup.java | 4 +-
.../bitcoinj/wallet/KeyTimeCoinSelector.java | 12 +--
.../java/org/bitcoinj/wallet/RedeemData.java | 4 +-
.../main/java/org/bitcoinj/wallet/Wallet.java | 50 ++++++------
.../bitcoinj/core/FullBlockTestGenerator.java | 2 +-
.../org/bitcoinj/core/LegacyAddressTest.java | 4 +-
.../org/bitcoinj/core/SegwitAddressTest.java | 2 +-
.../bitcoinj/core/TransactionOutputTest.java | 4 +-
.../channels/ChannelConnectionTest.java | 2 +-
.../channels/PaymentChannelStateTest.java | 16 ++--
.../bitcoinj/script/ScriptPatternTest.java | 10 +--
.../java/org/bitcoinj/script/ScriptTest.java | 8 +-
.../java/org/bitcoinj/wallet/WalletTest.java | 2 +-
25 files changed, 164 insertions(+), 164 deletions(-)
diff --git a/core/src/main/java/org/bitcoinj/core/BloomFilter.java b/core/src/main/java/org/bitcoinj/core/BloomFilter.java
index 52bfc1db..d4878cc7 100644
--- a/core/src/main/java/org/bitcoinj/core/BloomFilter.java
+++ b/core/src/main/java/org/bitcoinj/core/BloomFilter.java
@@ -342,7 +342,7 @@ public class BloomFilter extends Message {
if (!chunk.isPushData())
continue;
if (contains(chunk.data)) {
- boolean isSendingToPubKeys = ScriptPattern.isPayToPubKey(script) || ScriptPattern.isSentToMultisig(script);
+ boolean isSendingToPubKeys = ScriptPattern.isP2PK(script) || ScriptPattern.isSentToMultisig(script);
if (flag == BloomUpdate.UPDATE_ALL || (flag == BloomUpdate.UPDATE_P2PUBKEY_ONLY && isSendingToPubKeys))
insert(output.getOutPointFor());
found = true;
diff --git a/core/src/main/java/org/bitcoinj/core/FullPrunedBlockChain.java b/core/src/main/java/org/bitcoinj/core/FullPrunedBlockChain.java
index 901fc7b9..e10f5a4b 100644
--- a/core/src/main/java/org/bitcoinj/core/FullPrunedBlockChain.java
+++ b/core/src/main/java/org/bitcoinj/core/FullPrunedBlockChain.java
@@ -272,7 +272,7 @@ public class FullPrunedBlockChain extends AbstractBlockChain {
// TODO: Check we're not spending the genesis transaction here. Bitcoin Core won't allow it.
valueIn = valueIn.add(prevOut.getValue());
if (verifyFlags.contains(VerifyFlag.P2SH)) {
- if (ScriptPattern.isPayToScriptHash(prevOut.getScript()))
+ if (ScriptPattern.isP2SH(prevOut.getScript()))
sigOps += Script.getP2SHSigOpCount(in.getScriptBytes());
if (sigOps > Block.MAX_BLOCK_SIGOPS)
throw new VerificationException("Too many P2SH SigOps in block");
@@ -400,7 +400,7 @@ public class FullPrunedBlockChain extends AbstractBlockChain {
throw new VerificationException("Tried to spend coinbase at depth " + (newBlock.getHeight() - prevOut.getHeight()));
valueIn = valueIn.add(prevOut.getValue());
if (verifyFlags.contains(VerifyFlag.P2SH)) {
- if (ScriptPattern.isPayToScriptHash(prevOut.getScript()))
+ if (ScriptPattern.isP2SH(prevOut.getScript()))
sigOps += Script.getP2SHSigOpCount(in.getScriptBytes());
if (sigOps > Block.MAX_BLOCK_SIGOPS)
throw new VerificationException("Too many P2SH SigOps in block");
diff --git a/core/src/main/java/org/bitcoinj/core/LegacyAddress.java b/core/src/main/java/org/bitcoinj/core/LegacyAddress.java
index dfc1c7ad..206d00cb 100644
--- a/core/src/main/java/org/bitcoinj/core/LegacyAddress.java
+++ b/core/src/main/java/org/bitcoinj/core/LegacyAddress.java
@@ -120,12 +120,12 @@ public class LegacyAddress extends Address {
/**
* @deprecated use {@link #fromScriptHash(NetworkParameters, byte[])} in combination with
- * {@link ScriptPattern#extractHashFromPayToScriptHash(Script)}
+ * {@link ScriptPattern#extractHashFromP2SH(Script)}
*/
@Deprecated
public static LegacyAddress fromP2SHScript(NetworkParameters params, Script scriptPubKey) {
- checkArgument(ScriptPattern.isPayToScriptHash(scriptPubKey), "Not a P2SH script");
- return fromScriptHash(params, ScriptPattern.extractHashFromPayToScriptHash(scriptPubKey));
+ checkArgument(ScriptPattern.isP2SH(scriptPubKey), "Not a P2SH script");
+ return fromScriptHash(params, ScriptPattern.extractHashFromP2SH(scriptPubKey));
}
/**
diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java
index f5ce990e..54c0521c 100644
--- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java
+++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java
@@ -199,7 +199,7 @@ public class PeerGroup implements TransactionBroadcaster {
// filter. In case (1), we need to retransmit the filter to the connected peers. In case (2), we don't
// and shouldn't, we should just recalculate and cache the new filter for next time.
for (TransactionOutput output : tx.getOutputs()) {
- if (ScriptPattern.isPayToPubKey(output.getScriptPubKey()) && output.isMine(wallet)) {
+ if (ScriptPattern.isP2PK(output.getScriptPubKey()) && output.isMine(wallet)) {
if (tx.getConfidence().getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING)
recalculateFastCatchupAndFilter(FilterRecalculateMode.SEND_IF_CHANGED);
else
diff --git a/core/src/main/java/org/bitcoinj/core/Transaction.java b/core/src/main/java/org/bitcoinj/core/Transaction.java
index 866aa298..c20ad619 100644
--- a/core/src/main/java/org/bitcoinj/core/Transaction.java
+++ b/core/src/main/java/org/bitcoinj/core/Transaction.java
@@ -924,17 +924,17 @@ public class Transaction extends ChildMessage {
TransactionInput input = new TransactionInput(params, this, new byte[] {}, prevOut);
addInput(input);
int inputIndex = inputs.size() - 1;
- if (ScriptPattern.isPayToPubKey(scriptPubKey)) {
+ if (ScriptPattern.isP2PK(scriptPubKey)) {
TransactionSignature signature = calculateSignature(inputIndex, sigKey, scriptPubKey, sigHash,
anyoneCanPay);
input.setScriptSig(ScriptBuilder.createInputScript(signature));
input.setWitness(null);
- } else if (ScriptPattern.isPayToPubKeyHash(scriptPubKey)) {
+ } else if (ScriptPattern.isP2PKH(scriptPubKey)) {
TransactionSignature signature = calculateSignature(inputIndex, sigKey, scriptPubKey, sigHash,
anyoneCanPay);
input.setScriptSig(ScriptBuilder.createInputScript(signature, sigKey));
input.setWitness(null);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(scriptPubKey)) {
+ } else if (ScriptPattern.isP2WPKH(scriptPubKey)) {
Script scriptCode = new ScriptBuilder()
.data(ScriptBuilder.createOutputScript(LegacyAddress.fromKey(params, sigKey)).getProgram()).build();
TransactionSignature signature = calculateWitnessSignature(inputIndex, sigKey, scriptCode, input.getValue(),
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java b/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
index bcb52a7f..1f649c98 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionOutPoint.java
@@ -141,14 +141,14 @@ public class TransactionOutPoint extends ChildMessage {
TransactionOutput connectedOutput = getConnectedOutput();
checkNotNull(connectedOutput, "Input is not connected so cannot retrieve key");
Script connectedScript = connectedOutput.getScriptPubKey();
- if (ScriptPattern.isPayToPubKeyHash(connectedScript)) {
- byte[] addressBytes = ScriptPattern.extractHashFromPayToPubKeyHash(connectedScript);
+ if (ScriptPattern.isP2PKH(connectedScript)) {
+ byte[] addressBytes = ScriptPattern.extractHashFromP2PKH(connectedScript);
return keyBag.findKeyFromPubKeyHash(addressBytes, Script.ScriptType.P2PKH);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(connectedScript)) {
- byte[] addressBytes = ScriptPattern.extractHashFromPayToWitnessHash(connectedScript);
+ } else if (ScriptPattern.isP2WPKH(connectedScript)) {
+ byte[] addressBytes = ScriptPattern.extractHashFromP2WH(connectedScript);
return keyBag.findKeyFromPubKeyHash(addressBytes, Script.ScriptType.P2WPKH);
- } else if (ScriptPattern.isPayToPubKey(connectedScript)) {
- byte[] pubkeyBytes = ScriptPattern.extractKeyFromPayToPubKey(connectedScript);
+ } else if (ScriptPattern.isP2PK(connectedScript)) {
+ byte[] pubkeyBytes = ScriptPattern.extractKeyFromP2PK(connectedScript);
return keyBag.findKeyFromPubKey(pubkeyBytes);
} else {
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Could not understand form of connected output script: " + connectedScript);
@@ -167,17 +167,17 @@ public class TransactionOutPoint extends ChildMessage {
TransactionOutput connectedOutput = getConnectedOutput();
checkNotNull(connectedOutput, "Input is not connected so cannot retrieve key");
Script connectedScript = connectedOutput.getScriptPubKey();
- if (ScriptPattern.isPayToPubKeyHash(connectedScript)) {
- byte[] addressBytes = ScriptPattern.extractHashFromPayToPubKeyHash(connectedScript);
+ if (ScriptPattern.isP2PKH(connectedScript)) {
+ byte[] addressBytes = ScriptPattern.extractHashFromP2PKH(connectedScript);
return RedeemData.of(keyBag.findKeyFromPubKeyHash(addressBytes, Script.ScriptType.P2PKH), connectedScript);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(connectedScript)) {
- byte[] addressBytes = ScriptPattern.extractHashFromPayToWitnessHash(connectedScript);
+ } else if (ScriptPattern.isP2WPKH(connectedScript)) {
+ byte[] addressBytes = ScriptPattern.extractHashFromP2WH(connectedScript);
return RedeemData.of(keyBag.findKeyFromPubKeyHash(addressBytes, Script.ScriptType.P2WPKH), connectedScript);
- } else if (ScriptPattern.isPayToPubKey(connectedScript)) {
- byte[] pubkeyBytes = ScriptPattern.extractKeyFromPayToPubKey(connectedScript);
+ } else if (ScriptPattern.isP2PK(connectedScript)) {
+ byte[] pubkeyBytes = ScriptPattern.extractKeyFromP2PK(connectedScript);
return RedeemData.of(keyBag.findKeyFromPubKey(pubkeyBytes), connectedScript);
- } else if (ScriptPattern.isPayToScriptHash(connectedScript)) {
- byte[] scriptHash = ScriptPattern.extractHashFromPayToScriptHash(connectedScript);
+ } else if (ScriptPattern.isP2SH(connectedScript)) {
+ byte[] scriptHash = ScriptPattern.extractHashFromP2SH(connectedScript);
return keyBag.findRedeemDataFromScriptHash(scriptHash);
} else {
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Could not understand form of connected output script: " + connectedScript);
diff --git a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
index b015e08d..ae39299d 100644
--- a/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
+++ b/core/src/main/java/org/bitcoinj/core/TransactionOutput.java
@@ -122,17 +122,17 @@ public class TransactionOutput extends ChildMessage {
@Nullable
@Deprecated
public LegacyAddress getAddressFromP2PKHScript(NetworkParameters params) throws ScriptException {
- if (ScriptPattern.isPayToPubKeyHash(getScriptPubKey()))
+ if (ScriptPattern.isP2PKH(getScriptPubKey()))
return LegacyAddress.fromPubKeyHash(params,
- ScriptPattern.extractHashFromPayToPubKeyHash(getScriptPubKey()));
+ ScriptPattern.extractHashFromP2PKH(getScriptPubKey()));
return null;
}
@Nullable
@Deprecated
public LegacyAddress getAddressFromP2SH(NetworkParameters params) throws ScriptException {
- if (ScriptPattern.isPayToScriptHash(getScriptPubKey()))
- return LegacyAddress.fromScriptHash(params, ScriptPattern.extractHashFromPayToScriptHash(getScriptPubKey()));
+ if (ScriptPattern.isP2SH(getScriptPubKey()))
+ return LegacyAddress.fromScriptHash(params, ScriptPattern.extractHashFromP2SH(getScriptPubKey()));
return null;
}
@@ -301,15 +301,15 @@ public class TransactionOutput extends ChildMessage {
public boolean isMine(TransactionBag transactionBag) {
try {
Script script = getScriptPubKey();
- if (ScriptPattern.isPayToPubKey(script))
- return transactionBag.isPubKeyMine(ScriptPattern.extractKeyFromPayToPubKey(script));
- else if (ScriptPattern.isPayToScriptHash(script))
- return transactionBag.isPayToScriptHashMine(ScriptPattern.extractHashFromPayToScriptHash(script));
- else if (ScriptPattern.isPayToPubKeyHash(script))
- return transactionBag.isPubKeyHashMine(ScriptPattern.extractHashFromPayToPubKeyHash(script),
+ if (ScriptPattern.isP2PK(script))
+ return transactionBag.isPubKeyMine(ScriptPattern.extractKeyFromP2PK(script));
+ else if (ScriptPattern.isP2SH(script))
+ return transactionBag.isPayToScriptHashMine(ScriptPattern.extractHashFromP2SH(script));
+ else if (ScriptPattern.isP2PKH(script))
+ return transactionBag.isPubKeyHashMine(ScriptPattern.extractHashFromP2PKH(script),
Script.ScriptType.P2PKH);
- else if (ScriptPattern.isPayToWitnessPubKeyHash(script))
- return transactionBag.isPubKeyHashMine(ScriptPattern.extractHashFromPayToWitnessHash(script),
+ else if (ScriptPattern.isP2WPKH(script))
+ return transactionBag.isPubKeyHashMine(ScriptPattern.extractHashFromP2WH(script),
Script.ScriptType.P2WPKH);
else
return false;
@@ -329,11 +329,11 @@ public class TransactionOutput extends ChildMessage {
Script script = getScriptPubKey();
StringBuilder buf = new StringBuilder("TxOut of ");
buf.append(Coin.valueOf(value).toFriendlyString());
- if (ScriptPattern.isPayToPubKeyHash(script) || ScriptPattern.isPayToWitnessPubKeyHash(script)
- || ScriptPattern.isPayToScriptHash(script))
+ if (ScriptPattern.isP2PKH(script) || ScriptPattern.isP2WPKH(script)
+ || ScriptPattern.isP2SH(script))
buf.append(" to ").append(script.getToAddress(params));
- else if (ScriptPattern.isPayToPubKey(script))
- buf.append(" to pubkey ").append(Utils.HEX.encode(ScriptPattern.extractKeyFromPayToPubKey(script)));
+ else if (ScriptPattern.isP2PK(script))
+ buf.append(" to pubkey ").append(Utils.HEX.encode(ScriptPattern.extractKeyFromP2PK(script)));
else if (ScriptPattern.isSentToMultisig(script))
buf.append(" to multisig");
else
diff --git a/core/src/main/java/org/bitcoinj/script/Script.java b/core/src/main/java/org/bitcoinj/script/Script.java
index 89a07d9f..47753889 100644
--- a/core/src/main/java/org/bitcoinj/script/Script.java
+++ b/core/src/main/java/org/bitcoinj/script/Script.java
@@ -237,12 +237,12 @@ public class Script {
@Deprecated
public boolean isSentToRawPubKey() {
- return ScriptPattern.isPayToPubKey(this);
+ return ScriptPattern.isP2PK(this);
}
@Deprecated
public boolean isSentToAddress() {
- return ScriptPattern.isPayToPubKeyHash(this);
+ return ScriptPattern.isP2PKH(this);
}
/**
@@ -251,12 +251,12 @@ public class Script {
* Otherwise this method throws a ScriptException.
*/
public byte[] getPubKeyHash() throws ScriptException {
- if (ScriptPattern.isPayToPubKeyHash(this))
- return ScriptPattern.extractHashFromPayToPubKeyHash(this);
- else if (ScriptPattern.isPayToScriptHash(this))
- return ScriptPattern.extractHashFromPayToScriptHash(this);
- else if (ScriptPattern.isPayToWitnessHash(this))
- return ScriptPattern.extractHashFromPayToWitnessHash(this);
+ if (ScriptPattern.isP2PKH(this))
+ return ScriptPattern.extractHashFromP2PKH(this);
+ else if (ScriptPattern.isP2SH(this))
+ return ScriptPattern.extractHashFromP2SH(this);
+ else if (ScriptPattern.isP2WH(this))
+ return ScriptPattern.extractHashFromP2WH(this);
else
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Script not in the standard scriptPubKey form");
}
@@ -297,14 +297,14 @@ public class Script {
* showing addresses rather than pubkeys.
*/
public Address getToAddress(NetworkParameters params, boolean forcePayToPubKey) throws ScriptException {
- if (ScriptPattern.isPayToPubKeyHash(this))
- return LegacyAddress.fromPubKeyHash(params, ScriptPattern.extractHashFromPayToPubKeyHash(this));
- else if (ScriptPattern.isPayToScriptHash(this))
- return LegacyAddress.fromScriptHash(params, ScriptPattern.extractHashFromPayToScriptHash(this));
- else if (forcePayToPubKey && ScriptPattern.isPayToPubKey(this))
- return LegacyAddress.fromKey(params, ECKey.fromPublicOnly(ScriptPattern.extractKeyFromPayToPubKey(this)));
- else if (ScriptPattern.isPayToWitnessHash(this))
- return SegwitAddress.fromHash(params, ScriptPattern.extractHashFromPayToWitnessHash(this));
+ if (ScriptPattern.isP2PKH(this))
+ return LegacyAddress.fromPubKeyHash(params, ScriptPattern.extractHashFromP2PKH(this));
+ else if (ScriptPattern.isP2SH(this))
+ return LegacyAddress.fromScriptHash(params, ScriptPattern.extractHashFromP2SH(this));
+ else if (forcePayToPubKey && ScriptPattern.isP2PK(this))
+ return LegacyAddress.fromKey(params, ECKey.fromPublicOnly(ScriptPattern.extractKeyFromP2PK(this)));
+ else if (ScriptPattern.isP2WH(this))
+ return SegwitAddress.fromHash(params, ScriptPattern.extractHashFromP2WH(this));
else
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Cannot cast this script to an address");
}
@@ -384,14 +384,14 @@ public class Script {
* It is expected that this program later on will be updated with proper signatures.
*/
public Script createEmptyInputScript(@Nullable ECKey key, @Nullable Script redeemScript) {
- if (ScriptPattern.isPayToPubKeyHash(this)) {
+ if (ScriptPattern.isP2PKH(this)) {
checkArgument(key != null, "Key required to create P2PKH input script");
return ScriptBuilder.createInputScript(null, key);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(this)) {
+ } else if (ScriptPattern.isP2WPKH(this)) {
return ScriptBuilder.createEmpty();
- } else if (ScriptPattern.isPayToPubKey(this)) {
+ } else if (ScriptPattern.isP2PK(this)) {
return ScriptBuilder.createInputScript(null);
- } else if (ScriptPattern.isPayToScriptHash(this)) {
+ } else if (ScriptPattern.isP2SH(this)) {
checkArgument(redeemScript != null, "Redeem script required to create P2SH input script");
return ScriptBuilder.createP2SHMultiSigInputScript(null, redeemScript);
} else {
@@ -400,11 +400,11 @@ public class Script {
}
public TransactionWitness createEmptyWitness(ECKey key) {
- if (ScriptPattern.isPayToWitnessPubKeyHash(this)) {
+ if (ScriptPattern.isP2WPKH(this)) {
checkArgument(key != null, "Key required to create P2WPKH witness");
return TransactionWitness.EMPTY;
- } else if (ScriptPattern.isPayToPubKey(this) || ScriptPattern.isPayToPubKeyHash(this)
- || ScriptPattern.isPayToScriptHash(this)) {
+ } else if (ScriptPattern.isP2PK(this) || ScriptPattern.isP2PKH(this)
+ || ScriptPattern.isP2SH(this)) {
return null; // no witness
} else {
throw new ScriptException(ScriptError.SCRIPT_ERR_UNKNOWN_ERROR, "Do not understand script type: " + this);
@@ -417,12 +417,12 @@ public class Script {
public Script getScriptSigWithSignature(Script scriptSig, byte[] sigBytes, int index) {
int sigsPrefixCount = 0;
int sigsSuffixCount = 0;
- if (ScriptPattern.isPayToScriptHash(this)) {
+ if (ScriptPattern.isP2SH(this)) {
sigsPrefixCount = 1; // OP_0 *
sigsSuffixCount = 1;
} else if (ScriptPattern.isSentToMultisig(this)) {
sigsPrefixCount = 1; // OP_0 *
- } else if (ScriptPattern.isPayToPubKeyHash(this)) {
+ } else if (ScriptPattern.isP2PKH(this)) {
sigsSuffixCount = 1; //
}
return ScriptBuilder.updateScriptWithSignature(scriptSig, sigBytes, index, sigsPrefixCount, sigsSuffixCount);
@@ -592,10 +592,10 @@ public class Script {
// for N of M CHECKMULTISIG script we will need N signatures to spend
ScriptChunk nChunk = chunks.get(0);
return Script.decodeFromOpN(nChunk.opcode);
- } else if (ScriptPattern.isPayToPubKeyHash(this) || ScriptPattern.isPayToPubKey(this)) {
+ } else if (ScriptPattern.isP2PKH(this) || ScriptPattern.isP2PK(this)) {
// P2PKH and P2PK require single sig
return 1;
- } else if (ScriptPattern.isPayToScriptHash(this)) {
+ } else if (ScriptPattern.isP2SH(this)) {
throw new IllegalStateException("For P2SH number of signatures depends on redeem script");
} else {
throw new IllegalStateException("Unsupported script type");
@@ -607,21 +607,21 @@ public class Script {
* be required for certain types of script to estimate target size.
*/
public int getNumberOfBytesRequiredToSpend(@Nullable ECKey pubKey, @Nullable Script redeemScript) {
- if (ScriptPattern.isPayToScriptHash(this)) {
+ if (ScriptPattern.isP2SH(this)) {
// scriptSig: [sig] [sig...]
checkArgument(redeemScript != null, "P2SH script requires redeemScript to be spent");
return redeemScript.getNumberOfSignaturesRequiredToSpend() * SIG_SIZE + redeemScript.getProgram().length;
} else if (ScriptPattern.isSentToMultisig(this)) {
// scriptSig: OP_0 [sig] [sig...]
return getNumberOfSignaturesRequiredToSpend() * SIG_SIZE + 1;
- } else if (ScriptPattern.isPayToPubKey(this)) {
+ } else if (ScriptPattern.isP2PK(this)) {
// scriptSig:
return SIG_SIZE;
- } else if (ScriptPattern.isPayToPubKeyHash(this)) {
+ } else if (ScriptPattern.isP2PKH(this)) {
// scriptSig:
int uncompressedPubKeySize = 65;
return SIG_SIZE + (pubKey != null ? pubKey.getPubKey().length : uncompressedPubKeySize);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(this)) {
+ } else if (ScriptPattern.isP2WPKH(this)) {
// scriptSig is empty
return 0;
} else {
@@ -631,7 +631,7 @@ public class Script {
@Deprecated
public boolean isPayToScriptHash() {
- return ScriptPattern.isPayToScriptHash(this);
+ return ScriptPattern.isP2SH(this);
}
@Deprecated
@@ -1565,7 +1565,7 @@ public class Script {
*/
public void correctlySpends(Transaction txContainingThis, int scriptSigIndex, @Nullable TransactionWitness witness, @Nullable Coin value,
Script scriptPubKey, Set verifyFlags) throws ScriptException {
- if (ScriptPattern.isPayToWitnessPubKeyHash(scriptPubKey)) {
+ if (ScriptPattern.isP2WPKH(scriptPubKey)) {
// For SegWit, full validation isn't implemented. So we simply check the signature. P2SH_P2WPKH is handled
// by the P2SH code for now.
if (witness.getPushCount() < 2)
@@ -1638,7 +1638,7 @@ public class Script {
// overall scalability and performance.
// TODO: Check if we can take out enforceP2SH if there's a checkpoint at the enforcement block.
- if (verifyFlags.contains(VerifyFlag.P2SH) && ScriptPattern.isPayToScriptHash(scriptPubKey)) {
+ if (verifyFlags.contains(VerifyFlag.P2SH) && ScriptPattern.isP2SH(scriptPubKey)) {
for (ScriptChunk chunk : chunks)
if (chunk.isOpCode() && chunk.opcode > OP_16)
throw new ScriptException(ScriptError.SCRIPT_ERR_SIG_PUSHONLY, "Attempted to spend a P2SH scriptPubKey with a script that contained script ops");
@@ -1670,15 +1670,15 @@ public class Script {
* @return The script type, or null if the script is of unknown type
*/
public @Nullable ScriptType getScriptType() {
- if (ScriptPattern.isPayToPubKeyHash(this))
+ if (ScriptPattern.isP2PKH(this))
return ScriptType.P2PKH;
- if (ScriptPattern.isPayToPubKey(this))
+ if (ScriptPattern.isP2PK(this))
return ScriptType.P2PK;
- if (ScriptPattern.isPayToScriptHash(this))
+ if (ScriptPattern.isP2SH(this))
return ScriptType.P2SH;
- if (ScriptPattern.isPayToWitnessPubKeyHash(this))
+ if (ScriptPattern.isP2WPKH(this))
return ScriptType.P2WPKH;
- if (ScriptPattern.isPayToWitnessScriptHash(this))
+ if (ScriptPattern.isP2WSH(this))
return ScriptType.P2WSH;
return null;
}
diff --git a/core/src/main/java/org/bitcoinj/script/ScriptPattern.java b/core/src/main/java/org/bitcoinj/script/ScriptPattern.java
index 8e8d4db3..04fecf46 100644
--- a/core/src/main/java/org/bitcoinj/script/ScriptPattern.java
+++ b/core/src/main/java/org/bitcoinj/script/ScriptPattern.java
@@ -40,7 +40,7 @@ public class ScriptPattern {
* to send somebody money with a written code because their node is offline, but over time has become the standard
* way to make payments due to the short and recognizable base58 form addresses come in.
*/
- public static boolean isPayToPubKeyHash(Script script) {
+ public static boolean isP2PKH(Script script) {
List chunks = script.chunks;
if (chunks.size() != 5)
return false;
@@ -62,9 +62,9 @@ public class ScriptPattern {
/**
* Extract the pubkey hash from a P2PKH scriptPubKey. It's important that the script is in the correct form, so you
- * will want to guard calls to this method with {@link #isPayToPubKeyHash(Script)}.
+ * will want to guard calls to this method with {@link #isP2PKH(Script)}.
*/
- public static byte[] extractHashFromPayToPubKeyHash(Script script) {
+ public static byte[] extractHashFromP2PKH(Script script) {
return script.chunks.get(2).data;
}
@@ -78,7 +78,7 @@ public class ScriptPattern {
* P2SH is described by BIP16.
*
*/
- public static boolean isPayToScriptHash(Script script) {
+ public static boolean isP2SH(Script script) {
List chunks = script.chunks;
// We check for the effective serialized form because BIP16 defines a P2SH output using an exact byte
// template, not the logical program structure. Thus you can have two programs that look identical when
@@ -104,9 +104,9 @@ public class ScriptPattern {
/**
* Extract the script hash from a P2SH scriptPubKey. It's important that the script is in the correct form, so you
- * will want to guard calls to this method with {@link #isPayToScriptHash(Script)}.
+ * will want to guard calls to this method with {@link #isP2SH(Script)}.
*/
- public static byte[] extractHashFromPayToScriptHash(Script script) {
+ public static byte[] extractHashFromP2SH(Script script) {
return script.chunks.get(1).data;
}
@@ -116,7 +116,7 @@ public class ScriptPattern {
* of operation being susceptible to man-in-the-middle attacks. It is still used in coinbase outputs and can be
* useful more exotic types of transaction, but today most payments are to addresses.
*/
- public static boolean isPayToPubKey(Script script) {
+ public static boolean isP2PK(Script script) {
List chunks = script.chunks;
if (chunks.size() != 2)
return false;
@@ -135,9 +135,9 @@ public class ScriptPattern {
/**
* Extract the pubkey from a P2SH scriptPubKey. It's important that the script is in the correct form, so you will
- * want to guard calls to this method with {@link #isPayToPubKey(Script)}.
+ * want to guard calls to this method with {@link #isP2PK(Script)}.
*/
- public static byte[] extractKeyFromPayToPubKey(Script script) {
+ public static byte[] extractKeyFromP2PK(Script script) {
return script.chunks.get(0).data;
}
@@ -145,7 +145,7 @@ public class ScriptPattern {
* Returns true if this script is of the form {@code OP_0 }. This can either be a P2WPKH or P2WSH scriptPubKey. These
* two script types were introduced with segwit.
*/
- public static boolean isPayToWitnessHash(Script script) {
+ public static boolean isP2WH(Script script) {
List chunks = script.chunks;
if (chunks.size() != 2)
return false;
@@ -164,8 +164,8 @@ public class ScriptPattern {
* Returns true if this script is of the form {@code OP_0 } and hash is 20 bytes long. This can only be a P2WPKH
* scriptPubKey. This script type was introduced with segwit.
*/
- public static boolean isPayToWitnessPubKeyHash(Script script) {
- if (!isPayToWitnessHash(script))
+ public static boolean isP2WPKH(Script script) {
+ if (!isP2WH(script))
return false;
List chunks = script.chunks;
if (!chunks.get(0).equalsOpCode(OP_0))
@@ -178,8 +178,8 @@ public class ScriptPattern {
* Returns true if this script is of the form {@code OP_0 } and hash is 32 bytes long. This can only be a P2WSH
* scriptPubKey. This script type was introduced with segwit.
*/
- public static boolean isPayToWitnessScriptHash(Script script) {
- if (!isPayToWitnessHash(script))
+ public static boolean isP2WSH(Script script) {
+ if (!isP2WH(script))
return false;
List chunks = script.chunks;
if (!chunks.get(0).equalsOpCode(OP_0))
@@ -191,9 +191,9 @@ public class ScriptPattern {
/**
* Extract the pubkey hash from a P2WPKH or the script hash from a P2WSH scriptPubKey. It's important that the
* script is in the correct form, so you will want to guard calls to this method with
- * {@link #isPayToWitnessHash(Script)}.
+ * {@link #isP2WH(Script)}.
*/
- public static byte[] extractHashFromPayToWitnessHash(Script script) {
+ public static byte[] extractHashFromP2WH(Script script) {
return script.chunks.get(1).data;
}
diff --git a/core/src/main/java/org/bitcoinj/signers/CustomTransactionSigner.java b/core/src/main/java/org/bitcoinj/signers/CustomTransactionSigner.java
index 726d18e5..8e92e8b5 100644
--- a/core/src/main/java/org/bitcoinj/signers/CustomTransactionSigner.java
+++ b/core/src/main/java/org/bitcoinj/signers/CustomTransactionSigner.java
@@ -60,7 +60,7 @@ public abstract class CustomTransactionSigner implements TransactionSigner {
continue;
}
Script scriptPubKey = txOut.getScriptPubKey();
- if (!ScriptPattern.isPayToScriptHash(scriptPubKey)) {
+ if (!ScriptPattern.isP2SH(scriptPubKey)) {
log.warn("CustomTransactionSigner works only with P2SH transactions");
return false;
}
diff --git a/core/src/main/java/org/bitcoinj/signers/LocalTransactionSigner.java b/core/src/main/java/org/bitcoinj/signers/LocalTransactionSigner.java
index 98ab4763..d38c7edd 100644
--- a/core/src/main/java/org/bitcoinj/signers/LocalTransactionSigner.java
+++ b/core/src/main/java/org/bitcoinj/signers/LocalTransactionSigner.java
@@ -113,8 +113,8 @@ public class LocalTransactionSigner implements TransactionSigner {
// a CHECKMULTISIG program for P2SH inputs
byte[] script = redeemData.redeemScript.getProgram();
try {
- if (ScriptPattern.isPayToPubKey(scriptPubKey) || ScriptPattern.isPayToPubKeyHash(scriptPubKey)
- || ScriptPattern.isPayToScriptHash(scriptPubKey)) {
+ if (ScriptPattern.isP2PK(scriptPubKey) || ScriptPattern.isP2PKH(scriptPubKey)
+ || ScriptPattern.isP2SH(scriptPubKey)) {
TransactionSignature signature = tx.calculateSignature(i, key, script, Transaction.SigHash.ALL,
false);
@@ -130,7 +130,7 @@ public class LocalTransactionSigner implements TransactionSigner {
sigIndex);
txIn.setScriptSig(inputScript);
txIn.setWitness(null);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(scriptPubKey)) {
+ } else if (ScriptPattern.isP2WPKH(scriptPubKey)) {
Script scriptCode = new ScriptBuilder().data(
ScriptBuilder.createOutputScript(LegacyAddress.fromKey(tx.getParams(), key)).getProgram())
.build();
diff --git a/core/src/main/java/org/bitcoinj/signers/MissingSigResolutionSigner.java b/core/src/main/java/org/bitcoinj/signers/MissingSigResolutionSigner.java
index 82b40302..c17e4785 100644
--- a/core/src/main/java/org/bitcoinj/signers/MissingSigResolutionSigner.java
+++ b/core/src/main/java/org/bitcoinj/signers/MissingSigResolutionSigner.java
@@ -69,8 +69,8 @@ public class MissingSigResolutionSigner implements TransactionSigner {
Script scriptPubKey = txIn.getConnectedOutput().getScriptPubKey();
Script inputScript = txIn.getScriptSig();
- if (ScriptPattern.isPayToScriptHash(scriptPubKey) || ScriptPattern.isSentToMultisig(scriptPubKey)) {
- int sigSuffixCount = ScriptPattern.isPayToScriptHash(scriptPubKey) ? 1 : 0;
+ if (ScriptPattern.isP2SH(scriptPubKey) || ScriptPattern.isSentToMultisig(scriptPubKey)) {
+ int sigSuffixCount = ScriptPattern.isP2SH(scriptPubKey) ? 1 : 0;
// all chunks except the first one (OP_0) and the last (redeem script) are signatures
for (int j = 1; j < inputScript.getChunks().size() - sigSuffixCount; j++) {
ScriptChunk scriptChunk = inputScript.getChunks().get(j);
@@ -82,7 +82,7 @@ public class MissingSigResolutionSigner implements TransactionSigner {
}
}
}
- } else if (ScriptPattern.isPayToPubKey(scriptPubKey) || ScriptPattern.isPayToPubKeyHash(scriptPubKey)) {
+ } else if (ScriptPattern.isP2PK(scriptPubKey) || ScriptPattern.isP2PKH(scriptPubKey)) {
if (inputScript.getChunks().get(0).equalsOpCode(0)) {
if (missingSigsMode == Wallet.MissingSigsMode.THROW) {
throw new ECKey.MissingPrivateKeyException();
@@ -90,14 +90,14 @@ public class MissingSigResolutionSigner implements TransactionSigner {
txIn.setScriptSig(scriptPubKey.getScriptSigWithSignature(inputScript, dummySig, 0));
}
}
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(scriptPubKey)) {
+ } else if (ScriptPattern.isP2WPKH(scriptPubKey)) {
if (txIn.getWitness() == null || txIn.getWitness().equals(TransactionWitness.EMPTY)
|| txIn.getWitness().getPush(0).length == 0) {
if (missingSigsMode == Wallet.MissingSigsMode.THROW) {
throw new ECKey.MissingPrivateKeyException();
} else if (missingSigsMode == Wallet.MissingSigsMode.USE_DUMMY_SIG) {
ECKey key = keyBag.findKeyFromPubKeyHash(
- ScriptPattern.extractHashFromPayToWitnessHash(scriptPubKey), Script.ScriptType.P2WPKH);
+ ScriptPattern.extractHashFromP2WH(scriptPubKey), Script.ScriptType.P2WPKH);
txIn.setWitness(TransactionWitness.redeemP2WPKH(TransactionSignature.dummy(), key));
}
}
diff --git a/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java b/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java
index 89decaf0..b13740ac 100644
--- a/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java
+++ b/core/src/main/java/org/bitcoinj/wallet/KeyChainGroup.java
@@ -376,9 +376,9 @@ public class KeyChainGroup implements KeyBag {
Script.ScriptType outputScriptType = chain.getOutputScriptType();
if (chain.isMarried()) {
Script outputScript = chain.freshOutputScript(purpose);
- checkState(ScriptPattern.isPayToScriptHash(outputScript)); // Only handle P2SH for now
+ checkState(ScriptPattern.isP2SH(outputScript)); // Only handle P2SH for now
Address freshAddress = LegacyAddress.fromScriptHash(params,
- ScriptPattern.extractHashFromPayToScriptHash(outputScript));
+ ScriptPattern.extractHashFromP2SH(outputScript));
maybeLookaheadScripts();
currentAddresses.put(purpose, freshAddress);
return freshAddress;
diff --git a/core/src/main/java/org/bitcoinj/wallet/KeyTimeCoinSelector.java b/core/src/main/java/org/bitcoinj/wallet/KeyTimeCoinSelector.java
index c1c2ecb9..e996cbee 100644
--- a/core/src/main/java/org/bitcoinj/wallet/KeyTimeCoinSelector.java
+++ b/core/src/main/java/org/bitcoinj/wallet/KeyTimeCoinSelector.java
@@ -63,12 +63,12 @@ public class KeyTimeCoinSelector implements CoinSelector {
// We ignore any other kind of exotic output on the assumption we can't spend it ourselves.
final Script scriptPubKey = output.getScriptPubKey();
ECKey controllingKey;
- if (ScriptPattern.isPayToPubKey(scriptPubKey)) {
- controllingKey = wallet.findKeyFromPubKey(ScriptPattern.extractKeyFromPayToPubKey(scriptPubKey));
- } else if (ScriptPattern.isPayToPubKeyHash(scriptPubKey)) {
- controllingKey = wallet.findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToPubKeyHash(scriptPubKey), Script.ScriptType.P2PKH);
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(scriptPubKey)) {
- controllingKey = wallet.findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToWitnessHash(scriptPubKey), Script.ScriptType.P2WPKH);
+ if (ScriptPattern.isP2PK(scriptPubKey)) {
+ controllingKey = wallet.findKeyFromPubKey(ScriptPattern.extractKeyFromP2PK(scriptPubKey));
+ } else if (ScriptPattern.isP2PKH(scriptPubKey)) {
+ controllingKey = wallet.findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2PKH(scriptPubKey), Script.ScriptType.P2PKH);
+ } else if (ScriptPattern.isP2WPKH(scriptPubKey)) {
+ controllingKey = wallet.findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2WH(scriptPubKey), Script.ScriptType.P2WPKH);
} else {
log.info("Skipping tx output {} because it's not of simple form.", output);
continue;
diff --git a/core/src/main/java/org/bitcoinj/wallet/RedeemData.java b/core/src/main/java/org/bitcoinj/wallet/RedeemData.java
index 243a1445..ff042694 100644
--- a/core/src/main/java/org/bitcoinj/wallet/RedeemData.java
+++ b/core/src/main/java/org/bitcoinj/wallet/RedeemData.java
@@ -57,8 +57,8 @@ public class RedeemData {
* to spend such inputs.
*/
public static RedeemData of(ECKey key, Script redeemScript) {
- checkArgument(ScriptPattern.isPayToPubKeyHash(redeemScript)
- || ScriptPattern.isPayToWitnessPubKeyHash(redeemScript) || ScriptPattern.isPayToPubKey(redeemScript));
+ checkArgument(ScriptPattern.isP2PKH(redeemScript)
+ || ScriptPattern.isP2WPKH(redeemScript) || ScriptPattern.isP2PK(redeemScript));
return key != null ? new RedeemData(Collections.singletonList(key), redeemScript) : null;
}
diff --git a/core/src/main/java/org/bitcoinj/wallet/Wallet.java b/core/src/main/java/org/bitcoinj/wallet/Wallet.java
index 2e94729e..3c76d271 100644
--- a/core/src/main/java/org/bitcoinj/wallet/Wallet.java
+++ b/core/src/main/java/org/bitcoinj/wallet/Wallet.java
@@ -1108,7 +1108,7 @@ public class Wallet extends BaseTaggableObject
try {
List addresses = new LinkedList<>();
for (Script script : watchedScripts)
- if (ScriptPattern.isPayToPubKeyHash(script))
+ if (ScriptPattern.isP2PKH(script))
addresses.add(script.getToAddress(params));
return addresses;
} finally {
@@ -1231,18 +1231,18 @@ public class Wallet extends BaseTaggableObject
for (TransactionOutput o : tx.getOutputs()) {
try {
Script script = o.getScriptPubKey();
- if (ScriptPattern.isPayToPubKey(script)) {
- byte[] pubkey = ScriptPattern.extractKeyFromPayToPubKey(script);
+ if (ScriptPattern.isP2PK(script)) {
+ byte[] pubkey = ScriptPattern.extractKeyFromP2PK(script);
keyChainGroup.markPubKeyAsUsed(pubkey);
- } else if (ScriptPattern.isPayToPubKeyHash(script)) {
- byte[] pubkeyHash = ScriptPattern.extractHashFromPayToPubKeyHash(script);
+ } else if (ScriptPattern.isP2PKH(script)) {
+ byte[] pubkeyHash = ScriptPattern.extractHashFromP2PKH(script);
keyChainGroup.markPubKeyHashAsUsed(pubkeyHash);
- } else if (ScriptPattern.isPayToScriptHash(script)) {
+ } else if (ScriptPattern.isP2SH(script)) {
LegacyAddress a = LegacyAddress.fromScriptHash(tx.getParams(),
- ScriptPattern.extractHashFromPayToScriptHash(script));
+ ScriptPattern.extractHashFromP2SH(script));
keyChainGroup.markP2SHAddressAsUsed(a);
- } else if (ScriptPattern.isPayToWitnessHash(script)) {
- byte[] pubkeyHash = ScriptPattern.extractHashFromPayToWitnessHash(script);
+ } else if (ScriptPattern.isP2WH(script)) {
+ byte[] pubkeyHash = ScriptPattern.extractHashFromP2WH(script);
keyChainGroup.markPubKeyHashAsUsed(pubkeyHash);
}
} catch (ScriptException e) {
@@ -4287,19 +4287,19 @@ public class Wallet extends BaseTaggableObject
* false if the form of the script is not known or if the script is OP_RETURN.
*/
public boolean canSignFor(Script script) {
- if (ScriptPattern.isPayToPubKey(script)) {
- byte[] pubkey = ScriptPattern.extractKeyFromPayToPubKey(script);
+ if (ScriptPattern.isP2PK(script)) {
+ byte[] pubkey = ScriptPattern.extractKeyFromP2PK(script);
ECKey key = findKeyFromPubKey(pubkey);
return key != null && (key.isEncrypted() || key.hasPrivKey());
- } else if (ScriptPattern.isPayToScriptHash(script)) {
- RedeemData data = findRedeemDataFromScriptHash(ScriptPattern.extractHashFromPayToScriptHash(script));
+ } else if (ScriptPattern.isP2SH(script)) {
+ RedeemData data = findRedeemDataFromScriptHash(ScriptPattern.extractHashFromP2SH(script));
return data != null && canSignFor(data.redeemScript);
- } else if (ScriptPattern.isPayToPubKeyHash(script)) {
- ECKey key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToPubKeyHash(script),
+ } else if (ScriptPattern.isP2PKH(script)) {
+ ECKey key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2PKH(script),
Script.ScriptType.P2PKH);
return key != null && (key.isEncrypted() || key.hasPrivKey());
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(script)) {
- ECKey key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToWitnessHash(script),
+ } else if (ScriptPattern.isP2WPKH(script)) {
+ ECKey key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2WH(script),
Script.ScriptType.P2WPKH);
return key != null && (key.isEncrypted() || key.hasPrivKey()) && key.isCompressed();
} else if (ScriptPattern.isSentToMultisig(script)) {
@@ -4825,8 +4825,8 @@ public class Wallet extends BaseTaggableObject
// Returns true if the output is one that won't be selected by a data element matching in the scriptSig.
private boolean isTxOutputBloomFilterable(TransactionOutput out) {
Script script = out.getScriptPubKey();
- boolean isScriptTypeSupported = ScriptPattern.isPayToPubKey(script) || ScriptPattern.isPayToScriptHash(script)
- || ScriptPattern.isPayToWitnessPubKeyHash(script) || ScriptPattern.isPayToWitnessScriptHash(script);
+ boolean isScriptTypeSupported = ScriptPattern.isP2PK(script) || ScriptPattern.isP2SH(script)
+ || ScriptPattern.isP2WPKH(script) || ScriptPattern.isP2WSH(script);
return (isScriptTypeSupported && myUnspents.contains(out)) || watchedScripts.contains(script);
}
@@ -5083,16 +5083,16 @@ public class Wallet extends BaseTaggableObject
Script script = output.getScriptPubKey();
ECKey key = null;
Script redeemScript = null;
- if (ScriptPattern.isPayToPubKeyHash(script)) {
- key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToPubKeyHash(script),
+ if (ScriptPattern.isP2PKH(script)) {
+ key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2PKH(script),
Script.ScriptType.P2PKH);
checkNotNull(key, "Coin selection includes unspendable outputs");
- } else if (ScriptPattern.isPayToWitnessPubKeyHash(script)) {
- key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromPayToWitnessHash(script),
+ } else if (ScriptPattern.isP2WPKH(script)) {
+ key = findKeyFromPubKeyHash(ScriptPattern.extractHashFromP2WH(script),
Script.ScriptType.P2WPKH);
checkNotNull(key, "Coin selection includes unspendable outputs");
- } else if (ScriptPattern.isPayToScriptHash(script)) {
- redeemScript = findRedeemDataFromScriptHash(ScriptPattern.extractHashFromPayToScriptHash(script)).redeemScript;
+ } else if (ScriptPattern.isP2SH(script)) {
+ redeemScript = findRedeemDataFromScriptHash(ScriptPattern.extractHashFromP2SH(script)).redeemScript;
checkNotNull(redeemScript, "Coin selection includes unspendable outputs");
}
size += script.getNumberOfBytesRequiredToSpend(key, redeemScript);
diff --git a/core/src/test/java/org/bitcoinj/core/FullBlockTestGenerator.java b/core/src/test/java/org/bitcoinj/core/FullBlockTestGenerator.java
index fc4646b6..17b88829 100644
--- a/core/src/test/java/org/bitcoinj/core/FullBlockTestGenerator.java
+++ b/core/src/test/java/org/bitcoinj/core/FullBlockTestGenerator.java
@@ -1819,7 +1819,7 @@ public class FullBlockTestGenerator {
input.setScriptSig(new ScriptBuilder().op(OP_1).build());
} else {
// Sign input
- checkState(ScriptPattern.isPayToPubKey(prevOut.scriptPubKey));
+ checkState(ScriptPattern.isP2PK(prevOut.scriptPubKey));
Sha256Hash hash = t.hashForSignature(0, prevOut.scriptPubKey, SigHash.ALL, false);
input.setScriptSig(ScriptBuilder.createInputScript(
new TransactionSignature(coinbaseOutKey.sign(hash), SigHash.ALL, false))
diff --git a/core/src/test/java/org/bitcoinj/core/LegacyAddressTest.java b/core/src/test/java/org/bitcoinj/core/LegacyAddressTest.java
index f6b10777..6de5042d 100644
--- a/core/src/test/java/org/bitcoinj/core/LegacyAddressTest.java
+++ b/core/src/test/java/org/bitcoinj/core/LegacyAddressTest.java
@@ -172,7 +172,7 @@ public class LegacyAddressTest {
LegacyAddress b = LegacyAddress.fromScriptHash(TESTNET, HEX.decode("18a0e827269b5211eb51a4af1b2fa69333efa722"));
assertEquals("2MuVSxtfivPKJe93EC1Tb9UhJtGhsoWEHCe", b.toString());
LegacyAddress c = LegacyAddress.fromScriptHash(MAINNET,
- ScriptPattern.extractHashFromPayToScriptHash(ScriptBuilder.createP2SHOutputScript(hex)));
+ ScriptPattern.extractHashFromP2SH(ScriptBuilder.createP2SHOutputScript(hex)));
assertEquals("35b9vsyH1KoFT5a5KtrKusaCcPLkiSo1tU", c.toString());
}
@@ -189,7 +189,7 @@ public class LegacyAddressTest {
List keys = Arrays.asList(key1, key2, key3);
Script p2shScript = ScriptBuilder.createP2SHOutputScript(2, keys);
LegacyAddress address = LegacyAddress.fromScriptHash(MAINNET,
- ScriptPattern.extractHashFromPayToScriptHash(p2shScript));
+ ScriptPattern.extractHashFromP2SH(p2shScript));
assertEquals("3N25saC4dT24RphDAwLtD8LUN4E2gZPJke", address.toString());
}
diff --git a/core/src/test/java/org/bitcoinj/core/SegwitAddressTest.java b/core/src/test/java/org/bitcoinj/core/SegwitAddressTest.java
index c3ada243..315a2f5e 100644
--- a/core/src/test/java/org/bitcoinj/core/SegwitAddressTest.java
+++ b/core/src/test/java/org/bitcoinj/core/SegwitAddressTest.java
@@ -108,7 +108,7 @@ public class SegwitAddressTest {
if (valid.expectedWitnessVersion == 0) {
Script expectedScriptPubKey = new Script(Utils.HEX.decode(valid.expectedScriptPubKey));
assertEquals(address, SegwitAddress.fromHash(valid.expectedParams,
- ScriptPattern.extractHashFromPayToWitnessHash(expectedScriptPubKey)));
+ ScriptPattern.extractHashFromP2WH(expectedScriptPubKey)));
}
assertEquals(valid.expectedWitnessVersion, address.getWitnessVersion());
}
diff --git a/core/src/test/java/org/bitcoinj/core/TransactionOutputTest.java b/core/src/test/java/org/bitcoinj/core/TransactionOutputTest.java
index eb54f32e..80c29152 100644
--- a/core/src/test/java/org/bitcoinj/core/TransactionOutputTest.java
+++ b/core/src/test/java/org/bitcoinj/core/TransactionOutputTest.java
@@ -80,8 +80,8 @@ public class TransactionOutputTest extends TestWithWallet {
Transaction tx = new Transaction(MAINNET);
tx.addOutput(Coin.CENT, ScriptBuilder.createOpReturnScript("hello world!".getBytes()));
assertTrue(ScriptPattern.isOpReturn(tx.getOutput(0).getScriptPubKey()));
- assertFalse(ScriptPattern.isPayToPubKey(tx.getOutput(0).getScriptPubKey()));
- assertFalse(ScriptPattern.isPayToPubKeyHash(tx.getOutput(0).getScriptPubKey()));
+ assertFalse(ScriptPattern.isP2PK(tx.getOutput(0).getScriptPubKey()));
+ assertFalse(ScriptPattern.isP2PKH(tx.getOutput(0).getScriptPubKey()));
}
@Test
diff --git a/core/src/test/java/org/bitcoinj/protocols/channels/ChannelConnectionTest.java b/core/src/test/java/org/bitcoinj/protocols/channels/ChannelConnectionTest.java
index 6212bda6..f6b0553e 100644
--- a/core/src/test/java/org/bitcoinj/protocols/channels/ChannelConnectionTest.java
+++ b/core/src/test/java/org/bitcoinj/protocols/channels/ChannelConnectionTest.java
@@ -543,7 +543,7 @@ public class ChannelConnectionTest extends TestWithWallet {
if (isMultiSigContract()) {
assertTrue(ScriptPattern.isSentToMultisig(broadcasts.take().getOutput(0).getScriptPubKey()));
} else {
- assertTrue(ScriptPattern.isPayToScriptHash(broadcasts.take().getOutput(0).getScriptPubKey()));
+ assertTrue(ScriptPattern.isP2SH(broadcasts.take().getOutput(0).getScriptPubKey()));
}
broadcastTxPause.release();
assertEquals(TransactionConfidence.Source.SELF, broadcasts.take().getConfidence().getSource());
diff --git a/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java b/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java
index 6ad4f8aa..cd65e453 100644
--- a/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java
+++ b/core/src/test/java/org/bitcoinj/protocols/channels/PaymentChannelStateTest.java
@@ -258,10 +258,10 @@ public class PaymentChannelStateTest extends TestWithWallet {
if (versionSelector == PaymentChannelClient.VersionSelector.VERSION_1) {
assertTrue(ScriptPattern.isSentToMultisig(script));
} else {
- assertTrue(ScriptPattern.isPayToScriptHash(script));
+ assertTrue(ScriptPattern.isP2SH(script));
}
script = multisigContract.getOutput(1).getScriptPubKey();
- assertTrue(ScriptPattern.isPayToPubKeyHash(script));
+ assertTrue(ScriptPattern.isP2PKH(script));
assertTrue(wallet.getPendingTransactions().contains(multisigContract));
// Provide the server with the multisig contract and simulate successful propagation/acceptance.
@@ -383,10 +383,10 @@ public class PaymentChannelStateTest extends TestWithWallet {
if (versionSelector == PaymentChannelClient.VersionSelector.VERSION_1) {
assertTrue(ScriptPattern.isSentToMultisig(script));
} else {
- assertTrue(ScriptPattern.isPayToScriptHash(script));
+ assertTrue(ScriptPattern.isP2SH(script));
}
script = multisigContract.getOutput(1).getScriptPubKey();
- assertTrue(ScriptPattern.isPayToPubKeyHash(script));
+ assertTrue(ScriptPattern.isP2PKH(script));
assertTrue(wallet.getPendingTransactions().contains(multisigContract));
// Provide the server with the multisig contract and simulate successful propagation/acceptance.
@@ -859,10 +859,10 @@ public class PaymentChannelStateTest extends TestWithWallet {
if (versionSelector == PaymentChannelClient.VersionSelector.VERSION_1) {
assertTrue(ScriptPattern.isSentToMultisig(script));
} else {
- assertTrue(ScriptPattern.isPayToScriptHash(script));
+ assertTrue(ScriptPattern.isP2SH(script));
}
script = multisigContract.getOutput(1).getScriptPubKey();
- assertTrue(ScriptPattern.isPayToPubKeyHash(script));
+ assertTrue(ScriptPattern.isP2PKH(script));
assertTrue(wallet.getPendingTransactions().contains(multisigContract));
// Provide the server with the multisig contract and simulate successful propagation/acceptance.
@@ -953,10 +953,10 @@ public class PaymentChannelStateTest extends TestWithWallet {
if (versionSelector == PaymentChannelClient.VersionSelector.VERSION_1) {
assertTrue(ScriptPattern.isSentToMultisig(script));
} else {
- assertTrue(ScriptPattern.isPayToScriptHash(script));
+ assertTrue(ScriptPattern.isP2SH(script));
}
script = multisigContract.getOutput(1).getScriptPubKey();
- assertTrue(ScriptPattern.isPayToPubKeyHash(script));
+ assertTrue(ScriptPattern.isP2PKH(script));
assertTrue(wallet.getPendingTransactions().contains(multisigContract));
// Provide the server with the multisig contract and simulate successful propagation/acceptance.
diff --git a/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java b/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java
index 9de63a5f..31cebb14 100644
--- a/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java
+++ b/core/src/test/java/org/bitcoinj/script/ScriptPatternTest.java
@@ -32,19 +32,19 @@ public class ScriptPatternTest {
@Test
public void testCommonScripts() {
- assertTrue(ScriptPattern.isPayToPubKeyHash(
+ assertTrue(ScriptPattern.isP2PKH(
ScriptBuilder.createP2PKHOutputScript(keys.get(0))
));
- assertTrue(ScriptPattern.isPayToScriptHash(
+ assertTrue(ScriptPattern.isP2SH(
ScriptBuilder.createP2SHOutputScript(2, keys)
));
- assertTrue(ScriptPattern.isPayToPubKey(
+ assertTrue(ScriptPattern.isP2PK(
ScriptBuilder.createP2PKOutputScript(keys.get(0))
));
- assertTrue(ScriptPattern.isPayToWitnessPubKeyHash(
+ assertTrue(ScriptPattern.isP2WPKH(
ScriptBuilder.createP2WPKHOutputScript(keys.get(0))
));
- assertTrue(ScriptPattern.isPayToWitnessScriptHash(
+ assertTrue(ScriptPattern.isP2WSH(
ScriptBuilder.createP2WSHOutputScript(new ScriptBuilder().build())
));
assertTrue(ScriptPattern.isSentToMultisig(
diff --git a/core/src/test/java/org/bitcoinj/script/ScriptTest.java b/core/src/test/java/org/bitcoinj/script/ScriptTest.java
index e0b5c127..886c875c 100644
--- a/core/src/test/java/org/bitcoinj/script/ScriptTest.java
+++ b/core/src/test/java/org/bitcoinj/script/ScriptTest.java
@@ -80,7 +80,7 @@ public class ScriptTest {
byte[] pubkeyBytes = HEX.decode(pubkeyProg);
Script pubkey = new Script(pubkeyBytes);
assertEquals("DUP HASH160 PUSHDATA(20)[33e81a941e64cda12c6a299ed322ddbdd03f8d0e] EQUALVERIFY CHECKSIG", pubkey.toString());
- Address toAddr = LegacyAddress.fromPubKeyHash(TESTNET, ScriptPattern.extractHashFromPayToPubKeyHash(pubkey));
+ Address toAddr = LegacyAddress.fromPubKeyHash(TESTNET, ScriptPattern.extractHashFromP2PKH(pubkey));
assertEquals("mkFQohBpy2HDXrCwyMrYL5RtfrmeiuuPY2", toAddr.toString());
}
@@ -113,14 +113,14 @@ public class ScriptTest {
@Test
public void testP2SHOutputScript() throws Exception {
Address p2shAddress = LegacyAddress.fromBase58(MAINNET, "35b9vsyH1KoFT5a5KtrKusaCcPLkiSo1tU");
- assertTrue(ScriptPattern.isPayToScriptHash(ScriptBuilder.createOutputScript(p2shAddress)));
+ assertTrue(ScriptPattern.isP2SH(ScriptBuilder.createOutputScript(p2shAddress)));
}
@Test
public void testIp() throws Exception {
byte[] bytes = HEX.decode("41043e96222332ea7848323c08116dddafbfa917b8e37f0bdf63841628267148588a09a43540942d58d49717ad3fabfe14978cf4f0a8b84d2435dad16e9aa4d7f935ac");
Script s = new Script(bytes);
- assertTrue(ScriptPattern.isPayToPubKey(s));
+ assertTrue(ScriptPattern.isP2PK(s));
}
@Test
@@ -446,7 +446,7 @@ public class ScriptTest {
// pay to script hash
Script p2shScript = ScriptBuilder.createP2SHOutputScript(new byte[20]);
Address scriptAddress = LegacyAddress.fromScriptHash(TESTNET,
- ScriptPattern.extractHashFromPayToScriptHash(p2shScript));
+ ScriptPattern.extractHashFromP2SH(p2shScript));
assertEquals(scriptAddress, p2shScript.getToAddress(TESTNET, true));
}
diff --git a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java
index 14196a53..8aaa244c 100644
--- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java
+++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java
@@ -2299,7 +2299,7 @@ public class WalletTest extends TestWithWallet {
ECKey key = new ECKey();
SendRequest req = SendRequest.to(UNITTEST, key, SATOSHI.multiply(12));
assertArrayEquals(key.getPubKey(),
- ScriptPattern.extractKeyFromPayToPubKey(req.tx.getOutputs().get(0).getScriptPubKey()));
+ ScriptPattern.extractKeyFromP2PK(req.tx.getOutputs().get(0).getScriptPubKey()));
}
@Test