@bsv/wallet-toolbox 1.6.23 → 1.6.24

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 (197) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/docs/client.md +298 -167
  3. package/docs/monitor.md +126 -23
  4. package/docs/services.md +86 -37
  5. package/docs/wallet.md +298 -167
  6. package/mobile/out/src/index.mobile.d.ts +1 -1
  7. package/mobile/out/src/index.mobile.js +1 -1
  8. package/mobile/out/src/monitor/Monitor.d.ts +32 -8
  9. package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
  10. package/mobile/out/src/monitor/Monitor.js +59 -28
  11. package/mobile/out/src/monitor/Monitor.js.map +1 -1
  12. package/mobile/out/src/monitor/tasks/TaskCheckNoSends.js +2 -1
  13. package/mobile/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  14. package/mobile/out/src/monitor/tasks/TaskClock.js +3 -2
  15. package/mobile/out/src/monitor/tasks/TaskClock.js.map +1 -1
  16. package/mobile/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
  17. package/mobile/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  18. package/mobile/out/src/monitor/tasks/TaskNewHeader.js +2 -1
  19. package/mobile/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  20. package/mobile/out/src/monitor/tasks/TaskReorg.d.ts +47 -0
  21. package/mobile/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -0
  22. package/mobile/out/src/monitor/tasks/TaskReorg.js +135 -0
  23. package/mobile/out/src/monitor/tasks/TaskReorg.js.map +1 -0
  24. package/mobile/out/src/monitor/tasks/TaskSendWaiting.js +2 -1
  25. package/mobile/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  26. package/mobile/out/src/monitor/tasks/TaskUnFail.js +2 -1
  27. package/mobile/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  28. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +1 -1
  29. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  30. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +4 -0
  31. package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  32. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  33. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js +3 -1
  34. package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  35. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  36. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +4 -1
  37. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  38. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  39. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +3 -1
  40. package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  41. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +5 -0
  42. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -0
  43. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +68 -0
  44. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -0
  45. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -1
  46. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  47. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +59 -15
  48. package/mobile/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  49. package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +1 -1
  50. package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  51. package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +4 -61
  52. package/mobile/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  53. package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +13 -0
  54. package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -0
  55. package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +27 -0
  56. package/mobile/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -0
  57. package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts +2 -28
  58. package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
  59. package/mobile/out/src/services/chaintracker/chaintracks/index.client.js +2 -50
  60. package/mobile/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
  61. package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +30 -0
  62. package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -0
  63. package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.js +68 -0
  64. package/mobile/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -0
  65. package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +11 -11
  66. package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  67. package/mobile/package-lock.json +7 -6
  68. package/mobile/package.json +2 -2
  69. package/out/src/index.mobile.d.ts +1 -1
  70. package/out/src/index.mobile.js +1 -1
  71. package/out/src/monitor/Monitor.d.ts +32 -8
  72. package/out/src/monitor/Monitor.d.ts.map +1 -1
  73. package/out/src/monitor/Monitor.js +59 -28
  74. package/out/src/monitor/Monitor.js.map +1 -1
  75. package/out/src/monitor/MonitorDaemon.d.ts +2 -0
  76. package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
  77. package/out/src/monitor/MonitorDaemon.js +3 -1
  78. package/out/src/monitor/MonitorDaemon.js.map +1 -1
  79. package/out/src/monitor/__test/MonitorDaemon.man.test.js +30 -39
  80. package/out/src/monitor/__test/MonitorDaemon.man.test.js.map +1 -1
  81. package/out/src/monitor/tasks/TaskCheckNoSends.js +2 -1
  82. package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
  83. package/out/src/monitor/tasks/TaskClock.js +3 -2
  84. package/out/src/monitor/tasks/TaskClock.js.map +1 -1
  85. package/out/src/monitor/tasks/TaskMonitorCallHistory.js +2 -1
  86. package/out/src/monitor/tasks/TaskMonitorCallHistory.js.map +1 -1
  87. package/out/src/monitor/tasks/TaskNewHeader.js +2 -1
  88. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  89. package/out/src/monitor/tasks/TaskReorg.d.ts +47 -0
  90. package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -0
  91. package/out/src/monitor/tasks/TaskReorg.js +135 -0
  92. package/out/src/monitor/tasks/TaskReorg.js.map +1 -0
  93. package/out/src/monitor/tasks/TaskSendWaiting.js +2 -1
  94. package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
  95. package/out/src/monitor/tasks/TaskUnFail.js +2 -1
  96. package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
  97. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +1 -1
  98. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
  99. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +4 -0
  100. package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
  101. package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
  102. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +3 -1
  103. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  104. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +1 -1
  105. package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
  106. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
  107. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +4 -1
  108. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  109. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
  110. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +3 -1
  111. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  112. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  113. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +3 -1
  114. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  115. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +1 -1
  116. package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
  117. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts +5 -0
  118. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -0
  119. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +68 -0
  120. package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -0
  121. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts +2 -1
  122. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
  123. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js +66 -22
  124. package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
  125. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts +2 -1
  126. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
  127. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js +59 -15
  128. package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
  129. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +1 -1
  130. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
  131. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +4 -61
  132. package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
  133. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts +14 -0
  134. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -0
  135. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +27 -0
  136. package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -0
  137. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts +13 -0
  138. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -0
  139. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +27 -0
  140. package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -0
  141. package/out/src/services/chaintracker/chaintracks/index.all.d.ts +1 -0
  142. package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
  143. package/out/src/services/chaintracker/chaintracks/index.all.js +1 -0
  144. package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
  145. package/out/src/services/chaintracker/chaintracks/index.client.d.ts +2 -28
  146. package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
  147. package/out/src/services/chaintracker/chaintracks/index.client.js +2 -50
  148. package/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
  149. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +30 -0
  150. package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -0
  151. package/out/src/services/chaintracker/chaintracks/index.mobile.js +68 -0
  152. package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -0
  153. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +11 -11
  154. package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
  155. package/out/src/services/chaintracker/index.mobile.d.ts +4 -0
  156. package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -0
  157. package/out/src/services/chaintracker/index.mobile.js +20 -0
  158. package/out/src/services/chaintracker/index.mobile.js.map +1 -0
  159. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  160. package/out/src/storage/schema/KnexMigrations.js +12 -0
  161. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  162. package/out/test/monitor/Monitor.test.js +32 -29
  163. package/out/test/monitor/Monitor.test.js.map +1 -1
  164. package/out/tsconfig.all.tsbuildinfo +1 -1
  165. package/package.json +2 -2
  166. package/src/index.mobile.ts +1 -1
  167. package/src/monitor/Monitor.ts +94 -29
  168. package/src/monitor/MonitorDaemon.ts +9 -1
  169. package/src/monitor/__test/MonitorDaemon.man.test.ts +35 -7
  170. package/src/monitor/tasks/TaskCheckNoSends.ts +1 -1
  171. package/src/monitor/tasks/TaskClock.ts +2 -2
  172. package/src/monitor/tasks/TaskMonitorCallHistory.ts +1 -1
  173. package/src/monitor/tasks/TaskNewHeader.ts +1 -1
  174. package/src/monitor/tasks/TaskReorg.ts +139 -0
  175. package/src/monitor/tasks/TaskSendWaiting.ts +3 -3
  176. package/src/monitor/tasks/TaskUnFail.ts +1 -1
  177. package/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.ts +6 -1
  178. package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +4 -0
  179. package/src/services/chaintracker/chaintracks/Chaintracks.ts +3 -1
  180. package/src/services/chaintracker/chaintracks/ChaintracksService.ts +2 -2
  181. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +4 -1
  182. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +4 -12
  183. package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +3 -1
  184. package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +2 -2
  185. package/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.ts +92 -0
  186. package/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.ts +84 -25
  187. package/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.ts +79 -17
  188. package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +11 -64
  189. package/src/services/chaintracker/chaintracks/createKnexChaintracks.ts +65 -0
  190. package/src/services/chaintracker/chaintracks/createNoDbChaintracks.ts +60 -0
  191. package/src/services/chaintracker/chaintracks/index.all.ts +1 -0
  192. package/src/services/chaintracker/chaintracks/index.client.ts +2 -35
  193. package/src/services/chaintracker/chaintracks/index.mobile.ts +37 -0
  194. package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +11 -11
  195. package/src/services/chaintracker/index.mobile.ts +4 -0
  196. package/src/storage/schema/KnexMigrations.ts +13 -0
  197. package/test/monitor/Monitor.test.ts +21 -16
