@bopen-io/wallet-toolbox 2.15.0-bopen.2 → 2.15.1

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 (194) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/README.md +127 -25
  3. package/docs/client.md +312 -154
  4. package/docs/monitor.md +2 -2
  5. package/docs/no-send-expiry.md +7 -2
  6. package/docs/services.md +143 -60
  7. package/docs/wallet.md +208 -117
  8. package/out/src/CWIStyleWalletManager.d.ts +36 -5
  9. package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
  10. package/out/src/CWIStyleWalletManager.js +356 -60
  11. package/out/src/CWIStyleWalletManager.js.map +1 -1
  12. package/out/src/Wallet.d.ts.map +1 -1
  13. package/out/src/Wallet.js +8 -3
  14. package/out/src/Wallet.js.map +1 -1
  15. package/out/src/WalletAuthenticationManager.d.ts +3 -0
  16. package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
  17. package/out/src/WalletAuthenticationManager.js +86 -3
  18. package/out/src/WalletAuthenticationManager.js.map +1 -1
  19. package/out/src/WalletPermissionsManager.d.ts +63 -9
  20. package/out/src/WalletPermissionsManager.d.ts.map +1 -1
  21. package/out/src/WalletPermissionsManager.js +213 -49
  22. package/out/src/WalletPermissionsManager.js.map +1 -1
  23. package/out/src/monitor/Monitor.js +1 -1
  24. package/out/src/monitor/Monitor.js.map +1 -1
  25. package/out/src/monitor/monitorValidation.d.ts +2 -1
  26. package/out/src/monitor/monitorValidation.d.ts.map +1 -1
  27. package/out/src/monitor/monitorValidation.js +2 -2
  28. package/out/src/monitor/monitorValidation.js.map +1 -1
  29. package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
  30. package/out/src/monitor/tasks/TaskNewHeader.js +1 -1
  31. package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
  32. package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
  33. package/out/src/monitor/tasks/TaskReviewUtxos.js +2 -1
  34. package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
  35. package/out/src/sdk/WERR_errors.d.ts +4 -0
  36. package/out/src/sdk/WERR_errors.d.ts.map +1 -1
  37. package/out/src/sdk/WERR_errors.js +4 -0
  38. package/out/src/sdk/WERR_errors.js.map +1 -1
  39. package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
  40. package/out/src/sdk/WalletErrorFromJson.js +23 -2
  41. package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
  42. package/out/src/sdk/WalletStorage.interfaces.d.ts +11 -0
  43. package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
  44. package/out/src/sdk/types.d.ts +12 -1
  45. package/out/src/sdk/types.d.ts.map +1 -1
  46. package/out/src/sdk/types.js +19 -2
  47. package/out/src/sdk/types.js.map +1 -1
  48. package/out/src/services/Services.d.ts.map +1 -1
  49. package/out/src/services/Services.js +5 -3
  50. package/out/src/services/Services.js.map +1 -1
  51. package/out/src/services/chaintracker/BHServiceClient.js +2 -2
  52. package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
  53. package/out/src/services/chaintracker/chaintracks/Chaintracks.js +2 -2
  54. package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
  55. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
  56. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +3 -1
  57. package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
  58. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
  59. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +3 -1
  60. package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
  61. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +1 -1
  62. package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
  63. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +1 -1
  64. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
  65. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +1 -1
  66. package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
  67. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
  68. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +2 -0
  69. package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
  70. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +2 -2
  71. package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
  72. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +6 -6
  73. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
  74. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +2 -2
  75. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
  76. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +2 -2
  77. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
  78. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +1 -0
  79. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
  80. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +11 -3
  81. package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
  82. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
  83. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +13 -9
  84. package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
  85. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
  86. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +2 -2
  87. package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
  88. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
  89. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +2 -2
  90. package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
  91. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +23 -5
  92. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
  93. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +58 -16
  94. package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
  95. package/out/src/services/createDefaultWalletServicesOptions.d.ts +6 -3
  96. package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
  97. package/out/src/services/createDefaultWalletServicesOptions.js +18 -6
  98. package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
  99. package/out/src/services/networkConfig.d.ts +7 -0
  100. package/out/src/services/networkConfig.d.ts.map +1 -1
  101. package/out/src/services/networkConfig.js +25 -2
  102. package/out/src/services/networkConfig.js.map +1 -1
  103. package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
  104. package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
  105. package/out/src/services/providers/SdkWhatsOnChain.js +17 -6
  106. package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
  107. package/out/src/services/validateMerklePathResult.d.ts +4 -3
  108. package/out/src/services/validateMerklePathResult.d.ts.map +1 -1
  109. package/out/src/services/validateMerklePathResult.js +6 -6
  110. package/out/src/services/validateMerklePathResult.js.map +1 -1
  111. package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
  112. package/out/src/signer/actionBatch/ActionBatchWorkspace.js +3 -2
  113. package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
  114. package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
  115. package/out/src/signer/methods/buildSignableTransaction.js +7 -3
  116. package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
  117. package/out/src/signer/methods/createAction.d.ts +32 -1
  118. package/out/src/signer/methods/createAction.d.ts.map +1 -1
  119. package/out/src/signer/methods/createAction.js +56 -1
  120. package/out/src/signer/methods/createAction.js.map +1 -1
  121. package/out/src/signer/methods/internalizeAction.js +1 -1
  122. package/out/src/signer/methods/internalizeAction.js.map +1 -1
  123. package/out/src/signer/methods/signAction.js +8 -1
  124. package/out/src/signer/methods/signAction.js.map +1 -1
  125. package/out/src/storage/StorageIdb.js +4 -4
  126. package/out/src/storage/StorageIdb.js.map +1 -1
  127. package/out/src/storage/StorageKnex.d.ts +6 -2
  128. package/out/src/storage/StorageKnex.d.ts.map +1 -1
  129. package/out/src/storage/StorageKnex.js +114 -0
  130. package/out/src/storage/StorageKnex.js.map +1 -1
  131. package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
  132. package/out/src/storage/WalletStorageManager.js +5 -0
  133. package/out/src/storage/WalletStorageManager.js.map +1 -1
  134. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  135. package/out/src/storage/methods/ListOutputsSpecOp.js +84 -0
  136. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  137. package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
  138. package/out/src/storage/methods/attemptToPostReqsToNetwork.js +7 -3
  139. package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
  140. package/out/src/storage/methods/createAction.d.ts +5 -0
  141. package/out/src/storage/methods/createAction.d.ts.map +1 -1
  142. package/out/src/storage/methods/createAction.js +13 -6
  143. package/out/src/storage/methods/createAction.js.map +1 -1
  144. package/out/src/storage/methods/generateChange.d.ts +6 -0
  145. package/out/src/storage/methods/generateChange.d.ts.map +1 -1
  146. package/out/src/storage/methods/generateChange.js +10 -3
  147. package/out/src/storage/methods/generateChange.js.map +1 -1
  148. package/out/src/storage/methods/internalizeAction.d.ts +8 -1
  149. package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
  150. package/out/src/storage/methods/internalizeAction.js +106 -42
  151. package/out/src/storage/methods/internalizeAction.js.map +1 -1
  152. package/out/src/storage/methods/listOutputsKnex.js +1 -1
  153. package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
  154. package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
  155. package/out/src/storage/methods/noSendExpiry.js +14 -4
  156. package/out/src/storage/methods/noSendExpiry.js.map +1 -1
  157. package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
  158. package/out/src/storage/remoting/StorageClientBase.js +15 -5
  159. package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
  160. package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
  161. package/out/src/storage/remoting/StorageServer.js +12 -1
  162. package/out/src/storage/remoting/StorageServer.js.map +1 -1
  163. package/out/src/storage/remoting/syncChunkBinary.d.ts +10 -0
  164. package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -1
  165. package/out/src/storage/remoting/syncChunkBinary.js +15 -11
  166. package/out/src/storage/remoting/syncChunkBinary.js.map +1 -1
  167. package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
  168. package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
  169. package/out/src/storage/schema/KnexMigrations.js +26 -4
  170. package/out/src/storage/schema/KnexMigrations.js.map +1 -1
  171. package/out/src/storage/sync/liveSyncGuards.d.ts +11 -0
  172. package/out/src/storage/sync/liveSyncGuards.d.ts.map +1 -0
  173. package/out/src/storage/sync/liveSyncGuards.js +22 -0
  174. package/out/src/storage/sync/liveSyncGuards.js.map +1 -0
  175. package/out/src/utility/actionOutputAuthorizations.d.ts +10 -0
  176. package/out/src/utility/actionOutputAuthorizations.d.ts.map +1 -0
  177. package/out/src/utility/actionOutputAuthorizations.js +25 -0
  178. package/out/src/utility/actionOutputAuthorizations.js.map +1 -0
  179. package/out/src/utility/index.all.d.ts +1 -0
  180. package/out/src/utility/index.all.d.ts.map +1 -1
  181. package/out/src/utility/index.all.js +1 -0
  182. package/out/src/utility/index.all.js.map +1 -1
  183. package/out/src/utility/index.client.d.ts +1 -0
  184. package/out/src/utility/index.client.d.ts.map +1 -1
  185. package/out/src/utility/index.client.js +1 -0
  186. package/out/src/utility/index.client.js.map +1 -1
  187. package/out/src/utility/numericTotalOutputs.d.ts +7 -0
  188. package/out/src/utility/numericTotalOutputs.d.ts.map +1 -0
  189. package/out/src/utility/numericTotalOutputs.js +15 -0
  190. package/out/src/utility/numericTotalOutputs.js.map +1 -0
  191. package/out/src/utility/utilityHelpers.d.ts.map +1 -1
  192. package/out/src/utility/utilityHelpers.js +2 -0
  193. package/out/src/utility/utilityHelpers.js.map +1 -1
  194. package/package.json +43 -46
