mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-14 19:25:51 +00:00
Allow TransactionInput.verify to take an output as a parameter.
This commit is contained in:
parent
f98088221e
commit
ad3bb53327
@ -371,7 +371,7 @@ public class TransactionInput extends ChildMessage implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns true if this transaction's sequence number is set (ie it may be a part of a time-locked transaction)
|
* @return true if this transaction's sequence number is set (ie it may be a part of a time-locked transaction)
|
||||||
*/
|
*/
|
||||||
public boolean hasSequence() {
|
public boolean hasSequence() {
|
||||||
return sequence != NO_SEQUENCE;
|
return sequence != NO_SEQUENCE;
|
||||||
@ -380,14 +380,32 @@ public class TransactionInput extends ChildMessage implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* For a connected transaction, runs the script against the connected pubkey and verifies they are correct.
|
* For a connected transaction, runs the script against the connected pubkey and verifies they are correct.
|
||||||
* @throws ScriptException if the script did not verify.
|
* @throws ScriptException if the script did not verify.
|
||||||
|
* @throws VerificationException If the outpoint doesn't match the given output.
|
||||||
*/
|
*/
|
||||||
public void verify() throws ScriptException {
|
public void verify() throws VerificationException {
|
||||||
Preconditions.checkNotNull(getOutpoint().fromTx, "Not connected");
|
final Transaction fromTx = getOutpoint().fromTx;
|
||||||
long spendingIndex = getOutpoint().getIndex();
|
long spendingIndex = getOutpoint().getIndex();
|
||||||
Script pubKey = getOutpoint().fromTx.getOutputs().get((int) spendingIndex).getScriptPubKey();
|
checkNotNull(fromTx, "Not connected");
|
||||||
Script sig = getScriptSig();
|
final TransactionOutput output = fromTx.getOutput((int) spendingIndex);
|
||||||
|
verify(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies that this input can spend the given output. Note that this input must be a part of a transaction.
|
||||||
|
* Also note that the consistency of the outpoint will be checked, even if this input has not been connected.
|
||||||
|
*
|
||||||
|
* @param output the output that this input is supposed to spend.
|
||||||
|
* @throws ScriptException If the script doesn't verify.
|
||||||
|
* @throws VerificationException If the outpoint doesn't match the given output.
|
||||||
|
*/
|
||||||
|
public void verify(TransactionOutput output) throws VerificationException {
|
||||||
|
if (!getOutpoint().getHash().equals(output.parentTransaction.getHash()))
|
||||||
|
throw new VerificationException("This input does not refer to the tx containing the output.");
|
||||||
|
if (getOutpoint().getIndex() != output.getIndex())
|
||||||
|
throw new VerificationException("This input refers to a different output on the given tx.");
|
||||||
|
Script pubKey = output.getScriptPubKey();
|
||||||
int myIndex = parentTransaction.getInputs().indexOf(this);
|
int myIndex = parentTransaction.getInputs().indexOf(this);
|
||||||
sig.correctlySpends(parentTransaction, myIndex, pubKey, true);
|
getScriptSig().correctlySpends(parentTransaction, myIndex, pubKey, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user