mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-13 10:45:51 +00:00
TransactionInput: Add getConnectedTransaction(), as this seems to be a relevant usecase.
This commit is contained in:
parent
d092922e64
commit
0a58837db0
@ -432,6 +432,16 @@ public class TransactionInput extends ChildMessage {
|
||||
return getOutpoint().getConnectedOutput();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the connected transaction, assuming the input was connected with
|
||||
* {@link TransactionInput#connect(TransactionOutput)} or variants at some point. If it wasn't connected, then
|
||||
* this method returns null.
|
||||
*/
|
||||
@Nullable
|
||||
public Transaction getConnectedTransaction() {
|
||||
return getOutpoint().fromTx;
|
||||
}
|
||||
|
||||
/** Returns a copy of the input detached from its containing transaction, if need be. */
|
||||
public TransactionInput duplicateDetached() {
|
||||
return new TransactionInput(params, null, bitcoinSerialize(), 0);
|
||||
|
@ -2189,7 +2189,7 @@ public class Wallet extends BaseTaggableObject
|
||||
// Otherwise we saw a transaction spend our coins, but we didn't try and spend them ourselves yet.
|
||||
// The outputs are already marked as spent by the connect call above, so check if there are any more for
|
||||
// us to use. Move if not.
|
||||
Transaction connected = checkNotNull(input.getOutpoint().fromTx);
|
||||
Transaction connected = checkNotNull(input.getConnectedTransaction());
|
||||
log.info(" marked {} as spent", input.getOutpoint());
|
||||
maybeMovePool(connected, "prevtx");
|
||||
// Just because it's connected doesn't mean it's actually ours: sometimes we have total visibility.
|
||||
@ -2244,7 +2244,7 @@ public class Wallet extends BaseTaggableObject
|
||||
spent.remove(tx.getHash());
|
||||
addWalletTransaction(Pool.DEAD, tx);
|
||||
for (TransactionInput deadInput : tx.getInputs()) {
|
||||
Transaction connected = deadInput.getOutpoint().fromTx;
|
||||
Transaction connected = deadInput.getConnectedTransaction();
|
||||
if (connected == null) continue;
|
||||
if (connected.getConfidence().getConfidenceType() != ConfidenceType.DEAD && deadInput.getConnectedOutput().getSpentBy() != null && deadInput.getConnectedOutput().getSpentBy().equals(deadInput)) {
|
||||
checkState(myUnspents.add(deadInput.getConnectedOutput()));
|
||||
@ -2272,13 +2272,13 @@ public class Wallet extends BaseTaggableObject
|
||||
for (TransactionInput input : overridingTx.getInputs()) {
|
||||
TransactionInput.ConnectionResult result = input.connect(unspent, TransactionInput.ConnectMode.DISCONNECT_ON_CONFLICT);
|
||||
if (result == TransactionInput.ConnectionResult.SUCCESS) {
|
||||
maybeMovePool(input.getOutpoint().fromTx, "kill");
|
||||
maybeMovePool(input.getConnectedTransaction(), "kill");
|
||||
myUnspents.remove(input.getConnectedOutput());
|
||||
log.info("Removing from UNSPENTS: {}", input.getConnectedOutput());
|
||||
} else {
|
||||
result = input.connect(spent, TransactionInput.ConnectMode.DISCONNECT_ON_CONFLICT);
|
||||
if (result == TransactionInput.ConnectionResult.SUCCESS) {
|
||||
maybeMovePool(input.getOutpoint().fromTx, "kill");
|
||||
maybeMovePool(input.getConnectedTransaction(), "kill");
|
||||
myUnspents.remove(input.getConnectedOutput());
|
||||
log.info("Removing from UNSPENTS: {}", input.getConnectedOutput());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user