2
0
mirror of https://github.com/lightninglabs/loop synced 2024-11-09 19:10:47 +00:00

sweep: factor out function AddOutputEstimate

It adds output to transaction weight estimator depending on address type.
This commit is contained in:
Boris Nagaev 2024-06-28 21:34:12 -03:00
parent e8141578ac
commit 019d3c613f
No known key found for this signature in database

View File

@ -207,6 +207,30 @@ func (s *Sweeper) GetSweepFeeDetails(ctx context.Context,
// Calculate weight for this tx.
var weightEstimate input.TxWeightEstimator
// Add output.
if err := AddOutputEstimate(&weightEstimate, destAddr); err != nil {
return 0, 0, 0, fmt.Errorf("failed to add output weight "+
"estimate: %w", err)
}
// Add input.
err = addInputEstimate(&weightEstimate)
if err != nil {
return 0, 0, 0, fmt.Errorf("failed to add input weight "+
"estimate: %w", err)
}
// Find weight.
weight := weightEstimate.Weight()
return feeRate.FeeForWeight(weight), feeRate, weight, nil
}
// AddOutputEstimate adds output to weight estimator.
func AddOutputEstimate(weightEstimate *input.TxWeightEstimator,
destAddr btcutil.Address) error {
switch destAddr.(type) {
case *btcutil.AddressWitnessScriptHash:
weightEstimate.AddP2WSHOutput()
@ -224,16 +248,8 @@ func (s *Sweeper) GetSweepFeeDetails(ctx context.Context,
weightEstimate.AddP2TROutput()
default:
return 0, 0, 0, fmt.Errorf("estimate fee: unknown address "+
"type %T", destAddr)
return fmt.Errorf("unknown address type %T", destAddr)
}
err = addInputEstimate(&weightEstimate)
if err != nil {
return 0, 0, 0, err
}
weight := weightEstimate.Weight()
return feeRate.FeeForWeight(weight), feeRate, weight, nil
return nil
}