rpcserver: expose store final htlc resolutions flag on info call

The storage of final htlc resolutions is a safety-critical feature. By
exposing it through the GetInfo call, connected applications can
ensure that the feature is turned on and avoid relying on the assumption
that lnd was configured correctly.
This commit is contained in:
Joost Jager 2023-02-13 11:44:48 +01:00
parent db5dc4d360
commit 784c0631f3
No known key found for this signature in database
GPG Key ID: B9A26449A5528325
5 changed files with 2137 additions and 2114 deletions

View File

@ -81,7 +81,9 @@ current gossip sync query status.
after upgrading lnd.
This feature is [opt-in](https://github.com/lightningnetwork/lnd/pull/7341)
via a config flag.
via a config flag. The status of the flag is
[exposed](https://github.com/lightningnetwork/lnd/pull/7402) at run-time
through GetInfo.
* Zero-amount private invoices [now provide hop
hints](https://github.com/lightningnetwork/lnd/pull/7082), up to `maxHopHints`

File diff suppressed because it is too large Load Diff

View File

@ -1912,6 +1912,9 @@ message GetInfoResponse {
Indicates whether the HTLC interceptor API is in always-on mode.
*/
bool require_htlc_interceptor = 21;
// Indicates whether final htlc resolutions are stored on disk.
bool store_final_htlc_resolutions = 22;
}
message GetRecoveryInfoRequest {

View File

@ -4769,6 +4769,10 @@
"require_htlc_interceptor": {
"type": "boolean",
"description": "Indicates whether the HTLC interceptor API is in always-on mode."
},
"store_final_htlc_resolutions": {
"type": "boolean",
"description": "Indicates whether final htlc resolutions are stored on disk."
}
}
},

View File

@ -2893,25 +2893,26 @@ func (r *rpcServer) GetInfo(_ context.Context,
version := build.Version() + " commit=" + build.Commit
return &lnrpc.GetInfoResponse{
IdentityPubkey: encodedIDPub,
NumPendingChannels: nPendingChannels,
NumActiveChannels: activeChannels,
NumInactiveChannels: inactiveChannels,
NumPeers: uint32(len(serverPeers)),
BlockHeight: uint32(bestHeight),
BlockHash: bestHash.String(),
SyncedToChain: isSynced,
Testnet: isTestNet,
Chains: activeChains,
Uris: uris,
Alias: nodeAnn.Alias.String(),
Color: nodeColor,
BestHeaderTimestamp: bestHeaderTimestamp,
Version: version,
CommitHash: build.CommitHash,
SyncedToGraph: isGraphSynced,
Features: features,
RequireHtlcInterceptor: r.cfg.RequireInterceptor,
IdentityPubkey: encodedIDPub,
NumPendingChannels: nPendingChannels,
NumActiveChannels: activeChannels,
NumInactiveChannels: inactiveChannels,
NumPeers: uint32(len(serverPeers)),
BlockHeight: uint32(bestHeight),
BlockHash: bestHash.String(),
SyncedToChain: isSynced,
Testnet: isTestNet,
Chains: activeChains,
Uris: uris,
Alias: nodeAnn.Alias.String(),
Color: nodeColor,
BestHeaderTimestamp: bestHeaderTimestamp,
Version: version,
CommitHash: build.CommitHash,
SyncedToGraph: isGraphSynced,
Features: features,
RequireHtlcInterceptor: r.cfg.RequireInterceptor,
StoreFinalHtlcResolutions: r.cfg.StoreFinalHtlcResolutions,
}, nil
}