mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
1aa9626606
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. |
||
---|---|---|
.. | ||
migration | ||
migration12 | ||
migration13 | ||
migration16 | ||
migration20 | ||
migration21 | ||
migration23 | ||
migration24 | ||
migration25 | ||
migration26 | ||
migration27 | ||
migration29 | ||
migration_01_to_11 | ||
migtest | ||
addr_test.go | ||
addr.go | ||
channel_cache_test.go | ||
channel_cache.go | ||
channel_test.go | ||
channel.go | ||
codec.go | ||
db_test.go | ||
db.go | ||
duplicate_payments.go | ||
error.go | ||
forwarding_log_test.go | ||
forwarding_log.go | ||
forwarding_package_test.go | ||
forwarding_package.go | ||
graph_cache_test.go | ||
graph_cache.go | ||
graph_test.go | ||
graph.go | ||
invoice_test.go | ||
invoices.go | ||
legacy_serialization.go | ||
log.go | ||
meta_test.go | ||
meta.go | ||
mp_payment_test.go | ||
mp_payment.go | ||
nodes_test.go | ||
nodes.go | ||
options_test.go | ||
options.go | ||
paginate.go | ||
payment_control_test.go | ||
payment_control.go | ||
payments_test.go | ||
payments.go | ||
peers_test.go | ||
peers.go | ||
README.md | ||
reject_cache_test.go | ||
reject_cache.go | ||
reports_test.go | ||
reports.go | ||
revocation_log_test.go | ||
revocation_log.go | ||
setup_test.go | ||
waitingproof_test.go | ||
waitingproof.go | ||
witness_cache_test.go | ||
witness_cache.go |
channeldb
The channeldb implements the persistent storage engine for lnd
and
generically a data storage layer for the required state within the Lightning
Network. The backing storage engine is
boltdb, an embedded pure-go key-value store
based off of LMDB.
The package implements an object-oriented storage model with queries and mutations flowing through a particular object instance rather than the database itself. The storage implemented by the objects includes: open channels, past commitment revocation states, the channel graph which includes authenticated node and channel announcements, outgoing payments, and invoices
Installation and Updating
⛰ go get -u github.com/lightningnetwork/lnd/channeldb