lnd/chanacceptor
eugene 7ec5d09ef1 server+funding: allow scid-alias, zero-conf chantypes, scid-alias
feature-bit channels

This allows opening zero-conf chan-type, scid-alias chan-type, and
scid-alias feature-bit channels. scid-alias chan-type channels are
required to be private. Two paths are available for opening a zero-conf
channel:

* explicit chan-type negotiation
* LDK carve-out where chan-types are not used, LND is on the
  receiving end, and a ChannelAcceptor is used to enable zero-conf

When a zero-conf channel is negotiated, the funding manager:
* sends a FundingLocked with an alias
* waits for a FundingLocked from the remote peer
* calls addToRouterGraph to persist the channel using our alias in
  the graph. The peer's alias is used to send them a ChannelUpdate.
* wait for six confirmations. If public, the alias edge in the
  graph is deleted and replaced (not atomically) with the confirmed
  edge. Our policy is also read-and-replaced, but the counterparty's
  policy won't exist until they send it to us.

When a scid-alias-feature channel is negotiated, the funding manager:
* sends a FundingLocked with an alias:
* calls addToRouterGraph, sends ChannelUpdate with the confirmed SCID
  since it exists.
* when six confirmations occurs, the edge is deleted and re-inserted
  since the peer may have sent us an alias ChannelUpdate that we are
  storing in the graph.

Since it is possible for a user to toggle the scid-alias-feature-bit
to on while channels exist in the funding manager, care has been taken
to ensure that an alias is ALWAYS sent in the funding_locked message
if this happens.
2022-08-12 16:58:16 -07:00
..
acceptor_test.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00
chainedacceptor.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00
errors.go multi: add custom error messages to channel acceptor 2020-11-10 11:38:47 +02:00
interface.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00
log.go multi: move channel acceptor logic out of rpcserver 2020-11-10 11:38:45 +02:00
merge_test.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00
merge.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00
rpcacceptor_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
rpcacceptor.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-08-12 16:58:16 -07:00