Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | 1x 1x 1x | import { Tx } from '@node-dlc/bitcoin';
import { DlcAccept, DlcOffer, DlcTransactions } from '..';
/**
* DlcClose Metadata object contains information required for verifying DlcClose
* message.
*/
export class DlcCloseMetadata {
/**
* Convert JSON to DlcCloseMetadata
* @param json
*/
public static fromJSON(json: IDlcCloseMetadataJSON): DlcCloseMetadata {
const instance = new DlcCloseMetadata();
instance.offerFundingPubKey = Buffer.from(json.offerFundingPubKey, 'hex');
instance.acceptFundingPubKey = Buffer.from(json.acceptFundingPubKey, 'hex');
instance.offerPayoutSPK = Buffer.from(json.offerPayoutSPK, 'hex');
instance.acceptPayoutSPK = Buffer.from(json.acceptPayoutSPK, 'hex');
instance.offerPayoutSerialId = BigInt(json.offerPayoutSerialId);
instance.acceptPayoutSerialId = BigInt(json.acceptPayoutSerialId);
instance.feeRatePerVb = BigInt(json.feeRatePerVb);
instance.fundTx = Tx.fromHex(json.fundTx);
instance.fundTxVout = json.fundTxVout;
return instance;
}
public static fromDlcMessages(
dlcOffer: DlcOffer,
dlcAccept: DlcAccept,
dlcTxs: DlcTransactions,
): DlcCloseMetadata {
const instance = new DlcCloseMetadata();
instance.offerFundingPubKey = dlcOffer.fundingPubkey;
instance.acceptFundingPubKey = dlcAccept.fundingPubkey;
instance.offerPayoutSPK = dlcOffer.payoutSpk;
instance.acceptPayoutSPK = dlcAccept.payoutSpk;
instance.offerPayoutSerialId = dlcOffer.payoutSerialId;
instance.acceptPayoutSerialId = dlcAccept.payoutSerialId;
instance.feeRatePerVb = dlcOffer.feeRatePerVb;
instance.fundTx = dlcTxs.fundTx;
instance.fundTxVout = dlcTxs.fundTxVout;
return instance;
}
public offerFundingPubKey: Buffer;
public acceptFundingPubKey: Buffer;
public offerPayoutSPK: Buffer;
public acceptPayoutSPK: Buffer;
public offerPayoutSerialId: bigint;
public acceptPayoutSerialId: bigint;
public feeRatePerVb: bigint;
public fundTx: Tx;
public fundTxVout: number;
/**
* Converts dlc_close_metadata to JSON
*/
public toJSON(): IDlcCloseMetadataJSON {
return {
offerFundingPubKey: this.offerFundingPubKey.toString('hex'),
acceptFundingPubKey: this.acceptFundingPubKey.toString('hex'),
offerPayoutSPK: this.offerPayoutSPK.toString('hex'),
acceptPayoutSPK: this.acceptPayoutSPK.toString('hex'),
offerPayoutSerialId: Number(this.offerPayoutSerialId),
acceptPayoutSerialId: Number(this.acceptPayoutSerialId),
feeRatePerVb: Number(this.feeRatePerVb),
fundTx: this.fundTx.serialize().toString('hex'),
fundTxVout: this.fundTxVout,
};
}
public toDlcMessages(): {
dlcOffer: DlcOffer;
dlcAccept: DlcAccept;
dlcTxs: DlcTransactions;
} {
const dlcOffer = new DlcOffer();
const dlcAccept = new DlcAccept();
const dlcTxs = new DlcTransactions();
dlcOffer.fundingPubkey = this.offerFundingPubKey;
dlcAccept.fundingPubkey = this.acceptFundingPubKey;
dlcOffer.payoutSpk = this.offerPayoutSPK;
dlcAccept.payoutSpk = this.acceptPayoutSPK;
dlcOffer.payoutSerialId = this.offerPayoutSerialId;
dlcAccept.payoutSerialId = this.acceptPayoutSerialId;
dlcOffer.feeRatePerVb = this.feeRatePerVb;
dlcTxs.fundTx = this.fundTx;
dlcTxs.fundTxVout = this.fundTxVout;
return { dlcOffer, dlcAccept, dlcTxs };
}
}
export interface IDlcCloseMetadataJSON {
offerFundingPubKey: string;
acceptFundingPubKey: string;
offerPayoutSPK: string;
acceptPayoutSPK: string;
offerPayoutSerialId: number;
acceptPayoutSerialId: number;
feeRatePerVb: number;
fundTx: string;
fundTxVout: number;
}
|