mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-25 19:56:41 +02:00
channeldb: add custom blobs to RevocationLog+HTLCEntry
This'll be useful for custom channel types that want to store extra information that'll be useful to help handle channel revocation cases.
This commit is contained in:
committed by
Oliver Gugger
parent
61f276856a
commit
669740c84e
@@ -34,6 +34,17 @@ var (
|
||||
0xff, // value = 255
|
||||
}
|
||||
|
||||
customRecords = lnwire.CustomRecords{
|
||||
lnwire.MinCustomRecordsTlvType + 1: []byte("custom data"),
|
||||
}
|
||||
|
||||
blobBytes = []byte{
|
||||
// Corresponds to the encoded version of the above custom
|
||||
// records.
|
||||
0xfe, 0x00, 0x01, 0x00, 0x01, 0x0b, 0x63, 0x75, 0x73, 0x74,
|
||||
0x6f, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61,
|
||||
}
|
||||
|
||||
testHTLCEntry = HTLCEntry{
|
||||
RefundTimeout: tlv.NewPrimitiveRecord[tlv.TlvType1, uint32](
|
||||
740_000,
|
||||
@@ -45,10 +56,13 @@ var (
|
||||
Amt: tlv.NewRecordT[tlv.TlvType4](
|
||||
tlv.NewBigSizeT(btcutil.Amount(1_000_000)),
|
||||
),
|
||||
CustomBlob: tlv.SomeRecordT(
|
||||
tlv.NewPrimitiveRecord[tlv.TlvType5](blobBytes),
|
||||
),
|
||||
}
|
||||
testHTLCEntryBytes = []byte{
|
||||
// Body length 23.
|
||||
0x16,
|
||||
// Body length 41.
|
||||
0x29,
|
||||
// Rhash tlv.
|
||||
0x0, 0x0,
|
||||
// RefundTimeout tlv.
|
||||
@@ -59,6 +73,9 @@ var (
|
||||
0x3, 0x1, 0x1,
|
||||
// Amt tlv.
|
||||
0x4, 0x5, 0xfe, 0x0, 0xf, 0x42, 0x40,
|
||||
// Custom blob tlv.
|
||||
0x5, 0x11, 0xfe, 0x00, 0x01, 0x00, 0x01, 0x0b, 0x63, 0x75, 0x73,
|
||||
0x74, 0x6f, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61,
|
||||
}
|
||||
|
||||
testHTLCEntryHash = HTLCEntry{
|
||||
@@ -113,17 +130,19 @@ var (
|
||||
Amt: lnwire.NewMSatFromSatoshis(
|
||||
testHTLCEntry.Amt.Val.Int(),
|
||||
),
|
||||
CustomRecords: customRecords,
|
||||
}},
|
||||
CustomBlob: fn.Some(blobBytes),
|
||||
}
|
||||
|
||||
testRevocationLogNoAmts = NewRevocationLog(
|
||||
0, 1, testChannelCommit.CommitTx.TxHash(),
|
||||
fn.None[lnwire.MilliSatoshi](), fn.None[lnwire.MilliSatoshi](),
|
||||
[]*HTLCEntry{&testHTLCEntry},
|
||||
[]*HTLCEntry{&testHTLCEntry}, fn.Some(blobBytes),
|
||||
)
|
||||
testRevocationLogNoAmtsBytes = []byte{
|
||||
// Body length 42.
|
||||
0x2a,
|
||||
// Body length 61.
|
||||
0x3d,
|
||||
// OurOutputIndex tlv.
|
||||
0x0, 0x2, 0x0, 0x0,
|
||||
// TheirOutputIndex tlv.
|
||||
@@ -134,16 +153,19 @@ var (
|
||||
0x6e, 0x60, 0x29, 0x23, 0x1d, 0x5e, 0xc5, 0xe6,
|
||||
0xbd, 0xf7, 0xd3, 0x9b, 0x16, 0x7d, 0x0, 0xff,
|
||||
0xc8, 0x22, 0x51, 0xb1, 0x5b, 0xa0, 0xbf, 0xd,
|
||||
// Custom blob tlv.
|
||||
0x5, 0x11, 0xfe, 0x00, 0x01, 0x00, 0x01, 0x0b, 0x63, 0x75, 0x73,
|
||||
0x74, 0x6f, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61,
|
||||
}
|
||||
|
||||
testRevocationLogWithAmts = NewRevocationLog(
|
||||
0, 1, testChannelCommit.CommitTx.TxHash(),
|
||||
fn.Some(localBalance), fn.Some(remoteBalance),
|
||||
[]*HTLCEntry{&testHTLCEntry},
|
||||
[]*HTLCEntry{&testHTLCEntry}, fn.Some(blobBytes),
|
||||
)
|
||||
testRevocationLogWithAmtsBytes = []byte{
|
||||
// Body length 52.
|
||||
0x34,
|
||||
// Body length 71.
|
||||
0x47,
|
||||
// OurOutputIndex tlv.
|
||||
0x0, 0x2, 0x0, 0x0,
|
||||
// TheirOutputIndex tlv.
|
||||
@@ -158,6 +180,9 @@ var (
|
||||
0x3, 0x3, 0xfd, 0x23, 0x28,
|
||||
// Remote Balance.
|
||||
0x4, 0x3, 0xfd, 0x0b, 0xb8,
|
||||
// Custom blob tlv.
|
||||
0x5, 0x11, 0xfe, 0x00, 0x01, 0x00, 0x01, 0x0b, 0x63, 0x75, 0x73,
|
||||
0x74, 0x6f, 0x6d, 0x20, 0x64, 0x61, 0x74, 0x61,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -269,7 +294,7 @@ func TestSerializeHTLCEntries(t *testing.T) {
|
||||
partialBytes := testHTLCEntryBytes[3:]
|
||||
|
||||
// Write the total length and RHash tlv.
|
||||
expectedBytes := []byte{0x36, 0x0, 0x20}
|
||||
expectedBytes := []byte{0x49, 0x0, 0x20}
|
||||
expectedBytes = append(expectedBytes, rHashBytes...)
|
||||
|
||||
// Append the rest.
|
||||
@@ -384,7 +409,7 @@ func TestDeserializeHTLCEntries(t *testing.T) {
|
||||
partialBytes := testHTLCEntryBytes[3:]
|
||||
|
||||
// Write the total length and RHash tlv.
|
||||
testBytes := append([]byte{0x36, 0x0, 0x20}, rHashBytes...)
|
||||
testBytes := append([]byte{0x4d, 0x0, 0x20}, rHashBytes...)
|
||||
|
||||
// Append the rest.
|
||||
testBytes = append(testBytes, partialBytes...)
|
||||
|
||||
Reference in New Issue
Block a user