mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-27 22:21:18 +02:00
chanacceptor+lnrpc: update the commitmentTypes, send zero-conf to client
This updates the RPCAcceptor to send the correct commitment type even if the zero-conf or scid-alias channel types are set. This also adds two bools to the ChannelAcceptRequest struct that denotes whether the funder set the zero-conf and scid-alias channel types.
This commit is contained in:
@@ -258,20 +258,73 @@ func (r *RPCAcceptor) sendAcceptRequests(errChan chan error,
|
||||
pendingChanID := req.OpenChanMsg.PendingChannelID
|
||||
|
||||
// Map the channel commitment type to its RPC
|
||||
// counterpart.
|
||||
var commitmentType lnrpc.CommitmentType
|
||||
// counterpart. Also determine whether the zero-conf or
|
||||
// scid-alias channel types are set.
|
||||
var (
|
||||
commitmentType lnrpc.CommitmentType
|
||||
wantsZeroConf bool
|
||||
wantsScidAlias bool
|
||||
)
|
||||
|
||||
if req.OpenChanMsg.ChannelType != nil {
|
||||
channelFeatures := lnwire.RawFeatureVector(
|
||||
*req.OpenChanMsg.ChannelType,
|
||||
)
|
||||
switch {
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ZeroConfRequired,
|
||||
lnwire.ScidAliasRequired,
|
||||
lnwire.ScriptEnforcedLeaseRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_SCRIPT_ENFORCED_LEASE
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ZeroConfRequired,
|
||||
lnwire.ScriptEnforcedLeaseRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_SCRIPT_ENFORCED_LEASE
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ScidAliasRequired,
|
||||
lnwire.ScriptEnforcedLeaseRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_SCRIPT_ENFORCED_LEASE
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ScriptEnforcedLeaseRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_SCRIPT_ENFORCED_LEASE
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ZeroConfRequired,
|
||||
lnwire.ScidAliasRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_ANCHORS
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ZeroConfRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_ANCHORS
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.ScidAliasRequired,
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
):
|
||||
commitmentType = lnrpc.CommitmentType_ANCHORS
|
||||
|
||||
case channelFeatures.OnlyContains(
|
||||
lnwire.AnchorsZeroFeeHtlcTxRequired,
|
||||
lnwire.StaticRemoteKeyRequired,
|
||||
@@ -291,6 +344,20 @@ func (r *RPCAcceptor) sendAcceptRequests(errChan chan error,
|
||||
"in channel acceptor request: %v",
|
||||
req.OpenChanMsg.ChannelType)
|
||||
}
|
||||
|
||||
if channelFeatures.IsSet(
|
||||
lnwire.ZeroConfRequired,
|
||||
) {
|
||||
|
||||
wantsZeroConf = true
|
||||
}
|
||||
|
||||
if channelFeatures.IsSet(
|
||||
lnwire.ScidAliasRequired,
|
||||
) {
|
||||
|
||||
wantsScidAlias = true
|
||||
}
|
||||
}
|
||||
|
||||
acceptRequests[pendingChanID] = newRequest
|
||||
@@ -311,6 +378,8 @@ func (r *RPCAcceptor) sendAcceptRequests(errChan chan error,
|
||||
MaxAcceptedHtlcs: uint32(req.OpenChanMsg.MaxAcceptedHTLCs),
|
||||
ChannelFlags: uint32(req.OpenChanMsg.ChannelFlags),
|
||||
CommitmentType: commitmentType,
|
||||
WantsZeroConf: wantsZeroConf,
|
||||
WantsScidAlias: wantsScidAlias,
|
||||
}
|
||||
|
||||
if err := r.send(chanAcceptReq); err != nil {
|
||||
|
Reference in New Issue
Block a user