Skip to content

IPC interface for LND support #24

@GeorgeTsagk

Description

@GeorgeTsagk

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions