mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
lnwallet: update CommitScriptToRemote to add taproot awareness
This commit is contained in:
parent
0e7e29455a
commit
cb0229d437
@ -280,7 +280,8 @@ func CommitScriptToSelf(chanType channeldb.ChannelType, initiator bool,
|
|||||||
// script for. The second return value is the CSV delay of the output script,
|
// script for. The second return value is the CSV delay of the output script,
|
||||||
// what must be satisfied in order to spend the output.
|
// what must be satisfied in order to spend the output.
|
||||||
func CommitScriptToRemote(chanType channeldb.ChannelType, initiator bool,
|
func CommitScriptToRemote(chanType channeldb.ChannelType, initiator bool,
|
||||||
key *btcec.PublicKey, leaseExpiry uint32) (*ScriptInfo, uint32, error) {
|
remoteKey *btcec.PublicKey,
|
||||||
|
leaseExpiry uint32) (*ScriptInfo, uint32, error) {
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
// If we are not the initiator of a leased channel, then the remote
|
// If we are not the initiator of a leased channel, then the remote
|
||||||
@ -288,7 +289,7 @@ func CommitScriptToRemote(chanType channeldb.ChannelType, initiator bool,
|
|||||||
// CSV requirement.
|
// CSV requirement.
|
||||||
case chanType.HasLeaseExpiration() && !initiator:
|
case chanType.HasLeaseExpiration() && !initiator:
|
||||||
script, err := input.LeaseCommitScriptToRemoteConfirmed(
|
script, err := input.LeaseCommitScriptToRemoteConfirmed(
|
||||||
key, leaseExpiry,
|
remoteKey, leaseExpiry,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
@ -304,10 +305,30 @@ func CommitScriptToRemote(chanType channeldb.ChannelType, initiator bool,
|
|||||||
WitnessScript: script,
|
WitnessScript: script,
|
||||||
}, 1, nil
|
}, 1, nil
|
||||||
|
|
||||||
|
// For taproot channels, we'll use a slightly different format, where
|
||||||
|
// we use a NUMS key to force the remote party to take a script path,
|
||||||
|
// with the sole tap leaf enforcing the 1 CSV delay.
|
||||||
|
case chanType.IsTaproot():
|
||||||
|
toRemoteKey, err := input.TaprootCommitScriptToRemote(
|
||||||
|
remoteKey,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
toRemotePkScript, err := input.PayToTaprootScript(toRemoteKey)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &ScriptInfo{
|
||||||
|
PkScript: toRemotePkScript,
|
||||||
|
}, 1, nil
|
||||||
|
|
||||||
// If this channel type has anchors, we derive the delayed to_remote
|
// If this channel type has anchors, we derive the delayed to_remote
|
||||||
// script.
|
// script.
|
||||||
case chanType.HasAnchors():
|
case chanType.HasAnchors():
|
||||||
script, err := input.CommitScriptToRemoteConfirmed(key)
|
script, err := input.CommitScriptToRemoteConfirmed(remoteKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
@ -324,7 +345,7 @@ func CommitScriptToRemote(chanType channeldb.ChannelType, initiator bool,
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
// Otherwise the to_remote will be a simple p2wkh.
|
// Otherwise the to_remote will be a simple p2wkh.
|
||||||
p2wkh, err := input.CommitScriptUnencumbered(key)
|
p2wkh, err := input.CommitScriptUnencumbered(remoteKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
@ -458,9 +479,12 @@ func HtlcSuccessFee(chanType channeldb.ChannelType,
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(roasbeef): fee is still off here?
|
||||||
|
|
||||||
if chanType.HasAnchors() {
|
if chanType.HasAnchors() {
|
||||||
return feePerKw.FeeForWeight(input.HtlcSuccessWeightConfirmed)
|
return feePerKw.FeeForWeight(input.HtlcSuccessWeightConfirmed)
|
||||||
}
|
}
|
||||||
|
|
||||||
return feePerKw.FeeForWeight(input.HtlcSuccessWeight)
|
return feePerKw.FeeForWeight(input.HtlcSuccessWeight)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user