package/docs/monitor.md CHANGED
@@ -1349,10 +1349,10 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
1349
1349
  ##### Function: copyValidatedMonitorHeader
1350
1350
 
1351
1351
  ```ts
1352
- export function copyValidatedMonitorHeader(value: unknown, name = "header", requireProofOfWork = true): BlockHeader
1352
+ export function copyValidatedMonitorHeader(value: unknown, name = "header", requireProofOfWork = true, chain?: Chain): BlockHeader
1353
1353
  ```
1354
1354
 
1355
- See also: [BlockHeader](./client.md#interface-blockheader)
1355
+ See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain)
1356
1356
 
1357
1357
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
1358
1358
 
@@ -54,8 +54,8 @@ cannot be overridden by a custom permission module or asserted through
54
54
 
55
55
  Before returning the protected action, Wallet Toolbox:
56
56
 
57
- 1. calculates the exact wallet funding required by its requested outputs,
58
- explicit inputs, and fee;
57
+ 1. calculates an anchor large enough for both the wallet funding required by
58
+ its requested outputs, explicit inputs, and fee, and an economic reclaim;
59
59
  2. creates and immediately broadcasts a normal funding transaction containing
60
60
  a dedicated managed-change output;
61
61
  3. requires processor acceptance of that funding transaction;
