sweep: remove unnecessary use of FetchInputInfo within CraftSweepAllTx
We already have all of the information required for the outputs from the ListUnspent method.
This commit is contained in:
2 files changed
+13
-43
No files matched your search
+8
-20
@@ -101,11 +101,6 @@ type UtxoSource interface {
|
||||
// ListUnspentWitness returns all UTXOs from the source that have
|
||||
// between minConfs and maxConfs number of confirmations.
|
||||
ListUnspentWitness(minConfs, maxConfs int32) ([]*lnwallet.Utxo, error)
|
||||
|
||||
// FetchInputInfo returns the matching output for an outpoint. If the
|
||||
// outpoint doesn't belong to this UTXO source, then an error should be
|
||||
// returned.
|
||||
FetchInputInfo(*wire.OutPoint) (*wire.TxOut, error)
|
||||
}
|
||||
|
||||
// CoinSelectionLocker is an interface that allows the caller to perform an
|
||||
@@ -217,41 +212,34 @@ func CraftSweepAllTx(feeRate lnwallet.SatPerKWeight, blockHeight uint32,
|
||||
// sweeper to generate and sign a transaction for us.
|
||||
var inputsToSweep []input.Input
|
||||
for _, output := range allOutputs {
|
||||
// We'll consult the utxoSource for information concerning this
|
||||
// outpoint, we'll need to properly populate a signDescriptor
|
||||
// for this output.
|
||||
outputInfo, err := utxoSource.FetchInputInfo(&output.OutPoint)
|
||||
if err != nil {
|
||||
unlockOutputs()
|
||||
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// As we'll be signing for outputs under control of the wallet,
|
||||
// we only need to populate the output value and output script.
|
||||
// The rest of the items will be populated internally within
|
||||
// the sweeper via the witness generation function.
|
||||
signDesc := &input.SignDescriptor{
|
||||
Output: outputInfo,
|
||||
Output: &wire.TxOut{
|
||||
PkScript: output.PkScript,
|
||||
Value: int64(output.Value),
|
||||
},
|
||||
HashType: txscript.SigHashAll,
|
||||
}
|
||||
|
||||
pkScript := outputInfo.PkScript
|
||||
pkScript := output.PkScript
|
||||
|
||||
// Based on the output type, we'll map it to the proper witness
|
||||
// type so we can generate the set of input scripts needed to
|
||||
// sweep the output.
|
||||
var witnessType input.WitnessType
|
||||
switch {
|
||||
switch output.AddressType {
|
||||
|
||||
// If this is a p2wkh output, then we'll assume it's a witness
|
||||
// key hash witness type.
|
||||
case txscript.IsPayToWitnessPubKeyHash(pkScript):
|
||||
case lnwallet.WitnessPubKey:
|
||||
witnessType = input.WitnessKeyHash
|
||||
|
||||
// If this is a p2sh output, then as since it's under control
|
||||
// of the wallet, we'll assume it's a nested p2sh output.
|
||||
case txscript.IsPayToScriptHash(pkScript):
|
||||
case lnwallet.NestedWitnessPubKey:
|
||||
witnessType = input.NestedWitnessKeyHash
|
||||
|
||||
// All other output types we count as unknown and will fail to
|
||||
|
||||
Reference in new issue
Block a user