mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 09:53:54 +01:00
96445f99b4
In preparation for the commit which will add the main logic for migration 32 (which will migrate the MC store to use a more minimal encoding), this commit just adds some of the code that the migration will need to the package.
60 lines
1.9 KiB
Go
60 lines
1.9 KiB
Go
package migration32
|
|
|
|
import (
|
|
"github.com/btcsuite/btcd/btcec/v2"
|
|
"github.com/lightningnetwork/lnd/tlv"
|
|
)
|
|
|
|
const (
|
|
// EncryptedDataOnionType is the type used to include encrypted data
|
|
// provided by the receiver in the onion for use in blinded paths.
|
|
EncryptedDataOnionType tlv.Type = 10
|
|
|
|
// BlindingPointOnionType is the type used to include receiver provided
|
|
// ephemeral keys in the onion that are used in blinded paths.
|
|
BlindingPointOnionType tlv.Type = 12
|
|
|
|
// MetadataOnionType is the type used in the onion for the payment
|
|
// metadata.
|
|
MetadataOnionType tlv.Type = 16
|
|
|
|
// TotalAmtMsatBlindedType is the type used in the onion for the total
|
|
// amount field that is included in the final hop for blinded payments.
|
|
TotalAmtMsatBlindedType tlv.Type = 18
|
|
)
|
|
|
|
// NewEncryptedDataRecord creates a tlv.Record that encodes the encrypted_data
|
|
// (type 10) record for an onion payload.
|
|
func NewEncryptedDataRecord(data *[]byte) tlv.Record {
|
|
return tlv.MakePrimitiveRecord(EncryptedDataOnionType, data)
|
|
}
|
|
|
|
// NewBlindingPointRecord creates a tlv.Record that encodes the blinding_point
|
|
// (type 12) record for an onion payload.
|
|
func NewBlindingPointRecord(point **btcec.PublicKey) tlv.Record {
|
|
return tlv.MakePrimitiveRecord(BlindingPointOnionType, point)
|
|
}
|
|
|
|
// NewMetadataRecord creates a tlv.Record that encodes the metadata (type 10)
|
|
// for an onion payload.
|
|
func NewMetadataRecord(metadata *[]byte) tlv.Record {
|
|
return tlv.MakeDynamicRecord(
|
|
MetadataOnionType, metadata,
|
|
func() uint64 {
|
|
return uint64(len(*metadata))
|
|
},
|
|
tlv.EVarBytes, tlv.DVarBytes,
|
|
)
|
|
}
|
|
|
|
// NewTotalAmtMsatBlinded creates a tlv.Record that encodes the
|
|
// total_amount_msat for the final an onion payload within a blinded route.
|
|
func NewTotalAmtMsatBlinded(amt *uint64) tlv.Record {
|
|
return tlv.MakeDynamicRecord(
|
|
TotalAmtMsatBlindedType, amt, func() uint64 {
|
|
return tlv.SizeTUint64(*amt)
|
|
},
|
|
tlv.ETUint64, tlv.DTUint64,
|
|
)
|
|
}
|