@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.
Files changed (375) hide show
  1. package/.nvmrc +1 -1
  2. package/.turbo/turbo-build.log +1 -0
  3. package/.turbo/turbo-test.log +0 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  5. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  6. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  7. package/.yalc/@node-dlc/messaging/README.md +24 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  46. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  47. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  120. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  121. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  123. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  124. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  135. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  136. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  138. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  139. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  141. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  142. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  144. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  145. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  264. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  265. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  276. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  277. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  279. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  280. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  282. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  283. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  284. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  287. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  288. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  289. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  290. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  291. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  328. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  329. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  332. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  333. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  334. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  335. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  336. package/.yalc/@node-dlc/messaging/package.json +42 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  361. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  362. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  363. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  364. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  365. package/CHANGELOG.md +83 -0
  366. package/dist/BitcoinDlcProvider.d.ts +17 -16
  367. package/dist/BitcoinDlcProvider.js +375 -317
  368. package/dist/BitcoinDlcProvider.js.map +1 -1
  369. package/dist/utils/Utils.d.ts +6 -6
  370. package/dist/utils/Utils.js +4 -4
  371. package/dist/utils/Utils.js.map +1 -1
  372. package/lib/BitcoinDlcProvider.ts +637 -621
  373. package/lib/utils/Utils.ts +19 -24
  374. package/package.json +13 -11
  375. package/yalc.lock +10 -0
