@atomicfinance/bitcoin-dlc-provider 3.6.1 → 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/.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 +72 -0
- package/dist/BitcoinDlcProvider.d.ts +17 -16
- package/dist/BitcoinDlcProvider.js +345 -315
- 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 +624 -612
- package/lib/utils/Utils.ts +19 -24
- package/package.json +10 -10
- package/yalc.lock +10 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { RoundingIntervals } from './RoundingIntervals';
|
|
3
|
+
import { IRoundingIntervalsJSON } from './RoundingIntervals';
|
|
4
|
+
/**
|
|
5
|
+
* Negotiation fields for DLC contract negotiation.
|
|
6
|
+
* Follows the Rust enum pattern with Single and Disjoint variants.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class NegotiationFields {
|
|
9
|
+
static deserialize(buf: Buffer): NegotiationFields;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a NegotiationFields from JSON data
|
|
12
|
+
* @param json JSON object representing negotiation fields
|
|
13
|
+
*/
|
|
14
|
+
static fromJSON(json: any): NegotiationFields;
|
|
15
|
+
abstract variant: 'Single' | 'Disjoint';
|
|
16
|
+
abstract discriminator: number;
|
|
17
|
+
abstract serialize(): Buffer;
|
|
18
|
+
abstract toJSON(): INegotiationFieldsJSON;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Negotiation fields for contract based on a single event.
|
|
22
|
+
*/
|
|
23
|
+
export declare class SingleNegotiationFields extends NegotiationFields {
|
|
24
|
+
/**
|
|
25
|
+
* Creates a SingleNegotiationFields from JSON data
|
|
26
|
+
* @param json JSON object representing single negotiation fields
|
|
27
|
+
*/
|
|
28
|
+
static fromJSON(json: any): SingleNegotiationFields;
|
|
29
|
+
/**
|
|
30
|
+
* Deserializes single negotiation fields
|
|
31
|
+
* @param buf
|
|
32
|
+
*/
|
|
33
|
+
static deserialize(buf: Buffer): SingleNegotiationFields;
|
|
34
|
+
variant: 'Single';
|
|
35
|
+
discriminator: number;
|
|
36
|
+
roundingIntervals: RoundingIntervals;
|
|
37
|
+
/**
|
|
38
|
+
* Converts single negotiation fields to JSON
|
|
39
|
+
*/
|
|
40
|
+
toJSON(): ISingleNegotiationFieldsJSON;
|
|
41
|
+
/**
|
|
42
|
+
* Serializes the single negotiation fields into a Buffer
|
|
43
|
+
*/
|
|
44
|
+
serialize(): Buffer;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Negotiation fields for contract based on multiple events.
|
|
48
|
+
*/
|
|
49
|
+
export declare class DisjointNegotiationFields extends NegotiationFields {
|
|
50
|
+
/**
|
|
51
|
+
* Creates a DisjointNegotiationFields from JSON data
|
|
52
|
+
* @param json JSON object representing disjoint negotiation fields
|
|
53
|
+
*/
|
|
54
|
+
static fromJSON(json: any): DisjointNegotiationFields;
|
|
55
|
+
/**
|
|
56
|
+
* Deserializes disjoint negotiation fields
|
|
57
|
+
* @param buf
|
|
58
|
+
*/
|
|
59
|
+
static deserialize(buf: Buffer): DisjointNegotiationFields;
|
|
60
|
+
variant: 'Disjoint';
|
|
61
|
+
discriminator: number;
|
|
62
|
+
negotiationFields: NegotiationFields[];
|
|
63
|
+
/**
|
|
64
|
+
* Converts disjoint negotiation fields to JSON
|
|
65
|
+
*/
|
|
66
|
+
toJSON(): IDisjointNegotiationFieldsJSON;
|
|
67
|
+
/**
|
|
68
|
+
* Serializes the disjoint negotiation fields into a Buffer
|
|
69
|
+
*/
|
|
70
|
+
serialize(): Buffer;
|
|
71
|
+
}
|
|
72
|
+
export type INegotiationFieldsJSON = ISingleNegotiationFieldsJSON | IDisjointNegotiationFieldsJSON;
|
|
73
|
+
export interface ISingleNegotiationFieldsJSON {
|
|
74
|
+
variant: 'Single';
|
|
75
|
+
roundingIntervals: IRoundingIntervalsJSON;
|
|
76
|
+
}
|
|
77
|
+
export interface IDisjointNegotiationFieldsJSON {
|
|
78
|
+
variant: 'Disjoint';
|
|
79
|
+
negotiationFields: INegotiationFieldsJSON[];
|
|
80
|
+
}
|
|
81
|
+
export declare const NegotiationFieldsV0: typeof SingleNegotiationFields;
|
|
82
|
+
export declare const NegotiationFieldsV1: typeof SingleNegotiationFields;
|
|
83
|
+
export declare const NegotiationFieldsV2: typeof DisjointNegotiationFields;
|
|
84
|
+
export type INegotiationFieldsV0JSON = ISingleNegotiationFieldsJSON;
|
|
85
|
+
export type INegotiationFieldsV1JSON = ISingleNegotiationFieldsJSON;
|
|
86
|
+
export type INegotiationFieldsV2JSON = IDisjointNegotiationFieldsJSON;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NegotiationFieldsV2 = exports.NegotiationFieldsV1 = exports.NegotiationFieldsV0 = exports.DisjointNegotiationFields = exports.SingleNegotiationFields = exports.NegotiationFields = void 0;
|
|
4
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
5
|
+
const RoundingIntervals_1 = require("./RoundingIntervals");
|
|
6
|
+
/**
|
|
7
|
+
* Negotiation fields for DLC contract negotiation.
|
|
8
|
+
* Follows the Rust enum pattern with Single and Disjoint variants.
|
|
9
|
+
*/
|
|
10
|
+
class NegotiationFields {
|
|
11
|
+
static deserialize(buf) {
|
|
12
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
13
|
+
const discriminator = Number(reader.readBigSize());
|
|
14
|
+
switch (discriminator) {
|
|
15
|
+
case 0:
|
|
16
|
+
return SingleNegotiationFields.deserialize(buf);
|
|
17
|
+
case 1:
|
|
18
|
+
return DisjointNegotiationFields.deserialize(buf);
|
|
19
|
+
default:
|
|
20
|
+
throw new Error(`Invalid NegotiationFields discriminator: ${discriminator}. Must be 0 (Single) or 1 (Disjoint)`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a NegotiationFields from JSON data
|
|
25
|
+
* @param json JSON object representing negotiation fields
|
|
26
|
+
*/
|
|
27
|
+
static fromJSON(json) {
|
|
28
|
+
if (!json || typeof json !== 'object') {
|
|
29
|
+
throw new Error('Invalid JSON input for NegotiationFields');
|
|
30
|
+
}
|
|
31
|
+
const variant = json.variant;
|
|
32
|
+
switch (variant) {
|
|
33
|
+
case 'Single':
|
|
34
|
+
return SingleNegotiationFields.fromJSON(json);
|
|
35
|
+
case 'Disjoint':
|
|
36
|
+
return DisjointNegotiationFields.fromJSON(json);
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`Unknown negotiation fields variant: ${variant}. Must be 'Single' or 'Disjoint'`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.NegotiationFields = NegotiationFields;
|
|
43
|
+
/**
|
|
44
|
+
* Negotiation fields for contract based on a single event.
|
|
45
|
+
*/
|
|
46
|
+
class SingleNegotiationFields extends NegotiationFields {
|
|
47
|
+
constructor() {
|
|
48
|
+
super(...arguments);
|
|
49
|
+
this.variant = 'Single';
|
|
50
|
+
this.discriminator = 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Creates a SingleNegotiationFields from JSON data
|
|
54
|
+
* @param json JSON object representing single negotiation fields
|
|
55
|
+
*/
|
|
56
|
+
static fromJSON(json) {
|
|
57
|
+
const instance = new SingleNegotiationFields();
|
|
58
|
+
if (json.variant !== 'Single') {
|
|
59
|
+
throw new Error(`Invalid variant for SingleNegotiationFields: expected 'Single', got ${json.variant}`);
|
|
60
|
+
}
|
|
61
|
+
if (!json.roundingIntervals) {
|
|
62
|
+
throw new Error('SingleNegotiationFields requires roundingIntervals field');
|
|
63
|
+
}
|
|
64
|
+
instance.roundingIntervals = RoundingIntervals_1.RoundingIntervals.fromJSON(json.roundingIntervals);
|
|
65
|
+
return instance;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Deserializes single negotiation fields
|
|
69
|
+
* @param buf
|
|
70
|
+
*/
|
|
71
|
+
static deserialize(buf) {
|
|
72
|
+
const instance = new SingleNegotiationFields();
|
|
73
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
74
|
+
reader.readBigSize(); // read discriminator (0)
|
|
75
|
+
// Read remaining bytes as raw RoundingIntervals data
|
|
76
|
+
const remainingBytes = reader.readBytes();
|
|
77
|
+
instance.roundingIntervals = RoundingIntervals_1.RoundingIntervals.deserialize(remainingBytes);
|
|
78
|
+
return instance;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Converts single negotiation fields to JSON
|
|
82
|
+
*/
|
|
83
|
+
toJSON() {
|
|
84
|
+
return {
|
|
85
|
+
variant: this.variant,
|
|
86
|
+
roundingIntervals: this.roundingIntervals.toJSON(),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Serializes the single negotiation fields into a Buffer
|
|
91
|
+
*/
|
|
92
|
+
serialize() {
|
|
93
|
+
const writer = new bufio_1.BufferWriter();
|
|
94
|
+
writer.writeBigSize(this.discriminator);
|
|
95
|
+
writer.writeBytes(this.roundingIntervals.serialize());
|
|
96
|
+
return writer.toBuffer();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.SingleNegotiationFields = SingleNegotiationFields;
|
|
100
|
+
/**
|
|
101
|
+
* Negotiation fields for contract based on multiple events.
|
|
102
|
+
*/
|
|
103
|
+
class DisjointNegotiationFields extends NegotiationFields {
|
|
104
|
+
constructor() {
|
|
105
|
+
super(...arguments);
|
|
106
|
+
this.variant = 'Disjoint';
|
|
107
|
+
this.discriminator = 1;
|
|
108
|
+
this.negotiationFields = [];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates a DisjointNegotiationFields from JSON data
|
|
112
|
+
* @param json JSON object representing disjoint negotiation fields
|
|
113
|
+
*/
|
|
114
|
+
static fromJSON(json) {
|
|
115
|
+
const instance = new DisjointNegotiationFields();
|
|
116
|
+
if (json.variant !== 'Disjoint') {
|
|
117
|
+
throw new Error(`Invalid variant for DisjointNegotiationFields: expected 'Disjoint', got ${json.variant}`);
|
|
118
|
+
}
|
|
119
|
+
if (!json.negotiationFields || !Array.isArray(json.negotiationFields)) {
|
|
120
|
+
throw new Error('DisjointNegotiationFields requires negotiationFields array');
|
|
121
|
+
}
|
|
122
|
+
instance.negotiationFields = json.negotiationFields.map((fieldJson) => NegotiationFields.fromJSON(fieldJson));
|
|
123
|
+
return instance;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Deserializes disjoint negotiation fields
|
|
127
|
+
* @param buf
|
|
128
|
+
*/
|
|
129
|
+
static deserialize(buf) {
|
|
130
|
+
const instance = new DisjointNegotiationFields();
|
|
131
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
132
|
+
reader.readBigSize(); // read discriminator (1)
|
|
133
|
+
const numFields = Number(reader.readBigSize());
|
|
134
|
+
for (let i = 0; i < numFields; i++) {
|
|
135
|
+
// For simplicity, let's read the nested field by looking ahead
|
|
136
|
+
// to determine its length based on its discriminator
|
|
137
|
+
const startPos = reader.position;
|
|
138
|
+
const discriminator = Number(reader.readBigSize());
|
|
139
|
+
if (discriminator === 0) {
|
|
140
|
+
// Single field: discriminator + RoundingIntervals data
|
|
141
|
+
// RoundingIntervals has its own length, so we need to parse it
|
|
142
|
+
const roundingIntervals = RoundingIntervals_1.RoundingIntervals.deserialize(reader.readBytes());
|
|
143
|
+
// Reset and read the complete field
|
|
144
|
+
reader.position = startPos;
|
|
145
|
+
const fieldLength = 1 + roundingIntervals.serialize().length; // discriminator + data length
|
|
146
|
+
const fieldData = reader.readBytes(fieldLength);
|
|
147
|
+
instance.negotiationFields.push(NegotiationFields.deserialize(fieldData));
|
|
148
|
+
}
|
|
149
|
+
else if (discriminator === 1) {
|
|
150
|
+
throw new Error('Nested disjoint fields not yet supported');
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
throw new Error(`Unknown discriminator: ${discriminator}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return instance;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Converts disjoint negotiation fields to JSON
|
|
160
|
+
*/
|
|
161
|
+
toJSON() {
|
|
162
|
+
return {
|
|
163
|
+
variant: this.variant,
|
|
164
|
+
negotiationFields: this.negotiationFields.map((field) => field.toJSON()),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Serializes the disjoint negotiation fields into a Buffer
|
|
169
|
+
*/
|
|
170
|
+
serialize() {
|
|
171
|
+
const writer = new bufio_1.BufferWriter();
|
|
172
|
+
writer.writeBigSize(this.discriminator);
|
|
173
|
+
writer.writeBigSize(this.negotiationFields.length);
|
|
174
|
+
for (const negotiationField of this.negotiationFields) {
|
|
175
|
+
writer.writeBytes(negotiationField.serialize());
|
|
176
|
+
}
|
|
177
|
+
return writer.toBuffer();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.DisjointNegotiationFields = DisjointNegotiationFields;
|
|
181
|
+
// Legacy exports for backward compatibility - map to new structure
|
|
182
|
+
exports.NegotiationFieldsV0 = SingleNegotiationFields; // V0 was empty, now maps to Single
|
|
183
|
+
exports.NegotiationFieldsV1 = SingleNegotiationFields; // V1 had rounding intervals
|
|
184
|
+
exports.NegotiationFieldsV2 = DisjointNegotiationFields; // V2 had list of fields
|
|
185
|
+
//# sourceMappingURL=NegotiationFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NegotiationFields.js","sourceRoot":"","sources":["../../lib/messages/NegotiationFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BitField } from '@node-dlc/common';
|
|
3
|
+
import { NodeFeatureFlags } from '@node-dlc/wire';
|
|
4
|
+
import { Address } from '../domain/Address';
|
|
5
|
+
import { MessageType } from '../MessageType';
|
|
6
|
+
import { IWireMessage } from './IWireMessage';
|
|
7
|
+
/**
|
|
8
|
+
* This gossip message allows a node to indicate extra data associated with it,
|
|
9
|
+
* in addition to its public key. To avoid trivial denial of service attacks,
|
|
10
|
+
* nodes not associated with an already known channel are ignored.
|
|
11
|
+
*/
|
|
12
|
+
export declare class NodeAnnouncementMessage implements IWireMessage {
|
|
13
|
+
static type: MessageType;
|
|
14
|
+
static deserialize(payload: Buffer): NodeAnnouncementMessage;
|
|
15
|
+
/**
|
|
16
|
+
* Message hashing is after the first 66 bytes of the message
|
|
17
|
+
* and excludes the type and signature. It performs a double
|
|
18
|
+
* sha-256 hash of the remaining bytes.
|
|
19
|
+
*/
|
|
20
|
+
static hash(msg: NodeAnnouncementMessage): Buffer;
|
|
21
|
+
/**
|
|
22
|
+
* Verifies the message signature
|
|
23
|
+
*/
|
|
24
|
+
static verifySignatures(msg: NodeAnnouncementMessage): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Type 257
|
|
27
|
+
*/
|
|
28
|
+
type: MessageType;
|
|
29
|
+
/**
|
|
30
|
+
* Signature of the announcement message by the node's public key
|
|
31
|
+
* returned as a 64-byte Buffer.
|
|
32
|
+
*/
|
|
33
|
+
signature: Buffer;
|
|
34
|
+
features: BitField<NodeFeatureFlags>;
|
|
35
|
+
timestamp: number;
|
|
36
|
+
/**
|
|
37
|
+
* Compressed public key of the node that is a 33-byte
|
|
38
|
+
* buffer.
|
|
39
|
+
*/
|
|
40
|
+
nodeId: Buffer;
|
|
41
|
+
/**
|
|
42
|
+
* Color of the node returned as a 3-byte Buffer.
|
|
43
|
+
*/
|
|
44
|
+
rgbColor: Buffer;
|
|
45
|
+
/**
|
|
46
|
+
* Alias of the node returned as a 32-byte Buffer.
|
|
47
|
+
*/
|
|
48
|
+
alias: Buffer;
|
|
49
|
+
/**
|
|
50
|
+
* Addresses that the node allow public network connections
|
|
51
|
+
* on. The type indicates how the address is encoded. Addresses
|
|
52
|
+
* are in order of connectivity preference. Currently
|
|
53
|
+
* supported addresses formats are IPv4, IPv6, Tor2 and Tor3
|
|
54
|
+
*/
|
|
55
|
+
addresses: Address[];
|
|
56
|
+
serialize(): Buffer;
|
|
57
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.NodeAnnouncementMessage = void 0;
|
|
27
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
28
|
+
const common_1 = require("@node-dlc/common");
|
|
29
|
+
const crypto = __importStar(require("@node-dlc/crypto"));
|
|
30
|
+
const Address_1 = require("../domain/Address");
|
|
31
|
+
const MessageType_1 = require("../MessageType");
|
|
32
|
+
const getTlv_1 = require("../serialize/getTlv");
|
|
33
|
+
/**
|
|
34
|
+
* This gossip message allows a node to indicate extra data associated with it,
|
|
35
|
+
* in addition to its public key. To avoid trivial denial of service attacks,
|
|
36
|
+
* nodes not associated with an already known channel are ignored.
|
|
37
|
+
*/
|
|
38
|
+
class NodeAnnouncementMessage {
|
|
39
|
+
constructor() {
|
|
40
|
+
/**
|
|
41
|
+
* Type 257
|
|
42
|
+
*/
|
|
43
|
+
this.type = MessageType_1.MessageType.NodeAnnouncement;
|
|
44
|
+
/**
|
|
45
|
+
* Addresses that the node allow public network connections
|
|
46
|
+
* on. The type indicates how the address is encoded. Addresses
|
|
47
|
+
* are in order of connectivity preference. Currently
|
|
48
|
+
* supported addresses formats are IPv4, IPv6, Tor2 and Tor3
|
|
49
|
+
*/
|
|
50
|
+
this.addresses = [];
|
|
51
|
+
}
|
|
52
|
+
static deserialize(payload) {
|
|
53
|
+
const instance = new NodeAnnouncementMessage();
|
|
54
|
+
const reader = new bufio_1.BufferReader(payload);
|
|
55
|
+
reader.readUInt16BE(); // read off type
|
|
56
|
+
instance.signature = reader.readBytes(64);
|
|
57
|
+
const flen = reader.readUInt16BE();
|
|
58
|
+
instance.features = common_1.BitField.fromBuffer(reader.readBytes(flen));
|
|
59
|
+
instance.timestamp = reader.readUInt32BE();
|
|
60
|
+
instance.nodeId = reader.readBytes(33);
|
|
61
|
+
instance.rgbColor = reader.readBytes(3);
|
|
62
|
+
instance.alias = reader.readBytes(32);
|
|
63
|
+
instance.addresses = [];
|
|
64
|
+
reader.readUInt16BE(); // addr_len
|
|
65
|
+
while (!reader.eof) {
|
|
66
|
+
const address = Address_1.Address.deserialize((0, getTlv_1.getTlv)(reader));
|
|
67
|
+
instance.addresses.push(address);
|
|
68
|
+
}
|
|
69
|
+
return instance;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Message hashing is after the first 66 bytes of the message
|
|
73
|
+
* and excludes the type and signature. It performs a double
|
|
74
|
+
* sha-256 hash of the remaining bytes.
|
|
75
|
+
*/
|
|
76
|
+
static hash(msg) {
|
|
77
|
+
const bytes = msg.serialize().slice(66); // type + signature
|
|
78
|
+
return crypto.hash256(bytes);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Verifies the message signature
|
|
82
|
+
*/
|
|
83
|
+
static verifySignatures(msg) {
|
|
84
|
+
const hash = NodeAnnouncementMessage.hash(msg);
|
|
85
|
+
return crypto.verifySig(hash, msg.signature, msg.nodeId);
|
|
86
|
+
}
|
|
87
|
+
serialize() {
|
|
88
|
+
const featuresBuffer = this.features.toBuffer();
|
|
89
|
+
const featuresLen = featuresBuffer.length;
|
|
90
|
+
// serialize addresses into buffers so we can obtain the length
|
|
91
|
+
const addressBuffers = [];
|
|
92
|
+
for (const address of this.addresses) {
|
|
93
|
+
addressBuffers.push(address.serialize());
|
|
94
|
+
}
|
|
95
|
+
// obtain total address length
|
|
96
|
+
// eslint-disable-next-line
|
|
97
|
+
const addressBytes = addressBuffers.map(b => b.length).reduce((sum, val) => sum + val, 0); // prettier-ignore
|
|
98
|
+
const len = 2 + // type
|
|
99
|
+
64 + // signature
|
|
100
|
+
2 + // flen
|
|
101
|
+
featuresLen + // features length
|
|
102
|
+
4 + // timestamp
|
|
103
|
+
33 + // node_id
|
|
104
|
+
3 + // rgb_color
|
|
105
|
+
32 + // alias
|
|
106
|
+
2 + // addresses
|
|
107
|
+
addressBytes; // cumulative addr bytes
|
|
108
|
+
const writer = new bufio_1.BufferWriter(Buffer.alloc(len));
|
|
109
|
+
writer.writeUInt16BE(this.type);
|
|
110
|
+
writer.writeBytes(this.signature);
|
|
111
|
+
writer.writeUInt16BE(featuresLen);
|
|
112
|
+
if (featuresLen > 0)
|
|
113
|
+
writer.writeBytes(featuresBuffer);
|
|
114
|
+
writer.writeUInt32BE(this.timestamp);
|
|
115
|
+
writer.writeBytes(this.nodeId);
|
|
116
|
+
writer.writeBytes(this.rgbColor);
|
|
117
|
+
writer.writeBytes(this.alias);
|
|
118
|
+
writer.writeUInt16BE(addressBytes);
|
|
119
|
+
for (const addressBuffer of addressBuffers) {
|
|
120
|
+
writer.writeBytes(addressBuffer);
|
|
121
|
+
}
|
|
122
|
+
return writer.toBuffer();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.NodeAnnouncementMessage = NodeAnnouncementMessage;
|
|
126
|
+
NodeAnnouncementMessage.type = MessageType_1.MessageType.NodeAnnouncement;
|
|
127
|
+
//# sourceMappingURL=NodeAnnouncementMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeAnnouncementMessage.js","sourceRoot":"","sources":["../../lib/messages/NodeAnnouncementMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { MessageType } from '../MessageType';
|
|
3
|
+
import { IDlcMessage } from './DlcMessage';
|
|
4
|
+
import { IOracleEventJSON, OracleEvent } from './OracleEvent';
|
|
5
|
+
/**
|
|
6
|
+
* Oracle announcement that describe an event and the way that an oracle will
|
|
7
|
+
* attest to it. Updated to be rust-dlc compliant.
|
|
8
|
+
*
|
|
9
|
+
* In order to make it possible to hold oracles accountable in cases where
|
|
10
|
+
* they do not release a signature for an event outcome, there needs to be
|
|
11
|
+
* a proof that an oracle has committed to a given outcome. This proof is
|
|
12
|
+
* given in a so-called oracle announcement, which contains an oracle event
|
|
13
|
+
* together with the oracle public key and a signature over its serialization,
|
|
14
|
+
* which must be valid with respect to the specified public key.
|
|
15
|
+
*
|
|
16
|
+
* This also makes it possible for users to obtain oracle event information
|
|
17
|
+
* from an un-trusted peer while being guaranteed that it originates from a
|
|
18
|
+
* given oracle.
|
|
19
|
+
*/
|
|
20
|
+
export declare class OracleAnnouncement implements IDlcMessage {
|
|
21
|
+
static type: MessageType;
|
|
22
|
+
/**
|
|
23
|
+
* Creates an OracleAnnouncement from JSON data
|
|
24
|
+
* @param json JSON object representing oracle announcement
|
|
25
|
+
*/
|
|
26
|
+
static fromJSON(json: any): OracleAnnouncement;
|
|
27
|
+
/**
|
|
28
|
+
* Deserializes an oracle_announcement message
|
|
29
|
+
* @param buf
|
|
30
|
+
*/
|
|
31
|
+
static deserialize(buf: Buffer): OracleAnnouncement;
|
|
32
|
+
/**
|
|
33
|
+
* The type for oracle_announcement message. oracle_announcement = 55332
|
|
34
|
+
*/
|
|
35
|
+
type: MessageType;
|
|
36
|
+
length: bigint;
|
|
37
|
+
/** The signature enabling verifying the origin of the announcement. */
|
|
38
|
+
announcementSig: Buffer;
|
|
39
|
+
/** The public key of the oracle (32 bytes, x-only). */
|
|
40
|
+
oraclePubkey: Buffer;
|
|
41
|
+
/** The description of the event and attesting. */
|
|
42
|
+
oracleEvent: OracleEvent;
|
|
43
|
+
/**
|
|
44
|
+
* Validates the oracle announcement according to rust-dlc specification.
|
|
45
|
+
* This includes validating the oracle event and verifying the announcement signature.
|
|
46
|
+
* @throws Will throw an error if validation fails
|
|
47
|
+
*/
|
|
48
|
+
validate(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the nonces from the oracle event.
|
|
51
|
+
* This is useful for finding matching oracle announcements.
|
|
52
|
+
*/
|
|
53
|
+
getNonces(): Buffer[];
|
|
54
|
+
/**
|
|
55
|
+
* Returns the event maturity epoch from the oracle event.
|
|
56
|
+
*/
|
|
57
|
+
getEventMaturityEpoch(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Returns the event ID from the oracle event.
|
|
60
|
+
*/
|
|
61
|
+
getEventId(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Converts oracle_announcement to JSON (canonical rust-dlc format)
|
|
64
|
+
*/
|
|
65
|
+
toJSON(): OracleAnnouncementJSON;
|
|
66
|
+
/**
|
|
67
|
+
* Serializes the oracle_announcement message into a Buffer
|
|
68
|
+
*/
|
|
69
|
+
serialize(): Buffer;
|
|
70
|
+
}
|
|
71
|
+
export interface OracleAnnouncementJSON {
|
|
72
|
+
type?: number;
|
|
73
|
+
announcementSignature: string;
|
|
74
|
+
oraclePublicKey: string;
|
|
75
|
+
oracleEvent: IOracleEventJSON;
|
|
76
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OracleAnnouncement = void 0;
|
|
4
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
5
|
+
const bip_schnorr_1 = require("bip-schnorr");
|
|
6
|
+
const MessageType_1 = require("../MessageType");
|
|
7
|
+
const getTlv_1 = require("../serialize/getTlv");
|
|
8
|
+
const OracleEvent_1 = require("./OracleEvent");
|
|
9
|
+
/**
|
|
10
|
+
* Oracle announcement that describe an event and the way that an oracle will
|
|
11
|
+
* attest to it. Updated to be rust-dlc compliant.
|
|
12
|
+
*
|
|
13
|
+
* In order to make it possible to hold oracles accountable in cases where
|
|
14
|
+
* they do not release a signature for an event outcome, there needs to be
|
|
15
|
+
* a proof that an oracle has committed to a given outcome. This proof is
|
|
16
|
+
* given in a so-called oracle announcement, which contains an oracle event
|
|
17
|
+
* together with the oracle public key and a signature over its serialization,
|
|
18
|
+
* which must be valid with respect to the specified public key.
|
|
19
|
+
*
|
|
20
|
+
* This also makes it possible for users to obtain oracle event information
|
|
21
|
+
* from an un-trusted peer while being guaranteed that it originates from a
|
|
22
|
+
* given oracle.
|
|
23
|
+
*/
|
|
24
|
+
class OracleAnnouncement {
|
|
25
|
+
constructor() {
|
|
26
|
+
/**
|
|
27
|
+
* The type for oracle_announcement message. oracle_announcement = 55332
|
|
28
|
+
*/
|
|
29
|
+
this.type = OracleAnnouncement.type;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates an OracleAnnouncement from JSON data
|
|
33
|
+
* @param json JSON object representing oracle announcement
|
|
34
|
+
*/
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
36
|
+
static fromJSON(json) {
|
|
37
|
+
const instance = new OracleAnnouncement();
|
|
38
|
+
// Handle different field name variations
|
|
39
|
+
instance.announcementSig = Buffer.from(json.announcementSignature ||
|
|
40
|
+
json.announcementSig ||
|
|
41
|
+
json.announcement_signature, 'hex');
|
|
42
|
+
instance.oraclePubkey = Buffer.from(json.oraclePublicKey || json.oraclePubkey || json.oracle_public_key, 'hex');
|
|
43
|
+
instance.oracleEvent = OracleEvent_1.OracleEvent.fromJSON(json.oracleEvent || json.oracle_event);
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Deserializes an oracle_announcement message
|
|
48
|
+
* @param buf
|
|
49
|
+
*/
|
|
50
|
+
static deserialize(buf) {
|
|
51
|
+
const instance = new OracleAnnouncement();
|
|
52
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
53
|
+
reader.readBigSize(); // read type
|
|
54
|
+
instance.length = reader.readBigSize();
|
|
55
|
+
instance.announcementSig = reader.readBytes(64);
|
|
56
|
+
instance.oraclePubkey = reader.readBytes(32);
|
|
57
|
+
instance.oracleEvent = OracleEvent_1.OracleEvent.deserialize((0, getTlv_1.getTlv)(reader));
|
|
58
|
+
return instance;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validates the oracle announcement according to rust-dlc specification.
|
|
62
|
+
* This includes validating the oracle event and verifying the announcement signature.
|
|
63
|
+
* @throws Will throw an error if validation fails
|
|
64
|
+
*/
|
|
65
|
+
validate() {
|
|
66
|
+
// Validate oracle event first
|
|
67
|
+
this.oracleEvent.validate();
|
|
68
|
+
// Validate oracle public key format (32 bytes for x-only)
|
|
69
|
+
if (!this.oraclePubkey || this.oraclePubkey.length !== 32) {
|
|
70
|
+
throw new Error('Oracle public key must be 32 bytes (x-only format)');
|
|
71
|
+
}
|
|
72
|
+
// Validate announcement signature format (64 bytes for Schnorr)
|
|
73
|
+
if (!this.announcementSig || this.announcementSig.length !== 64) {
|
|
74
|
+
throw new Error('Announcement signature must be 64 bytes (Schnorr format)');
|
|
75
|
+
}
|
|
76
|
+
// Verify announcement signature over the oracle event
|
|
77
|
+
try {
|
|
78
|
+
const msg = bip_schnorr_1.math.taggedHash('DLC/oracle/announcement/v0', this.oracleEvent.serialize());
|
|
79
|
+
(0, bip_schnorr_1.verify)(this.oraclePubkey, msg, this.announcementSig);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
throw new Error(`Invalid announcement signature: ${error.message}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns the nonces from the oracle event.
|
|
87
|
+
* This is useful for finding matching oracle announcements.
|
|
88
|
+
*/
|
|
89
|
+
getNonces() {
|
|
90
|
+
return this.oracleEvent.oracleNonces;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns the event maturity epoch from the oracle event.
|
|
94
|
+
*/
|
|
95
|
+
getEventMaturityEpoch() {
|
|
96
|
+
return this.oracleEvent.eventMaturityEpoch;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns the event ID from the oracle event.
|
|
100
|
+
*/
|
|
101
|
+
getEventId() {
|
|
102
|
+
return this.oracleEvent.eventId;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Converts oracle_announcement to JSON (canonical rust-dlc format)
|
|
106
|
+
*/
|
|
107
|
+
toJSON() {
|
|
108
|
+
return {
|
|
109
|
+
announcementSignature: this.announcementSig.toString('hex'),
|
|
110
|
+
oraclePublicKey: this.oraclePubkey.toString('hex'),
|
|
111
|
+
oracleEvent: this.oracleEvent.toJSON(),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Serializes the oracle_announcement message into a Buffer
|
|
116
|
+
*/
|
|
117
|
+
serialize() {
|
|
118
|
+
const writer = new bufio_1.BufferWriter();
|
|
119
|
+
writer.writeBigSize(this.type);
|
|
120
|
+
const dataWriter = new bufio_1.BufferWriter();
|
|
121
|
+
dataWriter.writeBytes(this.announcementSig);
|
|
122
|
+
dataWriter.writeBytes(this.oraclePubkey);
|
|
123
|
+
dataWriter.writeBytes(this.oracleEvent.serialize());
|
|
124
|
+
writer.writeBigSize(dataWriter.size);
|
|
125
|
+
writer.writeBytes(dataWriter.toBuffer());
|
|
126
|
+
return writer.toBuffer();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.OracleAnnouncement = OracleAnnouncement;
|
|
130
|
+
OracleAnnouncement.type = MessageType_1.MessageType.OracleAnnouncement;
|
|
131
|
+
//# sourceMappingURL=OracleAnnouncement.js.map
|