mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
lnwallet+rpcserver: fix weight calculation for taproot channels
This commit is contained in:
parent
62d240bba1
commit
522518922f
@ -3027,11 +3027,17 @@ func (lc *LightningChannel) fetchCommitmentView(remoteChain bool,
|
||||
}
|
||||
fee := lc.channelState.Capacity - totalOut
|
||||
|
||||
var witnessWeight int64
|
||||
if lc.channelState.ChanType.IsTaproot() {
|
||||
witnessWeight = input.TaprootKeyPathWitnessSize
|
||||
} else {
|
||||
witnessWeight = input.WitnessCommitmentTxWeight
|
||||
}
|
||||
|
||||
// Since the transaction is not signed yet, we use the witness weight
|
||||
// used for weight calculation.
|
||||
uTx := btcutil.NewTx(commitTx.txn)
|
||||
weight := blockchain.GetTransactionWeight(uTx) +
|
||||
input.WitnessCommitmentTxWeight
|
||||
weight := blockchain.GetTransactionWeight(uTx) + witnessWeight
|
||||
|
||||
effFeeRate := chainfee.SatPerKWeight(fee) * 1000 /
|
||||
chainfee.SatPerKWeight(weight)
|
||||
|
18
rpcserver.go
18
rpcserver.go
@ -3476,10 +3476,17 @@ func (r *rpcServer) fetchPendingOpenChannels() (pendingOpenChannels, error) {
|
||||
// broadcast.
|
||||
// TODO(roasbeef): query for funding tx from wallet, display
|
||||
// that also?
|
||||
var witnessWeight int64
|
||||
if pendingChan.ChanType.IsTaproot() {
|
||||
witnessWeight = input.TaprootKeyPathWitnessSize
|
||||
} else {
|
||||
witnessWeight = input.WitnessCommitmentTxWeight
|
||||
}
|
||||
|
||||
localCommitment := pendingChan.LocalCommitment
|
||||
utx := btcutil.NewTx(localCommitment.CommitTx)
|
||||
commitBaseWeight := blockchain.GetTransactionWeight(utx)
|
||||
commitWeight := commitBaseWeight + input.WitnessCommitmentTxWeight
|
||||
commitWeight := commitBaseWeight + witnessWeight
|
||||
|
||||
// FundingExpiryBlocks is the distance from the current block
|
||||
// height to the broadcast height + MaxWaitNumBlocksFundingConf.
|
||||
@ -4227,10 +4234,17 @@ func createRPCOpenChannel(r *rpcServer, dbChannel *channeldb.OpenChannel,
|
||||
// estimated weight of the witness to calculate the weight of
|
||||
// the transaction if it were to be immediately unilaterally
|
||||
// broadcast.
|
||||
var witnessWeight int64
|
||||
if dbChannel.ChanType.IsTaproot() {
|
||||
witnessWeight = input.TaprootKeyPathWitnessSize
|
||||
} else {
|
||||
witnessWeight = input.WitnessCommitmentTxWeight
|
||||
}
|
||||
|
||||
localCommit := dbChannel.LocalCommitment
|
||||
utx := btcutil.NewTx(localCommit.CommitTx)
|
||||
commitBaseWeight := blockchain.GetTransactionWeight(utx)
|
||||
commitWeight := commitBaseWeight + input.WitnessCommitmentTxWeight
|
||||
commitWeight := commitBaseWeight + witnessWeight
|
||||
|
||||
localBalance := localCommit.LocalBalance
|
||||
remoteBalance := localCommit.RemoteBalance
|
||||
|
Loading…
Reference in New Issue
Block a user