From 1a4db29f396a98a8d45ded55de459b33e3c1b77f Mon Sep 17 00:00:00 2001 From: Dillion Verma Date: Fri, 13 Aug 2021 10:46:14 -0400 Subject: [PATCH] Add fundingsigs to dlc close --- .../__tests__/messages/DlcCloseV0.spec.ts | 20 +++++++++++++++++++ packages/messaging/lib/messages/DlcClose.ts | 12 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/packages/messaging/__tests__/messages/DlcCloseV0.spec.ts b/packages/messaging/__tests__/messages/DlcCloseV0.spec.ts index e77591af..f05612fd 100644 --- a/packages/messaging/__tests__/messages/DlcCloseV0.spec.ts +++ b/packages/messaging/__tests__/messages/DlcCloseV0.spec.ts @@ -2,6 +2,7 @@ import { expect } from 'chai'; import { DlcClose, DlcCloseV0 } from '../../lib/messages/DlcClose'; import { FundingInputV0 } from '../../lib/messages/FundingInput'; +import { FundingSignaturesV0 } from '../../lib/messages/FundingSignaturesV0'; import { MessageType } from '../../lib/MessageType'; describe('DlcClose', () => { @@ -37,6 +38,18 @@ describe('DlcClose', () => { 'hex', ); + const fundingSignaturesV0 = Buffer.from( + 'fda718' + // type funding_signatures_v0 + '70' + // length + '0001' + // num_witnesses + '0002' + // stack_len + '0047' + // stack_element_len + '304402203812d7d194d44ec68f244cc3fd68507c563ec8c729fdfa3f4a79395b98abe84f0220704ab3f3ffd9c50c2488e59f90a90465fccc2d924d67a1e98a133676bf52f37201' + // stack_element + '0021' + // stack_element_len + '02dde41aa1f21671a2e28ad92155d2d66e0b5428de15d18db4cbcf216bf00de919', // stack_element + 'hex', + ); + const dlcCloseHex = Buffer.concat([ type, contractId, @@ -46,6 +59,7 @@ describe('DlcClose', () => { fundInputSerialId, fundingInputsLen, fundingInputV0, + fundingSignaturesV0, ]); beforeEach(() => { @@ -56,6 +70,9 @@ describe('DlcClose', () => { instance.acceptPayoutSatoshis = BigInt(100000000); instance.fundInputSerialId = BigInt(123456789); instance.fundingInputs = [FundingInputV0.deserialize(fundingInputV0)]; + instance.fundingSignatures = FundingSignaturesV0.deserialize( + fundingSignaturesV0, + ); }); describe('deserialize', () => { @@ -93,6 +110,9 @@ describe('DlcClose', () => { expect(instance.fundingInputs[0].serialize().toString('hex')).to.equal( fundingInputV0.toString('hex'), ); + expect(instance.fundingSignatures.serialize().toString('hex')).to.equal( + fundingSignaturesV0.toString('hex'), + ); }); it('has correct type', () => { diff --git a/packages/messaging/lib/messages/DlcClose.ts b/packages/messaging/lib/messages/DlcClose.ts index d449fbdf..19318ec3 100644 --- a/packages/messaging/lib/messages/DlcClose.ts +++ b/packages/messaging/lib/messages/DlcClose.ts @@ -4,6 +4,10 @@ import { MessageType } from '../MessageType'; import { getTlv } from '../serialize/getTlv'; import { IDlcMessage } from './DlcMessage'; import { FundingInputV0, IFundingInputV0JSON } from './FundingInput'; +import { + FundingSignaturesV0, + IFundingSignaturesV0JSON, +} from './FundingSignaturesV0'; export abstract class DlcClose { public static deserialize(buf: Buffer): DlcCloseV0 { @@ -51,6 +55,9 @@ export class DlcCloseV0 extends DlcClose implements IDlcMessage { for (let i = 0; i < fundingInputsLen; i++) { instance.fundingInputs.push(FundingInputV0.deserialize(getTlv(reader))); } + instance.fundingSignatures = FundingSignaturesV0.deserialize( + getTlv(reader), + ); return instance; } @@ -72,6 +79,8 @@ export class DlcCloseV0 extends DlcClose implements IDlcMessage { public fundingInputs: FundingInputV0[] = []; + public fundingSignatures: FundingSignaturesV0; + /** * Serializes the close_dlc_v0 message into a Buffer */ @@ -88,6 +97,7 @@ export class DlcCloseV0 extends DlcClose implements IDlcMessage { for (const fundingInput of this.fundingInputs) { writer.writeBytes(fundingInput.serialize()); } + writer.writeBytes(this.fundingSignatures.serialize()); return writer.toBuffer(); } @@ -124,6 +134,7 @@ export class DlcCloseV0 extends DlcClose implements IDlcMessage { acceptPayoutSatoshis: Number(this.acceptPayoutSatoshis), fundInputSerialId: Number(this.fundInputSerialId), fundingInputs: this.fundingInputs.map((input) => input.toJSON()), + fundingSignatures: this.fundingSignatures.toJSON(), }; } } @@ -136,4 +147,5 @@ export interface IDlcCloseV0JSON { acceptPayoutSatoshis: number; fundInputSerialId: number; fundingInputs: IFundingInputV0JSON[]; + fundingSignatures: IFundingSignaturesV0JSON; }