-
Notifications
You must be signed in to change notification settings - Fork 137
Description
Background
I am testing single hop Taproot Assets LN payments in Polar. I have three litd v0.14.0-alpha.rc1 nodes (each backed by their own bitcoind v27.0 node) Alice, Bob, and Carol. Alice has minted 21M units of a Taproot Asset called USDTest with a decimal_display of 6, and opened a 1M asset channel to Bob. Bob has then opened a 1M sats channel to Carol, and is using the improved edge node config --taproot-assets.experimental.rfq.mockoracleassetsperbtc=100000000. I am testing Carol trying to pay Taproot Assets invoices generated by Alice with sats, with Bob acting as the edge node.
Before beginning this sequence of test payments, Alice's listchannels output looked like so:
litd@alice:/$ lncli listchannels
{
"channels": [
{
"active": true,
"remote_pubkey": "03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb",
"channel_point": "560027dbab7f95d3c131c71ba03bf0b996d8c218f6bd5e7ad9240c9922635f91:0",
"chan_id": "135239930281984",
"capacity": "100000",
"local_balance": "5140",
"remote_balance": "91779",
"commit_fee": "2421",
"commit_weight": "958",
"fee_per_kw": "2500",
"unsettled_balance": "0",
"total_satoshis_sent": "86779",
"total_satoshis_received": "0",
"num_updates": "8",
"pending_htlcs": [],
"csv_delay": 144,
"private": true,
"initiator": true,
"chan_status_flags": "ChanStatusDefault",
"local_chan_reserve_sat": "1000",
"remote_chan_reserve_sat": "1062",
"static_remote_key": false,
"commitment_type": "SIMPLE_TAPROOT_OVERLAY",
"lifetime": "306",
"uptime": "306",
"close_address": "",
"push_amount_sat": "5000",
"thaw_height": 0,
"local_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1000",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"remote_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1062",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"alias_scids": [
"17592186044416000000"
],
"zero_conf": false,
"zero_conf_confirmed_scid": "0",
"peer_alias": "bob",
"peer_scid_alias": "17592186044416000000",
"memo": "",
"custom_channel_data": {
"assets": [
{
"asset_utxo": {
"version": 1,
"asset_genesis": {
"genesis_point": "bb0cac6719ce54b0b866dfbb9ad665c62942b9d2bb22bfa6314e0faf33b6cf3d:1",
"name": "USDTest",
"meta_hash": "98c6ac28bc381a4bb270d94896129f355950eb8248a59c54ea933b68d1c7d202",
"asset_id": "957ba60125387d7df01c98820d1684470882c6d9214478c1405a79fb22ca3646"
},
"amount": 1000000000000,
"script_key": "0250aaeb166f4234650d84a2d8a130987aeaf6950206e0905401ee74ff3f8d18e6"
},
"capacity": 1000000000000,
"local_balance": 999999899997,
"remote_balance": 100003
}
]
}
}
]
}
Carol had 186,070 local_balance of sats, and 810,460 remote_balance of sats (owned by Bob).
I then made one successful payment where Alice invoiced 356 assets, and Carol paid it with sats:
litd@carol:/$ lncli payinvoice lnbcrt3560n1pn4p55tpp59r6y222rg0e0lackutqta6e4skqqzd8ts44esjm6kls2me7nwx9sdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduhadfj89err2x3qqqqqlgqqqqqqgq2qsp5l6ppwmd2qmrqjgtc7vwey356plhjutfkmde7r7775qmdx8dgtwms9qxpqysgqwu35rt33xgfyapsgk7pav2kr6rvhh5a0z3xsj53s7nj7mjny2qmkj7d2genslhahg5umv94g2phnkhramwnl6jqztusg8swpcvl0xpcpkzz00e
Payment hash: 28f445294343f2fff716e2c0beeb3585800134eb856b984b7ab7e0ade7d3718b
Description:
Amount (in satoshis): 356
Fee limit (in satoshis): 356
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| SUCCEEDED | 0.054 | 0.689 | 356 | 1 | 297 | 141837000048640 | bob->03e501 |
+------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
Amount + fee: 356 + 1 sat
Payment hash: 28f445294343f2fff716e2c0beeb3585800134eb856b984b7ab7e0ade7d3718b
Payment status: SUCCEEDED, preimage: 200330c6b3db0ecc8455b79471061bab7eb1617d53d93f34ef3fff8ed1c9e654
And then one expected failure, where Alice only invoiced 1 asset, and Carol failed to find a route (bc Bob is not interested in receiving 0 + 0 sats, and forwarding out 354 sats + 1 asset).
litd@carol:/$ lncli payinvoice lnbcrt10n1pn4p544pp5uux2fq4x3uftgfj9vrdc5uh2vg055pql5zuqf5486y2jcx9zm9ysdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduha3atn5svvtqssqqqqlgqqqqqqgq2qsp5lmd9068cgz5ezqsv8fzrknzemw6f8nfy6uatg8wkut4wredv8pkq9qxpqysgqqrghvsuvhaqj76faeu3m828zuhmjwrywr52jnsqv566jz8d7zm384rpac8k6juuqjs34msetxd850n3g9hp5x0jwwuscdp74cl2rjaqp44jfmp
Payment hash: e70ca482a68f12b4264560db8a72ea621f4a041fa0b804d2a7d1152c18a2d949
Description:
Amount (in satoshis): 1
Fee limit (in satoshis): 1
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
+----------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+----------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| FEE_INSUFFICIENT @ 1st hop | 0.044 | 0.313 | 1 | 1 | 297 | 141837000048640 | bob->03e501 |
| FEE_INSUFFICIENT @ 1st hop | 0.344 | 0.633 | 1 | 1 | 297 | 141837000048640 | bob->03e501 |
+----------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
Amount + fee: 0 + 0 sat
Payment hash: e70ca482a68f12b4264560db8a72ea621f4a041fa0b804d2a7d1152c18a2d949
Payment status: FAILED, reason: FAILURE_REASON_NO_ROUTE
[lncli] FAILED
The unexpected behavior begins here however, as Carol is no longer able to pay Alice after this. Initially Alice and Bob's Taproot Assets channel remains active, but Carol just immediately fails an attempted payment:
litd@carol:/$ lncli payinvoice lnbcrt1m1pn4p5e2pp5vcw7dc7vnmumrp4qhhg5munql56dw9vgrs63mldrwvwy8rwx86msdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduhalp704xtquqtcqqqqlgqqqqqqgq2qsp5uy2a8xgpvyv4qjvlx4a02k48j8rnrc2qm8l9gu3selvhv273y7as9qxpqysgquadp5anaqc7d92gkzl4a7g6n3f7amkthhuvxwpn0gk9mkqsv9a4re6yerr29573le7w60cvu0j45c9gv4skycrdjl8gqstp5qp3zkugqaq54tk
Payment hash: 661de6e3cc9ef9b186a0bdd14df260fd34d715881c351dfda3731c438dc63eb7
Description:
Amount (in satoshis): 100000
Fee limit (in satoshis): 5000
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
+------------+--------------+--------------+--------------+-----+----------+----------+-------+
Amount + fee: 0 + 0 sat
Payment hash: 661de6e3cc9ef9b186a0bdd14df260fd34d715881c351dfda3731c438dc63eb7
Payment status: FAILED, reason: FAILURE_REASON_NO_ROUTE
[lncli] FAILED
Assuming she blacklisted the receiving node from her mission control for some reason, I reset it and try to pay Alice's invoice again but this time am hit with a TEMPORARY_CHANNEL_FAILURE at the Taproot Assets channel:
litd@carol:/$ lncli resetmc
litd@carol:/$ lncli payinvoice lnbcrt1m1pn4p46fpp560me4hn0xnur6ske9nrv73hendyajnu3tc88eju4yftkl96dtmcsdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduhar6sp5shfeezcqqqqlgqqqqqqgq2qsp568xqej6w0duldh6wayn7hwrer2l5ld78e0eydctq2r9qkgfhjkms9qxpqysgqyatzwdagacmfw39r749lcrr858k23wf6hzeshr7ltzlypyg6te8rrjrna2m2y7ra7uew085gze0d9ezkjh0fnh0ju5zncgwqmdrgtxgpljczz7
Payment hash: d3f79ade6f34f83d42d92cc6cf46f99b49d94f915e0e7ccb9522576f974d5ef1
Description:
Amount (in satoshis): 100000
Fee limit (in satoshis): 5000
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+------------
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
| TEMPORARY_CHANNEL_FAILURE @ 1st hop | 0.065 | 60.471 | 100000 | 1.1 | 297 | 141837000048640 | bob->03e501 |
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------------+
Amount + fee: 0 + 0 sat
Payment hash: d3f79ade6f34f83d42d92cc6cf46f99b49d94f915e0e7ccb9522576f974d5ef1
Payment status: FAILED, reason: FAILURE_REASON_TIMEOUT
[lncli] FAILED
And after this attempt, Alice no longer sees the channel as active:
litd@alice:/$ lncli listchannels
{
"channels": [
{
"active": false,
"remote_pubkey": "03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb",
"channel_point": "560027dbab7f95d3c131c71ba03bf0b996d8c218f6bd5e7ad9240c9922635f91:0",
"chan_id": "135239930281984",
"capacity": "100000",
"local_balance": "5494",
"remote_balance": "91425",
"commit_fee": "2421",
"commit_weight": "958",
"fee_per_kw": "2500",
"unsettled_balance": "0",
"total_satoshis_sent": "86779",
"total_satoshis_received": "354",
"num_updates": "10",
"pending_htlcs": [],
"csv_delay": 144,
"private": true,
"initiator": true,
"chan_status_flags": "ChanStatusDefault",
"local_chan_reserve_sat": "1000",
"remote_chan_reserve_sat": "1062",
"static_remote_key": false,
"commitment_type": "SIMPLE_TAPROOT_OVERLAY",
"lifetime": "1834",
"uptime": "1831",
"close_address": "",
"push_amount_sat": "5000",
"thaw_height": 0,
"local_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1000",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"remote_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1062",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"alias_scids": [
"17592186044416000000",
"17701840113862788744",
"17743440262810656900",
"17861825785179111518",
"17616534081068546326"
],
"zero_conf": false,
"zero_conf_confirmed_scid": "0",
"peer_alias": "bob",
"peer_scid_alias": "17592186044416000000",
"memo": "",
"custom_channel_data": {
"assets": [
{
"asset_utxo": {
"version": 1,
"asset_genesis": {
"genesis_point": "bb0cac6719ce54b0b866dfbb9ad665c62942b9d2bb22bfa6314e0faf33b6cf3d:1",
"name": "USDTest",
"meta_hash": "98c6ac28bc381a4bb270d94896129f355950eb8248a59c54ea933b68d1c7d202",
"asset_id": "957ba60125387d7df01c98820d1684470882c6d9214478c1405a79fb22ca3646"
},
"amount": 1000000000000,
"script_key": "0250aaeb166f4234650d84a2d8a130987aeaf6950206e0905401ee74ff3f8d18e6"
},
"capacity": 1000000000000,
"local_balance": 999999900353,
"remote_balance": 99647
}
]
}
}
]
}
I can get the channel back to active by disconnecting Alice from Bob, and then reconnecting:
itd@alice:/$ lncli disconnect --node_key 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb
{}
litd@alice:/$ lncli disconnect --node_key 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb
{}
litd@alice:/$ lncli disconnect --node_key 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb
[lncli] rpc error: code = Unknown desc = unable to disconnect peer: peer 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb is not connected
litd@alice:/$ lncli connect 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb@172.18.0.7:9735
[lncli] rpc error: code = Unknown desc = already connected to peer: 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb@172.18.0.7:58830
litd@alice:/$ lncli connect 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb@172.18.0.7:9735
[lncli] rpc error: code = Unknown desc = already connected to peer: 03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb@172.18.0.7:58830
litd@alice:/$ lncli listchannels
{
"channels": [
{
"active": true,
"remote_pubkey": "03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb",
"channel_point": "560027dbab7f95d3c131c71ba03bf0b996d8c218f6bd5e7ad9240c9922635f91:0",
"chan_id": "135239930281984",
"capacity": "100000",
"local_balance": "5494",
"remote_balance": "91425",
"commit_fee": "2421",
"commit_weight": "958",
"fee_per_kw": "2500",
"unsettled_balance": "0",
"total_satoshis_sent": "86779",
"total_satoshis_received": "354",
"num_updates": "10",
"pending_htlcs": [],
"csv_delay": 144,
"private": true,
"initiator": true,
"chan_status_flags": "ChanStatusDefault",
"local_chan_reserve_sat": "1000",
"remote_chan_reserve_sat": "1062",
"static_remote_key": false,
"commitment_type": "SIMPLE_TAPROOT_OVERLAY",
"lifetime": "1802",
"uptime": "1798",
"close_address": "",
"push_amount_sat": "5000",
"thaw_height": 0,
"local_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1000",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"remote_constraints": {
"csv_delay": 144,
"chan_reserve_sat": "1062",
"dust_limit_sat": "354",
"max_pending_amt_msat": "99000000",
"min_htlc_msat": "1",
"max_accepted_htlcs": 83
},
"alias_scids": [
"17592186044416000000",
"17701840113862788744",
"17743440262810656900",
"17861825785179111518",
"17616534081068546326"
],
"zero_conf": false,
"zero_conf_confirmed_scid": "0",
"peer_alias": "bob",
"peer_scid_alias": "17592186044416000000",
"memo": "",
"custom_channel_data": {
"assets": [
{
"asset_utxo": {
"version": 1,
"asset_genesis": {
"genesis_point": "bb0cac6719ce54b0b866dfbb9ad665c62942b9d2bb22bfa6314e0faf33b6cf3d:1",
"name": "USDTest",
"meta_hash": "98c6ac28bc381a4bb270d94896129f355950eb8248a59c54ea933b68d1c7d202",
"asset_id": "957ba60125387d7df01c98820d1684470882c6d9214478c1405a79fb22ca3646"
},
"amount": 1000000000000,
"script_key": "0250aaeb166f4234650d84a2d8a130987aeaf6950206e0905401ee74ff3f8d18e6"
},
"capacity": 1000000000000,
"local_balance": 999999900353,
"remote_balance": 99647
}
]
}
}
]
}
But then Carol encounters the same TEMPORARY_CHANNEL_FAILURE when trying to pay Alice's invoice again:
litd@carol:/$ lncli payinvoice lnbcrt1m1pn4p46fpp560me4hn0xnur6ske9nrv73hendyajnu3tc88eju4yftkl96dtmcsdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduhar6sp5shfeezcqqqqlgqqqqqqgq2qsp568xqej6w0duldh6wayn7hwrer2l5ld78e0eydctq2r9qkgfhjkms9qxpqysgqyatzwdagacmfw39r749lcrr858k23wf6hzeshr7ltzlypyg6te8rrjrna2m2y7ra7uew085gze0d9ezkjh0fnh0ju5zncgwqmdrgtxgpljczz7
Payment hash: d3f79ade6f34f83d42d92cc6cf46f99b49d94f915e0e7ccb9522576f974d5ef1
Description:
Amount (in satoshis): 100000
Fee limit (in satoshis): 5000
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
+-------------------------------------+--------------+--------------+--------------+------+----------+-----------------+-------------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+-------------------------------------+--------------+--------------+--------------+------+----------+-----------------+-------------+
| TEMPORARY_CHANNEL_FAILURE @ 1st hop | 0.069 | 60.681 | 50000 | 1.05 | 297 | 141837000048640 | bob->03e501 |
| TEMPORARY_CHANNEL_FAILURE @ 1st hop | 0.120 | 60.582 | 50000 | 1.05 | 297 | 141837000048640 | bob->03e501 |
+-------------------------------------+--------------+--------------+--------------+------+----------+-----------------+-------------+
Amount + fee: 0 + 0 sat
Payment hash: d3f79ade6f34f83d42d92cc6cf46f99b49d94f915e0e7ccb9522576f974d5ef1
Payment status: FAILED, reason: FAILURE_REASON_TIMEOUT
[lncli] FAILED
And Alice sees the channel as inactive:
litd@alice:/$ lncli listchannels
{
"channels": [
{
"active": false,
"remote_pubkey": "03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb",
"channel_point": "560027dbab7f95d3c131c71ba03bf0b996d8c218f6bd5e7ad9240c9922635f91:0",
"chan_id": "135239930281984",
"capacity": "100000",
"local_balance": "5494",
"remote_balance": "91425",
...
After disconnecting and reconnecting again, Bob attempts to pay Alice's invoice directly, instead of acting as an edge node, but the payment fails and the CLI hangs (i.e. needs to be manually killed):
litd@bob:/$ litcli ln payinvoice --pay_req lnbcrt1m1pn4pkcepp563f59zph5k7hxs3mt6x25reskwqufnz6vuqvu5pkxwxpkwwnqvtsdqqcqzzsxqzfvrzjqwfxednctwstw85h79rrh0w6g4a5hsekqjxjk8tqwzzym0autjduhasghrxk4v095yqqqqlgqqqqqqgq2qsp59fy4huxk494hr0ttgxqtadmedv9qhnjaac0m32lmm7jes2gg4t0s9qxpqysgqv66v49uwld6e5s2rfws997ne4tk0udkmvarz4u4f5lfkezf82phrm6vx073404n04u64st6w8av395uz4wyhk9gquuw298eqc6ks8ecqp67jkd --asset_id 957ba60125387d7df01c98820d1684470882c6d9214478c1405a79fb22ca3646 --rfq_peer_pubkey 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Payment hash: d453428837a5bd73423b5e8caa0f30b381c4cc5a6700ce5036338c1b39d30317
Description:
Amount (in satoshis): 100000
Fee limit (in satoshis): 5000
Destination: 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417
Confirm payment (yes/no): yes
Got quote for 100000 asset units at 1000 msat/unit from peer 03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417 with SCID 17788700425902974056
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------+
| HTLC_STATE | ATTEMPT_TIME | RESOLVE_TIME | RECEIVER_AMT | FEE | TIMELOCK | CHAN_OUT | ROUTE |
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------+
| IN_FLIGHT | 0.821 | - | 50000 | 0 | 217 | 135239930281984 | alice |
| TEMPORARY_CHANNEL_FAILURE @ 0th hop | 1.864 | 62.011 | 50000 | 0 | 217 | 135239930281984 | alice |
+-------------------------------------+--------------+--------------+--------------+-----+----------+-----------------+-------+
Amount + fee: 0 + 0 sat
Payment hash: d453428837a5bd73423b5e8caa0f30b381c4cc5a6700ce5036338c1b39d30317
Payment status: IN_FLIGHT
^C[litcli] rpc error: code = Canceled desc = context canceled
I think the key line in this final attempt from Bob's logs is here:
2024-12-04 22:45:30.860 [WRN] CRTR: ShortChannelID=123:1:0: link not found: channel link not found
2024-12-04 22:45:30.861 [DBG] CRTR: Skipped edge 135239930281984: not enough bandwidth, bandwidth=0 mSAT, amt=25000000 mSAT
And earlier in the saga during the initial failed payment, the key line in Bob's logs is here:
2024-12-04 22:08:09.344 [ERR] HSWC: Unhandled error while reforwarding htlc settle/fail over htlcswitch: FeeInsufficient(htlc_amt==354000 mSAT, update=(lnwire.ChannelUpdate) {
Your environment
Alice, Bob and Carol's litd config essentially look like this:
litd
--httpslisten=0.0.0.0:8443
--uipassword={{litdPass}}
--network=regtest
--lnd-mode=integrated
--pool-mode=disable
--loop-mode=disable
--autopilot.disable
--lnd.noseedbackup
--lnd.debuglevel=debug
--lnd.alias={{name}}
--lnd.externalip={{name}}
--lnd.tlsextradomain={{name}}
--lnd.tlsextradomain={{containerName}}
--lnd.tlsextradomain=host.docker.internal
--lnd.listen=0.0.0.0:9735
--lnd.rpclisten=0.0.0.0:10009
--lnd.restlisten=0.0.0.0:8080
--lnd.bitcoin.active
--lnd.bitcoin.regtest
--lnd.bitcoin.node=bitcoind
--lnd.bitcoind.rpchost={{backendName}}
--lnd.bitcoind.rpcuser={{rpcUser}}
--lnd.bitcoind.rpcpass={{rpcPass}}
--lnd.bitcoind.zmqpubrawblock=tcp://{{backendName}}:28334
--lnd.bitcoind.zmqpubrawtx=tcp://{{backendName}}:28335
--taproot-assets.allow-public-uni-proof-courier
--taproot-assets.universe.public-access=rw
--taproot-assets.universe.sync-all-assets
--taproot-assets.allow-public-stats
--taproot-assets.universerpccourier.skipinitdelay
--taproot-assets.universerpccourier.backoffresetwait=1s
--taproot-assets.universerpccourier.numtries=5
--taproot-assets.universerpccourier.initialbackoff=300ms
--taproot-assets.universerpccourier.maxbackoff=600ms
--taproot-assets.experimental.rfq.priceoracleaddress=use_mock_price_oracle_service_promise_to_not_use_on_mainnet
--taproot-assets.experimental.rfq.mockoracleassetsperbtc=100000000
--lnd.trickledelay=50
--lnd.gossip.sub-batch-delay=5ms
--lnd.caches.rpc-graph-cache-duration=100ms
--lnd.default-remote-max-htlcs=483
--lnd.dust-threshold=5000000
--lnd.protocol.option-scid-alias
--lnd.protocol.zero-conf
--lnd.protocol.simple-taproot-chans
--lnd.protocol.simple-taproot-overlay-chans
--lnd.protocol.wumbo-channels
--lnd.accept-keysend
--lnd.protocol.custom-message=17
--taproot-assets.proofcourieraddr=universerpc://carol:10009
Alice's tapcli getinfo output:
litd@alice:/$ tapcli getinfo
{
"version": "0.5.0-alpha.rc1 commit=v0.5.0-rc1",
"lnd_version": "0.18.4-beta.rc1",
"network": "regtest",
"lnd_identity_pubkey": "03e5011782766a1582562e9585cb0935d3892e20cf84ff233bcba244bac3ae8417",
"node_alias": "alice",
"block_height": 134,
"block_hash": "14ba6f7566cbe4a95e1017f2207fd31d98b2c7a934af15283b2c2e97ceb8fab9",
"sync_to_chain": true
}
Bob's tapcli getinfo output:
litd@bob:/$ tapcli getinfo
{
"version": "0.5.0-alpha.rc1 commit=v0.5.0-rc1",
"lnd_version": "0.18.4-beta.rc1",
"network": "regtest",
"lnd_identity_pubkey": "03926cb6785ba0b71e97f1463bbdda457b4bc336048d2b1d6070844dbfbc5c9bcb",
"node_alias": "bob",
"block_height": 134,
"block_hash": "14ba6f7566cbe4a95e1017f2207fd31d98b2c7a934af15283b2c2e97ceb8fab9",
"sync_to_chain": true
}
Carol's tapcli getinfo output:
litd@carol:/$ tapcli getinfo
{
"version": "0.5.0-alpha.rc1 commit=v0.5.0-rc1",
"lnd_version": "0.18.4-beta.rc1",
"network": "regtest",
"lnd_identity_pubkey": "02e804e18b4c9d95c32894dbf92e85a9effd55468d6736abbee7d316cee0a06464",
"node_alias": "carol",
"block_height": 134,
"block_hash": "14ba6f7566cbe4a95e1017f2207fd31d98b2c7a934af15283b2c2e97ceb8fab9",
"sync_to_chain": true
}
Steps to reproduce
- Have a Taproot Assets channel between Alice and Bob where Alice has plenty of inbound liquidity, and a BTC channel between Bob and Carol where Bob has plenty of inbound liquidity.
- Have Alice generate a 1 asset invoice (though I assume anything <354 sats would suffice), and have Carol attempt to pay it with sats.
- Have Carol attempt to pay additional Taproot Assets invoices generated by Alice.
- After failures, reset Carol's mission control and try again.
- After Alice and Bob's Taproot Assets channel goes inactive, disconnect and reconnect them as peers, and try to get Carol to pay another Taproot Assets invoice from Alice again.
- After getting the channel active again, try to get Bob to make a direct Taproot Assets LN payment to Alice.
Expected behavior
Carol should be able to successfully pay Alice in step 3, and in step 4, and the Taproot Assets channel should not go inactive every time it is asked to forward a payment in steps 5 and 6.
Actual behavior
After step 2, Alice and Bob's Taproot Assets channel is incapable for forwarding a payment. It appears Bob is unable to find the channel link.
Logs attached:
Metadata
Metadata
Assignees
Labels
Type
Projects
Status