@atomicfinance/bitcoin-dlc-provider 3.6.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nvmrc +1 -1
- package/.turbo/turbo-build.log +1 -0
- package/.turbo/turbo-test.log +0 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/messaging/README.md +24 -0
- package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
- package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
- package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
- package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
- package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
- package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
- package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
- package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
- package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
- package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
- package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
- package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
- package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
- package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
- package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
- package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
- package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
- package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
- package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
- package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
- package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
- package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
- package/.yalc/@node-dlc/messaging/package.json +42 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
- package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
- package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
- package/CHANGELOG.md +83 -0
- package/dist/BitcoinDlcProvider.d.ts +17 -16
- package/dist/BitcoinDlcProvider.js +375 -317
- package/dist/BitcoinDlcProvider.js.map +1 -1
- package/dist/utils/Utils.d.ts +6 -6
- package/dist/utils/Utils.js +4 -4
- package/dist/utils/Utils.js.map +1 -1
- package/lib/BitcoinDlcProvider.ts +637 -621
- package/lib/utils/Utils.ts +19 -24
- package/package.json +13 -11
- package/yalc.lock +10 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
import secp256k1 from 'secp256k1';
|
|
3
|
+
|
|
4
|
+
import { MessageType, PROTOCOL_VERSION } from '../MessageType';
|
|
5
|
+
import { deserializeTlv } from '../serialize/deserializeTlv';
|
|
6
|
+
import { getTlv } from '../serialize/getTlv';
|
|
7
|
+
import { BatchFundingGroup } from './BatchFundingGroup';
|
|
8
|
+
import {
|
|
9
|
+
CetAdaptorSignatures,
|
|
10
|
+
ICetAdaptorSignaturesJSON,
|
|
11
|
+
} from './CetAdaptorSignatures';
|
|
12
|
+
import { IDlcMessage } from './DlcMessage';
|
|
13
|
+
import { FundingSignatures, IFundingSignaturesJSON } from './FundingSignatures';
|
|
14
|
+
import { ScriptWitnessV0 } from './ScriptWitnessV0';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* DlcSign gives all of the initiator's signatures, which allows the
|
|
18
|
+
* receiver to broadcast the funding transaction with both parties being
|
|
19
|
+
* fully committed to all closing transactions.
|
|
20
|
+
* Updated to support dlcspecs PR #163 format.
|
|
21
|
+
*/
|
|
22
|
+
export class DlcSign implements IDlcMessage {
|
|
23
|
+
public static type = MessageType.DlcSign;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates a DlcSign from JSON data (e.g., from test vectors)
|
|
27
|
+
* Handles both our internal format and external test vector formats
|
|
28
|
+
* @param json JSON object representing a DLC sign
|
|
29
|
+
*/
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
31
|
+
public static fromJSON(json: any): DlcSign {
|
|
32
|
+
const instance = new DlcSign();
|
|
33
|
+
|
|
34
|
+
// Helper function to parse DER-encoded signature and extract raw r,s values (64 bytes total)
|
|
35
|
+
const parseDerSignature = (hexSig: string): Buffer => {
|
|
36
|
+
const sigBuffer = Buffer.from(hexSig, 'hex');
|
|
37
|
+
|
|
38
|
+
// If it's already 64 bytes, assume it's raw
|
|
39
|
+
if (sigBuffer.length === 64) {
|
|
40
|
+
return sigBuffer;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Use secp256k1.signatureImport to parse DER signature
|
|
44
|
+
try {
|
|
45
|
+
const rawSig = secp256k1.signatureImport(sigBuffer);
|
|
46
|
+
return Buffer.from(rawSig);
|
|
47
|
+
} catch (ex) {
|
|
48
|
+
throw new Error(`Invalid DER signature: ${ex.message}`);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Handle both internal and external field naming conventions
|
|
53
|
+
instance.protocolVersion =
|
|
54
|
+
json.protocolVersion || json.protocol_version || PROTOCOL_VERSION;
|
|
55
|
+
instance.contractId = Buffer.from(
|
|
56
|
+
json.contractId || json.contract_id,
|
|
57
|
+
'hex',
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
// Parse CET adaptor signatures
|
|
61
|
+
instance.cetAdaptorSignatures = DlcSign.parseCetAdaptorSignaturesFromJSON(
|
|
62
|
+
json.cetAdaptorSignatures || json.cet_adaptor_signatures,
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
// Parse refund signature - handle DER encoding
|
|
66
|
+
const refundSigHex = json.refundSignature || json.refund_signature;
|
|
67
|
+
instance.refundSignature = parseDerSignature(refundSigHex);
|
|
68
|
+
|
|
69
|
+
// Parse funding signatures
|
|
70
|
+
instance.fundingSignatures = DlcSign.parseFundingSignaturesFromJSON(
|
|
71
|
+
json.fundingSignatures || json.funding_signatures,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
return instance;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Parses CetAdaptorSignatures from JSON
|
|
79
|
+
* @param cetSigsJson JSON object representing CET adaptor signatures
|
|
80
|
+
*/
|
|
81
|
+
private static parseCetAdaptorSignaturesFromJSON(
|
|
82
|
+
cetSigsJson: any,
|
|
83
|
+
): CetAdaptorSignatures {
|
|
84
|
+
const instance = new CetAdaptorSignatures();
|
|
85
|
+
|
|
86
|
+
if (
|
|
87
|
+
cetSigsJson.ecdsaAdaptorSignatures ||
|
|
88
|
+
cetSigsJson.ecdsa_adaptor_signatures
|
|
89
|
+
) {
|
|
90
|
+
const ecdsaSigs =
|
|
91
|
+
cetSigsJson.ecdsaAdaptorSignatures ||
|
|
92
|
+
cetSigsJson.ecdsa_adaptor_signatures;
|
|
93
|
+
instance.sigs = ecdsaSigs.map((sig: any) => {
|
|
94
|
+
// The test vectors use 'signature' field, but our internal format uses encryptedSig/dleqProof
|
|
95
|
+
// For now, we'll parse the signature as encryptedSig and leave dleqProof empty
|
|
96
|
+
const sigBuffer = Buffer.from(sig.signature, 'hex');
|
|
97
|
+
return {
|
|
98
|
+
encryptedSig: sigBuffer.slice(0, 65), // First 65 bytes
|
|
99
|
+
dleqProof:
|
|
100
|
+
sigBuffer.length > 65 ? sigBuffer.slice(65, 162) : Buffer.alloc(97), // Next 97 bytes or empty
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return instance;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Parses FundingSignatures from JSON
|
|
110
|
+
* @param fundingSigsJson JSON object representing funding signatures
|
|
111
|
+
*/
|
|
112
|
+
private static parseFundingSignaturesFromJSON(
|
|
113
|
+
fundingSigsJson: any,
|
|
114
|
+
): FundingSignatures {
|
|
115
|
+
const instance = new FundingSignatures();
|
|
116
|
+
|
|
117
|
+
if (
|
|
118
|
+
fundingSigsJson.fundingSignatures ||
|
|
119
|
+
fundingSigsJson.funding_signatures
|
|
120
|
+
) {
|
|
121
|
+
const fundingSigs =
|
|
122
|
+
fundingSigsJson.fundingSignatures || fundingSigsJson.funding_signatures;
|
|
123
|
+
instance.witnessElements = fundingSigs.map((sig: any) =>
|
|
124
|
+
(sig.witnessElements || sig.witness_elements || []).map(
|
|
125
|
+
(element: any) => {
|
|
126
|
+
// Create a ScriptWitnessV0 instance for each witness element
|
|
127
|
+
const witness = new ScriptWitnessV0();
|
|
128
|
+
witness.witness = Buffer.from(element.witness || element, 'hex');
|
|
129
|
+
return witness;
|
|
130
|
+
},
|
|
131
|
+
),
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return instance;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Deserializes a sign_dlc message
|
|
140
|
+
* @param buf
|
|
141
|
+
*/
|
|
142
|
+
public static deserialize(buf: Buffer): DlcSign {
|
|
143
|
+
const instance = new DlcSign();
|
|
144
|
+
const reader = new BufferReader(buf);
|
|
145
|
+
|
|
146
|
+
reader.readUInt16BE(); // read type
|
|
147
|
+
|
|
148
|
+
// New fields as per dlcspecs PR #163
|
|
149
|
+
instance.protocolVersion = reader.readUInt32BE();
|
|
150
|
+
instance.contractId = reader.readBytes(32);
|
|
151
|
+
|
|
152
|
+
// Read CET adaptor signatures directly to match serialize format (no TLV wrapping)
|
|
153
|
+
instance.cetAdaptorSignatures = CetAdaptorSignatures.deserialize(
|
|
154
|
+
reader.buffer.subarray(reader.position),
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
// Skip past the CET adaptor signatures we just read
|
|
158
|
+
const cetLength = instance.cetAdaptorSignatures.serialize().length;
|
|
159
|
+
reader.position += cetLength;
|
|
160
|
+
|
|
161
|
+
instance.refundSignature = reader.readBytes(64);
|
|
162
|
+
|
|
163
|
+
// Read funding signatures directly to match serialize format (no TLV wrapping)
|
|
164
|
+
instance.fundingSignatures = FundingSignatures.deserialize(
|
|
165
|
+
reader.buffer.subarray(reader.position),
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
// Skip past the funding signatures we just read
|
|
169
|
+
const fundingLength = instance.fundingSignatures.serialize().length;
|
|
170
|
+
reader.position += fundingLength;
|
|
171
|
+
|
|
172
|
+
// Parse TLV stream as per dlcspecs PR #163
|
|
173
|
+
while (!reader.eof) {
|
|
174
|
+
const buf = getTlv(reader);
|
|
175
|
+
const tlvReader = new BufferReader(buf);
|
|
176
|
+
const { type } = deserializeTlv(tlvReader);
|
|
177
|
+
|
|
178
|
+
switch (Number(type)) {
|
|
179
|
+
case MessageType.BatchFundingGroup:
|
|
180
|
+
if (!instance.batchFundingGroups) {
|
|
181
|
+
instance.batchFundingGroups = [];
|
|
182
|
+
}
|
|
183
|
+
instance.batchFundingGroups.push(BatchFundingGroup.deserialize(buf));
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
// Store unknown TLVs for future compatibility
|
|
187
|
+
if (!instance.unknownTlvs) {
|
|
188
|
+
instance.unknownTlvs = [];
|
|
189
|
+
}
|
|
190
|
+
instance.unknownTlvs.push({ type: Number(type), data: buf });
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return instance;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* The type for sign_dlc message. sign_dlc = 42782
|
|
200
|
+
*/
|
|
201
|
+
public type = DlcSign.type;
|
|
202
|
+
|
|
203
|
+
// New fields as per dlcspecs PR #163
|
|
204
|
+
public protocolVersion: number = PROTOCOL_VERSION; // Default to current protocol version
|
|
205
|
+
|
|
206
|
+
// Existing fields
|
|
207
|
+
public contractId: Buffer;
|
|
208
|
+
|
|
209
|
+
public cetAdaptorSignatures: CetAdaptorSignatures;
|
|
210
|
+
|
|
211
|
+
public refundSignature: Buffer;
|
|
212
|
+
|
|
213
|
+
public fundingSignatures: FundingSignatures;
|
|
214
|
+
|
|
215
|
+
public batchFundingGroups?: BatchFundingGroup[];
|
|
216
|
+
|
|
217
|
+
// Store unknown TLVs for forward compatibility
|
|
218
|
+
public unknownTlvs?: Array<{ type: number; data: Buffer }>;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Validates correctness of all fields
|
|
222
|
+
* Updated validation rules as per dlcspecs PR #163
|
|
223
|
+
* @throws Will throw an error if validation fails
|
|
224
|
+
*/
|
|
225
|
+
public validate(): void {
|
|
226
|
+
// 1. Type is set automatically in class
|
|
227
|
+
// 2. protocol_version validation
|
|
228
|
+
if (this.protocolVersion !== PROTOCOL_VERSION) {
|
|
229
|
+
throw new Error(
|
|
230
|
+
`Unsupported protocol version: ${this.protocolVersion}, expected: ${PROTOCOL_VERSION}`,
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// 3. contract_id must be 32 bytes
|
|
235
|
+
if (!this.contractId || this.contractId.length !== 32) {
|
|
236
|
+
throw new Error('contractId must be 32 bytes');
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// 4. Other validations would depend on specific business logic
|
|
240
|
+
// TODO: Add more specific validation rules as needed
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Converts sign_dlc to JSON (canonical rust-dlc format)
|
|
245
|
+
*/
|
|
246
|
+
public toJSON(): IDlcSignJSON {
|
|
247
|
+
// Convert raw signature back to DER format for canonical rust-dlc JSON
|
|
248
|
+
const derRefundSignature = secp256k1.signatureExport(this.refundSignature);
|
|
249
|
+
|
|
250
|
+
return {
|
|
251
|
+
protocolVersion: this.protocolVersion,
|
|
252
|
+
contractId: this.contractId.toString('hex'),
|
|
253
|
+
cetAdaptorSignatures: this.cetAdaptorSignatures.toJSON(),
|
|
254
|
+
refundSignature: Buffer.from(derRefundSignature).toString('hex'),
|
|
255
|
+
fundingSignatures: this.fundingSignatures.toJSON(),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Serializes the sign_dlc message into a Buffer
|
|
261
|
+
* Updated serialization format as per dlcspecs PR #163
|
|
262
|
+
*/
|
|
263
|
+
public serialize(): Buffer {
|
|
264
|
+
const writer = new BufferWriter();
|
|
265
|
+
writer.writeUInt16BE(this.type);
|
|
266
|
+
|
|
267
|
+
// New fields as per dlcspecs PR #163
|
|
268
|
+
writer.writeUInt32BE(this.protocolVersion);
|
|
269
|
+
writer.writeBytes(this.contractId);
|
|
270
|
+
writer.writeBytes(this.cetAdaptorSignatures.serialize());
|
|
271
|
+
writer.writeBytes(this.refundSignature);
|
|
272
|
+
writer.writeBytes(this.fundingSignatures.serialize());
|
|
273
|
+
|
|
274
|
+
// TLV stream as per dlcspecs PR #163
|
|
275
|
+
if (this.batchFundingGroups)
|
|
276
|
+
this.batchFundingGroups.forEach((fundingInfo) =>
|
|
277
|
+
writer.writeBytes(fundingInfo.serialize()),
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
// Write unknown TLVs for forward compatibility
|
|
281
|
+
if (this.unknownTlvs) {
|
|
282
|
+
this.unknownTlvs.forEach((tlv) => {
|
|
283
|
+
writer.writeBytes(tlv.data);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return writer.toBuffer();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export interface IDlcSignJSON {
|
|
292
|
+
protocolVersion: number;
|
|
293
|
+
contractId: string;
|
|
294
|
+
cetAdaptorSignatures: ICetAdaptorSignaturesJSON;
|
|
295
|
+
refundSignature: string;
|
|
296
|
+
fundingSignatures: IFundingSignaturesJSON;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
export class DlcSignContainer {
|
|
300
|
+
private signs: DlcSign[] = [];
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Adds a DlcSign to the container.
|
|
304
|
+
* @param sign The DlcSign to add.
|
|
305
|
+
*/
|
|
306
|
+
public addSign(sign: DlcSign): void {
|
|
307
|
+
this.signs.push(sign);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Returns all DlcSigns in the container.
|
|
312
|
+
* @returns An array of DlcSign instances.
|
|
313
|
+
*/
|
|
314
|
+
public getSigns(): DlcSign[] {
|
|
315
|
+
return this.signs;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Serializes all DlcSigns in the container to a Buffer.
|
|
320
|
+
* @returns A Buffer containing the serialized DlcSigns.
|
|
321
|
+
*/
|
|
322
|
+
public serialize(): Buffer {
|
|
323
|
+
const writer = new BufferWriter();
|
|
324
|
+
// Write the number of signs in the container first.
|
|
325
|
+
writer.writeBigSize(this.signs.length);
|
|
326
|
+
// Serialize each sign and write it.
|
|
327
|
+
this.signs.forEach((sign) => {
|
|
328
|
+
const serializedSign = sign.serialize();
|
|
329
|
+
// Optionally, write the length of the serialized sign for easier deserialization.
|
|
330
|
+
writer.writeBigSize(serializedSign.length);
|
|
331
|
+
writer.writeBytes(serializedSign);
|
|
332
|
+
});
|
|
333
|
+
return writer.toBuffer();
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Deserializes a Buffer into a DlcSignContainer with DlcSigns.
|
|
338
|
+
* @param buf The Buffer to deserialize.
|
|
339
|
+
* @returns A DlcSignContainer instance.
|
|
340
|
+
*/
|
|
341
|
+
public static deserialize(buf: Buffer): DlcSignContainer {
|
|
342
|
+
const reader = new BufferReader(buf);
|
|
343
|
+
const container = new DlcSignContainer();
|
|
344
|
+
const signsCount = reader.readBigSize();
|
|
345
|
+
for (let i = 0; i < signsCount; i++) {
|
|
346
|
+
// Optionally, read the length of the serialized sign if it was written during serialization.
|
|
347
|
+
const signLength = reader.readBigSize();
|
|
348
|
+
const signBuf = reader.readBytes(Number(signLength));
|
|
349
|
+
const sign = DlcSign.deserialize(signBuf);
|
|
350
|
+
container.addSign(sign);
|
|
351
|
+
}
|
|
352
|
+
return container;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Tx } from '@node-dlc/bitcoin';
|
|
2
|
+
import { BufferReader, BufferWriter, StreamReader } from '@node-dlc/bufio';
|
|
3
|
+
|
|
4
|
+
import { MessageType } from '../MessageType';
|
|
5
|
+
import { IDlcMessage } from './DlcMessage';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* DlcTransactions message contains information about state of DLC
|
|
9
|
+
* contract such as fundtx and closetx
|
|
10
|
+
*/
|
|
11
|
+
export class DlcTransactions implements IDlcMessage {
|
|
12
|
+
public static type = MessageType.DlcTransactions;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Deserializes a dlc_transactions message
|
|
16
|
+
* @param buf
|
|
17
|
+
*/
|
|
18
|
+
public static deserialize(buf: Buffer, parseCets = true): DlcTransactions {
|
|
19
|
+
const instance = new DlcTransactions();
|
|
20
|
+
const reader = new BufferReader(buf);
|
|
21
|
+
|
|
22
|
+
reader.readUInt16BE(); // read type
|
|
23
|
+
|
|
24
|
+
instance.contractId = reader.readBytes(32);
|
|
25
|
+
|
|
26
|
+
const fundTxLen = reader.readUInt16BE();
|
|
27
|
+
instance.fundTx = Tx.decode(
|
|
28
|
+
StreamReader.fromBuffer(reader.readBytes(fundTxLen)),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
instance.fundTxVout = reader.readUInt32BE();
|
|
32
|
+
|
|
33
|
+
const fundHash = reader.readBytes(32);
|
|
34
|
+
const fundHeight = reader.readUInt32BE();
|
|
35
|
+
instance.fundEpoch = {
|
|
36
|
+
hash: fundHash,
|
|
37
|
+
height: fundHeight,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
instance.fundBroadcastHeight = reader.readUInt32BE();
|
|
41
|
+
|
|
42
|
+
const refundTxLen = reader.readUInt16BE();
|
|
43
|
+
instance.refundTx = Tx.decode(
|
|
44
|
+
StreamReader.fromBuffer(reader.readBytes(refundTxLen)),
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const numCets = reader.readBigSize(); // num_cets
|
|
48
|
+
for (let i = 0; i < numCets; i++) {
|
|
49
|
+
const cetLen = reader.readUInt16BE();
|
|
50
|
+
if (parseCets || i === 0) {
|
|
51
|
+
instance.cets.push(
|
|
52
|
+
Tx.decode(StreamReader.fromBuffer(reader.readBytes(cetLen))),
|
|
53
|
+
);
|
|
54
|
+
} else {
|
|
55
|
+
reader.readBytes(cetLen);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const closeHash = reader.readBytes(32);
|
|
60
|
+
const closeHeight = reader.readUInt32BE();
|
|
61
|
+
instance.closeEpoch = {
|
|
62
|
+
hash: closeHash,
|
|
63
|
+
height: closeHeight,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
instance.closeTxHash = reader.readBytes(32);
|
|
67
|
+
|
|
68
|
+
instance.closeType = reader.readUInt8();
|
|
69
|
+
|
|
70
|
+
instance.closeBroadcastHeight = reader.readUInt32BE();
|
|
71
|
+
|
|
72
|
+
return instance;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The type for dlc_transactions message. dlc_transactions = 61230
|
|
77
|
+
*/
|
|
78
|
+
public type = DlcTransactions.type;
|
|
79
|
+
|
|
80
|
+
public contractId: Buffer;
|
|
81
|
+
|
|
82
|
+
public fundTx: Tx;
|
|
83
|
+
|
|
84
|
+
public fundTxVout: number;
|
|
85
|
+
|
|
86
|
+
public fundEpoch: BlockEpoch = {
|
|
87
|
+
hash: Buffer.alloc(32),
|
|
88
|
+
height: 0,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
public fundBroadcastHeight = 0;
|
|
92
|
+
|
|
93
|
+
public refundTx: Tx;
|
|
94
|
+
|
|
95
|
+
public cets: Tx[] = [];
|
|
96
|
+
|
|
97
|
+
public closeEpoch: BlockEpoch = {
|
|
98
|
+
hash: Buffer.alloc(32),
|
|
99
|
+
height: 0,
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
public closeTxHash: Buffer = Buffer.alloc(32);
|
|
103
|
+
|
|
104
|
+
public closeType: CloseType = 0;
|
|
105
|
+
|
|
106
|
+
public closeBroadcastHeight = 0;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Converts dlc_transactions to JSON
|
|
110
|
+
*/
|
|
111
|
+
public toJSON(): IDlcTransactionsJSON {
|
|
112
|
+
return {
|
|
113
|
+
type: this.type,
|
|
114
|
+
contractId: this.contractId.toString('hex'),
|
|
115
|
+
fundTx: this.fundTx.serialize().toString('hex'),
|
|
116
|
+
fundTxVout: this.fundTxVout,
|
|
117
|
+
fundEpoch: {
|
|
118
|
+
hash: this.fundEpoch.hash.toString('hex'),
|
|
119
|
+
height: this.fundEpoch.height,
|
|
120
|
+
},
|
|
121
|
+
fundBroadcastHeight: this.fundBroadcastHeight,
|
|
122
|
+
refundTx: this.refundTx.serialize().toString('hex'),
|
|
123
|
+
cets: this.cets.map((cet) => cet.serialize().toString('hex')),
|
|
124
|
+
closeEpoch: {
|
|
125
|
+
hash: this.closeEpoch.hash.toString('hex'),
|
|
126
|
+
height: this.closeEpoch.height,
|
|
127
|
+
},
|
|
128
|
+
closeTxHash: this.closeTxHash.toString('hex'),
|
|
129
|
+
closeType: closeTypeToStr(this.closeType),
|
|
130
|
+
closeBroadcastHeight: this.closeBroadcastHeight,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Serializes the dlc_transactions message into a Buffer
|
|
136
|
+
*/
|
|
137
|
+
public serialize(): Buffer {
|
|
138
|
+
const writer = new BufferWriter();
|
|
139
|
+
writer.writeUInt16BE(this.type);
|
|
140
|
+
writer.writeBytes(this.contractId);
|
|
141
|
+
writer.writeUInt16BE(this.fundTx.serialize().length);
|
|
142
|
+
writer.writeBytes(this.fundTx.serialize());
|
|
143
|
+
writer.writeUInt32BE(this.fundTxVout);
|
|
144
|
+
writer.writeBytes(this.fundEpoch.hash);
|
|
145
|
+
writer.writeUInt32BE(this.fundEpoch.height);
|
|
146
|
+
writer.writeUInt32BE(this.fundBroadcastHeight);
|
|
147
|
+
writer.writeUInt16BE(this.refundTx.serialize().length);
|
|
148
|
+
writer.writeBytes(this.refundTx.serialize());
|
|
149
|
+
|
|
150
|
+
writer.writeBigSize(this.cets.length);
|
|
151
|
+
for (const cet of this.cets) {
|
|
152
|
+
writer.writeUInt16BE(cet.serialize().length);
|
|
153
|
+
writer.writeBytes(cet.serialize());
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
writer.writeBytes(this.closeEpoch.hash);
|
|
157
|
+
writer.writeUInt32BE(this.closeEpoch.height);
|
|
158
|
+
writer.writeBytes(this.closeTxHash);
|
|
159
|
+
writer.writeUInt8(this.closeType);
|
|
160
|
+
writer.writeUInt32BE(this.closeBroadcastHeight);
|
|
161
|
+
|
|
162
|
+
return writer.toBuffer();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const closeTypeToStr = (closeType: CloseType): string => {
|
|
167
|
+
switch (closeType) {
|
|
168
|
+
case CloseType.ExecuteClose:
|
|
169
|
+
return 'ExecuteClose';
|
|
170
|
+
case CloseType.RefundClose:
|
|
171
|
+
return 'RefundClose';
|
|
172
|
+
case CloseType.CooperativeClose:
|
|
173
|
+
return 'CooperativeClose';
|
|
174
|
+
default:
|
|
175
|
+
return 'NotClosed';
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export interface IDlcTransactionsJSON {
|
|
180
|
+
type: number;
|
|
181
|
+
contractId: string;
|
|
182
|
+
fundTx: string;
|
|
183
|
+
fundTxVout: number;
|
|
184
|
+
fundEpoch: IBlockEpochJSON;
|
|
185
|
+
fundBroadcastHeight: number;
|
|
186
|
+
refundTx: string;
|
|
187
|
+
cets: string[];
|
|
188
|
+
closeEpoch: IBlockEpochJSON;
|
|
189
|
+
closeTxHash: string;
|
|
190
|
+
closeType: string;
|
|
191
|
+
closeBroadcastHeight: number;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export interface IBlockEpochJSON {
|
|
195
|
+
hash: string;
|
|
196
|
+
height: number;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export interface BlockEpoch {
|
|
200
|
+
hash: Buffer;
|
|
201
|
+
height: number;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export enum CloseType {
|
|
205
|
+
NotClosed = 0,
|
|
206
|
+
ExecuteClose = 1,
|
|
207
|
+
RefundClose = 2,
|
|
208
|
+
CooperativeClose = 3,
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Backward compatibility aliases
|
|
212
|
+
export const DlcTransactionsV0 = DlcTransactions;
|
|
213
|
+
export type IDlcTransactionsV0JSON = IDlcTransactionsJSON;
|