UNPKG

@node-lightning/wire

Version:
500 lines (463 loc) 27.5 kB
import { ShortChannelId } from "@node-lightning/core"; import { expect } from "chai"; import { ReplyChannelRangeMessage } from "../../lib/messages/ReplyChannelRangeMessage"; describe("ReplyChannelRangeMessage", () => { describe(".deserialize", () => { it("raw encoded standard message", () => { // reply_channel_range // 0108 - type 264 // 43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000 - chain_hash // 0018df30 - first_blocknum 1630000 // 000007d0 - number_of_blocks 2000 // 01 - complete true // 00a9 - encoded_short_chan_id len 169 // 00 - encoded (non-zlib) // 18e05c0000010000 - short_channel_id (1630300, 1, 0) // 18e33a0000020000 // 18e33a0000030000 // 18e33a0000040000 // 18e33a0000050000 // 18e3ec0000010000 // 18e5140000030000 // 18e5140000040000 // 18e5140000050000 // 18e5140000060000 // 18e5140000070000 // 18e5160000010000 // 18e5160000020000 // 18e5160000030000 // 18e5160000040000 // 18e5170000060000 // 18e5180000030000 // 18e5180000040000 // 18e5190000010000 // 18e5190000020000 // 18e51d0000040000 const input = Buffer.from( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d00100a90018e05c000001000018e33a000002000018e33a000003000018e33a000004000018e33a000005000018e3ec000001000018e514000003000018e514000004000018e514000005000018e514000006000018e514000007000018e516000001000018e516000002000018e516000003000018e516000004000018e517000006000018e518000003000018e518000004000018e519000001000018e519000002000018e51d0000040000", "hex", ); const message = ReplyChannelRangeMessage.deserialize(input); expect(message.chainHash.toString("hex")).to.equal( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", ); expect(message.firstBlocknum).to.equal(1630000); expect(message.numberOfBlocks).to.equal(2000); // tslint:disable-next-line: no-unused-expression expect(message.fullInformation).to.be.true; expect(message.shortChannelIds.length).to.equal(21); // first 18e05c0000010000 expect(message.shortChannelIds[0].block).to.equal(1630300); expect(message.shortChannelIds[0].txIdx).to.equal(1); expect(message.shortChannelIds[0].voutIdx).to.equal(0); // last 18e51d0000040000 expect(message.shortChannelIds[20].block).to.equal(1631517); expect(message.shortChannelIds[20].txIdx).to.equal(4); expect(message.shortChannelIds[20].voutIdx).to.equal(0); }); it("raw encoded timestamp tlv message", () => { const input = Buffer.from( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d00100a90018e05c000001000018e33a000002000018e33a000003000018e33a000004000018e33a000005000018e3ec000001000018e514000003000018e514000004000018e514000005000018e514000006000018e514000007000018e516000001000018e516000002000018e516000003000018e516000004000018e517000006000018e518000003000018e518000004000018e519000001000018e519000002000018e51d000004000001a9005dfc854d5e1de1bc5e1896e85e1dec6c5e1dfbbe5e1896e85e1df4c55e1896e85e1e01795e1896e85e1df0525e185afa5dfcb9195e1e0aa25dfcb9195e1de1835dfcb9195e1e1d995dfcb8bf5e1de8765e1de9305dfcb8bf5e1de330000000005e1de4065dfcb8dd5e1e35fb000000005e1de8ff5dfcb919000000005e1de8605e13c6f9000000005dfcb9735e1de2435dfcb9cd5e185df05e1de6615dfcb9cd5e1defc05dfcba45", "hex", ); // reply_channel_range // 0108 - type 264 // 43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000 - chain_hash // 0018df30 - first_blocknum 1630000 // 000007d0 - number_of_blocks 2000 // 01 - complete true // 00a9 - encoded_short_chan_id len 169 // 00 - encoded (non-zlib) // 18e05c0000010000 - short_channel_id (1630300, 1, 0) // 18e33a0000020000 // 18e33a0000030000 // 18e33a0000040000 // 18e33a0000050000 // 18e3ec0000010000 // 18e5140000030000 // 18e5140000040000 // 18e5140000050000 // 18e5140000060000 // 18e5140000070000 // 18e5160000010000 // 18e5160000020000 // 18e5160000030000 // 18e5160000040000 // 18e5170000060000 // 18e5180000030000 // 18e5180000040000 // 18e5190000010000 // 18e5190000020000 // 18e51d0000040000 // 01 - tlv type timestamp // a9 - tlv length 169 // 00 - encoding raw // 5dfc854d 5e1de1bc - timestamps // 5e1896e8 5e1dec6c // 5e1dfbbe 5e1896e8 // 5e1df4c5 5e1896e8 // 5e1e0179 5e1896e8 // 5e1df052 5e185afa // 5dfcb919 5e1e0aa2 // 5dfcb919 5e1de183 // 5dfcb919 5e1e1d99 // 5dfcb8bf 5e1de876 // 5e1de930 5dfcb8bf // 5e1de330 00000000 // 5e1de406 5dfcb8dd // 5e1e35fb 00000000 // 5e1de8ff 5dfcb919 // 00000000 5e1de860 // 5e13c6f9 00000000 // 5dfcb973 5e1de243 // 5dfcb9cd 5e185df0 // 5e1de661 5dfcb9cd // 5e1defc0 5dfcba45 const message = ReplyChannelRangeMessage.deserialize(input); expect(message.chainHash.toString("hex")).to.equal( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", ); expect(message.firstBlocknum).to.equal(1630000); expect(message.numberOfBlocks).to.equal(2000); // tslint:disable-next-line: no-unused-expression expect(message.fullInformation).to.be.true; expect(message.shortChannelIds.length).to.equal(21); // first 18e05c0000010000 expect(message.shortChannelIds[0].block).to.equal(1630300); expect(message.shortChannelIds[0].txIdx).to.equal(1); expect(message.shortChannelIds[0].voutIdx).to.equal(0); // last 18e51d0000040000 expect(message.shortChannelIds[20].block).to.equal(1631517); expect(message.shortChannelIds[20].txIdx).to.equal(4); expect(message.shortChannelIds[20].voutIdx).to.equal(0); expect(message.timestamps.length).to.equal(21); expect(message.timestamps[0][0]).to.equal(1576830285); expect(message.timestamps[0][1]).to.equal(1579016636); expect(message.timestamps[20][0]).to.equal(1579020224); expect(message.timestamps[20][1]).to.equal(1576843845); }); it("zlib encoded standard message", () => { const payload = Buffer.from( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018e05c000004c201004f01789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c", "hex", ); // 0108 - type 264 // 43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000 -- chain_hash // 0018e05c - first blocknum 1630300 // 000004c2 - number_of_blocks 1218 // 01 - complete true // 004f - length 79 // 01 - zlib encoding // 789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c const msg = ReplyChannelRangeMessage.deserialize(payload); expect(msg.type).to.equal(264); expect(msg.chainHash.toString("hex")).to.equal( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", ); expect(msg.firstBlocknum).to.equal(1630300); expect(msg.numberOfBlocks).to.equal(1218); // tslint:disable-next-line: no-unused-expression expect(msg.fullInformation).to.be.true; expect(msg.shortChannelIds.length).to.equal(21); // first 18e05c0000010000 expect(msg.shortChannelIds[0].block).to.equal(1630300); expect(msg.shortChannelIds[0].txIdx).to.equal(1); expect(msg.shortChannelIds[0].voutIdx).to.equal(0); // last 18e51d0000040000 expect(msg.shortChannelIds[20].block).to.equal(1631517); expect(msg.shortChannelIds[20].txIdx).to.equal(4); expect(msg.shortChannelIds[20].voutIdx).to.equal(0); }); it("zlib encoded timestamp tlv message", () => { const payload = Buffer.from( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018e05c000004c201004f01789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c018701789c8bfdd3ea1b27fb704f9cc4b41771b26f72e2647fef83b0bf1c05d3728c9510fe87a03889a85fb17f764ac6c9712d02d3b20f9b217cd999b17f76ec8f937d511627fbd200c27e6cc0000471b24fd880fcbb7172a6bf21fc17ff417aa0ec8438e1633f416ca058719cec2367207d364e22f6439cecb344305bf6fd81d83fbb5c0152f04c8a", "hex", ); // 0108 - type 264 // 43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000 -- chain_hash // 0018e05c - first blocknum 1630300 // 000004c2 - number_of_blocks 1218 // 01 - complete true // 004f - length 79 // 01 - zlib encoding // 789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c // 01 - tlv type 1 - timestamps // 87 - tlv length 135 // 01 - encoding type zlib // 789c8bfdd3ea1b27fb704f9cc4b41771b26f72e2647fef83b0bf1c05d3728c9510fe87a03889a85fb17f764ac6c9712d02d3b20f9b217cd999b17f76ec8f937d511627fbd200c27e6cc0000471b24fd880fcbb7172a6bf21fc17ff417aa0ec8438e1633f416ca058719cec2367207d364e22f6439cecb344305bf6fd81d83fbb5c0152f04c8a const msg = ReplyChannelRangeMessage.deserialize(payload); expect(msg.type).to.equal(264); expect(msg.chainHash.toString("hex")).to.equal( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", ); expect(msg.firstBlocknum).to.equal(1630300); expect(msg.numberOfBlocks).to.equal(1218); // tslint:disable-next-line: no-unused-expression expect(msg.fullInformation).to.be.true; expect(msg.shortChannelIds.length).to.equal(21); // first 18e05c0000010000 expect(msg.shortChannelIds[0].block).to.equal(1630300); expect(msg.shortChannelIds[0].txIdx).to.equal(1); expect(msg.shortChannelIds[0].voutIdx).to.equal(0); // last 18e51d0000040000 expect(msg.shortChannelIds[20].block).to.equal(1631517); expect(msg.shortChannelIds[20].txIdx).to.equal(4); expect(msg.shortChannelIds[20].voutIdx).to.equal(0); expect(msg.timestamps.length).to.equal(21); expect(msg.timestamps[0][0]).to.equal(1576830285); expect(msg.timestamps[0][1]).to.equal(1579016636); expect(msg.timestamps[20][0]).to.equal(1579020224); expect(msg.timestamps[20][1]).to.equal(1576843845); }); it("message with timestamps and checksums tlvs", () => { const payload = Buffer.from( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d001004f01789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c018201789c8bfdd3ea1b276f6c132731ed459cbced9b38f9403b08db3d054247314268c74b711251bf62ffec948c938f5182d0c6cc10ba4c31f6cf8efd71f2362271f2561b206c930d0c400014eb03f2efc6c999fe86f0adea417a206ccb0771c2c77e82d840b162a0798781f4d93889d80f71f2e60fc16c794787d83fbb5c019eec42d803a843cf660e444c75687557813614898dff32107fd253ce731b5c882a803d562649242f4a0d45f146c41447f538f60442d805e346063b19348e63c85fedade928b006c91441b72e0d61bcd092df9e34893fb02f5fd0a8444b31bfebd06e0000000079ce4ae844013b97424cb326000000005114ef729478639700000000f428dd19671d27a900000000643769d1c6b7c9d70d96cb8ff4dfc3a0c05c8f134ba933dc3ee677e34242f2e0", "hex", ); // 0108 - type // 43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000 - chain_hash // 0018df30 - first_blocknum // 000007d0 - num_blocks // 01 - complete // 004f - encoded short_id length (169) // 01 - encoding type (zlib) // 789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c // 01 - tlv type 1 (timestamps) // 82 - tlv length 130 // 01 - encoding type (zlib) // 789c8bfdd3ea1b276f6c132731ed459cbced9b38f9403b08db3d054247314268c74b711251bf62ffec948c938f5182d0c6cc10ba4c31f6cf8efd71f2362271f2561b206c930d0c400014eb03f2efc6c999fe86f0adea417a206ccb0771c2c77e82d840b162a0798781f4d93889d80f71f2e60fc16c794787d83fbb5c019eec42d8 // decoded: // 5dfc854d 5e1f333c // 5e1896e8 5e1f3dec // 5e1f513e 5e1896e8 // 5e1f4764 5e1896e8 // 5e1f5a01 5e1896e8 // 5e1f41d2 5e185afa // 5dfcb919 5e1f5c22 // 5dfcb919 5e1f3303 // 5dfcb919 5e1f7621 // 5dfcb8bf 5e1f3c14 // 5e1f3ab0 5dfcb8bf // 5e1f34b0 00000000 // 5e1f3c8e 5dfcb8dd // 5e1e35fb 00000000 // 5e1f3a7f 5dfcb919 // 00000000 5e1f39e0 // 5e13c6f9 00000000 // 5dfcb973 5e1f33c3 // 5dfcb9cd 5e185df0 // 5e1f37e1 5dfcb9cd // 5e1f4140 5dfcba45 // 03 - tlv type 3 (checksums) // a8 - tlv length 168 // 43cf660e 444c7568 // 75578136 14898dff // 32107fd2 53ce731b // 5c882a80 3d562649 // 242f4a0d 45f146c4 // 1447f538 f60442d8 // 05e34606 3b19348e // 63c85fed ade928b0 // 06c91441 b72e0d61 // bcd092df 9e34893f // b02f5fd0 a8444b31 // bfebd06e 00000000 // 79ce4ae8 44013b97 // 424cb326 00000000 // 5114ef72 94786397 // 00000000 f428dd19 // 671d27a9 00000000 // 643769d1 c6b7c9d7 // 0d96cb8f f4dfc3a0 // c05c8f13 4ba933dc // 3ee677e3 4242f2e0 const msg = ReplyChannelRangeMessage.deserialize(payload); expect(msg.checksums.length).to.equal(21); expect(msg.checksums[0][0]).to.equal(0x43cf660e); expect(msg.checksums[0][1]).to.equal(0x444c7568); expect(msg.checksums[20][0]).to.equal(0x3ee677e3); expect(msg.checksums[20][1]).to.equal(0x4242f2e0); }); }); describe(".serialize", () => { it("raw encoded standard message", () => { const message = new ReplyChannelRangeMessage(); message.chainHash = Buffer.from( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", "hex", ); message.firstBlocknum = 1630000; message.numberOfBlocks = 2000; message.fullInformation = true; message.shortChannelIds.push(new ShortChannelId(1630300, 1, 0)); // 18e05c0000010000 message.shortChannelIds.push(new ShortChannelId(1631517, 4, 0)); // 18e51d0000040000 expect(message.serialize(0).toString("hex")).to.equal( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d00100110018e05c000001000018e51d0000040000", ); }); it("raw encoded timestamp tlv message", () => { const message = new ReplyChannelRangeMessage(); message.chainHash = Buffer.from( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", "hex", ); message.firstBlocknum = 1630000; message.numberOfBlocks = 2000; message.fullInformation = true; message.shortChannelIds.push(new ShortChannelId(1630300, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631212, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 7, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631511, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631517, 4, 0)); message.timestamps = [ [1576830285, 1579016636], [1578669800, 1579019372], [1579023294, 1578669800], [1579021509, 1578669800], [1579024761, 1578669800], [1579020370, 1578654458], [1576843545, 1579027106], [1576843545, 1579016579], [1576843545, 1579031961], [1576843455, 1579018358], [1579018544, 1576843455], [1579017008, 0], [1579017222, 1576843485], [1579038203, 0], [1579018495, 1576843545], [0, 1579018336], [1578354425, 0], [1576843635, 1579016771], [1576843725, 1578655216], [1579017825, 1576843725], [1579020224, 1576843845], ]; expect(message.serialize(0).toString("hex")).to.equal( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d00100a90018e05c000001000018e33a000002000018e33a000003000018e33a000004000018e33a000005000018e3ec000001000018e514000003000018e514000004000018e514000005000018e514000006000018e514000007000018e516000001000018e516000002000018e516000003000018e516000004000018e517000006000018e518000003000018e518000004000018e519000001000018e519000002000018e51d000004000001a9005dfc854d5e1de1bc5e1896e85e1dec6c5e1dfbbe5e1896e85e1df4c55e1896e85e1e01795e1896e85e1df0525e185afa5dfcb9195e1e0aa25dfcb9195e1de1835dfcb9195e1e1d995dfcb8bf5e1de8765e1de9305dfcb8bf5e1de330000000005e1de4065dfcb8dd5e1e35fb000000005e1de8ff5dfcb919000000005e1de8605e13c6f9000000005dfcb9735e1de2435dfcb9cd5e185df05e1de6615dfcb9cd5e1defc05dfcba45", ); }); it("zlib encoded standard message", () => { const message = new ReplyChannelRangeMessage(); message.chainHash = Buffer.from( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", "hex", ); message.firstBlocknum = 1630300; message.numberOfBlocks = 1218; message.fullInformation = true; message.shortChannelIds.push(new ShortChannelId(1630300, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631212, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 7, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631511, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631517, 4, 0)); expect(message.serialize(1).toString("hex")).to.equal( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018e05c000004c201004f01789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c", ); }); it("zlib encoded timestamp tlv message", () => { const message = new ReplyChannelRangeMessage(); message.chainHash = Buffer.from( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", "hex", ); message.firstBlocknum = 1630300; message.numberOfBlocks = 1218; message.fullInformation = true; message.shortChannelIds.push(new ShortChannelId(1630300, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631034, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631212, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 5, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631508, 7, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631510, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631511, 6, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 3, 0)); message.shortChannelIds.push(new ShortChannelId(1631512, 4, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 1, 0)); message.shortChannelIds.push(new ShortChannelId(1631513, 2, 0)); message.shortChannelIds.push(new ShortChannelId(1631517, 4, 0)); message.timestamps = [ [1576830285, 1579016636], [1578669800, 1579019372], [1579023294, 1578669800], [1579021509, 1578669800], [1579024761, 1578669800], [1579020370, 1578654458], [1576843545, 1579027106], [1576843545, 1579016579], [1576843545, 1579031961], [1576843455, 1579018358], [1579018544, 1576843455], [1579017008, 0], [1579017222, 1576843485], [1579038203, 0], [1579018495, 1576843545], [0, 1579018336], [1578354425, 0], [1576843635, 1579016771], [1576843725, 1578655216], [1579017825, 1576843725], [1579020224, 1576843845], ]; expect(message.serialize(1).toString("hex")).to.equal( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018e05c000004c201004f01789c2dccc10d80300c4351435b580095f4d0453a0bc323216e0c81d2fcd3931c3b765fd222d933a41513662cee17bdf788bb9bb1e086bb5be9d7f8eb269cbb93be911b7963d7d8f599ff9faf187c018701789c8bfdd3ea1b27fb704f9cc4b41771b26f72e2647fef83b0bf1c05d3728c9510fe87a03889a85fb17f764ac6c9712d02d3b20f9b217cd999b17f76ec8f937d511627fbd200c27e6cc0000471b24fd880fcbb7172a6bf21fc17ff417aa0ec8438e1633f416ca058719cec2367207d364e22f6439cecb344305bf6fd81d83fbb5c0152f04c8a", ); }); it("message with timestamp and checksum tlvs", () => { const message = new ReplyChannelRangeMessage(); message.chainHash = Buffer.from( "43497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea330900000000", "hex", ); message.firstBlocknum = 1630000; message.numberOfBlocks = 2000; message.fullInformation = true; message.shortChannelIds.push(new ShortChannelId(1630300, 1, 0)); // 18e05c0000010000 message.shortChannelIds.push(new ShortChannelId(1631517, 4, 0)); // 18e51d0000040000 message.checksums.push([1, 2], [3, 4]); expect(message.serialize(0).toString("hex")).to.equal( "010843497fd7f826957108f4a30fd9cec3aeba79972084e90ead01ea3309000000000018df30000007d00100110018e05c000001000018e51d0000040000031000000001000000020000000300000004", ); }); }); });