lnrpc/walletrpc: add witness types for taproot chans final
What changed, and why it matters
This commit adds new witness type labels for Taproot Lightning channels to LND's wallet RPC. It is essentially a protocol/API bookkeeping change: it exposes new enum values so the wallet RPC can report or handle additional Taproot channel sweep types. There is no direct evidence in the diff of a security vulnerability being fixed; it appears to be a feature or completeness update for production Taproot channels.
No immediate security action required. Review the broader Taproot channels feature branch to confirm the new witness types are correctly handled by the sweeper and signing subsystems, since this commit only adds RPC enum exposure.
Security signals we found
Adds witness-type enum values for Taproot channel force-close and HTLC sweep paths
No signing, validation, or consensus logic changed in the visible diff
No mention of vulnerability, bug, or security fix in commit message or code comments
Generated protobuf/swagger changes dominate the patch
Evidence from the diff
The change extends the walletkit RPC enum WitnessType with seven new final-state variants for production Taproot channels (e.g., TAPROOT_LOCAL_COMMIT_SPEND_FINAL, TAPROOT_REMOTE_COMMIT_SPEND_FINAL, TAPROOT_HTLC_*_FINAL, TAPROOT_COMMITMENT_REVOKE_FINAL). It updates the generated protobuf Go code, the .proto file, the swagger JSON, and the mapping in walletkit_server.go between internal input witness types and RPC enum values. No logic changes to signing, validation, or state handling are visible in the supplied diff.
Changed components
lnrpc/walletrpc/walletkit.protolnrpc/walletrpc/walletkit.pb.golnrpc/walletrpc/walletkit.swagger.jsonlnrpc/walletrpc/walletkit_server.goInspect captured patch +118 / −4
diff --git a/lnrpc/walletrpc/walletkit.pb.go b/lnrpc/walletrpc/walletkit.pb.go
index 5d4dc12..ef8e84e 100644
--- a/lnrpc/walletrpc/walletkit.pb.go
+++ b/lnrpc/walletrpc/walletkit.pb.go
@@ -218,6 +218,35 @@ const (
// A witness that allows us to sweep the settled output of a malicious
// counterparty's who broadcasts a revoked taproot commitment transaction.
WitnessType_TAPROOT_COMMITMENT_REVOKE WitnessType = 35
+ // A witness type that allows us to spend our settled local commitment after a
+ // CSV delay when we force close a production taproot channel.
+ WitnessType_TAPROOT_LOCAL_COMMIT_SPEND_FINAL WitnessType = 36
+ // A witness type that allows us to spend our settled local commitment after
+ // a CSV delay when the remote party has force closed a production taproot
+ // channel.
+ WitnessType_TAPROOT_REMOTE_COMMIT_SPEND_FINAL WitnessType = 37
+ // A witness that allows us to timeout an HTLC we offered to the remote party
+ // on our production taproot commitment transaction. We use this when we need
+ // to go on chain to time out an HTLC.
+ WitnessType_TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL WitnessType = 38
+ // A witness type that allows us to sweep an HTLC we accepted on our
+ // production taproot commitment transaction after we go to the second level
+ // on chain.
+ WitnessType_TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL WitnessType = 39
+ // A witness that allows us to sweep an HTLC we offered to the remote party
+ // that lies on the production taproot commitment transaction for the remote
+ // party. We can spend this output after the absolute CLTV timeout of the
+ // HTLC as passed.
+ WitnessType_TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL WitnessType = 40
+ // A witness that allows us to sweep an HTLC that was offered to us by the
+ // remote party for a production taproot channel. We use this witness in the
+ // case that the remote party goes to chain, and we know the pre-image to the
+ // HTLC. We can sweep this without any additional timeout.
+ WitnessType_TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL WitnessType = 41
+ // A witness type that allows us to sweep the settled output of a malicious
+ // counterparty's who broadcasts a revoked production taproot commitment
+ // transaction.
+ WitnessType_TAPROOT_COMMITMENT_REVOKE_FINAL WitnessType = 42
)
// Enum value maps for WitnessType.
@@ -259,6 +288,13 @@ var (
33: "TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS",
34: "TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS",
35: "TAPROOT_COMMITMENT_REVOKE",
+ 36: "TAPROOT_LOCAL_COMMIT_SPEND_FINAL",
+ 37: "TAPROOT_REMOTE_COMMIT_SPEND_FINAL",
+ 38: "TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL",
+ 39: "TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL",
+ 40: "TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL",
+ 41: "TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL",
+ 42: "TAPROOT_COMMITMENT_REVOKE_FINAL",
}
WitnessType_value = map[string]int32{
"UNKNOWN_WITNESS": 0,
@@ -297,6 +333,13 @@ var (
"TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS": 33,
"TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS": 34,
"TAPROOT_COMMITMENT_REVOKE": 35,
+ "TAPROOT_LOCAL_COMMIT_SPEND_FINAL": 36,
+ "TAPROOT_REMOTE_COMMIT_SPEND_FINAL": 37,
+ "TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL": 38,
+ "TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL": 39,
+ "TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL": 40,
+ "TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL": 41,
+ "TAPROOT_COMMITMENT_REVOKE_FINAL": 42,
}
)
@@ -4755,7 +4798,7 @@ const file_walletrpc_walletkit_proto_rawDesc = "" +
"\x13WITNESS_PUBKEY_HASH\x10\x01\x12\x1e\n" +
"\x1aNESTED_WITNESS_PUBKEY_HASH\x10\x02\x12%\n" +
"!HYBRID_NESTED_WITNESS_PUBKEY_HASH\x10\x03\x12\x12\n" +
- "\x0eTAPROOT_PUBKEY\x10\x04*\xfb\t\n" +
+ "\x0eTAPROOT_PUBKEY\x10\x04*\xb7\f\n" +
"\vWitnessType\x12\x13\n" +
"\x0fUNKNOWN_WITNESS\x10\x00\x12\x18\n" +
"\x14COMMITMENT_TIME_LOCK\x10\x01\x12\x17\n" +
@@ -4793,7 +4836,14 @@ const file_walletrpc_walletkit_proto_rawDesc = "" +
"\"TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT\x10 \x12(\n" +
"$TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS\x10!\x12'\n" +
"#TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS\x10\"\x12\x1d\n" +
- "\x19TAPROOT_COMMITMENT_REVOKE\x10#*V\n" +
+ "\x19TAPROOT_COMMITMENT_REVOKE\x10#\x12$\n" +
+ " TAPROOT_LOCAL_COMMIT_SPEND_FINAL\x10$\x12%\n" +
+ "!TAPROOT_REMOTE_COMMIT_SPEND_FINAL\x10%\x123\n" +
+ "/TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL\x10&\x124\n" +
+ "0TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL\x10'\x12-\n" +
+ ")TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL\x10(\x12.\n" +
+ "*TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL\x10)\x12#\n" +
+ "\x1fTAPROOT_COMMITMENT_REVOKE_FINAL\x10**V\n" +
"\x11ChangeAddressType\x12#\n" +
"\x1fCHANGE_ADDRESS_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n" +
"\x18CHANGE_ADDRESS_TYPE_P2TR\x10\x012\xd6\x11\n" +
diff --git a/lnrpc/walletrpc/walletkit.proto b/lnrpc/walletrpc/walletkit.proto
index a9d6ee0..81176d9 100644
--- a/lnrpc/walletrpc/walletkit.proto
+++ b/lnrpc/walletrpc/walletkit.proto
@@ -1098,6 +1098,56 @@ enum WitnessType {
counterparty's who broadcasts a revoked taproot commitment transaction.
*/
TAPROOT_COMMITMENT_REVOKE = 35;
+
+ /*
+ A witness type that allows us to spend our settled local commitment after a
+ CSV delay when we force close a production taproot channel.
+ */
+ TAPROOT_LOCAL_COMMIT_SPEND_FINAL = 36;
+
+ /*
+ A witness type that allows us to spend our settled local commitment after
+ a CSV delay when the remote party has force closed a production taproot
+ channel.
+ */
+ TAPROOT_REMOTE_COMMIT_SPEND_FINAL = 37;
+
+ /*
+ A witness that allows us to timeout an HTLC we offered to the remote party
+ on our production taproot commitment transaction. We use this when we need
+ to go on chain to time out an HTLC.
+ */
+ TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL = 38;
+
+ /*
+ A witness type that allows us to sweep an HTLC we accepted on our
+ production taproot commitment transaction after we go to the second level
+ on chain.
+ */
+ TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL = 39;
+
+ /*
+ A witness that allows us to sweep an HTLC we offered to the remote party
+ that lies on the production taproot commitment transaction for the remote
+ party. We can spend this output after the absolute CLTV timeout of the
+ HTLC as passed.
+ */
+ TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL = 40;
+
+ /*
+ A witness that allows us to sweep an HTLC that was offered to us by the
+ remote party for a production taproot channel. We use this witness in the
+ case that the remote party goes to chain, and we know the pre-image to the
+ HTLC. We can sweep this without any additional timeout.
+ */
+ TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL = 41;
+
+ /*
+ A witness type that allows us to sweep the settled output of a malicious
+ counterparty's who broadcasts a revoked production taproot commitment
+ transaction.
+ */
+ TAPROOT_COMMITMENT_REVOKE_FINAL = 42;
}
message PendingSweep {
diff --git a/lnrpc/walletrpc/walletkit.swagger.json b/lnrpc/walletrpc/walletkit.swagger.json
index bb9ae5e..e5a0946 100644
--- a/lnrpc/walletrpc/walletkit.swagger.json
+++ b/lnrpc/walletrpc/walletkit.swagger.json
@@ -2356,10 +2356,17 @@
"TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT",
"TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS",
"TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS",
- "TAPROOT_COMMITMENT_REVOKE"
+ "TAPROOT_COMMITMENT_REVOKE",
+ "TAPROOT_LOCAL_COMMIT_SPEND_FINAL",
+ "TAPROOT_REMOTE_COMMIT_SPEND_FINAL",
+ "TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL",
+ "TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL",
+ "TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL",
+ "TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL",
+ "TAPROOT_COMMITMENT_REVOKE_FINAL"
],
"default": "UNKNOWN_WITNESS",
- "description": " - COMMITMENT_TIME_LOCK: A witness that allows us to spend the output of a commitment transaction\nafter a relative lock-time lockout.\n - COMMITMENT_NO_DELAY: A witness that allows us to spend a settled no-delay output immediately on a\ncounterparty's commitment transaction.\n - COMMITMENT_REVOKE: A witness that allows us to sweep the settled output of a malicious\ncounterparty's who broadcasts a revoked commitment transaction.\n - HTLC_OFFERED_REVOKE: A witness that allows us to sweep an HTLC which we offered to the remote\nparty in the case that they broadcast a revoked commitment state.\n - HTLC_ACCEPTED_REVOKE: A witness that allows us to sweep an HTLC output sent to us in the case that\nthe remote party broadcasts a revoked commitment state.\n - HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness that allows us to sweep an HTLC output that we extended to a\nparty, but was never fulfilled. This HTLC output isn't directly on the\ncommitment transaction, but is the result of a confirmed second-level HTLC\ntransaction. As a result, we can only spend this after a CSV delay.\n - HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness that allows us to sweep an HTLC output that was offered to us, and\nfor which we have a payment preimage. This HTLC output isn't directly on our\ncommitment transaction, but is the result of confirmed second-level HTLC\ntransaction. As a result, we can only spend this after a CSV delay.\n - HTLC_OFFERED_REMOTE_TIMEOUT: A witness that allows us to sweep an HTLC that we offered to the remote\nparty which lies in the commitment transaction of the remote party. We can\nspend this output after the absolute CLTV timeout of the HTLC as passed.\n - HTLC_ACCEPTED_REMOTE_SUCCESS: A witness that allows us to sweep an HTLC that was offered to us by the\nremote party. We use this witness in the case that the remote party goes to\nchain, and we know the pre-image to the HTLC. We can sweep this without any\nadditional timeout.\n - HTLC_SECOND_LEVEL_REVOKE: A witness that allows us to sweep an HTLC from the remote party's commitment\ntransaction in the case that the broadcast a revoked commitment, but then\nalso immediately attempt to go to the second level to claim the HTLC.\n - WITNESS_KEY_HASH: A witness type that allows us to spend a regular p2wkh output that's sent to\nan output which is under complete control of the backing wallet.\n - NESTED_WITNESS_KEY_HASH: A witness type that allows us to sweep an output that sends to a nested P2SH\nscript that pays to a key solely under our control.\n - COMMITMENT_ANCHOR: A witness type that allows us to spend our anchor on the commitment\ntransaction.\n - COMMITMENT_NO_DELAY_TWEAKLESS: A witness type that is similar to the COMMITMENT_NO_DELAY type,\nbut it omits the tweak that randomizes the key we need to\nspend with a channel peer supplied set of randomness.\n - COMMITMENT_TO_REMOTE_CONFIRMED: A witness type that allows us to spend our output on the counterparty's\ncommitment transaction after a confirmation.\n - HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_INPUT_CONFIRMED: A witness type that allows us to sweep an HTLC output that we extended\nto a party, but was never fulfilled. This _is_ the HTLC output directly\non our commitment transaction, and the input to the second-level HTLC\ntimeout transaction. It can only be spent after CLTV expiry, and\ncommitment confirmation.\n - HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_INPUT_CONFIRMED: A witness type that allows us to sweep an HTLC output that was offered\nto us, and for which we have a payment preimage. This _is_ the HTLC\noutput directly on our commitment transaction, and the input to the\nsecond-level HTLC success transaction. It can only be spent after the\ncommitment has confirmed.\n - LEASE_COMMITMENT_TIME_LOCK: A witness type that allows us to spend our output on our local\ncommitment transaction after a relative and absolute lock-time lockout as\npart of the script enforced lease commitment type.\n - LEASE_COMMITMENT_TO_REMOTE_CONFIRMED: A witness type that allows us to spend our output on the counterparty's\ncommitment transaction after a confirmation and absolute locktime as part\nof the script enforced lease commitment type.\n - LEASE_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness type that allows us to sweep an HTLC output that we extended\nto a party, but was never fulfilled. This HTLC output isn't directly on\nthe commitment transaction, but is the result of a confirmed second-level\nHTLC transaction. As a result, we can only spend this after a CSV delay\nand CLTV locktime as part of the script enforced lease commitment type.\n - LEASE_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness type that allows us to sweep an HTLC output that was offered\nto us, and for which we have a payment preimage. This HTLC output isn't\ndirectly on our commitment transaction, but is the result of confirmed\nsecond-level HTLC transaction. As a result, we can only spend this after\na CSV delay and CLTV locktime as part of the script enforced lease\ncommitment type.\n - TAPROOT_PUB_KEY_SPEND: A witness type that allows us to spend a regular p2tr output that's sent\nto an output which is under complete control of the backing wallet.\n - TAPROOT_LOCAL_COMMIT_SPEND: A witness type that allows us to spend our settled local commitment after a\nCSV delay when we force close the channel.\n - TAPROOT_REMOTE_COMMIT_SPEND: A witness type that allows us to spend our settled local commitment after\na CSV delay when the remote party has force closed the channel.\n - TAPROOT_ANCHOR_SWEEP_SPEND: A witness type that we'll use for spending our own anchor output.\n - TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness that allows us to timeout an HTLC we offered to the remote party\non our commitment transaction. We use this when we need to go on chain to\ntime out an HTLC.\n - TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness type that allows us to sweep an HTLC we accepted on our commitment\ntransaction after we go to the second level on chain.\n - TAPROOT_HTLC_SECOND_LEVEL_REVOKE: A witness that allows us to sweep an HTLC on the revoked transaction of the\nremote party that goes to the second level.\n - TAPROOT_HTLC_ACCEPTED_REVOKE: A witness that allows us to sweep an HTLC sent to us by the remote party\nin the event that they broadcast a revoked state.\n - TAPROOT_HTLC_OFFERED_REVOKE: A witness that allows us to sweep an HTLC we offered to the remote party if\nthey broadcast a revoked commitment.\n - TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT: A witness that allows us to sweep an HTLC we offered to the remote party\nthat lies on the commitment transaction for the remote party. We can spend\nthis output after the absolute CLTV timeout of the HTLC as passed.\n - TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT: A witness type that allows us to sign the second level HTLC timeout\ntransaction when spending from an HTLC residing on our local commitment\ntransaction.\nThis is used by the sweeper to re-sign inputs if it needs to aggregate\nseveral second level HTLCs.\n - TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS: A witness that allows us to sweep an HTLC that was offered to us by the\nremote party for a taproot channels. We use this witness in the case that\nthe remote party goes to chain, and we know the pre-image to the HTLC. We\ncan sweep this without any additional timeout.\n - TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS: A witness type that allows us to sweep the HTLC offered to us on our local\ncommitment transaction. We'll use this when we need to go on chain to sweep\nthe HTLC. In this case, this is the second level HTLC success transaction.\n - TAPROOT_COMMITMENT_REVOKE: A witness that allows us to sweep the settled output of a malicious\ncounterparty's who broadcasts a revoked taproot commitment transaction."
+ "description": " - COMMITMENT_TIME_LOCK: A witness that allows us to spend the output of a commitment transaction\nafter a relative lock-time lockout.\n - COMMITMENT_NO_DELAY: A witness that allows us to spend a settled no-delay output immediately on a\ncounterparty's commitment transaction.\n - COMMITMENT_REVOKE: A witness that allows us to sweep the settled output of a malicious\ncounterparty's who broadcasts a revoked commitment transaction.\n - HTLC_OFFERED_REVOKE: A witness that allows us to sweep an HTLC which we offered to the remote\nparty in the case that they broadcast a revoked commitment state.\n - HTLC_ACCEPTED_REVOKE: A witness that allows us to sweep an HTLC output sent to us in the case that\nthe remote party broadcasts a revoked commitment state.\n - HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness that allows us to sweep an HTLC output that we extended to a\nparty, but was never fulfilled. This HTLC output isn't directly on the\ncommitment transaction, but is the result of a confirmed second-level HTLC\ntransaction. As a result, we can only spend this after a CSV delay.\n - HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness that allows us to sweep an HTLC output that was offered to us, and\nfor which we have a payment preimage. This HTLC output isn't directly on our\ncommitment transaction, but is the result of confirmed second-level HTLC\ntransaction. As a result, we can only spend this after a CSV delay.\n - HTLC_OFFERED_REMOTE_TIMEOUT: A witness that allows us to sweep an HTLC that we offered to the remote\nparty which lies in the commitment transaction of the remote party. We can\nspend this output after the absolute CLTV timeout of the HTLC as passed.\n - HTLC_ACCEPTED_REMOTE_SUCCESS: A witness that allows us to sweep an HTLC that was offered to us by the\nremote party. We use this witness in the case that the remote party goes to\nchain, and we know the pre-image to the HTLC. We can sweep this without any\nadditional timeout.\n - HTLC_SECOND_LEVEL_REVOKE: A witness that allows us to sweep an HTLC from the remote party's commitment\ntransaction in the case that the broadcast a revoked commitment, but then\nalso immediately attempt to go to the second level to claim the HTLC.\n - WITNESS_KEY_HASH: A witness type that allows us to spend a regular p2wkh output that's sent to\nan output which is under complete control of the backing wallet.\n - NESTED_WITNESS_KEY_HASH: A witness type that allows us to sweep an output that sends to a nested P2SH\nscript that pays to a key solely under our control.\n - COMMITMENT_ANCHOR: A witness type that allows us to spend our anchor on the commitment\ntransaction.\n - COMMITMENT_NO_DELAY_TWEAKLESS: A witness type that is similar to the COMMITMENT_NO_DELAY type,\nbut it omits the tweak that randomizes the key we need to\nspend with a channel peer supplied set of randomness.\n - COMMITMENT_TO_REMOTE_CONFIRMED: A witness type that allows us to spend our output on the counterparty's\ncommitment transaction after a confirmation.\n - HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_INPUT_CONFIRMED: A witness type that allows us to sweep an HTLC output that we extended\nto a party, but was never fulfilled. This _is_ the HTLC output directly\non our commitment transaction, and the input to the second-level HTLC\ntimeout transaction. It can only be spent after CLTV expiry, and\ncommitment confirmation.\n - HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_INPUT_CONFIRMED: A witness type that allows us to sweep an HTLC output that was offered\nto us, and for which we have a payment preimage. This _is_ the HTLC\noutput directly on our commitment transaction, and the input to the\nsecond-level HTLC success transaction. It can only be spent after the\ncommitment has confirmed.\n - LEASE_COMMITMENT_TIME_LOCK: A witness type that allows us to spend our output on our local\ncommitment transaction after a relative and absolute lock-time lockout as\npart of the script enforced lease commitment type.\n - LEASE_COMMITMENT_TO_REMOTE_CONFIRMED: A witness type that allows us to spend our output on the counterparty's\ncommitment transaction after a confirmation and absolute locktime as part\nof the script enforced lease commitment type.\n - LEASE_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness type that allows us to sweep an HTLC output that we extended\nto a party, but was never fulfilled. This HTLC output isn't directly on\nthe commitment transaction, but is the result of a confirmed second-level\nHTLC transaction. As a result, we can only spend this after a CSV delay\nand CLTV locktime as part of the script enforced lease commitment type.\n - LEASE_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness type that allows us to sweep an HTLC output that was offered\nto us, and for which we have a payment preimage. This HTLC output isn't\ndirectly on our commitment transaction, but is the result of confirmed\nsecond-level HTLC transaction. As a result, we can only spend this after\na CSV delay and CLTV locktime as part of the script enforced lease\ncommitment type.\n - TAPROOT_PUB_KEY_SPEND: A witness type that allows us to spend a regular p2tr output that's sent\nto an output which is under complete control of the backing wallet.\n - TAPROOT_LOCAL_COMMIT_SPEND: A witness type that allows us to spend our settled local commitment after a\nCSV delay when we force close the channel.\n - TAPROOT_REMOTE_COMMIT_SPEND: A witness type that allows us to spend our settled local commitment after\na CSV delay when the remote party has force closed the channel.\n - TAPROOT_ANCHOR_SWEEP_SPEND: A witness type that we'll use for spending our own anchor output.\n - TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL: A witness that allows us to timeout an HTLC we offered to the remote party\non our commitment transaction. We use this when we need to go on chain to\ntime out an HTLC.\n - TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL: A witness type that allows us to sweep an HTLC we accepted on our commitment\ntransaction after we go to the second level on chain.\n - TAPROOT_HTLC_SECOND_LEVEL_REVOKE: A witness that allows us to sweep an HTLC on the revoked transaction of the\nremote party that goes to the second level.\n - TAPROOT_HTLC_ACCEPTED_REVOKE: A witness that allows us to sweep an HTLC sent to us by the remote party\nin the event that they broadcast a revoked state.\n - TAPROOT_HTLC_OFFERED_REVOKE: A witness that allows us to sweep an HTLC we offered to the remote party if\nthey broadcast a revoked commitment.\n - TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT: A witness that allows us to sweep an HTLC we offered to the remote party\nthat lies on the commitment transaction for the remote party. We can spend\nthis output after the absolute CLTV timeout of the HTLC as passed.\n - TAPROOT_HTLC_LOCAL_OFFERED_TIMEOUT: A witness type that allows us to sign the second level HTLC timeout\ntransaction when spending from an HTLC residing on our local commitment\ntransaction.\nThis is used by the sweeper to re-sign inputs if it needs to aggregate\nseveral second level HTLCs.\n - TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS: A witness that allows us to sweep an HTLC that was offered to us by the\nremote party for a taproot channels. We use this witness in the case that\nthe remote party goes to chain, and we know the pre-image to the HTLC. We\ncan sweep this without any additional timeout.\n - TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS: A witness type that allows us to sweep the HTLC offered to us on our local\ncommitment transaction. We'll use this when we need to go on chain to sweep\nthe HTLC. In this case, this is the second level HTLC success transaction.\n - TAPROOT_COMMITMENT_REVOKE: A witness that allows us to sweep the settled output of a malicious\ncounterparty's who broadcasts a revoked taproot commitment transaction.\n - TAPROOT_LOCAL_COMMIT_SPEND_FINAL: A witness type that allows us to spend our settled local commitment after a\nCSV delay when we force close a production taproot channel.\n - TAPROOT_REMOTE_COMMIT_SPEND_FINAL: A witness type that allows us to spend our settled local commitment after\na CSV delay when the remote party has force closed a production taproot\nchannel.\n - TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL: A witness that allows us to timeout an HTLC we offered to the remote party\non our production taproot commitment transaction. We use this when we need\nto go on chain to time out an HTLC.\n - TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL: A witness type that allows us to sweep an HTLC we accepted on our\nproduction taproot commitment transaction after we go to the second level\non chain.\n - TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL: A witness that allows us to sweep an HTLC we offered to the remote party\nthat lies on the production taproot commitment transaction for the remote\nparty. We can spend this output after the absolute CLTV timeout of the\nHTLC as passed.\n - TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL: A witness that allows us to sweep an HTLC that was offered to us by the\nremote party for a production taproot channel. We use this witness in the\ncase that the remote party goes to chain, and we know the pre-image to the\nHTLC. We can sweep this without any additional timeout.\n - TAPROOT_COMMITMENT_REVOKE_FINAL: A witness type that allows us to sweep the settled output of a malicious\ncounterparty's who broadcasts a revoked production taproot commitment\ntransaction."
}
}
}
diff --git a/lnrpc/walletrpc/walletkit_server.go b/lnrpc/walletrpc/walletkit_server.go
index 9efc730..bece600 100644
--- a/lnrpc/walletrpc/walletkit_server.go
+++ b/lnrpc/walletrpc/walletkit_server.go
@@ -237,6 +237,13 @@ var (
input.TaprootHtlcAcceptedRemoteSuccess: WitnessType_TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS,
input.TaprootHtlcAcceptedLocalSuccess: WitnessType_TAPROOT_HTLC_ACCEPTED_LOCAL_SUCCESS,
input.TaprootCommitmentRevoke: WitnessType_TAPROOT_COMMITMENT_REVOKE,
+ input.TaprootLocalCommitSpendFinal: WitnessType_TAPROOT_LOCAL_COMMIT_SPEND_FINAL,
+ input.TaprootRemoteCommitSpendFinal: WitnessType_TAPROOT_REMOTE_COMMIT_SPEND_FINAL,
+ input.TaprootHtlcOfferedTimeoutSecondLevelFinal: WitnessType_TAPROOT_HTLC_OFFERED_TIMEOUT_SECOND_LEVEL_FINAL,
+ input.TaprootHtlcAcceptedSuccessSecondLevelFinal: WitnessType_TAPROOT_HTLC_ACCEPTED_SUCCESS_SECOND_LEVEL_FINAL,
+ input.TaprootHtlcOfferedRemoteTimeoutFinal: WitnessType_TAPROOT_HTLC_OFFERED_REMOTE_TIMEOUT_FINAL,
+ input.TaprootHtlcAcceptedRemoteSuccessFinal: WitnessType_TAPROOT_HTLC_ACCEPTED_REMOTE_SUCCESS_FINAL,
+ input.TaprootCommitmentRevokeFinal: WitnessType_TAPROOT_COMMITMENT_REVOKE_FINAL,
}
)
Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.