@@ -64,6 +64,11 @@ Before returning the protected action, Wallet Toolbox:
64
64
  5. signs and durably stores a one-input reclaim transaction to a fresh
65
65
  `default`-basket output.
66
66
 
67
+ When the reclaim floor exceeds the protected action's delivery need, the
68
+ protected action pays that difference as miner fee. It still creates no wallet
69
+ change and selects no managed input beyond its named anchor. Ordinary action
70
+ change planning is unchanged.
71
+
67
72
  The wallet returns the protected transaction to the caller but never
68
73
  broadcasts it. The funding transaction may have ordinary change because it is
69
74
  already on the network; significant wallet change is therefore not held inside
package/docs/services.md CHANGED
@@ -5819,6 +5819,13 @@ export class ChaintracksStorageNoDb extends ChaintracksStorageBase {
5819
5819
  tipHeaderId: 0,
5820
5820
  hashToHeaderId: new Map<string, number>()
5821
5821
  };
5822
+ static readonly regtestData: ChaintracksNoDbData = {
5823
+ chain: "regtest",
5824
+ liveHeaders: new Map<number, LiveBlockHeader>(),
5825
+ maxHeaderId: 0,
5826
+ tipHeaderId: 0,
5827
+ hashToHeaderId: new Map<string, number>()
5828
+ };
5822
5829
  constructor(options: ChaintracksStorageNoDbOptions)
5823
5830
  override async destroy(): Promise<void>
5824
5831
  async getData(): Promise<ChaintracksNoDbData>
