@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.14.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +744 -1
- package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
- package/README.md +823 -14
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/docs/README.md +44 -31
- package/docs/action-batch-planning.md +80 -37
- package/docs/client.md +12996 -4571
- package/docs/identity-verification.md +218 -0
- package/docs/local-first-chaintracks.md +129 -0
- package/docs/managed-change-liquidity.md +258 -0
- package/docs/managed-change-policy.md +14 -1
- package/docs/monitor.md +505 -190
- package/docs/no-send-expiry.md +167 -0
- package/docs/prepared-beef.md +197 -0
- package/docs/services.md +4013 -1153
- package/docs/setup.md +107 -56
- package/docs/storage.md +5781 -1599
- package/docs/sync-transfer.md +144 -0
- package/docs/wab-shamir.md +5 -1
- package/docs/wallet.md +10188 -10904
- package/out/src/CWIStyleWalletManager.d.ts +39 -31
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +309 -258
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +14 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +3 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +1 -0
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +3 -0
- package/out/src/SetupWallet.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js +34 -19
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +7 -6
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +54 -14
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +216 -114
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +32 -0
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +531 -78
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.js +1 -1
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +101 -43
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +897 -414
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +3 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js +143 -8
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +3 -2
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +143 -44
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/index.client.d.ts +6 -0
- package/out/src/index.client.d.ts.map +1 -1
- package/out/src/index.client.js +16 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +7 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +17 -1
- package/out/src/index.mobile.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +5 -5
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts +2 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +54 -14
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +51 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +282 -41
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +64 -16
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/monitorValidation.d.ts +12 -0
- package/out/src/monitor/monitorValidation.d.ts.map +1 -0
- package/out/src/monitor/monitorValidation.js +133 -0
- package/out/src/monitor/monitorValidation.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +6 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts +19 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +4 -4
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +31 -9
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +33 -6
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -13
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +26 -8
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/monitor/tasks/index.all.d.ts +2 -0
- package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
- package/out/src/monitor/tasks/index.all.js +2 -0
- package/out/src/monitor/tasks/index.all.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
- package/out/src/sdk/ActionBatch.interfaces.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -2
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WERR_errors.d.ts +23 -0
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +51 -7
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +7 -21
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +121 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +3 -2
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +3 -2
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.js +2 -2
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +346 -120
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +269 -66
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.d.ts +122 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
- package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts +48 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +53 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +28 -3
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +348 -30
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +378 -44
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +230 -28
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -87
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts +32 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +38 -4
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +48 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +14 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +17 -4
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/chaintracker/index.all.d.ts +1 -0
- package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.all.js +1 -0
- package/out/src/services/chaintracker/index.all.js.map +1 -1
- package/out/src/services/chaintracker/index.client.d.ts +1 -0
- package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.client.js +1 -0
- package/out/src/services/chaintracker/index.client.js.map +1 -1
- package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
- package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.mobile.js +1 -0
- package/out/src/services/chaintracker/index.mobile.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts +25 -0
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
- package/out/src/services/classifyOutputUtxo.js +96 -0
- package/out/src/services/classifyOutputUtxo.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/fiatRateValidation.d.ts +12 -0
- package/out/src/services/fiatRateValidation.d.ts.map +1 -0
- package/out/src/services/fiatRateValidation.js +138 -0
- package/out/src/services/fiatRateValidation.js.map +1 -0
- package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
- package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
- package/out/src/services/getCanonicalMerklePath.js +90 -0
- package/out/src/services/getCanonicalMerklePath.js.map +1 -0
- package/out/src/services/providers/ARC.d.ts +3 -16
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +36 -37
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +38 -23
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +384 -63
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +11 -1
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +111 -33
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts +3 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +79 -12
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +221 -69
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
- package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
- package/out/src/services/providers/arcProviderConfig.js +83 -0
- package/out/src/services/providers/arcProviderConfig.js.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.js +92 -0
- package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
- package/out/src/services/providers/arcadeStatus.d.ts +18 -0
- package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
- package/out/src/services/providers/arcadeStatus.js +56 -0
- package/out/src/services/providers/arcadeStatus.js.map +1 -0
- package/out/src/services/providers/exchangeRates.d.ts +3 -3
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +153 -226
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/services/validateMerklePathResult.d.ts +30 -0
- package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
- package/out/src/services/validateMerklePathResult.js +272 -0
- package/out/src/services/validateMerklePathResult.js.map +1 -0
- package/out/src/services/validatePostBeefResult.d.ts +17 -0
- package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
- package/out/src/services/validatePostBeefResult.js +334 -0
- package/out/src/services/validatePostBeefResult.js.map +1 -0
- package/out/src/services/validateRawTxResult.d.ts +6 -0
- package/out/src/services/validateRawTxResult.d.ts.map +1 -0
- package/out/src/services/validateRawTxResult.js +77 -0
- package/out/src/services/validateRawTxResult.js.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.js +99 -0
- package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.js +181 -0
- package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
- package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
- package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
- package/out/src/services/validateUtxoStatusResult.js +126 -0
- package/out/src/services/validateUtxoStatusResult.js.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +29 -6
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +6 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts +35 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +50 -2
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +9 -5
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +3 -2
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +20 -3
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +11 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +134 -44
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +68 -7
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +551 -105
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -10
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +397 -107
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +9 -3
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +21 -43
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +4 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +68 -38
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js +3 -36
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +31 -6
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +166 -75
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +3 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +38 -49
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminUi.js +32 -9
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
- package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
- package/out/src/storage/adminServer/reviewUtxos.js +62 -0
- package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +14 -2
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.d.ts +3 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +3 -0
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/index.client.d.ts +1 -0
- package/out/src/storage/index.client.d.ts.map +1 -1
- package/out/src/storage/index.client.js +1 -0
- package/out/src/storage/index.client.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +1 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +1 -0
- package/out/src/storage/index.mobile.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +5 -44
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +9 -2
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +260 -67
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +47 -26
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +22 -30
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +59 -110
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
- package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
- package/out/src/storage/methods/availableManagedChange.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +60 -3
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +396 -106
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +21 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +194 -27
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +171 -133
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +2 -2
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +22 -11
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +3 -2
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +25 -18
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +33 -31
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
- package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
- package/out/src/storage/methods/managedChangePolicy.js +58 -0
- package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
- package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiry.js +369 -0
- package/out/src/storage/methods/noSendExpiry.js.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
- package/out/src/storage/methods/preparedBeef.d.ts +104 -0
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
- package/out/src/storage/methods/preparedBeef.js +524 -0
- package/out/src/storage/methods/preparedBeef.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +144 -32
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +21 -3
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
- package/out/src/storage/methods/reviewStatus.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +7 -4
- package/out/src/storage/methods/reviewStatus.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts +38 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
- package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
- package/out/src/storage/methods/validateSyncProof.js +139 -0
- package/out/src/storage/methods/validateSyncProof.js.map +1 -0
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +25 -15
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +94 -8
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js +221 -40
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
- package/out/src/storage/remoting/StorageClient.d.ts +6 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +65 -8
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +382 -10
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +13 -11
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +10 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +232 -20
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
- package/out/src/storage/remoting/SyncTransfer.js +153 -0
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/remoting/syncChunkBinary.d.ts +14 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +42 -0
- package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +6 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +194 -5
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +24 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.d.ts +4 -2
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
- package/out/src/storage/schema/entities/EntityTransaction.js.map +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts +23 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +2 -2
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +17 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js +14 -1
- package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/storage/sync/SyncPageBudget.d.ts +8 -0
- package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
- package/out/src/storage/sync/SyncPageBudget.js +24 -0
- package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.js +49 -0
- package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
- package/out/src/utility/Argon2idBackend.d.ts +36 -0
- package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
- package/out/src/utility/Argon2idBackend.js +60 -0
- package/out/src/utility/Argon2idBackend.js.map +1 -0
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +9 -7
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts.map +1 -1
- package/out/src/utility/actionBatchPack.js +7 -12
- package/out/src/utility/actionBatchPack.js.map +1 -1
- package/out/src/utility/beefForTxids.d.ts +12 -3
- package/out/src/utility/beefForTxids.d.ts.map +1 -1
- package/out/src/utility/beefForTxids.js +69 -21
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +20 -5
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
- package/out/src/utility/brc177NoSendExpiry.js +81 -0
- package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
- package/out/src/utility/exactActionSpend.d.ts +9 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +26 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +1 -1
- package/out/src/utility/hashWasm.d.ts.map +1 -1
- package/out/src/utility/hashWasm.js +83 -1
- package/out/src/utility/hashWasm.js.map +1 -1
- package/out/src/utility/identityUtils.d.ts +44 -4
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +523 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -19
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +35 -4
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -7
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
- package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
- package/out/src/utility/verifyOverlayOutput.js +22 -0
- package/out/src/utility/verifyOverlayOutput.js.map +1 -0
- package/out/src/utility/walletResultGuards.d.ts +14 -0
- package/out/src/utility/walletResultGuards.d.ts.map +1 -0
- package/out/src/utility/walletResultGuards.js +28 -0
- package/out/src/utility/walletResultGuards.js.map +1 -0
- package/out/src/wab-client/WABClient.d.ts +4 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +35 -12
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
- package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
- package/out/src/wab-client/WABResponseValidation.js +321 -0
- package/out/src/wab-client/WABResponseValidation.js.map +1 -0
- package/out/src/wab-client/WABTransport.d.ts +17 -23
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +130 -142
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +45 -41
- package/docs/open-rpc/index.html +0 -46
|
@@ -12,8 +12,10 @@ exports.convertBitsToTarget = convertBitsToTarget;
|
|
|
12
12
|
exports.convertBitsToWork = convertBitsToWork;
|
|
13
13
|
exports.deserializeBaseBlockHeaders = deserializeBaseBlockHeaders;
|
|
14
14
|
exports.deserializeBlockHeaders = deserializeBlockHeaders;
|
|
15
|
+
exports.validateBaseBlockHeaderFormat = validateBaseBlockHeaderFormat;
|
|
15
16
|
exports.validateHeaderFormat = validateHeaderFormat;
|
|
16
17
|
exports.validateHeaderDifficulty = validateHeaderDifficulty;
|
|
18
|
+
exports.validateHeaderProofOfWork = validateHeaderProofOfWork;
|
|
17
19
|
exports.blockHash = blockHash;
|
|
18
20
|
exports.serializeBaseBlockHeader = serializeBaseBlockHeader;
|
|
19
21
|
exports.serializeBaseBlockHeaders = serializeBaseBlockHeaders;
|
|
@@ -30,22 +32,114 @@ exports.readUInt32BE = readUInt32BE;
|
|
|
30
32
|
exports.convertBufferToUint32 = convertBufferToUint32;
|
|
31
33
|
const dirtyHashes_1 = require("./dirtyHashes");
|
|
32
34
|
const sdk_1 = require("@bsv/sdk");
|
|
35
|
+
const Hash_1 = require("@bsv/sdk/primitives/Hash");
|
|
36
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
33
37
|
const utilityHelpers_noBuffer_1 = require("../../../../utility/utilityHelpers.noBuffer");
|
|
34
38
|
const utilityHelpers_1 = require("../../../../utility/utilityHelpers");
|
|
35
|
-
const validBulkHeaderFilesByFileHash_1 = require("./validBulkHeaderFilesByFileHash");
|
|
36
39
|
const WERR_errors_1 = require("../../../../sdk/WERR_errors");
|
|
40
|
+
const MAX_HEADER_COUNT = 100_000;
|
|
41
|
+
const MAX_HEADER_BYTES = MAX_HEADER_COUNT * 80;
|
|
42
|
+
const MAX_BLOCK_HEIGHT = 0x7fffffff;
|
|
43
|
+
const UINT32_MAX = 0xffffffff;
|
|
44
|
+
const HEX_32_BYTES = /^[0-9a-fA-F]{64}$/;
|
|
45
|
+
function validateByteWindow(buffer, offset, length, name = 'buffer') {
|
|
46
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
47
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'a byte array');
|
|
48
|
+
}
|
|
49
|
+
if (!Number.isSafeInteger(offset) ||
|
|
50
|
+
offset < 0 ||
|
|
51
|
+
!Number.isSafeInteger(length) ||
|
|
52
|
+
length < 0 ||
|
|
53
|
+
!Number.isSafeInteger(offset + length) ||
|
|
54
|
+
offset + length > buffer.length) {
|
|
55
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${name} window`, 'non-negative safe integers within the byte array');
|
|
56
|
+
}
|
|
57
|
+
if (Array.isArray(buffer)) {
|
|
58
|
+
for (let index = offset; index < offset + length; index++) {
|
|
59
|
+
const value = buffer[index];
|
|
60
|
+
if (!Number.isInteger(value) || value < 0 || value > 0xff) {
|
|
61
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'an array of byte integers');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function validateWritableByteWindow(buffer, offset, length) {
|
|
67
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
68
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a writable byte array');
|
|
69
|
+
}
|
|
70
|
+
if (!Number.isSafeInteger(offset) ||
|
|
71
|
+
offset < 0 ||
|
|
72
|
+
!Number.isSafeInteger(offset + length) ||
|
|
73
|
+
offset + length > buffer.length) {
|
|
74
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', `a non-negative safe integer with ${length} writable bytes`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function validateWork(value, name) {
|
|
78
|
+
if (typeof value !== 'string' || !HEX_32_BYTES.test(value)) {
|
|
79
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, 'exactly 32 hexadecimal bytes');
|
|
80
|
+
}
|
|
81
|
+
return new sdk_1.BigNumber(value, 16);
|
|
82
|
+
}
|
|
83
|
+
function copyBaseHeaderData(value) {
|
|
84
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
85
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
|
|
86
|
+
}
|
|
87
|
+
const prototype = Object.getPrototypeOf(value);
|
|
88
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
89
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'a plain data object');
|
|
90
|
+
}
|
|
91
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
92
|
+
if (Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
93
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', 'accessor-free data properties');
|
|
94
|
+
}
|
|
95
|
+
const read = (name) => {
|
|
96
|
+
const descriptor = descriptors[name];
|
|
97
|
+
if (descriptor == null || !('value' in descriptor)) {
|
|
98
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('header', `an own ${name} data property`);
|
|
99
|
+
}
|
|
100
|
+
return descriptor.value;
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
version: read('version'),
|
|
104
|
+
previousHash: read('previousHash'),
|
|
105
|
+
merkleRoot: read('merkleRoot'),
|
|
106
|
+
time: read('time'),
|
|
107
|
+
bits: read('bits'),
|
|
108
|
+
nonce: read('nonce')
|
|
109
|
+
};
|
|
110
|
+
}
|
|
37
111
|
/**
|
|
38
112
|
* Computes sha256 hash of file contents read as bytes with no encoding.
|
|
39
113
|
* @param filepath Full filepath to file.
|
|
40
114
|
* @param bufferSize Optional read buffer size to use. Defaults to 80,000 bytes. Currently ignored.
|
|
41
115
|
* @returns `{hash, length}` where `hash` is base64 string form of file hash and `length` is file length in bytes.
|
|
42
116
|
*/
|
|
43
|
-
async function sha256HashOfBinaryFile(fs, filepath,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
117
|
+
async function sha256HashOfBinaryFile(fs, filepath, bufferSize = 80000) {
|
|
118
|
+
if (!Number.isSafeInteger(bufferSize) || bufferSize < 1 || bufferSize > MAX_HEADER_BYTES) {
|
|
119
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bufferSize', `an integer from 1 through ${MAX_HEADER_BYTES}`);
|
|
120
|
+
}
|
|
121
|
+
const hasher = new Hash_1.SHA256();
|
|
122
|
+
const file = await fs.openReadableFile(filepath);
|
|
123
|
+
try {
|
|
124
|
+
const length = await file.getLength();
|
|
125
|
+
if (!Number.isSafeInteger(length) || length < 0 || length > MAX_HEADER_BYTES) {
|
|
126
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('file length', `an integer from 0 through ${MAX_HEADER_BYTES}`);
|
|
127
|
+
}
|
|
128
|
+
let offset = 0;
|
|
129
|
+
while (offset < length) {
|
|
130
|
+
const requested = Math.min(bufferSize, length - offset);
|
|
131
|
+
const bytes = await file.read(requested, offset);
|
|
132
|
+
if (!(bytes instanceof Uint8Array) || bytes.length === 0 || bytes.length > requested) {
|
|
133
|
+
throw new Error('Binary file reader returned an invalid or incomplete chunk.');
|
|
134
|
+
}
|
|
135
|
+
hasher.update((0, utilityHelpers_noBuffer_1.asArray)(bytes));
|
|
136
|
+
offset += bytes.length;
|
|
137
|
+
}
|
|
138
|
+
return { hash: (0, utils_1.toBase64)(hasher.digest()), length };
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
await file.close();
|
|
142
|
+
}
|
|
49
143
|
}
|
|
50
144
|
/**
|
|
51
145
|
* Validates the contents of a bulk header file.
|
|
@@ -56,30 +150,68 @@ async function sha256HashOfBinaryFile(fs, filepath, _bufferSize = 80000) {
|
|
|
56
150
|
* @returns Validated BulkHeaderFileInfo with `validated` set to true.
|
|
57
151
|
*/
|
|
58
152
|
async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
|
|
153
|
+
if (bf == null || typeof bf !== 'object' || Array.isArray(bf)) {
|
|
154
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a plain data object');
|
|
155
|
+
}
|
|
156
|
+
const prototype = Object.getPrototypeOf(bf);
|
|
157
|
+
const descriptors = Object.getOwnPropertyDescriptors(bf);
|
|
158
|
+
if ((prototype !== Object.prototype && prototype !== null) ||
|
|
159
|
+
Object.values(descriptors).some(descriptor => descriptor.get != null || descriptor.set != null)) {
|
|
160
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'an accessor-free plain data object');
|
|
161
|
+
}
|
|
59
162
|
const vbf = { ...bf };
|
|
163
|
+
if (!Number.isSafeInteger(vbf.count) || vbf.count <= 0 || vbf.count > MAX_HEADER_COUNT) {
|
|
164
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.count', `an integer from 1 through ${MAX_HEADER_COUNT}`);
|
|
165
|
+
}
|
|
166
|
+
if (!Number.isSafeInteger(vbf.firstHeight) || vbf.firstHeight < 0 || vbf.firstHeight > MAX_BLOCK_HEIGHT) {
|
|
167
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
168
|
+
}
|
|
169
|
+
if (vbf.firstHeight + vbf.count - 1 > MAX_BLOCK_HEIGHT) {
|
|
170
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf', 'a header range within the supported block heights');
|
|
171
|
+
}
|
|
172
|
+
if (!['main', 'test', 'stn', 'ttn', 'tstn', 'mock'].includes(vbf.chain)) {
|
|
173
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.chain', 'a supported Chaintracks network');
|
|
174
|
+
}
|
|
175
|
+
if (typeof vbf.fileName !== 'string' ||
|
|
176
|
+
!/^[A-Za-z0-9][A-Za-z0-9._~-]{0,254}$/.test(vbf.fileName) ||
|
|
177
|
+
vbf.fileName === '.' ||
|
|
178
|
+
vbf.fileName === '..') {
|
|
179
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileName', 'a safe path-free ASCII file name');
|
|
180
|
+
}
|
|
181
|
+
if (typeof prevHash !== 'string' || !HEX_32_BYTES.test(prevHash)) {
|
|
182
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('prevHash', 'exactly 32 hexadecimal bytes');
|
|
183
|
+
}
|
|
184
|
+
validateWork(prevChainWork, 'prevChainWork');
|
|
60
185
|
if (vbf.data == null && vbf.sourceUrl && fetch != null) {
|
|
61
186
|
const url = fetch.pathJoin(vbf.sourceUrl, vbf.fileName);
|
|
62
|
-
vbf.data = await fetch.download(url);
|
|
187
|
+
vbf.data = await fetch.download(url, vbf.count * 80);
|
|
63
188
|
}
|
|
64
189
|
if (vbf.data == null)
|
|
65
190
|
throw new WERR_errors_1.WERR_INVALID_OPERATION(`bulk file ${vbf.fileName} data is unavailable`);
|
|
66
|
-
if (vbf.
|
|
67
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.
|
|
68
|
-
}
|
|
191
|
+
if (!(vbf.data instanceof Uint8Array))
|
|
192
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', 'a Uint8Array');
|
|
69
193
|
if (vbf.data.length !== vbf.count * 80) {
|
|
70
194
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.data', `bulk file ${vbf.fileName} data length ${vbf.data.length} does not match expected count ${vbf.count}`);
|
|
71
195
|
}
|
|
72
|
-
vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)(
|
|
196
|
+
vbf.fileHash = (0, utilityHelpers_noBuffer_1.asString)((0, Hash_1.sha256)((0, utilityHelpers_noBuffer_1.asArray)(vbf.data)), 'base64');
|
|
73
197
|
if (bf.fileHash && bf.fileHash !== vbf.fileHash) {
|
|
74
198
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.fileHash', `expected ${bf.fileHash} but got ${vbf.fileHash}`);
|
|
75
199
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
200
|
+
const { lastHeaderHash, lastChainWork } = validateBufferOfHeaders(vbf.data, prevHash, 0, undefined, prevChainWork);
|
|
201
|
+
if (bf.lastHash &&
|
|
202
|
+
(typeof bf.lastHash !== 'string' || !HEX_32_BYTES.test(bf.lastHash) || bf.lastHash.toLowerCase() !== lastHeaderHash)) {
|
|
203
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastHash', `expected ${bf.lastHash} but got ${lastHeaderHash}`);
|
|
204
|
+
}
|
|
205
|
+
if (bf.lastChainWork &&
|
|
206
|
+
(typeof bf.lastChainWork !== 'string' ||
|
|
207
|
+
!HEX_32_BYTES.test(bf.lastChainWork) ||
|
|
208
|
+
bf.lastChainWork.toLowerCase() !== lastChainWork)) {
|
|
209
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bf.lastChainWork', `expected ${bf.lastChainWork} but got ${lastChainWork}`);
|
|
210
|
+
}
|
|
211
|
+
vbf.lastHash = lastHeaderHash;
|
|
212
|
+
vbf.lastChainWork = lastChainWork;
|
|
213
|
+
if (vbf.firstHeight === 0) {
|
|
214
|
+
validateGenesisHeader(vbf.data, vbf.chain);
|
|
83
215
|
}
|
|
84
216
|
vbf.validated = true;
|
|
85
217
|
return vbf;
|
|
@@ -94,11 +226,32 @@ async function validateBulkFileData(bf, prevHash, prevChainWork, fetch) {
|
|
|
94
226
|
* @returns Header hash of last header validated or previousHash if there where none.
|
|
95
227
|
*/
|
|
96
228
|
function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, previousChainWork) {
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
229
|
+
if (!(buffer instanceof Uint8Array))
|
|
230
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a Uint8Array');
|
|
231
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
|
|
232
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
|
|
233
|
+
}
|
|
234
|
+
if (!Number.isSafeInteger(count) || count < -1 || count > MAX_HEADER_COUNT) {
|
|
235
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `-1 or an integer from 0 through ${MAX_HEADER_COUNT}`);
|
|
236
|
+
}
|
|
237
|
+
if (count < 0) {
|
|
238
|
+
if ((buffer.length - offset) % 80 !== 0) {
|
|
239
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a complete sequence of 80-byte headers');
|
|
240
|
+
}
|
|
241
|
+
count = (buffer.length - offset) / 80;
|
|
242
|
+
}
|
|
243
|
+
if (count > MAX_HEADER_COUNT || offset + count * 80 > buffer.length) {
|
|
244
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'enough bytes for the bounded requested header count');
|
|
245
|
+
}
|
|
246
|
+
if (typeof previousHash !== 'string' || !HEX_32_BYTES.test(previousHash)) {
|
|
247
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('previousHash', 'exactly 32 hexadecimal bytes');
|
|
248
|
+
}
|
|
249
|
+
let lastHeaderHash = previousHash.toLowerCase();
|
|
101
250
|
let lastChainWork = previousChainWork;
|
|
251
|
+
if (lastChainWork !== undefined) {
|
|
252
|
+
validateWork(lastChainWork, 'previousChainWork');
|
|
253
|
+
lastChainWork = lastChainWork.toLowerCase();
|
|
254
|
+
}
|
|
102
255
|
for (let i = 0; i < count; i++) {
|
|
103
256
|
const headerStart = offset + i * 80;
|
|
104
257
|
const headerEnd = headerStart + 80;
|
|
@@ -113,6 +266,7 @@ function validateBufferOfHeaders(buffer, previousHash, offset = 0, count = -1, p
|
|
|
113
266
|
}
|
|
114
267
|
lastHeaderHash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(header));
|
|
115
268
|
(0, dirtyHashes_1.validateAgainstDirtyHashes)(lastHeaderHash);
|
|
269
|
+
validateConsensusProofOfWork(lastHeaderHash, h.bits);
|
|
116
270
|
if (lastChainWork) {
|
|
117
271
|
lastChainWork = addWork(lastChainWork, convertBitsToWork(h.bits));
|
|
118
272
|
}
|
|
@@ -144,20 +298,24 @@ function validateGenesisHeader(buffer, chain) {
|
|
|
144
298
|
* @returns Converted chainWork value from BN to hex string of 32 bytes.
|
|
145
299
|
*/
|
|
146
300
|
function workBNtoBuffer(work) {
|
|
147
|
-
|
|
301
|
+
const encoded = work.toString(16);
|
|
302
|
+
if (!/^[0-9a-f]+$/i.test(encoded) || encoded.length > 64) {
|
|
303
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('work', 'a non-negative integer no greater than 256 bits');
|
|
304
|
+
}
|
|
305
|
+
return encoded.toLowerCase().padStart(64, '0');
|
|
148
306
|
}
|
|
149
307
|
/**
|
|
150
308
|
* Returns true if work1 is more work (greater than) work2
|
|
151
309
|
*/
|
|
152
310
|
function isMoreWork(work1, work2) {
|
|
153
|
-
return
|
|
311
|
+
return validateWork(work1, 'work1').gt(validateWork(work2, 'work2'));
|
|
154
312
|
}
|
|
155
313
|
/**
|
|
156
314
|
* Add two Buffer encoded chainwork values
|
|
157
315
|
* @returns Sum of work1 + work2 as Buffer encoded chainWork value
|
|
158
316
|
*/
|
|
159
317
|
function addWork(work1, work2) {
|
|
160
|
-
const sum =
|
|
318
|
+
const sum = validateWork(work1, 'work1').add(validateWork(work2, 'work2'));
|
|
161
319
|
return workBNtoBuffer(sum);
|
|
162
320
|
}
|
|
163
321
|
/**
|
|
@@ -165,7 +323,11 @@ function addWork(work1, work2) {
|
|
|
165
323
|
* @returns work1 - work2 as Buffer encoded chainWork value
|
|
166
324
|
*/
|
|
167
325
|
function subWork(work1, work2) {
|
|
168
|
-
const
|
|
326
|
+
const minuend = validateWork(work1, 'work1');
|
|
327
|
+
const subtrahend = validateWork(work2, 'work2');
|
|
328
|
+
if (minuend.lt(subtrahend))
|
|
329
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('work1/work2', 'a non-negative subtraction');
|
|
330
|
+
const sum = minuend.sub(subtrahend);
|
|
169
331
|
return workBNtoBuffer(sum);
|
|
170
332
|
}
|
|
171
333
|
/**
|
|
@@ -174,8 +336,13 @@ function subWork(work1, work2) {
|
|
|
174
336
|
* @returns 32 byte Buffer with "target" value
|
|
175
337
|
*/
|
|
176
338
|
function convertBitsToTarget(bits) {
|
|
177
|
-
if (Array.isArray(bits))
|
|
339
|
+
if (Array.isArray(bits)) {
|
|
340
|
+
if (bits.length !== 4)
|
|
341
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
|
|
342
|
+
validateByteWindow(bits, 0, 4, 'bits');
|
|
178
343
|
bits = readUInt32LE(bits, 0);
|
|
344
|
+
}
|
|
345
|
+
validateUnsignedHeaderInteger(bits, 'bits', UINT32_MAX);
|
|
179
346
|
const shift = (bits >> 24) & 0xff;
|
|
180
347
|
const data = bits & 0x007fffff;
|
|
181
348
|
const target = new sdk_1.BigNumber(data);
|
|
@@ -187,31 +354,59 @@ function convertBitsToTarget(bits) {
|
|
|
187
354
|
}
|
|
188
355
|
return target;
|
|
189
356
|
}
|
|
357
|
+
function readCompactBits(bits) {
|
|
358
|
+
if (bits.length !== 4)
|
|
359
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('bits', 'exactly four bytes');
|
|
360
|
+
validateByteWindow(bits, 0, 4, 'bits');
|
|
361
|
+
return readUInt32LE(bits, 0);
|
|
362
|
+
}
|
|
190
363
|
/**
|
|
191
364
|
* Computes "chainWork" value for 4 byte Bitcoin block header "bits" value.
|
|
192
365
|
* @param bits number or converted from Buffer using `readUint32LE`
|
|
193
366
|
* @returns 32 byte Buffer with "chainWork" value
|
|
194
367
|
*/
|
|
195
368
|
function convertBitsToWork(bits) {
|
|
196
|
-
const
|
|
369
|
+
const encoded = Array.isArray(bits) ? readCompactBits(bits) : bits;
|
|
370
|
+
const target = validateCompactTarget(encoded);
|
|
197
371
|
// convert target to work
|
|
198
372
|
const work = target.notn(256).div(target.addn(1)).addn(1);
|
|
199
373
|
return work.toString(16).padStart(64, '0');
|
|
200
374
|
}
|
|
201
375
|
function deserializeBaseBlockHeaders(buffer, offset = 0, count) {
|
|
376
|
+
if (!Array.isArray(buffer) && !(buffer instanceof Uint8Array)) {
|
|
377
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'a byte array');
|
|
378
|
+
}
|
|
379
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset > buffer.length) {
|
|
380
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer within the buffer');
|
|
381
|
+
}
|
|
382
|
+
if (count !== undefined && (!Number.isSafeInteger(count) || count < 0 || count > MAX_HEADER_COUNT)) {
|
|
383
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('count', `an integer from 0 through ${MAX_HEADER_COUNT}`);
|
|
384
|
+
}
|
|
385
|
+
const available = Math.floor((buffer.length - offset) / 80);
|
|
386
|
+
const limit = count ?? available;
|
|
387
|
+
if (Math.min(available, limit) > MAX_HEADER_COUNT) {
|
|
388
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', `no more than ${MAX_HEADER_COUNT} headers per decode`);
|
|
389
|
+
}
|
|
202
390
|
const headers = [];
|
|
203
|
-
while (
|
|
391
|
+
while (headers.length < limit && offset + 80 <= buffer.length) {
|
|
204
392
|
headers.push(deserializeBaseBlockHeader(buffer, offset));
|
|
205
393
|
offset += 80;
|
|
206
394
|
}
|
|
207
395
|
return headers;
|
|
208
396
|
}
|
|
209
397
|
function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
|
|
398
|
+
if (!Number.isSafeInteger(firstHeight) || firstHeight < 0 || firstHeight > MAX_BLOCK_HEIGHT) {
|
|
399
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstHeight', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
400
|
+
}
|
|
401
|
+
const baseHeaders = deserializeBaseBlockHeaders(buffer, offset, count);
|
|
402
|
+
if (firstHeight + baseHeaders.length - 1 > MAX_BLOCK_HEIGHT) {
|
|
403
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a range within the supported block heights');
|
|
404
|
+
}
|
|
210
405
|
const headers = [];
|
|
211
406
|
let nextHeight = firstHeight;
|
|
212
|
-
while (
|
|
407
|
+
while (headers.length < baseHeaders.length) {
|
|
213
408
|
const baseBuffer = buffer.slice(offset, offset + 80);
|
|
214
|
-
const base =
|
|
409
|
+
const base = baseHeaders[headers.length];
|
|
215
410
|
const header = {
|
|
216
411
|
...base,
|
|
217
412
|
height: nextHeight++,
|
|
@@ -232,7 +427,7 @@ function deserializeBlockHeaders(firstHeight, buffer, offset = 0, count) {
|
|
|
232
427
|
*
|
|
233
428
|
* @returns true if the header is correctly formatted
|
|
234
429
|
*/
|
|
235
|
-
function validateUnsignedHeaderInteger(value, field, maximum
|
|
430
|
+
function validateUnsignedHeaderInteger(value, field, maximum) {
|
|
236
431
|
if (typeof value !== 'number') {
|
|
237
432
|
throw new TypeError(`Header ${field} must be a number.`);
|
|
238
433
|
}
|
|
@@ -240,69 +435,60 @@ function validateUnsignedHeaderInteger(value, field, maximum, rangeField = field
|
|
|
240
435
|
throw new TypeError(`Header ${field} must be an integer.`);
|
|
241
436
|
}
|
|
242
437
|
if (value < 0 || value > maximum) {
|
|
243
|
-
throw new Error(`Header ${
|
|
438
|
+
throw new Error(`Header ${field} must be between 0 and ${maximum}.`);
|
|
244
439
|
}
|
|
245
440
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
merkleRoot: true,
|
|
251
|
-
time: true,
|
|
252
|
-
bits: true,
|
|
253
|
-
nonce: true,
|
|
254
|
-
height: true,
|
|
255
|
-
hash: true
|
|
256
|
-
};
|
|
257
|
-
const UINT_MAX = 0xffffffff;
|
|
258
|
-
/**
|
|
259
|
-
* Root object checks
|
|
260
|
-
*/
|
|
261
|
-
if (header === undefined) {
|
|
441
|
+
const BASE_HEADER_KEYS = ['version', 'previousHash', 'merkleRoot', 'time', 'bits', 'nonce'];
|
|
442
|
+
const BLOCK_HEADER_KEYS = [...BASE_HEADER_KEYS, 'height', 'hash'];
|
|
443
|
+
function validateHeaderRecord(header, allowedKeys) {
|
|
444
|
+
if (header == null)
|
|
262
445
|
throw new TypeError('Missing header.');
|
|
263
|
-
|
|
264
|
-
if (typeof header !== 'object') {
|
|
446
|
+
if (typeof header !== 'object' || Array.isArray(header)) {
|
|
265
447
|
throw new TypeError('Header must be an object.');
|
|
266
448
|
}
|
|
267
|
-
|
|
268
|
-
|
|
449
|
+
const prototype = Object.getPrototypeOf(header);
|
|
450
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
451
|
+
throw new TypeError('Header must be a plain data object.');
|
|
269
452
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
453
|
+
const descriptors = Object.getOwnPropertyDescriptors(header);
|
|
454
|
+
const keys = Object.keys(descriptors);
|
|
455
|
+
if (keys.length !== allowedKeys.length ||
|
|
456
|
+
!keys.every(key => allowedKeys.includes(key)) ||
|
|
457
|
+
keys.some(key => descriptors[key]?.get != null || descriptors[key]?.set != null)) {
|
|
458
|
+
throw new Error('Header must contain exactly the required data properties.');
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Validates the exact data representation of an unpositioned 80-byte block
|
|
463
|
+
* header before it reaches a chain lookup, queue, or serializer.
|
|
464
|
+
*/
|
|
465
|
+
function validateBaseBlockHeaderFormat(header) {
|
|
466
|
+
const UINT_MAX = 0xffffffff;
|
|
467
|
+
validateHeaderRecord(header, BASE_HEADER_KEYS);
|
|
273
468
|
validateUnsignedHeaderInteger(header.version, 'version', UINT_MAX);
|
|
274
|
-
|
|
275
|
-
* Height
|
|
276
|
-
*/
|
|
277
|
-
validateUnsignedHeaderInteger(header.height, 'height', UINT_MAX / 2, 'version');
|
|
278
|
-
/**
|
|
279
|
-
* Previous hash
|
|
280
|
-
*/
|
|
281
|
-
if (header.previousHash.length !== 64) {
|
|
469
|
+
if (typeof header.previousHash !== 'string' || !HEX_32_BYTES.test(header.previousHash)) {
|
|
282
470
|
throw new Error('Header previousHash must be 32 hex bytes.');
|
|
283
471
|
}
|
|
284
|
-
|
|
285
|
-
* Merkle root
|
|
286
|
-
*/
|
|
287
|
-
if (header.merkleRoot.length !== 64) {
|
|
472
|
+
if (typeof header.merkleRoot !== 'string' || !HEX_32_BYTES.test(header.merkleRoot)) {
|
|
288
473
|
throw new Error('Header merkleRoot must be 32 hex bytes.');
|
|
289
474
|
}
|
|
290
|
-
/**
|
|
291
|
-
* Time
|
|
292
|
-
*/
|
|
293
475
|
validateUnsignedHeaderInteger(header.time, 'time', UINT_MAX);
|
|
294
|
-
/**
|
|
295
|
-
* Bits
|
|
296
|
-
*/
|
|
297
476
|
validateUnsignedHeaderInteger(header.bits, 'bits', UINT_MAX);
|
|
298
|
-
/**
|
|
299
|
-
* Nonce
|
|
300
|
-
*/
|
|
301
477
|
validateUnsignedHeaderInteger(header.nonce, 'nonce', UINT_MAX);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
478
|
+
}
|
|
479
|
+
function validateHeaderFormat(header) {
|
|
480
|
+
validateHeaderRecord(header, BLOCK_HEADER_KEYS);
|
|
481
|
+
const baseHeader = {
|
|
482
|
+
version: header.version,
|
|
483
|
+
previousHash: header.previousHash,
|
|
484
|
+
merkleRoot: header.merkleRoot,
|
|
485
|
+
time: header.time,
|
|
486
|
+
bits: header.bits,
|
|
487
|
+
nonce: header.nonce
|
|
488
|
+
};
|
|
489
|
+
validateBaseBlockHeaderFormat(baseHeader);
|
|
490
|
+
validateUnsignedHeaderInteger(header.height, 'height', 0x7fffffff);
|
|
491
|
+
if (typeof header.hash !== 'string' || !HEX_32_BYTES.test(header.hash)) {
|
|
306
492
|
throw new Error('Header hash must be 32 hex bytes.');
|
|
307
493
|
}
|
|
308
494
|
if (header.hash !== (0, utilityHelpers_noBuffer_1.asString)(blockHash(header))) {
|
|
@@ -310,20 +496,66 @@ function validateHeaderFormat(header) {
|
|
|
310
496
|
}
|
|
311
497
|
}
|
|
312
498
|
/**
|
|
313
|
-
* Ensures that a header has a valid proof-of-work
|
|
314
|
-
* Requires chain is 'main'
|
|
499
|
+
* Ensures that a header has a valid proof-of-work target and hash.
|
|
315
500
|
*
|
|
316
501
|
* @param header The header to validate
|
|
317
502
|
*
|
|
318
503
|
* @returns true if the header is valid
|
|
319
504
|
*/
|
|
320
505
|
function validateHeaderDifficulty(hash, bits) {
|
|
506
|
+
if (!Array.isArray(hash) && !(hash instanceof Uint8Array)) {
|
|
507
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
|
|
508
|
+
}
|
|
509
|
+
validateByteWindow(hash, 0, hash.length, 'hash');
|
|
510
|
+
if (hash.length !== 32)
|
|
511
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', 'exactly 32 bytes');
|
|
321
512
|
const hashBN = new sdk_1.BigNumber((0, utilityHelpers_noBuffer_1.asArray)(hash));
|
|
322
|
-
const target =
|
|
513
|
+
const target = validateCompactTarget(bits);
|
|
323
514
|
if (hashBN.lte(target))
|
|
324
515
|
return true;
|
|
325
516
|
throw new Error('Block hash is not less than specified target.');
|
|
326
517
|
}
|
|
518
|
+
const proofOfWorkExceptions = new Map([
|
|
519
|
+
// The historical STN genesis header is a network-defined bootstrap
|
|
520
|
+
// checkpoint whose hash does not satisfy its encoded target. No later
|
|
521
|
+
// header receives this exception.
|
|
522
|
+
['6b38bdbcd73a19f7889d23e1fa6166a9de71affceca60ca3bb1b28af8135c594', 0x1d00ffff]
|
|
523
|
+
]);
|
|
524
|
+
function validateConsensusProofOfWork(hash, bits) {
|
|
525
|
+
if (proofOfWorkExceptions.get(hash) === bits)
|
|
526
|
+
return;
|
|
527
|
+
validateHeaderDifficulty((0, utilityHelpers_noBuffer_1.asArray)(hash, 'hex'), bits);
|
|
528
|
+
}
|
|
529
|
+
function validateCompactTarget(bits) {
|
|
530
|
+
if (!Number.isSafeInteger(bits) || bits < 0 || bits > 0xffffffff) {
|
|
531
|
+
throw new Error('Block target encoding is invalid.');
|
|
532
|
+
}
|
|
533
|
+
const size = bits >>> 24;
|
|
534
|
+
const word = bits & 0x007fffff;
|
|
535
|
+
const negative = word !== 0 && (bits & 0x00800000) !== 0;
|
|
536
|
+
const overflow = word !== 0 && (size > 34 || (word > 0xff && size > 33) || (word > 0xffff && size > 32));
|
|
537
|
+
if (word === 0 || negative || overflow) {
|
|
538
|
+
throw new Error('Block target encoding is invalid.');
|
|
539
|
+
}
|
|
540
|
+
const target = convertBitsToTarget(bits);
|
|
541
|
+
const proofOfWorkLimit = convertBitsToTarget(0x1d00ffff);
|
|
542
|
+
if (target.gt(proofOfWorkLimit)) {
|
|
543
|
+
throw new Error('Block target exceeds the proof-of-work limit.');
|
|
544
|
+
}
|
|
545
|
+
return target;
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Ensures that a structured header's computed hash satisfies its declared
|
|
549
|
+
* proof-of-work target.
|
|
550
|
+
*
|
|
551
|
+
* @param header Header whose format and hash have already been checked.
|
|
552
|
+
* @returns true if the header has valid proof-of-work.
|
|
553
|
+
* @publicbody
|
|
554
|
+
*/
|
|
555
|
+
function validateHeaderProofOfWork(header) {
|
|
556
|
+
validateConsensusProofOfWork(header.hash, header.bits);
|
|
557
|
+
return true;
|
|
558
|
+
}
|
|
327
559
|
/**
|
|
328
560
|
* Computes double sha256 hash of bitcoin block header
|
|
329
561
|
* bytes are reversed to bigendian order
|
|
@@ -349,32 +581,39 @@ function blockHash(header) {
|
|
|
349
581
|
* @publicbody
|
|
350
582
|
*/
|
|
351
583
|
function serializeBaseBlockHeader(header, buffer, offset) {
|
|
352
|
-
const
|
|
353
|
-
|
|
354
|
-
writer
|
|
355
|
-
writer.
|
|
356
|
-
writer.
|
|
357
|
-
writer.
|
|
358
|
-
writer.writeUInt32LE(
|
|
584
|
+
const validated = copyBaseHeaderData(header);
|
|
585
|
+
validateBaseBlockHeaderFormat(validated);
|
|
586
|
+
const writer = new utils_1.Writer();
|
|
587
|
+
writer.writeUInt32LE(validated.version);
|
|
588
|
+
writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.previousHash).reverse());
|
|
589
|
+
writer.write((0, utilityHelpers_noBuffer_1.asArray)(validated.merkleRoot).reverse());
|
|
590
|
+
writer.writeUInt32LE(validated.time);
|
|
591
|
+
writer.writeUInt32LE(validated.bits);
|
|
592
|
+
writer.writeUInt32LE(validated.nonce);
|
|
359
593
|
const data = writer.toArray();
|
|
360
594
|
if (buffer != null) {
|
|
361
|
-
|
|
595
|
+
if (!Array.isArray(buffer))
|
|
596
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'an array');
|
|
597
|
+
offset ??= 0;
|
|
598
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset + data.length > buffer.length) {
|
|
599
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('offset', 'a non-negative safe integer with 80 writable bytes');
|
|
600
|
+
}
|
|
362
601
|
for (let i = 0; i < data.length; i++) {
|
|
363
|
-
if (offset + i >= buffer.length) {
|
|
364
|
-
throw new Error(`Buffer overflow at offset ${offset + i} for data length ${data.length}`);
|
|
365
|
-
}
|
|
366
602
|
buffer[offset + i] = data[i];
|
|
367
603
|
}
|
|
368
604
|
}
|
|
369
605
|
return data;
|
|
370
606
|
}
|
|
371
607
|
function serializeBaseBlockHeaders(headers) {
|
|
608
|
+
if (!Array.isArray(headers) || headers.length > MAX_HEADER_COUNT) {
|
|
609
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', `a dense array of no more than ${MAX_HEADER_COUNT} entries`);
|
|
610
|
+
}
|
|
372
611
|
const data = new Uint8Array(headers.length * 80);
|
|
373
|
-
let
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
const d = serializeBaseBlockHeader(
|
|
377
|
-
data.set(d,
|
|
612
|
+
for (let index = 0; index < headers.length; index++) {
|
|
613
|
+
if (!Object.hasOwn(headers, index))
|
|
614
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('headers', 'a dense array');
|
|
615
|
+
const d = serializeBaseBlockHeader(headers[index]);
|
|
616
|
+
data.set(d, index * 80);
|
|
378
617
|
}
|
|
379
618
|
return data;
|
|
380
619
|
}
|
|
@@ -383,7 +622,8 @@ function serializeBaseBlockHeaders(headers) {
|
|
|
383
622
|
* @publicbody
|
|
384
623
|
*/
|
|
385
624
|
function deserializeBaseBlockHeader(buffer, offset = 0) {
|
|
386
|
-
|
|
625
|
+
validateByteWindow(buffer, offset, 80);
|
|
626
|
+
const reader = utils_1.ReaderUint8Array.makeReader(buffer, offset);
|
|
387
627
|
const header = {
|
|
388
628
|
version: reader.readUInt32LE(),
|
|
389
629
|
previousHash: (0, utilityHelpers_noBuffer_1.asString)(reader.read(32).reverse()),
|
|
@@ -395,6 +635,9 @@ function deserializeBaseBlockHeader(buffer, offset = 0) {
|
|
|
395
635
|
return header;
|
|
396
636
|
}
|
|
397
637
|
function deserializeBlockHeader(buffer, height, offset = 0) {
|
|
638
|
+
if (!Number.isSafeInteger(height) || height < 0 || height > MAX_BLOCK_HEIGHT) {
|
|
639
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('height', `an integer from 0 through ${MAX_BLOCK_HEIGHT}`);
|
|
640
|
+
}
|
|
398
641
|
const base = deserializeBaseBlockHeader(buffer, offset);
|
|
399
642
|
const header = {
|
|
400
643
|
...base,
|
|
@@ -492,6 +735,9 @@ function swapByteOrder(buffer) {
|
|
|
492
735
|
* @publicbody
|
|
493
736
|
*/
|
|
494
737
|
function convertUint32ToBuffer(n, littleEndian = true) {
|
|
738
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
739
|
+
if (typeof littleEndian !== 'boolean')
|
|
740
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
|
|
495
741
|
const a = [
|
|
496
742
|
n & 0xff, // lowest byte
|
|
497
743
|
(n >> 8) & 0xff,
|
|
@@ -501,6 +747,8 @@ function convertUint32ToBuffer(n, littleEndian = true) {
|
|
|
501
747
|
return littleEndian ? a : a.reverse();
|
|
502
748
|
}
|
|
503
749
|
function writeUInt32LE(n, a, offset) {
|
|
750
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
751
|
+
validateWritableByteWindow(a, offset, 4);
|
|
504
752
|
a[offset++] = n & 0xff; // lowest byte
|
|
505
753
|
a[offset++] = (n >> 8) & 0xff;
|
|
506
754
|
a[offset++] = (n >> 16) & 0xff;
|
|
@@ -508,6 +756,8 @@ function writeUInt32LE(n, a, offset) {
|
|
|
508
756
|
return offset;
|
|
509
757
|
}
|
|
510
758
|
function writeUInt32BE(n, a, offset) {
|
|
759
|
+
validateUnsignedHeaderInteger(n, 'uint32', UINT32_MAX);
|
|
760
|
+
validateWritableByteWindow(a, offset, 4);
|
|
511
761
|
a[offset++] = (n >> 24) & 0xff; // highest byte
|
|
512
762
|
a[offset++] = (n >> 16) & 0xff;
|
|
513
763
|
a[offset++] = (n >> 8) & 0xff;
|
|
@@ -515,10 +765,12 @@ function writeUInt32BE(n, a, offset) {
|
|
|
515
765
|
return offset;
|
|
516
766
|
}
|
|
517
767
|
function readUInt32LE(a, offset) {
|
|
518
|
-
|
|
768
|
+
validateByteWindow(a, offset, 4);
|
|
769
|
+
return (a[offset++] | (a[offset++] << 8) | (a[offset++] << 16) | (a[offset++] << 24)) >>> 0;
|
|
519
770
|
}
|
|
520
771
|
function readUInt32BE(a, offset) {
|
|
521
|
-
|
|
772
|
+
validateByteWindow(a, offset, 4);
|
|
773
|
+
return ((a[offset++] << 24) | (a[offset++] << 16) | (a[offset++] << 8) | a[offset++]) >>> 0;
|
|
522
774
|
}
|
|
523
775
|
/**
|
|
524
776
|
* @param buffer four byte buffer with Uint32 number encoded
|
|
@@ -527,8 +779,13 @@ function readUInt32BE(a, offset) {
|
|
|
527
779
|
* @publicbody
|
|
528
780
|
*/
|
|
529
781
|
function convertBufferToUint32(buffer, littleEndian = true) {
|
|
782
|
+
validateByteWindow(buffer, 0, 4);
|
|
783
|
+
if (buffer.length !== 4)
|
|
784
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('buffer', 'exactly four bytes');
|
|
785
|
+
if (typeof littleEndian !== 'boolean')
|
|
786
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('littleEndian', 'a boolean');
|
|
530
787
|
const a = littleEndian ? buffer : buffer.slice().reverse();
|
|
531
|
-
const n = a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24);
|
|
788
|
+
const n = (a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24)) >>> 0;
|
|
532
789
|
return n;
|
|
533
790
|
}
|
|
534
791
|
//# sourceMappingURL=blockHeaderUtilities.js.map
|