mirror of
https://github.com/aljazceru/breez-lnd.git
synced 2026-01-30 19:54:32 +01:00
In this commit, we fix an issue that was recently introduced as a result of migration #10. The new TLV format ended up modifying the serialization functions called in `serializePaymentAttemptInfo`. Migration #9, also used this `serializePaymentAttemptInfo` method to serialize the _new_ (pre TLV, but new payment attempt structure) routes into the database during its migration. However, migration #10 failed to copy over the existing unmodified `serializePaymentAttemptInfo` method into the legacy serialization for migration #9. As a result, once migration #9 was run, the routes/payments were serialized using the _new_ format, rather than the format used for v0.7.1. This then lead to de-serialization either failing, or causing partial payment corruption as migration #10 was expecting the "legacy" format (no TLV info). We fix this issue by adding a new fully enclosed `serializePaymentAttemptInfoMigration9`method that will be used for migration #9. Note that our tests didn't catch this, as they test the migration in isolation, rather than in series which is how users will encounter the migrations. Fixes #3463.
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