@@ -6349,7 +6356,8 @@ export default class SdkWhatsOnChain implements ChainTracker {
6349
6356
  protected readonly URL: string;
6350
6357
  protected readonly httpClient: HttpClient;
6351
6358
  protected readonly requestTimeoutMsecs: number;
6352
- constructor(network: "main" | "test" | "stn" | "ttn" | "tstn" = "main", config: LocalWhatsOnChainConfig = {})
6359
+ constructor(network: "main" | "test" | "stn" | "ttn" | "tstn" | "regtest" = "main", config: LocalWhatsOnChainConfig = {})
6360
+ get isAvailable(): boolean
6353
6361
  protected async request<T, Data = unknown>(url: string, options: HttpClientRequestOptions<Data>): Promise<HttpClientResponse<T>>
6354
6362
  async isValidRootForHeight(root: string, height: number): Promise<boolean>
6355
6363
  async currentHeight(): Promise<number>
@@ -6360,9 +6368,10 @@ export default class SdkWhatsOnChain implements ChainTracker {
6360
6368
  ###### Constructor
6361
6369
 
6362
6370
  Constructs an instance of the WhatsOnChain ChainTracker.
6371
+ `tstn` and `regtest` have no WhatsOnChain service, so every request made for them is refused.
6363
6372
 
6364
6373
  ```ts
6365
- constructor(network: "main" | "test" | "stn" | "ttn" | "tstn" = "main", config: LocalWhatsOnChainConfig = {})
6374
+ constructor(network: "main" | "test" | "stn" | "ttn" | "tstn" | "regtest" = "main", config: LocalWhatsOnChainConfig = {})
6366
6375
  ```
6367
6376
 
6368
6377
  Argument Details
@@ -6758,50 +6767,51 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
6758
6767
 
6759
6768
  | | | |
6760
6769
  | --- | --- | --- |
6761
- | [WocHeadersBulkListener](#function-wocheadersbulklistener) | [getWhatsOnChainBlockHeaderByHash](#function-getwhatsonchainblockheaderbyhash) | [serializeBaseBlockHeader](#function-serializebaseblockheader) |
6762
- | [WocHeadersBulkListener_test](#function-wocheadersbulklistener_test) | [handlePostRawTxErrorResponse](#function-handlepostrawtxerrorresponse) | [serializeBaseBlockHeaders](#function-serializebaseblockheaders) |
6763
- | [WocHeadersLiveListener](#function-wocheaderslivelistener) | [handleScriptHashHistoryCatch](#function-handlescripthashhistorycatch) | [sha256HashOfBinaryFile](#function-sha256hashofbinaryfile) |
6764
- | [WocHeadersLiveListener_test](#function-wocheaderslivelistener_test) | [handleScriptHashHistoryResponse](#function-handlescripthashhistoryresponse) | [snapshotMerklePathResult](#function-snapshotmerklepathresult) |
6765
- | [addWork](#function-addwork) | [handleUtxoConnReset](#function-handleutxoconnreset) | [snapshotPostBeefRequest](#function-snapshotpostbeefrequest) |
6766
- | [arcDefaultUrl](#function-arcdefaulturl) | [isArcAcceptedTxStatus](#function-isarcacceptedtxstatus) | [startChaintracks](#function-startchaintracks) |
6767
- | [arcGorillaPoolUrl](#function-arcgorillapoolurl) | [isArcDoubleSpendTxStatus](#function-isarcdoublespendtxstatus) | [stnArcadeUrl](#function-stnarcadeurl) |
6768
- | [arcadeDefaultUrl](#function-arcadedefaulturl) | [isArcInvalidTxStatus](#function-isarcinvalidtxstatus) | [stnChaintracksUrl](#function-stnchaintracksurl) |
6769
- | [authenticateMerklePathResult](#function-authenticatemerklepathresult) | [isArcServiceErrorStatus](#function-isarcserviceerrorstatus) | [subWork](#function-subwork) |
6770
- | [blockHash](#function-blockhash) | [isBaseBlockHeader](#function-isbaseblockheader) | [swapByteOrder](#function-swapbyteorder) |
6771
- | [buildChaintracksOptionsWithIngestors](#function-buildchaintracksoptionswithingestors) | [isBlockHeader](#function-isblockheader) | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
6772
- | [classifyArcadeRejection](#function-classifyarcaderejection) | [isKnownValidBulkHeaderFile](#function-isknownvalidbulkheaderfile) | [toDefaultChaintracksArguments](#function-todefaultchaintracksarguments) |
6773
- | [classifyMerklePathResponse](#function-classifymerklepathresponse) | [isLive](#function-islive) | [toDefaultKnexChaintracksArguments](#function-todefaultknexchaintracksarguments) |
6774
- | [classifyOutputUtxo](#function-classifyoutpututxo) | [isLiveBlockHeader](#function-isliveblockheader) | [tstnArcadeUrl](#function-tstnarcadeurl) |
6775
- | [containsControlCharacter](#function-containscontrolcharacter) | [isMoreWork](#function-ismorework) | [tstnChaintracksUrl](#function-tstnchaintracksurl) |
6776
- | [convertBitsToTarget](#function-convertbitstotarget) | [isValidFiatRate](#function-isvalidfiatrate) | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
6777
- | [convertBitsToWork](#function-convertbitstowork) | [makeMerklePathNote](#function-makemerklepathnote) | [updateExchangeratesapi](#function-updateexchangeratesapi) |
6778
- | [convertBufferToUint32](#function-convertbuffertouint32) | [makePostBeefServiceError](#function-makepostbeefserviceerror) | [validBulkHeaderFilesByFileHash](#function-validbulkheaderfilesbyfilehash) |
6779
- | [convertUint32ToBuffer](#function-convertuint32tobuffer) | [mapWithConcurrency](#function-mapwithconcurrency) | [validateAgainstDirtyHashes](#function-validateagainstdirtyhashes) |
6780
- | [convertWocToBlockHeaderHex](#function-convertwoctoblockheaderhex) | [normalizeArcProviderConfig](#function-normalizearcproviderconfig) | [validateArcadeTxData](#function-validatearcadetxdata) |
6781
- | [copyRawTransactionBytes](#function-copyrawtransactionbytes) | [normalizeBulkFileDataValidationRequest](#function-normalizebulkfiledatavalidationrequest) | [validateBaseBlockHeaderFormat](#function-validatebaseblockheaderformat) |
6782
- | [copyValidatedBlockHeader](#function-copyvalidatedblockheader) | [normalizeBulkHeaderFileInfo](#function-normalizebulkheaderfileinfo) | [validateBufferOfHeaders](#function-validatebufferofheaders) |
6783
- | [createAndStartDefaultChaintracks](#function-createandstartdefaultchaintracks) | [normalizeBulkHeaderFileSequence](#function-normalizebulkheaderfilesequence) | [validateBulkFileData](#function-validatebulkfiledata) |
6784
- | [createAndStartDefaultKnexChaintracks](#function-createandstartdefaultknexchaintracks) | [normalizeBulkHeaderFilesInfo](#function-normalizebulkheaderfilesinfo) | [validateGenesisHeader](#function-validategenesisheader) |
6785
- | [createChaintracksInitialSchema](#function-createchaintracksinitialschema) | [normalizeFiatCurrencies](#function-normalizefiatcurrencies) | [validateHeaderDifficulty](#function-validateheaderdifficulty) |
6786
- | [createDefaultBulkFileDataManager](#function-createdefaultbulkfiledatamanager) | [normalizeFiatCurrency](#function-normalizefiatcurrency) | [validateHeaderFormat](#function-validateheaderformat) |
6787
- | [createDefaultChaintracksClient](#function-createdefaultchaintracksclient) | [normalizeFiatExchangeRates](#function-normalizefiatexchangerates) | [validateHeaderProofOfWork](#function-validateheaderproofofwork) |
6788
- | [createDefaultChaintracksStorageOptions](#function-createdefaultchaintracksstorageoptions) | [normalizeFiatRate](#function-normalizefiatrate) | [validateMerklePathResult](#function-validatemerklepathresult) |
6789
- | [createDefaultIdbChaintracksOptions](#function-createdefaultidbchaintracksoptions) | [normalizeFiatRateTimestamps](#function-normalizefiatratetimestamps) | [validatePostBeefResult](#function-validatepostbeefresult) |
6790
- | [createDefaultKnexChaintracksOptions](#function-createdefaultknexchaintracksoptions) | [normalizeFiatTimestamp](#function-normalizefiattimestamp) | [validatePostBeefResultOrServiceError](#function-validatepostbeefresultorserviceerror) |
6791
- | [createDefaultNoDbChaintracksOptions](#function-createdefaultnodbchaintracksoptions) | [normalizePostRawHex](#function-normalizepostrawhex) | [validatePostTxResult](#function-validateposttxresult) |
6792
- | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) | [normalizePostTxids](#function-normalizeposttxids) | [validatePostTxResultOrServiceError](#function-validateposttxresultorserviceerror) |
6793
- | [createIdbChaintracks](#function-createidbchaintracks) | [normalizeTxid](#function-normalizetxid) | [validateRawTxResult](#function-validaterawtxresult) |
6794
- | [createKnexChaintracks](#function-createknexchaintracks) | [normalizeWalletOutpoint](#function-normalizewalletoutpoint) | [validateScriptHash](#function-validatescripthash) |
6795
- | [createNoDbChaintracks](#function-createnodbchaintracks) | [parseFileLink](#function-parsefilelink) | [validateScriptHashHistoryResult](#function-validatescripthashhistoryresult) |
6796
- | [createStopHandler](#function-createstophandler) | [populateUtxoDetails](#function-populateutxodetails) | [validateStatusForTxidsResult](#function-validatestatusfortxidsresult) |
6797
- | [deserializeBaseBlockHeader](#function-deserializebaseblockheader) | [publicArcadeUrl](#function-publicarcadeurl) | [validateUtxoStatusResult](#function-validateutxostatusresult) |
6798
- | [deserializeBaseBlockHeaders](#function-deserializebaseblockheaders) | [readUInt32BE](#function-readuint32be) | [validateWocChainInfo](#function-validatewocchaininfo) |
6799
- | [deserializeBlockHeader](#function-deserializeblockheader) | [readUInt32LE](#function-readuint32le) | [wocGetHeadersHeaderToBlockHeader](#function-wocgetheadersheadertoblockheader) |
6800
- | [deserializeBlockHeaders](#function-deserializeblockheaders) | [requireConclusiveUtxo](#function-requireconclusiveutxo) | [workBNtoBuffer](#function-workbntobuffer) |
6801
- | [genesisBuffer](#function-genesisbuffer) | [resolveDefaultChaintracksArguments](#function-resolvedefaultchaintracksarguments) | [writeUInt32BE](#function-writeuint32be) |
6802
- | [genesisHeader](#function-genesisheader) | [resolveDefaultKnexChaintracksArguments](#function-resolvedefaultknexchaintracksarguments) | [writeUInt32LE](#function-writeuint32le) |
6803
- | [getBeefForTxid](#function-getbeeffortxid) | [safeDiagnostic](#function-safediagnostic) | |
6804
- | [getExchangeRatesIo](#function-getexchangeratesio) | [selectBulkHeaderFiles](#function-selectbulkheaderfiles) | |
6770
+ | [WocHeadersBulkListener](#function-wocheadersbulklistener) | [handlePostRawTxErrorResponse](#function-handlepostrawtxerrorresponse) | [selectBulkHeaderFiles](#function-selectbulkheaderfiles) |
6771
+ | [WocHeadersBulkListener_test](#function-wocheadersbulklistener_test) | [handleScriptHashHistoryCatch](#function-handlescripthashhistorycatch) | [serializeBaseBlockHeader](#function-serializebaseblockheader) |
6772
+ | [WocHeadersLiveListener](#function-wocheaderslivelistener) | [handleScriptHashHistoryResponse](#function-handlescripthashhistoryresponse) | [serializeBaseBlockHeaders](#function-serializebaseblockheaders) |
6773
+ | [WocHeadersLiveListener_test](#function-wocheaderslivelistener_test) | [handleUtxoConnReset](#function-handleutxoconnreset) | [sha256HashOfBinaryFile](#function-sha256hashofbinaryfile) |
6774
+ | [addWork](#function-addwork) | [isArcAcceptedTxStatus](#function-isarcacceptedtxstatus) | [snapshotMerklePathResult](#function-snapshotmerklepathresult) |
6775
+ | [arcDefaultUrl](#function-arcdefaulturl) | [isArcDoubleSpendTxStatus](#function-isarcdoublespendtxstatus) | [snapshotPostBeefRequest](#function-snapshotpostbeefrequest) |
6776
+ | [arcGorillaPoolUrl](#function-arcgorillapoolurl) | [isArcInvalidTxStatus](#function-isarcinvalidtxstatus) | [startChaintracks](#function-startchaintracks) |
6777
+ | [arcadeDefaultUrl](#function-arcadedefaulturl) | [isArcServiceErrorStatus](#function-isarcserviceerrorstatus) | [stnArcadeUrl](#function-stnarcadeurl) |
6778
+ | [authenticateMerklePathResult](#function-authenticatemerklepathresult) | [isBaseBlockHeader](#function-isbaseblockheader) | [stnChaintracksUrl](#function-stnchaintracksurl) |
6779
+ | [blockHash](#function-blockhash) | [isBlockHeader](#function-isblockheader) | [subWork](#function-subwork) |
6780
+ | [buildChaintracksOptionsWithIngestors](#function-buildchaintracksoptionswithingestors) | [isKnownValidBulkHeaderFile](#function-isknownvalidbulkheaderfile) | [swapByteOrder](#function-swapbyteorder) |
6781
+ | [classifyArcadeRejection](#function-classifyarcaderejection) | [isLive](#function-islive) | [toBinaryBaseBlockHeader](#function-tobinarybaseblockheader) |
6782
+ | [classifyMerklePathResponse](#function-classifymerklepathresponse) | [isLiveBlockHeader](#function-isliveblockheader) | [toDefaultChaintracksArguments](#function-todefaultchaintracksarguments) |
6783
+ | [classifyOutputUtxo](#function-classifyoutpututxo) | [isMoreWork](#function-ismorework) | [toDefaultKnexChaintracksArguments](#function-todefaultknexchaintracksarguments) |
6784
+ | [containsControlCharacter](#function-containscontrolcharacter) | [isValidFiatRate](#function-isvalidfiatrate) | [tstnArcadeUrl](#function-tstnarcadeurl) |
6785
+ | [convertBitsToTarget](#function-convertbitstotarget) | [makeMerklePathNote](#function-makemerklepathnote) | [tstnChaintracksUrl](#function-tstnchaintracksurl) |
6786
+ | [convertBitsToWork](#function-convertbitstowork) | [makePostBeefServiceError](#function-makepostbeefserviceerror) | [updateChaintracksFiatExchangeRates](#function-updatechaintracksfiatexchangerates) |
6787
+ | [convertBufferToUint32](#function-convertbuffertouint32) | [mapWithConcurrency](#function-mapwithconcurrency) | [updateExchangeratesapi](#function-updateexchangeratesapi) |
6788
+ | [convertUint32ToBuffer](#function-convertuint32tobuffer) | [normalizeArcProviderConfig](#function-normalizearcproviderconfig) | [validBulkHeaderFilesByFileHash](#function-validbulkheaderfilesbyfilehash) |
6789
+ | [convertWocToBlockHeaderHex](#function-convertwoctoblockheaderhex) | [normalizeBulkFileDataValidationRequest](#function-normalizebulkfiledatavalidationrequest) | [validateAgainstDirtyHashes](#function-validateagainstdirtyhashes) |
6790
+ | [copyRawTransactionBytes](#function-copyrawtransactionbytes) | [normalizeBulkHeaderFileInfo](#function-normalizebulkheaderfileinfo) | [validateArcadeTxData](#function-validatearcadetxdata) |
6791
+ | [copyValidatedBlockHeader](#function-copyvalidatedblockheader) | [normalizeBulkHeaderFileSequence](#function-normalizebulkheaderfilesequence) | [validateBaseBlockHeaderFormat](#function-validatebaseblockheaderformat) |
6792
+ | [createAndStartDefaultChaintracks](#function-createandstartdefaultchaintracks) | [normalizeBulkHeaderFilesInfo](#function-normalizebulkheaderfilesinfo) | [validateBufferOfHeaders](#function-validatebufferofheaders) |
6793
+ | [createAndStartDefaultKnexChaintracks](#function-createandstartdefaultknexchaintracks) | [normalizeFiatCurrencies](#function-normalizefiatcurrencies) | [validateBulkFileData](#function-validatebulkfiledata) |
6794
+ | [createChaintracksInitialSchema](#function-createchaintracksinitialschema) | [normalizeFiatCurrency](#function-normalizefiatcurrency) | [validateGenesisHeader](#function-validategenesisheader) |
6795
+ | [createDefaultBulkFileDataManager](#function-createdefaultbulkfiledatamanager) | [normalizeFiatExchangeRates](#function-normalizefiatexchangerates) | [validateHeaderDifficulty](#function-validateheaderdifficulty) |
6796
+ | [createDefaultChaintracksClient](#function-createdefaultchaintracksclient) | [normalizeFiatRate](#function-normalizefiatrate) | [validateHeaderFormat](#function-validateheaderformat) |
6797
+ | [createDefaultChaintracksStorageOptions](#function-createdefaultchaintracksstorageoptions) | [normalizeFiatRateTimestamps](#function-normalizefiatratetimestamps) | [validateHeaderProofOfWork](#function-validateheaderproofofwork) |
6798
+ | [createDefaultIdbChaintracksOptions](#function-createdefaultidbchaintracksoptions) | [normalizeFiatTimestamp](#function-normalizefiattimestamp) | [validateMerklePathResult](#function-validatemerklepathresult) |
6799
+ | [createDefaultKnexChaintracksOptions](#function-createdefaultknexchaintracksoptions) | [normalizePostRawHex](#function-normalizepostrawhex) | [validatePostBeefResult](#function-validatepostbeefresult) |
6800
+ | [createDefaultNoDbChaintracksOptions](#function-createdefaultnodbchaintracksoptions) | [normalizePostTxids](#function-normalizeposttxids) | [validatePostBeefResultOrServiceError](#function-validatepostbeefresultorserviceerror) |
6801
+ | [createDefaultWalletServicesOptions](#function-createdefaultwalletservicesoptions) | [normalizeTxid](#function-normalizetxid) | [validatePostTxResult](#function-validateposttxresult) |
6802
+ | [createIdbChaintracks](#function-createidbchaintracks) | [normalizeWalletOutpoint](#function-normalizewalletoutpoint) | [validatePostTxResultOrServiceError](#function-validateposttxresultorserviceerror) |
6803
+ | [createKnexChaintracks](#function-createknexchaintracks) | [parseFileLink](#function-parsefilelink) | [validateRawTxResult](#function-validaterawtxresult) |
6804
+ | [createNoDbChaintracks](#function-createnodbchaintracks) | [populateUtxoDetails](#function-populateutxodetails) | [validateScriptHash](#function-validatescripthash) |
6805
+ | [createStopHandler](#function-createstophandler) | [proofOfWorkLimitBits](#function-proofofworklimitbits) | [validateScriptHashHistoryResult](#function-validatescripthashhistoryresult) |
6806
+ | [deserializeBaseBlockHeader](#function-deserializebaseblockheader) | [publicArcadeUrl](#function-publicarcadeurl) | [validateStatusForTxidsResult](#function-validatestatusfortxidsresult) |
6807
+ | [deserializeBaseBlockHeaders](#function-deserializebaseblockheaders) | [readUInt32BE](#function-readuint32be) | [validateUtxoStatusResult](#function-validateutxostatusresult) |
6808
+ | [deserializeBlockHeader](#function-deserializeblockheader) | [readUInt32LE](#function-readuint32le) | [validateWocChainInfo](#function-validatewocchaininfo) |
6809
+ | [deserializeBlockHeaders](#function-deserializeblockheaders) | [regtestArcadeUrl](#function-regtestarcadeurl) | [wocGetHeadersHeaderToBlockHeader](#function-wocgetheadersheadertoblockheader) |
6810
+ | [genesisBuffer](#function-genesisbuffer) | [regtestChaintracksUrl](#function-regtestchaintracksurl) | [workBNtoBuffer](#function-workbntobuffer) |
6811
+ | [genesisHeader](#function-genesisheader) | [requireConclusiveUtxo](#function-requireconclusiveutxo) | [writeUInt32BE](#function-writeuint32be) |
6812
+ | [getBeefForTxid](#function-getbeeffortxid) | [resolveDefaultChaintracksArguments](#function-resolvedefaultchaintracksarguments) | [writeUInt32LE](#function-writeuint32le) |
6813
+ | [getExchangeRatesIo](#function-getexchangeratesio) | [resolveDefaultKnexChaintracksArguments](#function-resolvedefaultknexchaintracksarguments) | |
6814
+ | [getWhatsOnChainBlockHeaderByHash](#function-getwhatsonchainblockheaderbyhash) | [safeDiagnostic](#function-safediagnostic) | |
6805
6815
 
6806
6816
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6807
6817
 
@@ -6964,10 +6974,10 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
6964
6974
  ##### Function: authenticateMerklePathResult
6965
6975
 
6966
6976
  ```ts
6967
- export async function authenticateMerklePathResult(requestedTxid: unknown, result: GetMerklePathResult, validator: MerkleRootValidator, requireProofOfWork = false, requireHeaderFormat = true): Promise<ValidatedMerklePathResult>
6977
+ export async function authenticateMerklePathResult(requestedTxid: unknown, result: GetMerklePathResult, validator: MerkleRootValidator, requireProofOfWork = false, requireHeaderFormat = true, chain?: Chain): Promise<ValidatedMerklePathResult>
6968
6978
  ```
6969
6979
 
6970
- See also: [GetMerklePathResult](./client.md#interface-getmerklepathresult), [MerkleRootValidator](./services.md#interface-merklerootvalidator), [ValidatedMerklePathResult](./services.md#interface-validatedmerklepathresult)
6980
+ See also: [Chain](./client.md#type-chain), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [MerkleRootValidator](./services.md#interface-merklerootvalidator), [ValidatedMerklePathResult](./services.md#interface-validatedmerklepathresult)
6971
6981
 
6972
6982
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
6973
6983
 
@@ -7093,9 +7103,11 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
7093
7103
  Computes "chainWork" value for 4 byte Bitcoin block header "bits" value.
7094
7104
 
7095
7105
  ```ts
7096
- export function convertBitsToWork(bits: number | number[]): string
7106
+ export function convertBitsToWork(bits: number | number[], chain?: Chain): string
7097
7107
  ```
7098
7108
 
7109
+ See also: [Chain](./client.md#type-chain)
7110
+
7099
7111
  Returns
7100
7112
 
7101
7113
  32 byte Buffer with "chainWork" value
@@ -7104,6 +7116,9 @@ Argument Details
7104
7116
 
7105
7117
  + **bits**
7106
7118
  + number or converted from Buffer using `readUint32LE`
7119
+ + **chain**
7120
+ + Optional chain the header belongs to. Selects its proof-of-work limit
7121
+ (see `proofOfWorkLimitBits`); omitted means the mainnet limit.
7107
7122
 
7108
7123
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
7109
7124
 
@@ -7195,10 +7210,10 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
7195
7210
  ##### Function: copyValidatedBlockHeader
7196
7211
 
7197
7212
  ```ts
7198
- export function copyValidatedBlockHeader(value: unknown, requireProofOfWork = false, requireHeaderFormat = true): BlockHeader
7213
+ export function copyValidatedBlockHeader(value: unknown, requireProofOfWork = false, requireHeaderFormat = true, chain?: Chain): BlockHeader
7199
7214
  ```
7200
7215
 
7201
- See also: [BlockHeader](./client.md#interface-blockheader)
7216
+ See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain)
7202
7217
 
7203
7218
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
7204
7219
 
@@ -7544,6 +7559,17 @@ export function genesisHeader(chain: Chain): BlockHeader {
7544
7559
  height: 0,
7545
7560
  hash: "000000005d221c0e023cb56b5682cf094f32cd959958b40bc931e5797cae706c"
7546
7561
  };
7562
+ case "regtest":
7563
+ return {
7564
+ version: 1,
7565
+ previousHash: "0000000000000000000000000000000000000000000000000000000000000000",
7566
+ merkleRoot: "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
7567
+ time: 1296688602,
7568
+ bits: 545259519,
7569
+ nonce: 2,
7570
+ height: 0,
7571
+ hash: "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"
7572
+ };
7547
7573
  case "mock":
7548
7574
  throw new Error("genesisHeader does not support 'mock' chain. Mock chain generates its own genesis block.");
7549
7575
  }
@@ -8051,6 +8077,23 @@ See also: [GetUtxoStatusResult](./client.md#interface-getutxostatusresult)
8051
8077
 
8052
8078
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8053
8079
 
8080
+ ---
8081
+ ##### Function: proofOfWorkLimitBits
8082
+
8083
+ The compact encoding of the highest proof-of-work target `chain` admits.
8084
+
8085
+ Only `'regtest'` raises the limit. Every other chain — and an omitted chain,
8086
+ which is how every caller that predates this parameter asks — keeps the mainnet
8087
+ limit, so no existing validation is relaxed.
8088
+
8089
+ ```ts
8090
+ export function proofOfWorkLimitBits(chain?: Chain): number
8091
+ ```
8092
+
8093
+ See also: [Chain](./client.md#type-chain)
8094
+
8095
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8096
+
8054
8097
  ---
8055
8098
  ##### Function: publicArcadeUrl
8056
8099
 
@@ -8082,6 +8125,29 @@ export function readUInt32LE(a: number[] | Uint8Array, offset: number): number
8082
8125
 
8083
8126
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8084
8127
 
8128
+ ---
8129
+ ##### Function: regtestArcadeUrl
8130
+
8131
+ Arcade broadcaster / ARC endpoint for regtest, or `undefined` when `REGTEST_ARCADE_URL` is unset.
8132
+
8133
+ ```ts
8134
+ export function regtestArcadeUrl(): string | undefined
8135
+ ```
8136
+
8137
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8138
+
8139
+ ---
8140
+ ##### Function: regtestChaintracksUrl
8141
+
8142
+ ChainTracks service URL for regtest. Falls back to `${REGTEST_ARCADE_URL}/chaintracks/v1` when
8143
+ `REGTEST_CHAINTRACKS_URL` is unset (mirrors the tstn layout). Throws when neither is configured.
8144
+
8145
+ ```ts
8146
+ export function regtestChaintracksUrl(): string
8147
+ ```
8148
+
8149
+ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8150
+
8085
8151
  ---
8086
8152
  ##### Function: requireConclusiveUtxo
8087
8153
 
@@ -8474,12 +8540,14 @@ Validate headers contained in an array of bytes. The headers must be consecutive
8474
8540
  where the hash of each header equals the previousHash of the following header.
8475
8541
 
8476
8542
  ```ts
8477
- export function validateBufferOfHeaders(buffer: Uint8Array, previousHash: string, offset = 0, count = -1, previousChainWork?: string): {
8543
+ export function validateBufferOfHeaders(buffer: Uint8Array, previousHash: string, offset = 0, count = -1, previousChainWork?: string, chain?: Chain): {
8478
8544
  lastHeaderHash: string;
8479
8545
  lastChainWork: string | undefined;
8480
8546
  }
8481
8547
  ```
8482
8548
 
8549
+ See also: [Chain](./client.md#type-chain)
8550
+
8483
8551
  Returns
8484
8552
 
8485
8553
  Header hash of last header validated or previousHash if there where none.
@@ -8494,6 +8562,11 @@ Argument Details
8494
8562
  + Optional starting offset within `buffer`.
8495
8563
  + **count**
8496
8564
  + Optional number of headers to validate. Validates to end of buffer if missing.
8565
+ + **previousChainWork**
8566
+ + Optional chain work through `previousHash`; when present, the result carries it forward.
8567
+ + **chain**
8568
+ + Optional chain the headers belong to. Selects its proof-of-work limit
8569
+ (see `proofOfWorkLimitBits`); omitted means the mainnet limit.
8497
8570
 
8498
8571
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8499
8572
 
@@ -8544,17 +8617,24 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
8544
8617
  Ensures that a header has a valid proof-of-work target and hash.
8545
8618
 
8546
8619
  ```ts
8547
- export function validateHeaderDifficulty(hash: number[] | Uint8Array, bits: number)
8620
+ export function validateHeaderDifficulty(hash: number[] | Uint8Array, bits: number, chain?: Chain)
8548
8621
  ```
8549
8622
 
8623
+ See also: [Chain](./client.md#type-chain)
8624
+
8550
8625
  Returns
8551
8626
 
8552
8627
  true if the header is valid
8553
8628
 
8554
8629
  Argument Details
8555
8630
 
8556
- + **header**
8557
- + The header to validate
8631
+ + **hash**
8632
+ + The header hash, big-endian.
8633
+ + **bits**
8634
+ + The header's compact target.
8635
+ + **chain**
8636
+ + Optional chain the header belongs to. Selects its proof-of-work limit
8637
+ (see `proofOfWorkLimitBits`); omitted means the mainnet limit.
8558
8638
 
8559
8639
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8560
8640
 
@@ -8576,13 +8656,13 @@ Ensures that a structured header's computed hash satisfies its declared
8576
8656
  proof-of-work target.
8577
8657
 
8578
8658
  ```ts
8579
- export function validateHeaderProofOfWork(header: BlockHeader): true {
8580
- validateConsensusProofOfWork(header.hash, header.bits);
8659
+ export function validateHeaderProofOfWork(header: BlockHeader, chain?: Chain): true {
8660
+ validateConsensusProofOfWork(header.hash, header.bits, chain);
8581
8661
  return true;
8582
8662
  }
8583
8663
  ```
8584
8664
 
8585
- See also: [BlockHeader](./client.md#interface-blockheader)
8665
+ See also: [BlockHeader](./client.md#interface-blockheader), [Chain](./client.md#type-chain)
8586
8666
 
8587
8667
  Returns
8588
8668
 
@@ -8592,6 +8672,9 @@ Argument Details
8592
8672
 
8593
8673
  + **header**
8594
8674
  + Header whose format and hash have already been checked.
8675
+ + **chain**
8676
+ + Optional chain the header belongs to. Selects its proof-of-work limit
8677
+ (see `proofOfWorkLimitBits`); omitted means the mainnet limit.
8595
8678
 
8596
8679
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8597
8680
 
@@ -8599,10 +8682,10 @@ Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](
8599
8682
  ##### Function: validateMerklePathResult
8600
8683
 
8601
8684
  ```ts
8602
- export function validateMerklePathResult(requestedTxid: unknown, result: GetMerklePathResult, requireProofOfWork = false, requireHeaderFormat = true): ValidatedMerklePathResult
8685
+ export function validateMerklePathResult(requestedTxid: unknown, result: GetMerklePathResult, requireProofOfWork = false, requireHeaderFormat = true, chain?: Chain): ValidatedMerklePathResult
8603
8686
  ```
8604
8687
 
8605
- See also: [GetMerklePathResult](./client.md#interface-getmerklepathresult), [ValidatedMerklePathResult](./services.md#interface-validatedmerklepathresult)
8688
+ See also: [Chain](./client.md#type-chain), [GetMerklePathResult](./client.md#interface-getmerklepathresult), [ValidatedMerklePathResult](./services.md#interface-validatedmerklepathresult)
8606
8689
 
8607
8690
  Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Types](#types), [Variables](#variables)
8608
8691