@@ -0,0 +1,326 @@
1
+ import { Tx } from '@node-dlc/bitcoin';
2
+ import { Block, Transaction } from 'bitcoinjs-lib';
3
+ import { EventEmitter } from 'events';
4
+
5
+ import { DlcTransactions } from '../messages/DlcTransactions';
6
+ import { sleep } from '../util';
7
+ import { IDlcStore } from './DlcStore';
8
+ import {
9
+ HasHash,
10
+ HasHeight,
11
+ IChainFilterChainClient,
12
+ } from './IChainFilterChainClient';
13
+
14
+ export enum SyncState {
15
+ Unsynced,
16
+ Syncing,
17
+ Synced,
18
+ }
19
+
20
+ export interface ILogger {
21
+ area: string;
22
+ instance: string;
23
+ trace(...args: any[]): void;
24
+ debug(...args: any[]): void;
25
+ info(...args: any[]): void;
26
+ warn(...args: any[]): void;
27
+ error(...args: any[]): void;
28
+ sub(area: string, instance?: string): ILogger;
29
+ }
30
+
31
+ /**
32
+ * ChainManager validates and stores dlc txs
33
+ * from chain updates
34
+ */
35
+ export class ChainManager extends EventEmitter {
36
+ public blockHeight: number;
37
+ public started = false;
38
+ public syncState: SyncState;
39
+ public isSynchronizing: boolean;
40
+ public chainClient: IChainFilterChainClient;
41
+ public logger: ILogger;
42
+ public dlcStore: IDlcStore;
43
+ public dlcTxsList: DlcTransactions[];
44
+
45
+ constructor(
46
+ logger: ILogger,
47
+ chainClient: IChainFilterChainClient,
48
+ dlcStore: IDlcStore,
49
+ ) {
50
+ super();
51
+ this.logger = logger.sub('dlcmgr');
52
+ this.dlcStore = dlcStore;
53
+ this.chainClient = chainClient;
54
+ }
55
+
56
+ /**
57
+ * Starts the chain manager. This method will load information
58
+ * from the chain store, determine when the last information
59
+ * was obtained, validate the existing messages
60
+ */
61
+ public async start(blockHeight = 0): Promise<void> {
62
+ this.logger.info('starting dlc state manager');
63
+
64
+ // wait for chain sync to complete
65
+ if (this.chainClient) {
66
+ this.logger.info('waiting for chain sync');
67
+ await this.chainClient.waitForSync();
68
+ this.logger.info('chain sync complete');
69
+ }
70
+
71
+ await this._restoreState(blockHeight);
72
+ this.syncState = SyncState.Synced;
73
+
74
+ // flag that the manager has now started
75
+ this.started = true;
76
+ }
77
+
78
+ public async updateFundBroadcast(dlcTxs: DlcTransactions): Promise<void> {
79
+ const info = await this.chainClient.getBlockchainInfo();
80
+ const block = await this.chainClient.getBlock(info.bestblockhash);
81
+
82
+ dlcTxs.fundBroadcastHeight = block.height;
83
+
84
+ await this.dlcStore.saveDlcTransactions(dlcTxs);
85
+ }
86
+
87
+ public async updateCloseBroadcast(dlcTxs: DlcTransactions): Promise<void> {
88
+ const info = await this.chainClient.getBlockchainInfo();
89
+ const block = await this.chainClient.getBlock(info.bestblockhash);
90
+
91
+ dlcTxs.closeBroadcastHeight = block.height;
92
+
93
+ await this.dlcStore.saveDlcTransactions(dlcTxs);
94
+ }
95
+
96
+ public async updateFundEpoch(
97
+ dlcTxs: DlcTransactions,
98
+ block: HasHeight & HasHash,
99
+ ): Promise<void> {
100
+ this.logger.info(
101
+ `updating fund epoch on dlc ${dlcTxs.contractId.toString('hex')}`,
102
+ );
103
+ dlcTxs.fundEpoch.hash = Buffer.from(block.hash, 'hex');
104
+ dlcTxs.fundEpoch.height = block.height;
105
+
106
+ if (dlcTxs.fundBroadcastHeight === 0) {
107
+ dlcTxs.fundBroadcastHeight = block.height - 1;
108
+ }
109
+
110
+ await this.dlcStore.saveDlcTransactions(dlcTxs);
111
+
112
+ this.logger.info(
113
+ `fund epoch updated on dlc ${dlcTxs.contractId.toString('hex')}`,
114
+ );
115
+ }
116
+
117
+ public async updateCloseEpoch(
118
+ dlcTxs: DlcTransactions,
119
+ tx: Tx,
120
+ block: HasHeight & HasHash,
121
+ ): Promise<void> {
122
+ this.logger.info(
123
+ `updating close epoch on dlc ${dlcTxs.contractId.toString('hex')}`,
124
+ );
125
+ dlcTxs.closeEpoch.hash = Buffer.from(block.hash, 'hex');
126
+ dlcTxs.closeEpoch.height = Number(block.height);
127
+ dlcTxs.closeTxHash = Buffer.from(tx.txId.toString(), 'hex');
128
+ dlcTxs.closeType = 3; // Default to cooperative close if txid not refund or cet txid
129
+
130
+ const _dlcTxs = await this.dlcStore.findDlcTransactions(dlcTxs.contractId);
131
+
132
+ // figure out if it's execute, refund or mutual close
133
+ if (tx.txId.toString() === dlcTxs.refundTx.txId.toString()) {
134
+ dlcTxs.closeType = 2;
135
+ } else {
136
+ const cetIndex = _dlcTxs.cets.findIndex(
137
+ (cet) => tx.txId.toString() === cet.txId.toString(),
138
+ );
139
+ if (cetIndex >= 0) dlcTxs.closeType = 1;
140
+ }
141
+
142
+ if (dlcTxs.closeBroadcastHeight === 0) {
143
+ dlcTxs.closeBroadcastHeight = block.height - 1;
144
+ }
145
+
146
+ await this.dlcStore.saveDlcTransactions(dlcTxs);
147
+
148
+ this.logger.info(
149
+ `close epoch updated on dlc ${dlcTxs.contractId.toString('hex')}`,
150
+ );
151
+ }
152
+
153
+ private async _restoreState(blockHeight = 0): Promise<void> {
154
+ this.logger.info('retrieving dlc state from store');
155
+ this.blockHeight = blockHeight;
156
+ this.syncState = SyncState.Syncing;
157
+ this.dlcTxsList = await this.dlcStore.findDlcTransactionsList();
158
+ this.logger.info('found %d dlcs', this.dlcTxsList.length);
159
+
160
+ if (blockHeight === 0) {
161
+ // find best block height
162
+ for (const dlcTxs of this.dlcTxsList) {
163
+ this.blockHeight = Math.max(
164
+ Math.max(this.blockHeight, dlcTxs.fundEpoch.height),
165
+ dlcTxs.closeEpoch.height,
166
+ );
167
+ }
168
+ }
169
+
170
+ this.logger.info("highest block %d found from %d dlcs", this.blockHeight, this.dlcTxsList.length); // prettier-ignore
171
+
172
+ // validate all utxos
173
+ await this._validateUtxos(this.dlcTxsList);
174
+ }
175
+
176
+ private async _validateUtxos(_dlcTxsList: DlcTransactions[]) {
177
+ if (!this.chainClient) {
178
+ this.logger.info('skipping utxo validation, no chain_client configured');
179
+ return;
180
+ }
181
+
182
+ const dlcTxsList = _dlcTxsList.filter(
183
+ (dlcTxs) => dlcTxs.closeEpoch.height === 0,
184
+ );
185
+
186
+ const dlcTxsCount = dlcTxsList.reduce(
187
+ (acc, msg) => acc + (msg instanceof DlcTransactions ? 1 : 0),
188
+ 0,
189
+ );
190
+ this.logger.info('validating %d funding utxos', dlcTxsCount);
191
+
192
+ if (!dlcTxsCount) return;
193
+
194
+ const dlcTxsToVerify: DlcTransactions[] = [];
195
+
196
+ const oct = Math.trunc(dlcTxsCount / 16);
197
+ for (let i = 0; i < dlcTxsList.length; i++) {
198
+ const dlcTxs = dlcTxsList[i];
199
+ if ((i + 1) % oct === 0) {
200
+ this.logger.info(
201
+ 'validating funding utxos %s% complete',
202
+ (((i + 1) / dlcTxsCount) * 100).toFixed(2),
203
+ );
204
+ }
205
+ if (dlcTxs instanceof DlcTransactions) {
206
+ const utxo = await this.chainClient.getUtxo(
207
+ dlcTxs.fundTx.txId.toString(),
208
+ dlcTxs.fundTxVout,
209
+ );
210
+
211
+ try {
212
+ const tx = await this.chainClient.getTransaction(
213
+ dlcTxs.fundTx.txId.toString(),
214
+ );
215
+ if (!utxo) dlcTxsToVerify.push(dlcTxs);
216
+
217
+ if (utxo && Number(utxo.confirmations) === 0)
218
+ this.updateFundBroadcast(dlcTxs);
219
+
220
+ if (
221
+ utxo &&
222
+ Number(utxo.confirmations) > 0 &&
223
+ dlcTxs.fundEpoch.height === 0
224
+ ) {
225
+ const block = await this.chainClient.getBlock(tx.blockhash);
226
+ await this.updateFundEpoch(dlcTxs, block);
227
+ }
228
+ } catch (e) {
229
+ /**
230
+ * tx doesn't exist
231
+ * fund tx wasn't broadcast in the first place
232
+ */
233
+ }
234
+ }
235
+ }
236
+ this.logger.info('validating funding utxos 100% complete');
237
+
238
+ if (dlcTxsToVerify.length === 0) {
239
+ this.logger.info('no closing utxos to validate');
240
+ return;
241
+ }
242
+
243
+ await this._validateClosingUtxos(dlcTxsToVerify);
244
+ }
245
+
246
+ private async _validateClosingUtxos(dlcTxsList: DlcTransactions[]) {
247
+ let info = await this.chainClient.getBlockchainInfo();
248
+
249
+ if (this.blockHeight === 0) {
250
+ this.logger.info('cannot sync from block height 0');
251
+ return;
252
+ }
253
+
254
+ let numBlocksToSync = Math.max(info.blocks - this.blockHeight, 0);
255
+ this.logger.info('validating %d blocks for closing utxos', numBlocksToSync);
256
+ const oct = Math.trunc(numBlocksToSync / 16);
257
+ let i = 0;
258
+ while (info.blocks > this.blockHeight) {
259
+ await sleep(10);
260
+
261
+ if ((i + 1) % oct === 0) {
262
+ this.logger.info(
263
+ 'validating block %s, closing utxos %s% complete',
264
+ this.blockHeight,
265
+ (((i + 1) / numBlocksToSync) * 100).toFixed(2),
266
+ );
267
+ }
268
+
269
+ // Log every 10 blocks
270
+ if (this.blockHeight % 10 === 0) {
271
+ this.logger.info(
272
+ 'Validating block %s for closing utxos',
273
+ this.blockHeight,
274
+ );
275
+ }
276
+
277
+ this.blockHeight += 1;
278
+
279
+ const blockHash = await this.chainClient.getBlockHash(this.blockHeight);
280
+ const blockBuf = await this.chainClient.getRawBlock(blockHash);
281
+
282
+ const block = Block.fromBuffer(blockBuf);
283
+ for (const transaction of block.transactions) {
284
+ try {
285
+ const bjsTx = Transaction.fromBuffer(transaction.toBuffer());
286
+ if (!bjsTx.isCoinbase()) {
287
+ // ignore coinbase txs for outpoint check
288
+ const tx = Tx.fromBuffer(transaction.toBuffer());
289
+ await this._checkOutpoints(dlcTxsList, tx, block.getId());
290
+ }
291
+ } catch (e) {
292
+ this.logger.error(
293
+ 'Invalid tx for validating closing utxo: %s',
294
+ transaction.toHex(),
295
+ );
296
+ this.logger.trace('Error: ', e);
297
+ }
298
+ }
299
+
300
+ if (info.blocks === this.blockHeight) {
301
+ info = await this.chainClient.getBlockchainInfo();
302
+ if (info.blocks === this.blockHeight) break;
303
+ numBlocksToSync += info.blocks - this.blockHeight;
304
+ }
305
+
306
+ i++;
307
+ }
308
+
309
+ this.logger.info('validating closing utxos 100% complete');
310
+ }
311
+
312
+ private async _checkOutpoints(
313
+ dlcTxsList: DlcTransactions[],
314
+ tx: Tx,
315
+ blockHash: string,
316
+ ) {
317
+ for (const dlcTxs of dlcTxsList) {
318
+ for (const input of tx.inputs) {
319
+ if (dlcTxs.fundTx.txId.toString() === input.outpoint.txid.toString()) {
320
+ const block = await this.chainClient.getBlock(blockHash);
321
+ await this.updateCloseEpoch(dlcTxs, tx, block);
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
@@ -0,0 +1,34 @@
1
+ /* eslint-disable @typescript-eslint/require-await */
2
+ import { DlcTransactions } from '../messages/DlcTransactions';
3
+ import { IDlcStore } from './DlcStore';
4
+
5
+ /**
6
+ * In-memory implementation of the IDlcStore.
7
+ */
8
+ export class ChainMemoryStore implements IDlcStore {
9
+ private _dlcTxs = new Map<Buffer, DlcTransactions>();
10
+
11
+ public get dlcTransactionsListCount(): number {
12
+ return this._dlcTxs.size;
13
+ }
14
+
15
+ public async findDlcTransactionsList(): Promise<DlcTransactions[]> {
16
+ return Array.from(this._dlcTxs.values());
17
+ }
18
+
19
+ public async findDlcTransactions(
20
+ contractId: Buffer,
21
+ ): Promise<DlcTransactions> {
22
+ return this._dlcTxs.get(contractId);
23
+ }
24
+
25
+ public async saveDlcTransactions(
26
+ dlcTransactions: DlcTransactions,
27
+ ): Promise<void> {
28
+ this._dlcTxs.set(dlcTransactions.contractId, dlcTransactions);
29
+ }
30
+
31
+ public async deleteDlcTransactions(contractId: Buffer): Promise<void> {
32
+ this._dlcTxs.delete(contractId);
33
+ }
34
+ }
@@ -0,0 +1,11 @@
1
+ import { DlcTransactions } from '../messages/DlcTransactions';
2
+
3
+ /**
4
+ * Interface for storing, finding, and deleting dlc messages.
5
+ */
6
+ export interface IDlcStore {
7
+ findDlcTransactionsList(): Promise<DlcTransactions[]>;
8
+ findDlcTransactions(contractId: Buffer): Promise<DlcTransactions>;
9
+ saveDlcTransactions(dlcTransactions: DlcTransactions): Promise<void>;
10
+ deleteDlcTransactions(contractId: Buffer): Promise<void>;
11
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * The interface required by the Chainfilter to perform on-chain validation checks
3
+ * of messages. A simplified interface is required by the Chainfilter. The actual
4
+ * chain client implementation may offer a broader set of feautures. Additionally,
5
+ * an adapter could be constructred to make an chain client conform to that required
6
+ * by the Chainfilter.
7
+ */
8
+ export interface IChainFilterChainClient {
9
+ getBlockchainInfo(): Promise<HasBlocks & HasBestBlockHash>;
10
+ getBlockHash(height: number): Promise<string>;
11
+ getBlock(hash: string): Promise<HasTxStrings & HasHeight & HasHash>;
12
+ getRawBlock(hash: string): Promise<Buffer>;
13
+ getTransaction(txId: string): Promise<HasTransaction>;
14
+ getUtxo(txId: string, voutIdx: number): Promise<HasConfirmations>;
15
+ waitForSync(): Promise<boolean>;
16
+ }
17
+
18
+ export type HasBlocks = {
19
+ blocks: number;
20
+ };
21
+
22
+ export type HasBestBlockHash = {
23
+ bestblockhash: string;
24
+ };
25
+
26
+ export type HasTxStrings = {
27
+ tx: string[];
28
+ };
29
+
30
+ export type HasHeight = {
31
+ height: number;
32
+ };
33
+
34
+ export type HasHash = {
35
+ hash: string;
36
+ };
37
+
38
+ export type HasTransaction = {
39
+ txid: string;
40
+ blockhash: string;
41
+ };
42
+
43
+ export type HasScriptPubKey = {
44
+ scriptPubKey: HasHex;
45
+ };
46
+
47
+ export type HasValue = {
48
+ value: number;
49
+ };
50
+
51
+ export type HasConfirmations = {
52
+ confirmations: string;
53
+ };
54
+
55
+ export type HasHex = {
56
+ hex: string;
57
+ };
@@ -0,0 +1,64 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+
5
+ export class Address {
6
+ public static type = MessageType.NodeAnnouncementAddress;
7
+
8
+ public static deserialize(buf: Buffer): Address {
9
+ const reader = new BufferReader(buf);
10
+ reader.readBigSize(); // read off type
11
+ reader.readBigSize(); // read size
12
+
13
+ const hostLen = reader.readBigSize();
14
+ const hostBuf = reader.readBytes(Number(hostLen));
15
+ const host = hostBuf.toString();
16
+ const port = reader.readUInt16BE();
17
+
18
+ const instance = new Address(host, port);
19
+
20
+ return instance;
21
+ }
22
+
23
+ public type = Address.type;
24
+
25
+ /**
26
+ * String notation representation of the host
27
+ */
28
+ public host: string;
29
+
30
+ /**
31
+ * Port number
32
+ */
33
+ public port: number;
34
+
35
+ /**
36
+ * Base class representing a network address
37
+ */
38
+ constructor(host: string, port: number) {
39
+ this.host = host;
40
+ this.port = port;
41
+ }
42
+
43
+ public toString(): string {
44
+ return `${this.host}:${this.port}`;
45
+ }
46
+
47
+ /**
48
+ * Serializes the dlc_transactions_v0 message into a Buffer
49
+ */
50
+ public serialize(): Buffer {
51
+ const writer = new BufferWriter();
52
+ writer.writeBigSize(this.type);
53
+
54
+ const dataWriter = new BufferWriter();
55
+ dataWriter.writeBigSize(this.host.length);
56
+ dataWriter.writeBytes(Buffer.from(this.host));
57
+ dataWriter.writeUInt16BE(this.port);
58
+
59
+ writer.writeBigSize(dataWriter.size);
60
+ writer.writeBytes(dataWriter.toBuffer());
61
+
62
+ return writer.toBuffer();
63
+ }
64
+ }
@@ -0,0 +1,44 @@
1
+ export * from './chain/ChainManager';
2
+ export * from './chain/DlcStore';
3
+ export * from './chain/IChainFilterChainClient';
4
+ export * from './domain/Address';
5
+ export * from './irc/IrcMessage';
6
+ export * from './messages/AddressCache';
7
+ export * from './messages/BatchFundingGroup';
8
+ export * from './messages/CetAdaptorSignatures';
9
+ export * from './messages/ContractDescriptor';
10
+ export * from './messages/ContractInfo';
11
+ export * from './messages/DlcAccept';
12
+ export * from './messages/DlcCancel';
13
+ export * from './messages/DlcClose';
14
+ export * from './messages/DlcCloseMetadata';
15
+ export * from './messages/DlcIds';
16
+ export * from './messages/DlcInfo';
17
+ export * from './messages/DlcMessage';
18
+ export * from './messages/DlcOffer';
19
+ export * from './messages/DlcSign';
20
+ export * from './messages/DlcTransactions';
21
+ export * from './messages/EventDescriptor';
22
+ export * from './messages/FundingInput';
23
+ export * from './messages/FundingSignatures';
24
+ export * from './messages/NegotiationFields';
25
+ export * from './messages/NodeAnnouncementMessage';
26
+ export * from './messages/OracleAnnouncement';
27
+ export * from './messages/OracleAttestation';
28
+ export * from './messages/OracleEventContainer';
29
+ export * from './messages/OracleEvent';
30
+ export * from './messages/OracleIdentifier';
31
+ export * from './messages/OracleInfo';
32
+ export * from './messages/OrderAccept';
33
+ export * from './messages/OrderNegotiationFields';
34
+ export * from './messages/OrderOffer';
35
+ export * from './messages/OrderPositionInfo';
36
+ export * from './messages/OrderIrcInfo';
37
+ export * from './messages/OrderMetadata';
38
+ export * from './messages/PayoutCurvePiece';
39
+ export * from './messages/PayoutFunction';
40
+ export * from './messages/RoundingIntervals';
41
+ export * from './messages/ScriptWitnessV0';
42
+ export * from './MessageType';
43
+ export * from './validation/validate';
44
+ export { F64 } from './serialize/F64';
@@ -0,0 +1,161 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+ import { crc32c } from '@node-dlc/checksum';
3
+
4
+ import { MessageType } from '../MessageType';
5
+
6
+ const MAX_DATA_LEN = 190;
7
+
8
+ export abstract class IrcMessage {
9
+ public static deserialize(buf: Buffer): IrcMessageV0 {
10
+ const reader = new BufferReader(buf);
11
+
12
+ const type = Number(reader.readUInt16BE());
13
+
14
+ switch (type) {
15
+ case MessageType.IrcMessageV0:
16
+ return IrcMessageV0.deserialize(buf);
17
+ default:
18
+ throw new Error(`Irc message type must be IrcMessageV0`);
19
+ }
20
+ }
21
+
22
+ public abstract type: number;
23
+
24
+ public abstract serialize(): Buffer;
25
+ }
26
+
27
+ /**
28
+ * IrcMessage contains information for Irc message packet.
29
+ */
30
+ export class IrcMessageV0 extends IrcMessage {
31
+ public static type = MessageType.IrcMessageV0;
32
+
33
+ public static fromBuffer(buf: Buffer, pubkey: Buffer): IrcMessageV0[] {
34
+ const instances: IrcMessageV0[] = [];
35
+
36
+ const checksum = crc32c(buf);
37
+
38
+ const sequenceLength = Math.ceil(buf.length / MAX_DATA_LEN);
39
+
40
+ const reader = new BufferReader(buf);
41
+ const bufLen = buf.length;
42
+
43
+ const currentTime = Math.floor(new Date().getTime() / 1000);
44
+
45
+ for (let i = 0; i < sequenceLength; i++) {
46
+ const sequenceNumber = i;
47
+ const instance = new IrcMessageV0();
48
+
49
+ instance.sequenceLength = BigInt(sequenceLength);
50
+ instance.sequenceNumber = BigInt(sequenceNumber);
51
+ instance.checksum = checksum;
52
+ instance.pubkey = pubkey;
53
+ instance.timestamp = currentTime;
54
+ instance.data = reader.readBytes(
55
+ Math.min(MAX_DATA_LEN, bufLen - reader.position),
56
+ );
57
+
58
+ instances.push(instance);
59
+ }
60
+
61
+ return instances;
62
+ }
63
+
64
+ public static fromString(str: string, pubkey: Buffer): IrcMessageV0[] {
65
+ const buf = Buffer.from(str);
66
+
67
+ return IrcMessageV0.fromBuffer(buf, pubkey);
68
+ }
69
+
70
+ /**
71
+ * Deserializes an irc message
72
+ * @param buf
73
+ */
74
+ public static deserialize(buf: Buffer): IrcMessageV0 {
75
+ const instance = new IrcMessageV0();
76
+ const reader = new BufferReader(buf);
77
+
78
+ reader.readBigSize(); // read type
79
+
80
+ instance.length = reader.readBigSize();
81
+
82
+ instance.sequenceLength = reader.readBigSize();
83
+ instance.sequenceNumber = reader.readBigSize();
84
+
85
+ instance.checksum = reader.readUInt32BE();
86
+
87
+ instance.signature = reader.readBytes(64);
88
+ instance.pubkey = reader.readBytes(33);
89
+ instance.timestamp = reader.readUInt32BE();
90
+
91
+ const dataLen = reader.readUInt16BE();
92
+ instance.data = reader.readBytes(dataLen);
93
+
94
+ return instance;
95
+ }
96
+
97
+ public type = IrcMessageV0.type;
98
+
99
+ public length: bigint;
100
+
101
+ public sequenceLength: bigint;
102
+
103
+ public sequenceNumber: bigint;
104
+
105
+ public checksum: number;
106
+
107
+ public signature: Buffer;
108
+
109
+ public pubkey: Buffer;
110
+
111
+ public timestamp: number;
112
+
113
+ public data: Buffer;
114
+
115
+ public serializeWithoutSig(): Buffer {
116
+ const writer = new BufferWriter();
117
+ writer.writeBigSize(this.sequenceLength);
118
+ writer.writeBigSize(this.sequenceNumber);
119
+ writer.writeUInt64BE(this.checksum);
120
+ writer.writeBytes(this.pubkey);
121
+ writer.writeUInt32BE(this.timestamp);
122
+ writer.writeUInt16BE(this.data.length);
123
+ writer.writeBytes(this.data);
124
+
125
+ return writer.toBuffer();
126
+ }
127
+
128
+ /**
129
+ * Serializes the irc_message_v0
130
+ */
131
+ public serialize(): Buffer {
132
+ const writer = new BufferWriter();
133
+ writer.writeBigSize(this.type);
134
+
135
+ const dataWriter = new BufferWriter();
136
+ dataWriter.writeBigSize(this.sequenceLength);
137
+ dataWriter.writeBigSize(this.sequenceNumber);
138
+ dataWriter.writeUInt32BE(this.checksum);
139
+ dataWriter.writeBytes(this.signature);
140
+ dataWriter.writeBytes(this.pubkey);
141
+ dataWriter.writeUInt32BE(this.timestamp);
142
+ dataWriter.writeUInt16BE(this.data.length);
143
+ dataWriter.writeBytes(this.data);
144
+
145
+ writer.writeBigSize(dataWriter.size);
146
+ writer.writeBytes(dataWriter.toBuffer());
147
+
148
+ return writer.toBuffer();
149
+ }
150
+ }
151
+
152
+ export class IrcMessageWithoutSig {
153
+ constructor(
154
+ readonly sequenceLength: bigint,
155
+ readonly sequenceNumber: bigint,
156
+ readonly checksum: number,
157
+ readonly signature: Buffer,
158
+ readonly pubkey: Buffer,
159
+ readonly data: Buffer,
160
+ ) {}
161
+ }