Skip to content

Commit

Permalink
sweep: factor out function AddOutputEstimate
Browse files Browse the repository at this point in the history
It adds output to transaction weight estimator depending on address type.
  • Loading branch information
starius committed Jul 8, 2024
1 parent f9edd53 commit 2924c65
Showing 1 changed file with 26 additions and 10 deletions.
36 changes: 26 additions & 10 deletions sweep/sweeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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)
}

err = addInputEstimate(&weightEstimate)
if err != nil {
return 0, 0, 0, err
return fmt.Errorf("unknown address type %T", destAddr)
}

weight := weightEstimate.Weight()

return feeRate.FeeForWeight(weight), feeRate, weight, nil
return nil
}

0 comments on commit 2924c65

Please sign in to comment.