@bsv/wallet-toolbox 1.6.3 → 1.6.5
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 +10 -0
- package/docs/client.md +402 -313
- package/docs/monitor.md +4 -4
- package/docs/services.md +118 -133
- package/docs/wallet.md +402 -313
- package/mobile/out/src/monitor/Monitor.d.ts +3 -3
- package/mobile/out/src/monitor/Monitor.d.ts.map +1 -1
- package/mobile/out/src/monitor/Monitor.js.map +1 -1
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts +88 -2
- package/mobile/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/mobile/out/src/services/Services.js +1 -1
- package/mobile/out/src/services/Services.js.map +1 -1
- package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +3 -3
- package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -6
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +2 -2
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +33 -16
- package/mobile/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js +15 -11
- package/mobile/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts +2 -2
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +4 -4
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +2 -3
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts +2 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +4 -5
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts +2 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +2 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +7 -7
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +42 -5
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -7
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +63 -130
- package/mobile/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts +0 -3
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.js +0 -3
- package/mobile/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -7
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +2 -2
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +2 -2
- package/mobile/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.js +4 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +26 -11
- package/mobile/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts +2 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js +19 -17
- package/mobile/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/mobile/package-lock.json +2 -2
- package/mobile/package.json +1 -1
- package/out/src/monitor/Monitor.d.ts +3 -3
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +88 -2
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/services/Services.js +1 -1
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +3 -3
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts +1 -6
- package/out/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BulkStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +33 -16
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +15 -11
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +4 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +2 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +3 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +4 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +4 -3
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +7 -7
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +42 -5
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +91 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +448 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -29
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +61 -137
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -7
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +63 -130
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js +81 -0
- package/out/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js +12 -1
- package/out/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +50 -0
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts +12 -0
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +83 -0
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -0
- 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.client.d.ts +0 -3
- package/out/src/services/chaintracker/chaintracks/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.client.js +0 -3
- package/out/src/services/chaintracker/chaintracks/index.client.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +19 -7
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +2 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +2 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js +4 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js +26 -11
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +2 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +19 -17
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts +2 -0
- package/out/src/services/providers/__tests/exchangeRates.test.d.ts.map +1 -0
- package/out/src/services/providers/__tests/exchangeRates.test.js +19 -0
- package/out/src/services/providers/__tests/exchangeRates.test.js.map +1 -0
- package/out/test/Wallet/support/operations.man.test.js +1 -1
- package/out/test/Wallet/support/operations.man.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/monitor/Monitor.ts +3 -3
- package/src/sdk/WalletServices.interfaces.ts +88 -1
- package/src/services/Services.ts +1 -1
- package/src/services/chaintracker/ChaintracksChainTracker.ts +3 -2
- package/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.ts +1 -7
- package/src/services/chaintracker/chaintracks/Api/BulkStorageApi.ts +1 -1
- package/src/services/chaintracker/chaintracks/Api/ChaintracksApi.ts +2 -2
- package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +39 -14
- package/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.ts +1 -1
- package/src/services/chaintracker/chaintracks/Chaintracks.ts +16 -11
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.ts +4 -5
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts +1 -1
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts +2 -3
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts +1 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts +3 -1
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts +1 -1
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.ts +10 -3
- package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts +6 -4
- package/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.ts +1 -1
- package/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.ts +1 -1
- package/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.ts +2 -1
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.ts +4 -3
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.ts +60 -11
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +557 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +80 -179
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +63 -133
- package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.ts +102 -0
- package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +14 -1
- package/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.ts +61 -0
- package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +111 -0
- package/src/services/chaintracker/chaintracks/index.all.ts +4 -0
- package/src/services/chaintracker/chaintracks/index.client.ts +0 -3
- package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +20 -11
- package/src/services/chaintracker/chaintracks/util/BulkFilesReader.ts +1 -1
- package/src/services/chaintracker/chaintracks/util/BulkHeaderFile.ts +3 -3
- package/src/services/chaintracker/chaintracks/util/HeightRange.ts +4 -1
- package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +26 -11
- package/src/services/createDefaultWalletServicesOptions.ts +25 -18
- package/src/services/providers/__tests/exchangeRates.test.ts +18 -0
- package/test/Wallet/support/operations.man.test.ts +1 -1
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +0 -30
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.js +0 -149
- package/mobile/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +0 -23
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +0 -57
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +0 -16
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +0 -1
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +0 -53
- package/mobile/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +0 -1
package/package.json
CHANGED
package/src/monitor/Monitor.ts
CHANGED
|
@@ -16,12 +16,12 @@ import { TaskSendWaiting } from './tasks/TaskSendWaiting'
|
|
|
16
16
|
import { TaskCheckNoSends } from './tasks/TaskCheckNoSends'
|
|
17
17
|
import { TaskUnFail } from './tasks/TaskUnFail'
|
|
18
18
|
import { Chain, ProvenTransactionStatus } from '../sdk/types'
|
|
19
|
-
import { ChaintracksServiceClient } from '../services/chaintracker/chaintracks/ChaintracksServiceClient'
|
|
20
19
|
import { ReviewActionResult } from '../sdk/WalletStorage.interfaces'
|
|
21
20
|
import { WERR_BAD_REQUEST, WERR_INVALID_PARAMETER } from '../sdk/WERR_errors'
|
|
22
21
|
import { WalletError } from '../sdk/WalletError'
|
|
23
22
|
import { BlockHeader } from '../sdk/WalletServices.interfaces'
|
|
24
23
|
import { Services } from '../services/Services'
|
|
24
|
+
import { ChaintracksClientApi } from '../services/chaintracker/chaintracks/Api/ChaintracksClientApi'
|
|
25
25
|
|
|
26
26
|
export type MonitorStorage = WalletStorageManager
|
|
27
27
|
|
|
@@ -32,7 +32,7 @@ export interface MonitorOptions {
|
|
|
32
32
|
|
|
33
33
|
storage: MonitorStorage
|
|
34
34
|
|
|
35
|
-
chaintracks:
|
|
35
|
+
chaintracks: ChaintracksClientApi
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* How many msecs to wait after each getMerkleProof service request.
|
|
@@ -80,7 +80,7 @@ export class Monitor {
|
|
|
80
80
|
services: Services
|
|
81
81
|
chain: Chain
|
|
82
82
|
storage: MonitorStorage
|
|
83
|
-
chaintracks:
|
|
83
|
+
chaintracks: ChaintracksClientApi
|
|
84
84
|
onTransactionBroadcasted?: (broadcastResult: ReviewActionResult) => Promise<void>
|
|
85
85
|
onTransactionProven?: (txStatus: ProvenTransactionStatus) => Promise<void>
|
|
86
86
|
|
|
@@ -3,6 +3,7 @@ import { Chain, ReqHistoryNote } from './types'
|
|
|
3
3
|
import { WalletError } from './WalletError'
|
|
4
4
|
import { TableOutput } from '../storage/schema/tables/TableOutput'
|
|
5
5
|
import { ChaintracksServiceClient } from '../services/chaintracker/chaintracks/ChaintracksServiceClient'
|
|
6
|
+
import { ChaintracksClientApi } from '../services/chaintracker/chaintracks/Api/ChaintracksClientApi'
|
|
6
7
|
/**
|
|
7
8
|
* Defines standard interfaces to access functionality implemented by external transaction processing services.
|
|
8
9
|
*/
|
|
@@ -192,21 +193,107 @@ export interface FiatExchangeRates {
|
|
|
192
193
|
}
|
|
193
194
|
|
|
194
195
|
export interface WalletServicesOptions {
|
|
196
|
+
/**
|
|
197
|
+
* 'main' or 'test': which BSV chain to use
|
|
198
|
+
*/
|
|
195
199
|
chain: Chain
|
|
200
|
+
/**
|
|
201
|
+
* As of 2025-08-31 the `taalApiKey` is unused for default configured services.
|
|
202
|
+
* See `arcConfig` instead.
|
|
203
|
+
*/
|
|
196
204
|
taalApiKey?: string
|
|
205
|
+
/**
|
|
206
|
+
* Api key for use accessing Bitails API at
|
|
207
|
+
* mainnet: `https://api.bitails.io/`
|
|
208
|
+
* testnet: `https://test-api.bitails.io/`
|
|
209
|
+
*/
|
|
197
210
|
bitailsApiKey?: string
|
|
211
|
+
/**
|
|
212
|
+
* Api key for use accessing WhatsOnChain API at
|
|
213
|
+
* mainnet: `https://api.whatsonchain.com/v1/bsv/main`
|
|
214
|
+
* testnet: `https://api.whatsonchain.com/v1/bsv/test`
|
|
215
|
+
*/
|
|
198
216
|
whatsOnChainApiKey?: string
|
|
217
|
+
/**
|
|
218
|
+
* The initial approximate BSV/USD exchange rate.
|
|
219
|
+
*/
|
|
199
220
|
bsvExchangeRate: BsvExchangeRate
|
|
221
|
+
/**
|
|
222
|
+
* Update interval for BSV/USD exchange rate.
|
|
223
|
+
* Default is 15 minutes.
|
|
224
|
+
*/
|
|
200
225
|
bsvUpdateMsecs: number
|
|
226
|
+
/**
|
|
227
|
+
* The initial approximate fiat exchange rates with USD as base.
|
|
228
|
+
*/
|
|
201
229
|
fiatExchangeRates: FiatExchangeRates
|
|
230
|
+
/**
|
|
231
|
+
* Update interval for Fiat exchange rates.
|
|
232
|
+
* Default is 24 hours.
|
|
233
|
+
*/
|
|
202
234
|
fiatUpdateMsecs: number
|
|
235
|
+
/**
|
|
236
|
+
* MAPI callbacks are deprecated at this time.
|
|
237
|
+
*/
|
|
203
238
|
disableMapiCallback?: boolean
|
|
239
|
+
/**
|
|
240
|
+
* API key for use accessing fiat exchange rates API at
|
|
241
|
+
* `http://api.exchangeratesapi.io/v1/latest?access_key=${key}`
|
|
242
|
+
*
|
|
243
|
+
* Obtain your own api key here:
|
|
244
|
+
* https://manage.exchangeratesapi.io/signup/free
|
|
245
|
+
*/
|
|
204
246
|
exchangeratesapiKey?: string
|
|
247
|
+
/**
|
|
248
|
+
* Due to the default use of a free exchangeratesapiKey with low usage limits,
|
|
249
|
+
* the `ChaintracksService` can act as a request rate multiplier.
|
|
250
|
+
*
|
|
251
|
+
* By default the following endpoint is used:
|
|
252
|
+
* `https://mainnet-chaintracks.babbage.systems/getFiatExchangeRates`
|
|
253
|
+
*/
|
|
205
254
|
chaintracksFiatExchangeRatesUrl?: string
|
|
206
|
-
|
|
255
|
+
/**
|
|
256
|
+
* Optional Chaintracks client API instance.
|
|
257
|
+
* Default is a new instance of ChaintracksServiceClient configured to use:
|
|
258
|
+
* mainnet: `https://mainnet-chaintracks.babbage.systems`
|
|
259
|
+
* testnet: `https://testnet-chaintracks.babbage.systems`
|
|
260
|
+
*/
|
|
261
|
+
chaintracks?: ChaintracksClientApi
|
|
262
|
+
/**
|
|
263
|
+
* TAAL ARC service provider endpoit to use
|
|
264
|
+
* Default is:
|
|
265
|
+
* mainnet: `https://arc.taal.com`
|
|
266
|
+
* testnet: `https://arc-test.taal.com`
|
|
267
|
+
*/
|
|
207
268
|
arcUrl: string
|
|
269
|
+
/**
|
|
270
|
+
* TAAL ARC service configuration options.
|
|
271
|
+
*
|
|
272
|
+
* apiKey Default value is undefined.
|
|
273
|
+
*
|
|
274
|
+
* deploymentId Default value: `wallet-toolbox-${randomBytesHex(16)}`.
|
|
275
|
+
*
|
|
276
|
+
* callbackUrl Default is undefined.
|
|
277
|
+
* callbackToken Default is undefined.
|
|
278
|
+
*/
|
|
208
279
|
arcConfig: ArcConfig
|
|
280
|
+
/**
|
|
281
|
+
* GorillaPool ARC service provider endpoit to use
|
|
282
|
+
* Default is:
|
|
283
|
+
* mainnet: `https://arc.gorillapool.io`
|
|
284
|
+
* testnet: undefined
|
|
285
|
+
*/
|
|
209
286
|
arcGorillaPoolUrl?: string
|
|
287
|
+
/**
|
|
288
|
+
* GorillaPool ARC service configuration options.
|
|
289
|
+
*
|
|
290
|
+
* apiKey Default is undefined.
|
|
291
|
+
*
|
|
292
|
+
* deploymentId Default value: `wallet-toolbox-${randomBytesHex(16)}`.
|
|
293
|
+
*
|
|
294
|
+
* callbackUrl Default is undefined.
|
|
295
|
+
* callbackToken Default is undefined.
|
|
296
|
+
*/
|
|
210
297
|
arcGorillaPoolConfig?: ArcConfig
|
|
211
298
|
}
|
|
212
299
|
|
package/src/services/Services.ts
CHANGED
|
@@ -69,7 +69,7 @@ export class Services implements WalletServices {
|
|
|
69
69
|
this.arcGorillaPool = new ARC(this.options.arcGorillaPoolUrl, this.options.arcGorillaPoolConfig, 'arcGorillaPool')
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
this.bitails = new Bitails(this.chain)
|
|
72
|
+
this.bitails = new Bitails(this.chain, { apiKey: this.options.bitailsApiKey })
|
|
73
73
|
|
|
74
74
|
//prettier-ignore
|
|
75
75
|
this.getMerklePathServices = new ServiceCollection<GetMerklePathService>('getMerklePath')
|
|
@@ -5,17 +5,18 @@ import { WalletError } from '../../sdk/WalletError'
|
|
|
5
5
|
import { wait } from '../../utility/utilityHelpers'
|
|
6
6
|
import { WERR_INTERNAL } from '../../sdk/WERR_errors'
|
|
7
7
|
import { BlockHeader } from '../../sdk/WalletServices.interfaces'
|
|
8
|
+
import { ChaintracksClientApi } from './chaintracks/Api/ChaintracksClientApi'
|
|
8
9
|
|
|
9
10
|
export interface ChaintracksChainTrackerOptions {
|
|
10
11
|
maxRetries?: number
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export class ChaintracksChainTracker implements ChainTracker {
|
|
14
|
-
chaintracks:
|
|
15
|
+
chaintracks: ChaintracksClientApi
|
|
15
16
|
cache: Record<number, string>
|
|
16
17
|
options: ChaintracksChainTrackerOptions
|
|
17
18
|
|
|
18
|
-
constructor(chain?: Chain, chaintracks?:
|
|
19
|
+
constructor(chain?: Chain, chaintracks?: ChaintracksClientApi, options?: ChaintracksChainTrackerOptions) {
|
|
19
20
|
chain ||= 'main'
|
|
20
21
|
this.chaintracks =
|
|
21
22
|
chaintracks ??
|
|
@@ -16,12 +16,6 @@ export interface BulkIngestorBaseOptions {
|
|
|
16
16
|
* available bulk block header resources.
|
|
17
17
|
*/
|
|
18
18
|
jsonResource: string | undefined
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* If true, and the bulk ingestor supports it, bypass the live database
|
|
22
|
-
* up to `liveHeightThreshold` of available headers remaining.
|
|
23
|
-
*/
|
|
24
|
-
bypassLiveEnabled: boolean
|
|
25
19
|
}
|
|
26
20
|
|
|
27
21
|
export interface BulkIngestorApi {
|
|
@@ -76,7 +70,7 @@ export interface BulkIngestorApi {
|
|
|
76
70
|
* Components requiring asynchronous setup can override base class implementation.
|
|
77
71
|
* @param storage
|
|
78
72
|
*/
|
|
79
|
-
setStorage(storage: ChaintracksStorageApi): Promise<void>
|
|
73
|
+
setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
|
|
80
74
|
|
|
81
75
|
storage(): ChaintracksStorageApi
|
|
82
76
|
}
|
|
@@ -88,5 +88,5 @@ export interface BulkStorageApi {
|
|
|
88
88
|
* Components requiring asynchronous setup can override base class implementation.
|
|
89
89
|
* @param storage
|
|
90
90
|
*/
|
|
91
|
-
setStorage(storage: ChaintracksStorageApi): Promise<void>
|
|
91
|
+
setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
|
|
92
92
|
}
|
|
@@ -17,9 +17,9 @@ export interface ChaintracksOptions {
|
|
|
17
17
|
*/
|
|
18
18
|
addLiveRecursionLimit: number
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Optional logging method
|
|
21
21
|
*/
|
|
22
|
-
logging:
|
|
22
|
+
logging?: (...args: any[]) => void
|
|
23
23
|
/**
|
|
24
24
|
* If true, this chaintracks instance will only service read requests for existing data.
|
|
25
25
|
* Shared storage only requires one readonly false instance to manage and update storage.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HeightRange } from '../util/HeightRange'
|
|
2
|
-
import { BlockHeader, LiveBlockHeader } from './BlockHeaderApi'
|
|
2
|
+
import { BaseBlockHeader, BlockHeader, LiveBlockHeader } from './BlockHeaderApi'
|
|
3
3
|
import { Chain } from '../../../../sdk/types'
|
|
4
4
|
import { BulkHeaderFileInfo } from '../util/BulkHeaderFile'
|
|
5
5
|
import { BulkFileDataManager } from '../util/BulkFileDataManager'
|
|
@@ -52,6 +52,8 @@ export interface ChaintracksStorageBaseOptions {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface ChaintracksStorageQueryApi {
|
|
55
|
+
log: (...args: any[]) => void
|
|
56
|
+
|
|
55
57
|
/**
|
|
56
58
|
* Returns the active chain tip header
|
|
57
59
|
* Throws an error if there is no tip.
|
|
@@ -108,16 +110,40 @@ export interface ChaintracksStorageQueryApi {
|
|
|
108
110
|
isMerkleRootActive(merkleRoot: string): Promise<boolean>
|
|
109
111
|
|
|
110
112
|
/**
|
|
111
|
-
*
|
|
112
|
-
* Only adds active headers.
|
|
113
|
-
* Buffer length divided by 80 is the actual number returned.
|
|
113
|
+
* Returns serialized headers as a Uint8Array.
|
|
114
|
+
* Only adds bulk and active live headers.
|
|
114
115
|
*
|
|
115
|
-
*
|
|
116
|
+
* @param height is the minimum header height to return, must be >= zero.
|
|
117
|
+
* @param count height + count - 1 is the maximum header height to return.
|
|
118
|
+
* @returns serialized headers as a Uint8Array.
|
|
119
|
+
*/
|
|
120
|
+
getHeadersUint8Array(height: number, count: number): Promise<Uint8Array>
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Returns an array of deserialized headers.
|
|
124
|
+
* Only adds bulk and active live headers.
|
|
116
125
|
*
|
|
117
|
-
* @param height
|
|
118
|
-
* @param count
|
|
126
|
+
* @param height is the minimum header height to return, must be >= zero.
|
|
127
|
+
* @param count height + count - 1 is the maximum header height to return.
|
|
128
|
+
* @returns array of deserialized headers
|
|
119
129
|
*/
|
|
120
|
-
getHeaders(height: number, count: number): Promise<
|
|
130
|
+
getHeaders(height: number, count: number): Promise<BaseBlockHeader[]>
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Returns active `LiveBlockHeaders` with height in the given range.
|
|
134
|
+
*
|
|
135
|
+
* @param range
|
|
136
|
+
* @returns array of active `LiveBlockHeaders`
|
|
137
|
+
*/
|
|
138
|
+
getLiveHeaders(range: HeightRange): Promise<LiveBlockHeader[]>
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Returns serialized bulk headers in the given range.
|
|
142
|
+
*
|
|
143
|
+
* @param range
|
|
144
|
+
* @returns serialized headers as a Uint8Array.
|
|
145
|
+
*/
|
|
146
|
+
getBulkHeaders(range: HeightRange): Promise<Uint8Array>
|
|
121
147
|
|
|
122
148
|
/**
|
|
123
149
|
* Returns block header for a given block height on active chain.
|
|
@@ -161,7 +187,7 @@ export interface ChaintracksStorageQueryApi {
|
|
|
161
187
|
/**
|
|
162
188
|
* @returns The current minimum and maximum height active LiveBlockHeaders in the "live" database.
|
|
163
189
|
*/
|
|
164
|
-
findLiveHeightRange(): Promise<
|
|
190
|
+
findLiveHeightRange(): Promise<HeightRange>
|
|
165
191
|
|
|
166
192
|
/**
|
|
167
193
|
* @returns The maximum headerId value used by existing records or -1 if there are none.
|
|
@@ -257,6 +283,8 @@ export interface ChaintracksStorageBulkFileApi {
|
|
|
257
283
|
}
|
|
258
284
|
|
|
259
285
|
export interface ChaintracksStorageIngestApi {
|
|
286
|
+
log: (...args: any[]) => void
|
|
287
|
+
|
|
260
288
|
/**
|
|
261
289
|
* Attempts to insert a block header into the chain.
|
|
262
290
|
*
|
|
@@ -340,14 +368,11 @@ export interface ChaintracksStorageIngestApi {
|
|
|
340
368
|
* Release all resources. Makes the instance unusable.
|
|
341
369
|
*/
|
|
342
370
|
destroy(): Promise<void>
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* @returns min, max height range in live database or empty (0, -1)
|
|
346
|
-
*/
|
|
347
|
-
getLiveHeightRange(): Promise<HeightRange>
|
|
348
371
|
}
|
|
349
372
|
|
|
350
373
|
export interface ChaintracksStorageApi extends ChaintracksStorageQueryApi, ChaintracksStorageIngestApi {
|
|
374
|
+
log: (...args: any[]) => void
|
|
375
|
+
|
|
351
376
|
bulkManager: BulkFileDataManager
|
|
352
377
|
|
|
353
378
|
/**
|
|
@@ -15,7 +15,7 @@ export interface LiveIngestorApi {
|
|
|
15
15
|
* Components requiring asynchronous setup can override base class implementation.
|
|
16
16
|
* @param storage
|
|
17
17
|
*/
|
|
18
|
-
setStorage(storage: ChaintracksStorageApi): Promise<void>
|
|
18
|
+
setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void>
|
|
19
19
|
|
|
20
20
|
storage(): ChaintracksStorageApi
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
23
23
|
bulkIngestors: [],
|
|
24
24
|
liveIngestors: [],
|
|
25
25
|
addLiveRecursionLimit: 36,
|
|
26
|
-
logging:
|
|
26
|
+
logging: (...args) => console.log(new Date().toISOString(), ...args),
|
|
27
27
|
readonly: false
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -71,7 +71,9 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
71
71
|
|
|
72
72
|
this.addLiveRecursionLimit = options.addLiveRecursionLimit
|
|
73
73
|
|
|
74
|
-
if (options.logging
|
|
74
|
+
if (options.logging) this.log = options.logging
|
|
75
|
+
this.storage.log = this.log
|
|
76
|
+
|
|
75
77
|
this.log(`New ChaintracksBase Instance Constructed ${options.chain}Net`)
|
|
76
78
|
}
|
|
77
79
|
|
|
@@ -94,7 +96,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
94
96
|
const presentHeight = await bulk.getPresentHeight()
|
|
95
97
|
if (presentHeight) presentHeights.push(presentHeight)
|
|
96
98
|
} catch (uerr: unknown) {
|
|
97
|
-
console.
|
|
99
|
+
console.error(uerr)
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
102
|
const presentHeight = presentHeights.length ? Math.max(...presentHeights) : undefined
|
|
@@ -157,8 +159,8 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
157
159
|
if (this.available) return
|
|
158
160
|
// Make sure database schema exists and is updated...
|
|
159
161
|
await this.storage.migrateLatest()
|
|
160
|
-
for (const bulkIn of this.bulkIngestors) await bulkIn.setStorage(this.storage)
|
|
161
|
-
for (const liveIn of this.liveIngestors) await liveIn.setStorage(this.storage)
|
|
162
|
+
for (const bulkIn of this.bulkIngestors) await bulkIn.setStorage(this.storage, this.log)
|
|
163
|
+
for (const liveIn of this.liveIngestors) await liveIn.setStorage(this.storage, this.log)
|
|
162
164
|
|
|
163
165
|
// Start all live ingestors to push new headers onto liveHeaders... each long running.
|
|
164
166
|
for (const liveIngestor of this.liveIngestors) this.promises.push(liveIngestor.startListening(this.liveHeaders))
|
|
@@ -221,7 +223,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
221
223
|
return this.lock.withReadLock(async () => this.findHeaderForBlockHashNoLock(hash))
|
|
222
224
|
}
|
|
223
225
|
|
|
224
|
-
async findHeaderForBlockHashNoLock(hash: string): Promise<BlockHeader | undefined> {
|
|
226
|
+
private async findHeaderForBlockHashNoLock(hash: string): Promise<BlockHeader | undefined> {
|
|
225
227
|
return (await this.storage.findLiveHeaderForBlockHash(hash)) || undefined
|
|
226
228
|
}
|
|
227
229
|
|
|
@@ -238,7 +240,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
238
240
|
}
|
|
239
241
|
|
|
240
242
|
private async getInfoNoLock(): Promise<ChaintracksInfoApi> {
|
|
241
|
-
const liveRange = await this.storage.
|
|
243
|
+
const liveRange = await this.storage.findLiveHeightRange()
|
|
242
244
|
const info: ChaintracksInfoApi = {
|
|
243
245
|
chain: this.chain,
|
|
244
246
|
heightBulk: liveRange.minHeight - 1,
|
|
@@ -253,7 +255,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
253
255
|
|
|
254
256
|
async getHeaders(height: number, count: number): Promise<string> {
|
|
255
257
|
await this.makeAvailable()
|
|
256
|
-
return this.lock.withReadLock(async () => asString(await this.storage.
|
|
258
|
+
return this.lock.withReadLock(async () => asString(await this.storage.getHeadersUint8Array(height, count)))
|
|
257
259
|
}
|
|
258
260
|
|
|
259
261
|
async findChainTipHeader(): Promise<BlockHeader> {
|
|
@@ -339,7 +341,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
339
341
|
break
|
|
340
342
|
}
|
|
341
343
|
} catch (uerr: unknown) {
|
|
342
|
-
console.
|
|
344
|
+
console.error(uerr)
|
|
343
345
|
}
|
|
344
346
|
}
|
|
345
347
|
if (bulkDone) break
|
|
@@ -472,6 +474,7 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
472
474
|
// Process a "live" block header...
|
|
473
475
|
let recursions = this.addLiveRecursionLimit
|
|
474
476
|
for (; !needSyncCheck && !this.stopMainThread; ) {
|
|
477
|
+
//console.log(`Processing liveHeader: height: ${header.height} hash: ${header.hash} ${new Date().toISOString()}`)
|
|
475
478
|
const ihr = await this.addLiveHeader(header)
|
|
476
479
|
if (this.invalidInsertHeaderResult(ihr)) {
|
|
477
480
|
this.log(`Ignoring liveHeader ${header.height} ${header.hash} due to invalid insert result.`)
|
|
@@ -550,11 +553,13 @@ export class Chaintracks implements ChaintracksManagementApi {
|
|
|
550
553
|
liveHeaderDupes = 0
|
|
551
554
|
}
|
|
552
555
|
const updated = await this.storage.getAvailableHeightRanges()
|
|
553
|
-
this.log(
|
|
556
|
+
this.log(`After adding ${count} live headers
|
|
557
|
+
After live: bulk ${updated.bulk}, live ${updated.live}
|
|
558
|
+
`)
|
|
554
559
|
count = 0
|
|
555
560
|
}
|
|
556
561
|
if (!this.subscriberCallbacksEnabled) {
|
|
557
|
-
const live = await this.storage.
|
|
562
|
+
const live = await this.storage.findLiveHeightRange()
|
|
558
563
|
if (!live.isEmpty) {
|
|
559
564
|
this.subscriberCallbacksEnabled = true
|
|
560
565
|
this.log(`listening at height of ${live.maxHeight}`)
|
|
@@ -17,27 +17,26 @@ export abstract class BulkIngestorBase implements BulkIngestorApi {
|
|
|
17
17
|
static createBulkIngestorBaseOptions(chain: Chain) {
|
|
18
18
|
const options: BulkIngestorBaseOptions = {
|
|
19
19
|
chain,
|
|
20
|
-
jsonResource: `${chain}NetBlockHeaders.json
|
|
21
|
-
bypassLiveEnabled: true
|
|
20
|
+
jsonResource: `${chain}NetBlockHeaders.json`
|
|
22
21
|
}
|
|
23
22
|
return options
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
chain: Chain
|
|
27
26
|
jsonFilename: string
|
|
28
|
-
|
|
27
|
+
log: (...args: any[]) => void = () => {}
|
|
29
28
|
|
|
30
29
|
constructor(options: BulkIngestorBaseOptions) {
|
|
31
30
|
if (!options.jsonResource) throw new Error('The jsonFilename options property is required.')
|
|
32
31
|
this.chain = options.chain
|
|
33
32
|
this.jsonFilename = options.jsonResource
|
|
34
|
-
this.bypassLiveEnabled = options.bypassLiveEnabled
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
private storageEngine: ChaintracksStorageBase | undefined
|
|
38
36
|
|
|
39
|
-
async setStorage(storage: ChaintracksStorageBase): Promise<void> {
|
|
37
|
+
async setStorage(storage: ChaintracksStorageBase, log: (...args: any[]) => void): Promise<void> {
|
|
40
38
|
this.storageEngine = storage
|
|
39
|
+
this.log = log
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
async shutdown(): Promise<void> {}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Chain } from '../../../../sdk'
|
|
2
|
-
import { logger } from '../../../../utility/utilityHelpers'
|
|
3
2
|
import { BlockHeader } from '../Api/BlockHeaderApi'
|
|
4
3
|
import { BulkIngestorBaseOptions } from '../Api/BulkIngestorApi'
|
|
5
4
|
import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi'
|
|
@@ -78,7 +77,7 @@ export class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
|
|
|
78
77
|
|
|
79
78
|
override async getPresentHeight(): Promise<number | undefined> {
|
|
80
79
|
const presentHeight = await this.woc.getChainTipHeight()
|
|
81
|
-
|
|
80
|
+
this.log(`presentHeight=${presentHeight}`)
|
|
82
81
|
return presentHeight
|
|
83
82
|
}
|
|
84
83
|
|
|
@@ -104,7 +103,7 @@ export class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
|
|
|
104
103
|
}
|
|
105
104
|
}
|
|
106
105
|
} catch (e) {
|
|
107
|
-
|
|
106
|
+
this.log(`Errors during WhatsOnChain ingestion:\n${e}`)
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
const liveHeaders = await this.storage().addBulkHeaders(oldHeaders, bulkRange, priorLiveHeaders)
|
|
@@ -23,6 +23,7 @@ export abstract class LiveIngestorBase implements LiveIngestorApi {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
chain: Chain
|
|
26
|
+
log: (...args: any[]) => void = () => {}
|
|
26
27
|
|
|
27
28
|
constructor(options: LiveIngestorBaseOptions) {
|
|
28
29
|
this.chain = options.chain
|
|
@@ -40,8 +41,9 @@ export abstract class LiveIngestorBase implements LiveIngestorApi {
|
|
|
40
41
|
* Allocate resources.
|
|
41
42
|
* @param storage coordinating storage engine.
|
|
42
43
|
*/
|
|
43
|
-
async setStorage(storage: ChaintracksStorageApi): Promise<void> {
|
|
44
|
+
async setStorage(storage: ChaintracksStorageApi, log: (...args: any[]) => void): Promise<void> {
|
|
44
45
|
this.storageEngine = storage
|
|
46
|
+
this.log = log
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
/**
|
|
@@ -40,11 +40,18 @@ export class LiveIngestorWhatsOnChainWs extends LiveIngestorBase {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
for (;;) {
|
|
43
|
-
const ok = await WocHeadersLiveListener(
|
|
43
|
+
const ok = await WocHeadersLiveListener(
|
|
44
|
+
enqueue,
|
|
45
|
+
error,
|
|
46
|
+
this.stopNewListenersToken,
|
|
47
|
+
this.chain,
|
|
48
|
+
this.log,
|
|
49
|
+
this.idleWait
|
|
50
|
+
)
|
|
44
51
|
|
|
45
52
|
if (!ok || errors.length > 0) {
|
|
46
|
-
|
|
47
|
-
for (const e of errors)
|
|
53
|
+
this.log(`WhatsOnChain live ingestor ok=${ok} error count=${errors.length}`)
|
|
54
|
+
for (const e of errors) this.log(`WhatsOnChain error code=${e.code} count=${e.count} message=${e.message}`)
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
if (ok) break
|
|
@@ -4,8 +4,6 @@ import { wait } from '../../../../utility/utilityHelpers'
|
|
|
4
4
|
import { Chain } from '../../../../sdk/types'
|
|
5
5
|
import { BlockHeader } from '../../../../sdk/WalletServices.interfaces'
|
|
6
6
|
|
|
7
|
-
const logger = console.log.bind(console)
|
|
8
|
-
|
|
9
7
|
export type StopListenerToken = { stop: (() => void) | undefined }
|
|
10
8
|
|
|
11
9
|
async function getWhatsOnChainTipHeight(chain: Chain = 'main', apiKey?: string): Promise<number> {
|
|
@@ -31,7 +29,8 @@ export async function WocHeadersBulkListener(
|
|
|
31
29
|
enqueue: (header: BlockHeader) => void,
|
|
32
30
|
error: (code: number, message: string) => boolean,
|
|
33
31
|
stop: StopListenerToken,
|
|
34
|
-
chain: Chain
|
|
32
|
+
chain: Chain,
|
|
33
|
+
logger: (...args: any[]) => void = () => {},
|
|
35
34
|
idleWait = 5000
|
|
36
35
|
): Promise<boolean> {
|
|
37
36
|
//logger(`WocHeadersBulkListener from ${fromHeight} to ${toHeight} on ${chain} chain`)
|
|
@@ -243,6 +242,7 @@ export async function WocHeadersBulkListener_test(): Promise<void> {
|
|
|
243
242
|
},
|
|
244
243
|
stop,
|
|
245
244
|
chain,
|
|
245
|
+
console.log.bind(console),
|
|
246
246
|
5000
|
|
247
247
|
))
|
|
248
248
|
) {
|
|
@@ -267,7 +267,8 @@ export async function WocHeadersLiveListener(
|
|
|
267
267
|
enqueue: (header: BlockHeader) => void,
|
|
268
268
|
error: (code: number, message: string) => boolean,
|
|
269
269
|
stop: StopListenerToken,
|
|
270
|
-
chain: Chain
|
|
270
|
+
chain: Chain,
|
|
271
|
+
logger: (...args: any[]) => void,
|
|
271
272
|
idleWait = 100000
|
|
272
273
|
): Promise<boolean> {
|
|
273
274
|
let count = 0
|
|
@@ -425,6 +426,7 @@ export async function WocHeadersLiveListener_test(): Promise<void> {
|
|
|
425
426
|
},
|
|
426
427
|
stop,
|
|
427
428
|
chain,
|
|
429
|
+
console.log.bind(console),
|
|
428
430
|
100000
|
|
429
431
|
))
|
|
430
432
|
) {
|
|
@@ -44,7 +44,7 @@ async function testUpdateLocalCache(chain: Chain, test: string) {
|
|
|
44
44
|
const knexOptions = ChaintracksStorageKnex.createStorageKnexOptions(chain, makeKnex(localSqlite))
|
|
45
45
|
const storage = new ChaintracksStorageKnex(knexOptions)
|
|
46
46
|
const before = await storage.getAvailableHeightRanges()
|
|
47
|
-
await cdn.setStorage(storage)
|
|
47
|
+
await cdn.setStorage(storage, console.log)
|
|
48
48
|
|
|
49
49
|
const range = new HeightRange(0, 9900000)
|
|
50
50
|
const liveHeaders = await cdn.fetchHeaders(before, range, range, [])
|
|
@@ -73,7 +73,7 @@ describe('WhatsOnChainServices tests', () => {
|
|
|
73
73
|
errorsNew.push({ code, message })
|
|
74
74
|
return true
|
|
75
75
|
}
|
|
76
|
-
const okNew = await WocHeadersLiveListener(eh, errh, stopNewListenersToken, chain)
|
|
76
|
+
const okNew = await WocHeadersLiveListener(eh, errh, stopNewListenersToken, chain, console.log.bind(console))
|
|
77
77
|
if (errorsNew.length > 0) console.log(JSON.stringify(errorsNew))
|
|
78
78
|
expect(errorsNew.length).toBe(0)
|
|
79
79
|
expect(okNew).toBe(true)
|
|
@@ -27,6 +27,7 @@ export abstract class BulkStorageBase implements BulkStorageApi {
|
|
|
27
27
|
|
|
28
28
|
chain: Chain
|
|
29
29
|
fs: ChaintracksFsApi
|
|
30
|
+
log: (...args: any[]) => void = () => {}
|
|
30
31
|
|
|
31
32
|
constructor(options: BulkStorageBaseOptions) {
|
|
32
33
|
this.chain = options.chain
|
|
@@ -50,7 +51,7 @@ export abstract class BulkStorageBase implements BulkStorageApi {
|
|
|
50
51
|
return new HeightRange(0, await this.getMaxHeight())
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
async setStorage(storage: ChaintracksStorageBase): Promise<void> {}
|
|
54
|
+
async setStorage(storage: ChaintracksStorageBase, log: (...args: any[]) => void): Promise<void> {}
|
|
54
55
|
|
|
55
56
|
async exportBulkHeaders(rootFolder: string, jsonFilename: string, maxPerFile: number): Promise<void> {
|
|
56
57
|
const info: BulkHeaderFilesInfo = {
|