Description
The current Cap'n Proto IPC surface only exposes Init, Echo, and Mining. This is enough for a mining controller but not for downstream consumers that need to query chain state, mempool, or broadcast transactions.
This issue scopes the minimum IPC methods to add so that LND (via a downstream IPC translator) can use this node as a backend. The Node and Chain C++ interfaces already provide most of the underlying functionality in-process, they just aren't projected onto the wire.
Required IPC methods (to add)
Chain / blocks
getBlockchainInfo: sync status before LND starts. taproot_check.go
getBestBlockHash: current tip after reconnect. blockchain.go
getBlockHash: height to hash for rescan/reorg handling. blockchain.go
getBlockHeader: cheap header walk for confirmation depth. blockchain.go
getBlock: scan blocks for channel funding, HTLC spends, justice triggers. blockchain.go
Transactions
getRawTransaction: look up historical txs by txid (also blocked by txindex removal). bitcoind.go
broadcastTransaction: broadcast commitment / HTLC / sweep / justice txs (exists in Node, not on the wire). btcwallet.go
getTxOut: confirm a funding output is unspent. bitcoind.go
Mempool
testMempoolAccept: pre-flight bumped txs before broadcasting. btcwallet.go
Fees & info
estimateSmartFee: fee rates for closes, anchors, sweeps (exists in Chain, not on the wire). estimator.go
getNetworkInfo: version gating for health-check selection. chainregistry.go
Already adequate
ZMQ rawblock / rawtx (and hashblock / hashtx): push notifications LND relies on, including spotting counterparty commitment broadcasts in the mempool without polling.
chainregistry.go
Additional blockers
txindex is gone: projecting getRawTransaction won't work without restoring the index (or an equivalent).
Acceptance / Notes
LND can start, open a channel, broadcast a force-close, and recover after restart against this node via a downstream IPC translator.
The IPC translator needs further definition, but won't be outlined in this issue. This issue focuses on the bitcoin backend methods required by LND (probably any other LN node impl too) to work.
Description
The current Cap'n Proto IPC surface only exposes Init, Echo, and Mining. This is enough for a mining controller but not for downstream consumers that need to query chain state, mempool, or broadcast transactions.
This issue scopes the minimum IPC methods to add so that LND (via a downstream IPC translator) can use this node as a backend. The Node and Chain C++ interfaces already provide most of the underlying functionality in-process, they just aren't projected onto the wire.
Required IPC methods (to add)
Chain / blocks
getBlockchainInfo: sync status before LND starts. taproot_check.gogetBestBlockHash: current tip after reconnect. blockchain.gogetBlockHash: height to hash for rescan/reorg handling. blockchain.gogetBlockHeader: cheap header walk for confirmation depth. blockchain.gogetBlock: scan blocks for channel funding, HTLC spends, justice triggers. blockchain.goTransactions
getRawTransaction: look up historical txs by txid (also blocked by txindex removal). bitcoind.gobroadcastTransaction: broadcast commitment / HTLC / sweep / justice txs (exists in Node, not on the wire). btcwallet.gogetTxOut: confirm a funding output is unspent. bitcoind.goMempool
testMempoolAccept: pre-flight bumped txs before broadcasting. btcwallet.goFees & info
estimateSmartFee: fee rates for closes, anchors, sweeps (exists in Chain, not on the wire). estimator.gogetNetworkInfo: version gating for health-check selection. chainregistry.goAlready adequate
ZMQ
rawblock/rawtx(andhashblock/hashtx): push notifications LND relies on, including spotting counterparty commitment broadcasts in the mempool without polling.chainregistry.go
Additional blockers
txindexis gone: projectinggetRawTransactionwon't work without restoring the index (or an equivalent).Acceptance / Notes
LND can start, open a channel, broadcast a force-close, and recover after restart against this node via a downstream IPC translator.
The IPC translator needs further definition, but won't be outlined in this issue. This issue focuses on the bitcoin backend methods required by LND (probably any other LN node impl too) to work.