contractcourt: use vsize fee estimate and new fee rate types

This commit is contained in:
Johan T. Halseth 2018-02-13 14:59:55 +01:00
parent 4d2a36dce8
commit 166637bb55
No known key found for this signature in database
GPG Key ID: 15BAADA29DA20D26
1 changed files with 15 additions and 14 deletions

View File

@ -482,23 +482,24 @@ func (h *htlcSuccessResolver) Resolve() (ContractResolver, error) {
// //
// TODO(roasbeef): signal up if fee would be too large // TODO(roasbeef): signal up if fee would be too large
// to sweep singly, need to batch // to sweep singly, need to batch
satWeight, err := h.FeeEstimator.EstimateFeePerWeight(6) feePerVSize, err := h.FeeEstimator.EstimateFeePerVSize(6)
if err != nil { if err != nil {
return nil, err return nil, err
} }
log.Debugf("%T(%x): using %v sat/weight to sweep htlc"+ log.Debugf("%T(%x): using %v sat/vbyte to sweep htlc"+
"incoming+remote htlc confirmed", h, "incoming+remote htlc confirmed", h,
h.payHash[:], int64(satWeight)) h.payHash[:], int64(feePerVSize))
// Using a weight estimator, we'll compute the total // Using a weight estimator, we'll compute the total
// fee required, and from that the value we'll end up // fee required, and from that the value we'll end up
// with. // with.
totalWeight := (&lnwallet.TxWeightEstimator{}). totalVSize := (&lnwallet.TxWeightEstimator{}).
AddWitnessInput(lnwallet.OfferedHtlcSuccessWitnessSize). AddWitnessInput(lnwallet.OfferedHtlcSuccessWitnessSize).
AddP2WKHOutput().Weight() AddP2WKHOutput().VSize()
totalFees := int64(totalWeight) * int64(satWeight) totalFees := feePerVSize.FeeForVSize(int64(totalVSize))
sweepAmt := h.htlcResolution.SweepSignDesc.Output.Value - totalFees sweepAmt := h.htlcResolution.SweepSignDesc.Output.Value -
int64(totalFees)
// With the fee computation finished, we'll now // With the fee computation finished, we'll now
// construct the sweep transaction. // construct the sweep transaction.
@ -1252,19 +1253,19 @@ func (c *commitSweepResolver) Resolve() (ContractResolver, error) {
// First, we'll estimate the total weight so we can compute // First, we'll estimate the total weight so we can compute
// fees properly. We'll use a lax estimate, as this output is // fees properly. We'll use a lax estimate, as this output is
// in no immediate danger. // in no immediate danger.
satWeight, err := c.FeeEstimator.EstimateFeePerWeight(6) feePerVSize, err := c.FeeEstimator.EstimateFeePerVSize(6)
if err != nil { if err != nil {
return nil, err return nil, err
} }
log.Debugf("%T(%v): using %v sat/weight for sweep tx", c, log.Debugf("%T(%v): using %v sat/vsize for sweep tx", c,
c.chanPoint, int64(satWeight)) c.chanPoint, int64(feePerVSize))
totalWeight := (&lnwallet.TxWeightEstimator{}). totalVSize := (&lnwallet.TxWeightEstimator{}).
AddP2PKHInput(). AddP2PKHInput().
AddP2WKHOutput().Weight() AddP2WKHOutput().VSize()
totalFees := int64(totalWeight) * int64(satWeight) totalFees := feePerVSize.FeeForVSize(int64(totalVSize))
sweepAmt := signDesc.Output.Value - totalFees sweepAmt := signDesc.Output.Value - int64(totalFees)
c.sweepTx = wire.NewMsgTx(2) c.sweepTx = wire.NewMsgTx(2)
c.sweepTx.AddTxIn(&wire.TxIn{ c.sweepTx.AddTxIn(&wire.TxIn{