package/docs/monitor.md CHANGED
@@ -21,6 +21,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
21
21
 
22
22
  | |
23
23
  | --- |
24
+ | [DeactivedHeader](#interface-deactivedheader) |
24
25
  | [MonitorDaemonSetup](#interface-monitordaemonsetup) |
25
26
  | [MonitorOptions](#interface-monitoroptions) |
26
27
  | [TaskPurgeParams](#interface-taskpurgeparams) |
@@ -29,6 +30,47 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
29
30
 
30
31
  ---
31
32
 
33
+ ##### Interface: DeactivedHeader
34
+
35
+ ```ts
36
+ export interface DeactivedHeader {
37
+ whenMsecs: number;
38
+ tries: number;
39
+ header: BlockHeader;
40
+ }
41
+ ```
42
+
43
+ See also: [BlockHeader](./client.md#interface-blockheader)
44
+
45
+ ###### Property header
46
+
47
+ The deactivated block header.
48
+
49
+ ```ts
50
+ header: BlockHeader
51
+ ```
52
+ See also: [BlockHeader](./client.md#interface-blockheader)
53
+
54
+ ###### Property tries
55
+
56
+ Number of attempts made to process the header.
57
+ Supports returning deactivation notification to the queue if proof data is not yet available.
58
+
59
+ ```ts
60
+ tries: number
61
+ ```
62
+
63
+ ###### Property whenMsecs
64
+
65
+ To control aging of notification before pursuing updated proof data.
66
+
67
+ ```ts
68
+ whenMsecs: number
69
+ ```
70
+
71
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
72
+
73
+ ---
32
74
  ##### Interface: MonitorDaemonSetup
33
75
 
34
76
  ```ts
@@ -44,10 +86,11 @@ export interface MonitorDaemonSetup {
44
86
  servicesOptions?: WalletServicesOptions;
45
87
  services?: Services;
46
88
  monitor?: Monitor;
89
+ chaintracks?: Chaintracks;
47
90
  }
48
91
  ```
49
92
 
50
- See also: [Chain](./client.md#type-chain), [Monitor](./monitor.md#class-monitor), [Services](./services.md#class-services), [StorageKnexOptions](./storage.md#interface-storageknexoptions), [StorageProvider](./storage.md#class-storageprovider), [WalletServicesOptions](./client.md#interface-walletservicesoptions), [WalletStorageManager](./storage.md#class-walletstoragemanager)
93
+ See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [Monitor](./monitor.md#class-monitor), [Services](./services.md#class-services), [StorageKnexOptions](./storage.md#interface-storageknexoptions), [StorageProvider](./storage.md#class-storageprovider), [WalletServicesOptions](./client.md#interface-walletservicesoptions), [WalletStorageManager](./storage.md#class-walletstoragemanager)
51
94
 
52
95
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
53
96
 
@@ -60,6 +103,7 @@ export interface MonitorOptions {
60
103
  services: Services;
61
104
  storage: MonitorStorage;
62
105
  chaintracks: ChaintracksClientApi;
106
+ chaintracksWithEvents?: Chaintracks;
63
107
  msecsWaitPerMerkleProofServiceReq: number;
64
108
  taskRunWaitMsecs: number;
65
109
  abandonedMsecs: number;
@@ -70,7 +114,7 @@ export interface MonitorOptions {
70
114
  }
71
115
  ```
72
116
 
73
- See also: [Chain](./client.md#type-chain), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services)
117
+ See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services)
74
118
 
75
119
  ###### Property msecsWaitPerMerkleProofServiceReq
76
120
 
@@ -132,13 +176,14 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
132
176
 
133
177
  | | |
134
178
  | --- | --- |
135
- | [Monitor](#class-monitor) | [TaskNewHeader](#class-tasknewheader) |
136
- | [MonitorDaemon](#class-monitordaemon) | [TaskPurge](#class-taskpurge) |
179
+ | [Monitor](#class-monitor) | [TaskPurge](#class-taskpurge) |
180
+ | [MonitorDaemon](#class-monitordaemon) | [TaskReorg](#class-taskreorg) |
137
181
  | [TaskCheckForProofs](#class-taskcheckforproofs) | [TaskReviewStatus](#class-taskreviewstatus) |
138
182
  | [TaskCheckNoSends](#class-taskchecknosends) | [TaskSendWaiting](#class-tasksendwaiting) |
139
183
  | [TaskClock](#class-taskclock) | [TaskSyncWhenIdle](#class-tasksyncwhenidle) |
140
184
  | [TaskFailAbandoned](#class-taskfailabandoned) | [TaskUnFail](#class-taskunfail) |
141
185
  | [TaskMonitorCallHistory](#class-taskmonitorcallhistory) | [WalletMonitorTask](#class-walletmonitortask) |
186
+ | [TaskNewHeader](#class-tasknewheader) | |
142
187
 
143
188
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
144
189
 
@@ -151,20 +196,24 @@ and potentially that reorgs update proofs that were already received.
151
196
 
152
197
  ```ts
153
198
  export class Monitor {
154
- static createDefaultWalletMonitorOptions(chain: Chain, storage: MonitorStorage, services?: Services): MonitorOptions
199
+ static createDefaultWalletMonitorOptions(chain: Chain, storage: MonitorStorage, services?: Services, chaintracks?: Chaintracks): MonitorOptions
155
200
  options: MonitorOptions;
156
201
  services: Services;
157
202
  chain: Chain;
158
203
  storage: MonitorStorage;
159
204
  chaintracks: ChaintracksClientApi;
205
+ chaintracksWithEvents?: Chaintracks;
206
+ reorgSubscriptionPromise?: Promise<string>;
207
+ headersSubscriptionPromise?: Promise<string>;
160
208
  onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>;
161
209
  onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>;
162
210
  constructor(options: MonitorOptions)
163
- oneSecond = 1000;
164
- oneMinute = 60 * this.oneSecond;
165
- oneHour = 60 * this.oneMinute;
166
- oneDay = 24 * this.oneHour;
167
- oneWeek = 7 * this.oneDay;
211
+ async destroy(): Promise<void>
212
+ static readonly oneSecond = 1000;
213
+ static readonly oneMinute = 60 * Monitor.oneSecond;
214
+ static readonly oneHour = 60 * Monitor.oneMinute;
215
+ static readonly oneDay = 24 * Monitor.oneHour;
216
+ static readonly oneWeek = 7 * Monitor.oneDay;
168
217
  _tasks: WalletMonitorTask[] = [];
169
218
  _otherTasks: WalletMonitorTask[] = [];
170
219
  _tasksRunning = false;
@@ -172,19 +221,20 @@ export class Monitor {
172
221
  purgeSpent: false,
173
222
  purgeCompleted: false,
174
223
  purgeFailed: true,
175
- purgeSpentAge: 2 * this.oneWeek,
176
- purgeCompletedAge: 2 * this.oneWeek,
177
- purgeFailedAge: 5 * this.oneDay
224
+ purgeSpentAge: 2 * Monitor.oneWeek,
225
+ purgeCompletedAge: 2 * Monitor.oneWeek,
226
+ purgeFailedAge: 5 * Monitor.oneDay
178
227
  };
179
228
  addAllTasksToOther(): void
180
229
  addDefaultTasks(): void
181
230
  addMultiUserTasks(): void
182
231
  addTask(task: WalletMonitorTask): void
183
232
  removeTask(name: string): void
184
- async setupChaintracksListeners(): Promise<void>
185
233
  async runTask(name: string): Promise<string>
186
234
  async runOnce(): Promise<void>
187
235
  _runAsyncSetup: boolean = true;
236
+ _tasksRunningPromise?: PromiseLike<void>;
237
+ resolveCompletion: ((value: void | PromiseLike<void>) => void) | undefined = undefined;
188
238
  async startTasks(): Promise<void>
189
239
  async logEvent(event: string, details?: string): Promise<void>
190
240
  stopTasks(): void
@@ -193,11 +243,13 @@ export class Monitor {
193
243
  processNewBlockHeader(header: BlockHeader): void
194
244
  callOnBroadcastedTransaction(broadcastResult: ReviewActionResult): void
195
245
  callOnProvenTransaction(txStatus: ProvenTransactionStatus): void
196
- processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader): void
246
+ deactivatedHeaders: DeactivedHeader[] = [];
247
+ processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
248
+ processHeader(header: BlockHeader): void
197
249
  }
198
250
  ```
199
251
 
200
- See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [MonitorOptions](./monitor.md#interface-monitoroptions), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services), [TaskPurgeParams](./monitor.md#interface-taskpurgeparams), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
252
+ See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksClientApi](./services.md#interface-chaintracksclientapi), [DeactivedHeader](./monitor.md#interface-deactivedheader), [MonitorOptions](./monitor.md#interface-monitoroptions), [MonitorStorage](./monitor.md#type-monitorstorage), [ProvenTransactionStatus](./client.md#interface-proventransactionstatus), [ReviewActionResult](./client.md#interface-reviewactionresult), [Services](./services.md#class-services), [TaskPurgeParams](./monitor.md#interface-taskpurgeparams), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
201
253
 
202
254
  ###### Property _otherTasks
203
255
 
@@ -280,7 +332,7 @@ It is possible for a transaction to become invalid.
280
332
  Coinbase transactions always become invalid.
281
333
 
282
334
  ```ts
283
- processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader): void
335
+ processReorg(depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]): void
284
336
  ```
285
337
  See also: [BlockHeader](./client.md#interface-blockheader)
286
338
 
@@ -376,7 +428,7 @@ the original ProvenTxReq status is advanced to 'notifying'.
376
428
  export class TaskCheckNoSends extends WalletMonitorTask {
377
429
  static taskName = "CheckNoSends";
378
430
  static checkNow = false;
379
- constructor(monitor: Monitor, public triggerMsecs = monitor.oneDay * 1)
431
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneDay * 1)
380
432
  trigger(nowMsecsSinceEpoch: number): {
381
433
  run: boolean;
382
434
  }
@@ -414,7 +466,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
414
466
  export class TaskClock extends WalletMonitorTask {
415
467
  static taskName = "Clock";
416
468
  nextMinute: number;
417
- constructor(monitor: Monitor, public triggerMsecs = 1 * monitor.oneSecond)
469
+ constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneSecond)
418
470
  trigger(nowMsecsSinceEpoch: number): {
419
471
  run: boolean;
420
472
  }
@@ -458,7 +510,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
458
510
  ```ts
459
511
  export class TaskMonitorCallHistory extends WalletMonitorTask {
460
512
  static taskName = "MonitorCallHistory";
461
- constructor(monitor: Monitor, public triggerMsecs = monitor.oneMinute * 12)
513
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 12)
462
514
  trigger(nowMsecsSinceEpoch: number): {
463
515
  run: boolean;
464
516
  }
@@ -490,7 +542,7 @@ export class TaskNewHeader extends WalletMonitorTask {
490
542
  header?: BlockHeader;
491
543
  queuedHeader?: BlockHeader;
492
544
  queuedHeaderWhen?: Date;
493
- constructor(monitor: Monitor, public triggerMsecs = 1 * monitor.oneMinute)
545
+ constructor(monitor: Monitor, public triggerMsecs = 1 * Monitor.oneMinute)
494
546
  async getHeader(): Promise<BlockHeader>
495
547
  override async asyncSetup(): Promise<void>
496
548
  trigger(nowMsecsSinceEpoch: number): {
@@ -568,6 +620,57 @@ static checkNow = false
568
620
 
569
621
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
570
622
 
623
+ ---
624
+ ##### Class: TaskReorg
625
+
626
+ Check the `monitor.deactivatedHeaders` for any headers that have been deactivated.
627
+
628
+ When headers are found, review matching ProvenTx records and update proof data as appropriate.
629
+
630
+ New deactivated headers are pushed onto the `deactivatedHeaders` array.
631
+ They must be shifted out as they are processed.
632
+
633
+ The current implementation ages deactivation notifications by 10 minutes with each retry.
634
+ If a successful proof update confirms original proof data after 3 retries, the original is retained.
635
+
636
+ In normal operation there should never be any work for this task to perform.
637
+ The most common result is that there are no matching proven_txs records because
638
+ generating new proven_txs records intentionally lags new block generation to
639
+ minimize this disruption.
640
+
641
+ It is very disruptive to update a proven_txs record because:
642
+ - Sync'ed storage is impacted.
643
+ - Generated beefs are impacted.
644
+ - Updated proof data may be unavailable at the time a reorg is first reported.
645
+
646
+ Instead of reorg notification derived from new header notification, reorg repair to
647
+ the proven_txs table is more effectively driven by noticing that a beef generated for a new
648
+ createAction fails to verify against the chaintracker.
649
+
650
+ An alternate approach to processing these events is to revert the proven_txs record to a proven_tx_reqs record.
651
+ Pros:
652
+ - The same multiple attempt logic that already exists is reused.
653
+ - Failing to obtain a new proof already has transaction failure handling in place.
654
+ - Generated beefs automatically become one generation deeper, potentially allowing transaction outputs to be spent.
655
+ Cons:
656
+ - Transactions must revert to un-proven / un-mined.
657
+
658
+ ```ts
659
+ export class TaskReorg extends WalletMonitorTask {
660
+ static taskName = "Reorg";
661
+ process: DeactivedHeader[] = [];
662
+ constructor(monitor: Monitor, public agedMsecs = Monitor.oneMinute * 10, public maxRetries = 3)
663
+ trigger(nowMsecsSinceEpoch: number): {
664
+ run: boolean;
665
+ }
666
+ async runTask(): Promise<string>
667
+ }
668
+ ```
669
+
670
+ See also: [DeactivedHeader](./monitor.md#interface-deactivedheader), [Monitor](./monitor.md#class-monitor), [WalletMonitorTask](./monitor.md#class-walletmonitortask)
671
+
672
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
673
+
571
674
  ---
572
675
  ##### Class: TaskReviewStatus
573
676
 
@@ -611,7 +714,7 @@ export class TaskSendWaiting extends WalletMonitorTask {
611
714
  static taskName = "SendWaiting";
612
715
  lastSendingRunMsecsSinceEpoch: number | undefined;
613
716
  includeSending: boolean = true;
614
- constructor(monitor: Monitor, public triggerMsecs = monitor.oneSecond * 8, public agedMsecs = monitor.oneSecond * 7, public sendingMsecs = monitor.oneMinute * 5)
717
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneSecond * 8, public agedMsecs = Monitor.oneSecond * 7, public sendingMsecs = Monitor.oneMinute * 5)
615
718
  trigger(nowMsecsSinceEpoch: number): {
616
719
  run: boolean;
617
720
  }
@@ -679,7 +782,7 @@ If it fails (to find a merklePath), returns the req status to 'invalid'.
679
782
  export class TaskUnFail extends WalletMonitorTask {
680
783
  static taskName = "UnFail";
681
784
  static checkNow = false;
682
- constructor(monitor: Monitor, public triggerMsecs = monitor.oneMinute * 10)
785
+ constructor(monitor: Monitor, public triggerMsecs = Monitor.oneMinute * 10)
683
786
  trigger(nowMsecsSinceEpoch: number): {
684
787
  run: boolean;
685
788
  }
package/docs/services.md CHANGED
@@ -4828,25 +4828,26 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
4828
4828
 
4829
4829
  | | | |
4830
4830
  | --- | --- | --- |
4831
- | [WocHeadersBulkListener](#function-wocheadersbulklistener) | [deserializeBlockHeader](#function-deserializeblockheader) | [subWork](#function-subwork) |
4832
- | [WocHeadersBulkListener_test](#function-wocheadersbulklistener_test) | [deserializeBlockHeaders](#function-deserializeblockheaders) | [swapByteOrder](#function-swapbyteorder) |
4833
- | [WocHeadersLiveListener](#function-wocheaderslivelistener) | [genesisBuffer](#function-genesisbuffer) | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
4834
- | [WocHeadersLiveListener_test](#function-wocheaderslivelistener_test) | [genesisHeader](#function-genesisheader) | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
4835
- | [addWork](#function-addwork) | [getBeefForTxid](#function-getbeeffortxid) | [updateExchangeratesapi](#function-updateexchangeratesapi) |
4836
- | [arcDefaultUrl](#function-arcdefaulturl) | [getExchangeRatesIo](#function-getexchangeratesio) | [validBulkHeaderFilesByFileHash](#function-validbulkheaderfilesbyfilehash) |
4837
- | [arcGorillaPoolUrl](#function-arcgorillapoolurl) | [getWhatsOnChainBlockHeaderByHash](#function-getwhatsonchainblockheaderbyhash) | [validateAgainstDirtyHashes](#function-validateagainstdirtyhashes) |
4838
- | [blockHash](#function-blockhash) | [isBaseBlockHeader](#function-isbaseblockheader) | [validateBufferOfHeaders](#function-validatebufferofheaders) |
4839
- | [convertBitsToTarget](#function-convertbitstotarget) | [isBlockHeader](#function-isblockheader) | [validateBulkFileData](#function-validatebulkfiledata) |
4840
- | [convertBitsToWork](#function-convertbitstowork) | [isKnownValidBulkHeaderFile](#function-isknownvalidbulkheaderfile) | [validateGenesisHeader](#function-validategenesisheader) |
4841
- | [convertBufferToUint32](#function-convertbuffertouint32) | [isLive](#function-islive) | [validateHeaderDifficulty](#function-validateheaderdifficulty) |
4842
- | [convertUint32ToBuffer](#function-convertuint32tobuffer) | [isLiveBlockHeader](#function-isliveblockheader) | [validateHeaderFormat](#function-validateheaderformat) |
4843
- | [convertWocToBlockHeaderHex](#function-convertwoctoblockheaderhex) | [isMoreWork](#function-ismorework) | [validateScriptHash](#function-validatescripthash) |
4844
- | [createDefaultKnexChaintracksOptions](#function-createdefaultknexchaintracksoptions) | [readUInt32BE](#function-readuint32be) | [wocGetHeadersHeaderToBlockHeader](#function-wocgetheadersheadertoblockheader) |
4845
- | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) | [readUInt32LE](#function-readuint32le) | [workBNtoBuffer](#function-workbntobuffer) |
4846
- | [createIdbChaintracks](#function-createidbchaintracks) | [selectBulkHeaderFiles](#function-selectbulkheaderfiles) | [writeUInt32BE](#function-writeuint32be) |
4847
- | [createNoDbChaintracksOptions](#function-createnodbchaintracksoptions) | [serializeBaseBlockHeader](#function-serializebaseblockheader) | [writeUInt32LE](#function-writeuint32le) |
4848
- | [deserializeBaseBlockHeader](#function-deserializebaseblockheader) | [serializeBaseBlockHeaders](#function-serializebaseblockheaders) | |
4849
- | [deserializeBaseBlockHeaders](#function-deserializebaseblockheaders) | [sha256HashOfBinaryFile](#function-sha256hashofbinaryfile) | |
4831
+ | [WocHeadersBulkListener](#function-wocheadersbulklistener) | [deserializeBaseBlockHeader](#function-deserializebaseblockheader) | [sha256HashOfBinaryFile](#function-sha256hashofbinaryfile) |
4832
+ | [WocHeadersBulkListener_test](#function-wocheadersbulklistener_test) | [deserializeBaseBlockHeaders](#function-deserializebaseblockheaders) | [subWork](#function-subwork) |
4833
+ | [WocHeadersLiveListener](#function-wocheaderslivelistener) | [deserializeBlockHeader](#function-deserializeblockheader) | [swapByteOrder](#function-swapbyteorder) |
4834
+ | [WocHeadersLiveListener_test](#function-wocheaderslivelistener_test) | [deserializeBlockHeaders](#function-deserializeblockheaders) | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
4835
+ | [addWork](#function-addwork) | [genesisBuffer](#function-genesisbuffer) | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
4836
+ | [arcDefaultUrl](#function-arcdefaulturl) | [genesisHeader](#function-genesisheader) | [updateExchangeratesapi](#function-updateexchangeratesapi) |
4837
+ | [arcGorillaPoolUrl](#function-arcgorillapoolurl) | [getBeefForTxid](#function-getbeeffortxid) | [validBulkHeaderFilesByFileHash](#function-validbulkheaderfilesbyfilehash) |
4838
+ | [blockHash](#function-blockhash) | [getExchangeRatesIo](#function-getexchangeratesio) | [validateAgainstDirtyHashes](#function-validateagainstdirtyhashes) |
4839
+ | [convertBitsToTarget](#function-convertbitstotarget) | [getWhatsOnChainBlockHeaderByHash](#function-getwhatsonchainblockheaderbyhash) | [validateBufferOfHeaders](#function-validatebufferofheaders) |
4840
+ | [convertBitsToWork](#function-convertbitstowork) | [isBaseBlockHeader](#function-isbaseblockheader) | [validateBulkFileData](#function-validatebulkfiledata) |
4841
+ | [convertBufferToUint32](#function-convertbuffertouint32) | [isBlockHeader](#function-isblockheader) | [validateGenesisHeader](#function-validategenesisheader) |
4842
+ | [convertUint32ToBuffer](#function-convertuint32tobuffer) | [isKnownValidBulkHeaderFile](#function-isknownvalidbulkheaderfile) | [validateHeaderDifficulty](#function-validateheaderdifficulty) |
4843
+ | [convertWocToBlockHeaderHex](#function-convertwoctoblockheaderhex) | [isLive](#function-islive) | [validateHeaderFormat](#function-validateheaderformat) |
4844
+ | [createDefaultIdbChaintracksOptions](#function-createdefaultidbchaintracksoptions) | [isLiveBlockHeader](#function-isliveblockheader) | [validateScriptHash](#function-validatescripthash) |
4845
+ | [createDefaultKnexChaintracksOptions](#function-createdefaultknexchaintracksoptions) | [isMoreWork](#function-ismorework) | [wocGetHeadersHeaderToBlockHeader](#function-wocgetheadersheadertoblockheader) |
4846
+ | [createDefaultNoDbChaintracksOptions](#function-createdefaultnodbchaintracksoptions) | [readUInt32BE](#function-readuint32be) | [workBNtoBuffer](#function-workbntobuffer) |
4847
+ | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) | [readUInt32LE](#function-readuint32le) | [writeUInt32BE](#function-writeuint32be) |
4848
+ | [createIdbChaintracks](#function-createidbchaintracks) | [selectBulkHeaderFiles](#function-selectbulkheaderfiles) | [writeUInt32LE](#function-writeuint32le) |
4849
+ | [createKnexChaintracks](#function-createknexchaintracks) | [serializeBaseBlockHeader](#function-serializebaseblockheader) | |
4850
+ | [createNoDbChaintracks](#function-createnodbchaintracks) | [serializeBaseBlockHeaders](#function-serializebaseblockheaders) | |
4850
4851
 
4851
4852
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
4852
4853
 
@@ -5111,14 +5112,25 @@ See also: [BlockHeader](./client.md#interface-blockheader), [WocHeader](./servic
5111
5112
 
5112
5113
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5113
5114
 
5115
+ ---
5116
+ ##### Function: createDefaultIdbChaintracksOptions
5117
+
5118
+ ```ts
5119
+ export function createDefaultIdbChaintracksOptions(chain: Chain, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): ChaintracksOptions
5120
+ ```
5121
+
5122
+ See also: [Chain](./client.md#type-chain), [ChaintracksFetchApi](./services.md#interface-chaintracksfetchapi), [ChaintracksOptions](./services.md#interface-chaintracksoptions)
5123
+
5124
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5125
+
5114
5126
  ---
5115
5127
  ##### Function: createDefaultKnexChaintracksOptions
5116
5128
 
5117
5129
  ```ts
5118
- export function createDefaultKnexChaintracksOptions(chain: Chain, rootFolder?: string, knexConfig?: Knex.Config): ChaintracksOptions
5130
+ export function createDefaultKnexChaintracksOptions(chain: Chain, rootFolder: string = "./data/", knexConfig?: Knex.Config, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): ChaintracksOptions
5119
5131
  ```
5120
5132
 
5121
- See also: [Chain](./client.md#type-chain), [ChaintracksOptions](./services.md#interface-chaintracksoptions)
5133
+ See also: [Chain](./client.md#type-chain), [ChaintracksFetchApi](./services.md#interface-chaintracksfetchapi), [ChaintracksOptions](./services.md#interface-chaintracksoptions)
5122
5134
 
5123
5135
  Argument Details
5124
5136
 
@@ -5127,6 +5139,17 @@ Argument Details
5127
5139
 
5128
5140
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5129
5141
 
5142
+ ---
5143
+ ##### Function: createDefaultNoDbChaintracksOptions
5144
+
5145
+ ```ts
5146
+ export function createDefaultNoDbChaintracksOptions(chain: Chain, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): ChaintracksOptions
5147
+ ```
5148
+
5149
+ See also: [Chain](./client.md#type-chain), [ChaintracksFetchApi](./services.md#interface-chaintracksfetchapi), [ChaintracksOptions](./services.md#interface-chaintracksoptions)
5150
+
5151
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5152
+
5130
5153
  ---
5131
5154
  ##### Function: createDefaultWalletServicesOptions
5132
5155
 
@@ -5142,7 +5165,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
5142
5165
  ##### Function: createIdbChaintracks
5143
5166
 
5144
5167
  ```ts
5145
- export async function createIdbChaintracks(chain: Chain, whatsonchainApiKey: string, maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): Promise<{
5168
+ export async function createIdbChaintracks(chain: Chain, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): Promise<{
5146
5169
  chain: Chain;
5147
5170
  maxPerFile: number;
5148
5171
  fetch: ChaintracksFetchApi;
@@ -5157,13 +5180,38 @@ See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-cha
5157
5180
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5158
5181
 
5159
5182
  ---
5160
- ##### Function: createNoDbChaintracksOptions
5183
+ ##### Function: createKnexChaintracks
5184
+
5185
+ ```ts
5186
+ export async function createKnexChaintracks(chain: Chain, rootFolder: string = "./data/", knexConfig?: Knex.Config, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): Promise<{
5187
+ chain: Chain;
5188
+ maxPerFile: number;
5189
+ fetch: ChaintracksFetchApi;
5190
+ storage: ChaintracksStorageKnex;
5191
+ chaintracks: Chaintracks;
5192
+ available: Promise<void>;
5193
+ }>
5194
+ ```
5195
+
5196
+ See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksFetchApi](./services.md#interface-chaintracksfetchapi), [ChaintracksStorageKnex](./services.md#class-chaintracksstorageknex)
5197
+
5198
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5199
+
5200
+ ---
5201
+ ##### Function: createNoDbChaintracks
5161
5202
 
5162
5203
  ```ts
5163
- export function createNoDbChaintracksOptions(chain: Chain): ChaintracksOptions
5204
+ export async function createNoDbChaintracks(chain: Chain, whatsonchainApiKey: string = "", maxPerFile: number = 100000, maxRetained: number = 2, fetch?: ChaintracksFetchApi, cdnUrl: string = "https://cdn.projectbabbage.com/blockheaders/", liveHeightThreshold: number = 2000, reorgHeightThreshold: number = 400, bulkMigrationChunkSize: number = 500, batchInsertLimit: number = 400, addLiveRecursionLimit: number = 36): Promise<{
5205
+ chain: Chain;
5206
+ maxPerFile: number;
5207
+ fetch: ChaintracksFetchApi;
5208
+ storage: ChaintracksStorageNoDb;
5209
+ chaintracks: Chaintracks;
5210
+ available: Promise<void>;
5211
+ }>
5164
5212
  ```
5165
5213
 
5166
- See also: [Chain](./client.md#type-chain), [ChaintracksOptions](./services.md#interface-chaintracksoptions)
5214
+ See also: [Chain](./client.md#type-chain), [Chaintracks](./services.md#class-chaintracks), [ChaintracksFetchApi](./services.md#interface-chaintracksfetchapi), [ChaintracksStorageNoDb](./services.md#class-chaintracksstoragenodb)
5167
5215
 
5168
5216
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
5169
5217
 
@@ -5879,6 +5927,7 @@ export type InsertHeaderResult = {
5879
5927
  isActiveTip: boolean;
5880
5928
  reorgDepth: number;
5881
5929
  priorTip: LiveBlockHeader | undefined;
5930
+ deactivatedHeaders: LiveBlockHeader[];
5882
5931
  noPrev: boolean;
5883
5932
  badPrev: boolean;
5884
5933
  noActiveAncestor: boolean;
@@ -5894,7 +5943,7 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
5894
5943
  ##### Type: ReorgListener
5895
5944
 
5896
5945
  ```ts
5897
- export type ReorgListener = (depth: number, oldTip: BlockHeader, newTip: BlockHeader) => void
5946
+ export type ReorgListener = (depth: number, oldTip: BlockHeader, newTip: BlockHeader, deactivatedHeaders?: BlockHeader[]) => void
5898
5947
  ```
5899
5948
 
5900
5949
  See also: [BlockHeader](./client.md#interface-blockheader)
@@ -6161,16 +6210,16 @@ validBulkHeaderFiles: BulkHeaderFileInfo[] = [
6161
6210
  validated: true
6162
6211
  },
6163
6212
  {
6164
- sourceUrl: "https://cdn.projectbabbage.com/blockheaders",
6213
+ chain: "test",
6214
+ count: 95262,
6215
+ fileHash: "BvNO9eeMwCaN1Xsx8PQLMJ+YiqF9FrNe+9WnnEo9B44=",
6165
6216
  fileName: "testNet_16.headers",
6166
6217
  firstHeight: 1600000,
6167
- prevHash: "00000000000005504bfd1a3ce4688c30c86740390102b6cd464a2fb5e0e3fed1",
6168
- count: 89594,
6169
- lastHash: "0000000035ba2558f604ff73909944235b8094f07c0efa9c91f59b62b4920516",
6170
- fileHash: "jw+ItRm5zjngLuuClRZONclYWCC66wPovV3XPF585KU=",
6171
- lastChainWork: "00000000000000000000000000000000000000000000015814b79f747a43902a",
6218
+ lastChainWork: "00000000000000000000000000000000000000000000015814b84c3f9834ef93",
6219
+ lastHash: "000000000ca922c841cb7fedd8f012ebc27b17991c9b00a8fb7ca4b1b2b648d3",
6172
6220
  prevChainWork: "000000000000000000000000000000000000000000000156c3b84396da4e60b9",
6173
- chain: "test",
6221
+ prevHash: "00000000000005504bfd1a3ce4688c30c86740390102b6cd464a2fb5e0e3fed1",
6222
+ sourceUrl: "https://cdn.projectbabbage.com/blockheaders",
6174
6223
  validated: true
6175
6224
  },
6176
6225
  {
@@ -6305,12 +6354,12 @@ validBulkHeaderFiles: BulkHeaderFileInfo[] = [
6305
6354
  },
6306
6355
  {
6307
6356
  chain: "main",
6308
- count: 10376,
6309
- fileHash: "0CXeFvl+RHRb9kRKp6032vKCVnbs2K9A3Aa4cxg7iJU=",
6357
+ count: 15512,
6358
+ fileHash: "sbLY7ZiEWkdvgAbZlWxYJfd/CLxeYPtuwHrc4WZ0aL4=",
6310
6359
  fileName: "mainNet_9.headers",
6311
6360
  firstHeight: 900000,
6312
- lastChainWork: "000000000000000000000000000000000000000001683907cdf89f89a1258f08",
6313
- lastHash: "00000000000000000413b1b30aa83898de436af0906bb178904900069ec26337",
6361
+ lastChainWork: "00000000000000000000000000000000000000000168d586f9048fd69f17e1ca",
6362
+ lastHash: "000000000000000004c5e39626c72e67d669135a7c004ee86f7191e3ed01cdee",
6314
6363
  prevChainWork: "000000000000000000000000000000000000000001664db1f2d50327928007e0",
6315
6364
  prevHash: "00000000000000000e7dcc27c06ee353bd37260b2e7e664314c204f0324a5087",
6316
6365
  sourceUrl: "https://cdn.projectbabbage.com/blockheaders",