loop
loop copied to clipboard
LoopIn rpc method returns empty htlc_address on mainnet
In regtest (compiled from the repository), the LoopIn response (SwapStatus) correctly returns a populated htlc_address_p2wsh field. However, in the mainnet, both htlc_address_p2wsh and htlc_address_p2tr fields are empty.
Steps to reproduce:
The following code snippet demonstrates invoking a LoopIn request that returns empty htlc_address fields:
//Use the client to request the swap
lastHopVertex, err := route.NewVertexFromStr(request.LastHopPubkey)
if err != nil {
return SubmarineSwapResponse{}, err
}
lastHopBytes := lastHopVertex[:]
//Do a quote for loop in
quote, err := client.GetLoopInQuote(ctx, &looprpc.QuoteRequest{
Amt: request.SatsAmount,
//ConfTarget: 1, //TODO Make this configurable
ExternalHtlc: true,
Private: false,
LoopInLastHop: lastHopBytes,
})
if err != nil {
log.Error(err)
return SubmarineSwapResponse{}, err
}
//Get limits
limits := getInLimits(quote)
log.Debugf("loop in quote: %+v", quote)
log.Debugf("loop in limits: %+v", limits)
resp, err := client.LoopIn(ctx, &looprpc.LoopInRequest{
Amt: request.SatsAmount,
MaxSwapFee: int64(limits.maxSwapFee),
MaxMinerFee: int64(limits.maxMinerFee),
LastHop: lastHopBytes,
ExternalHtlc: true,
HtlcConfTarget: 0,
Label: fmt.Sprintf("Submarine swap %d sats on date %s", request.SatsAmount, time.Now().Format(time.RFC3339)),
Initiator: "Liquidator",
Private: false,
//TODO Review if hop hints are needed
})
System information:
We are using the standalone loopd binary in a Docker container and invoking the API directly. The Docker container is a Linux/AMD64 container on k8s with LOOPD version 0.20.2-beta. The loopd Docker image OS is used.
In regtest, we are using the latest loopd compiled from the git repository. On the mainnet, we are using the Docker image, which might is outdated and could be causing the issue.
Original Slack thread: https://lightningcommunity.slack.com/archives/CH2HVK23A/p1681317311908629