@bopen-io/wallet-toolbox 2.0.5-idb-fix.2 → 2.1.8-spending-fix.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +104 -2
- package/README.md +111 -28
- package/docs/client.md +861 -218
- package/docs/monitor.md +113 -8
- package/docs/services.md +246 -53
- package/docs/storage.md +43 -82
- package/docs/wallet.md +861 -218
- package/out/src/Setup.js +1 -4
- package/out/src/Setup.js.map +1 -1
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +6 -4
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +4 -2
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +163 -72
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/__tests/ShamirWalletManager.test.js +4 -4
- package/out/src/__tests/ShamirWalletManager.test.js.map +1 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.js +113 -1
- package/out/src/__tests/WalletPermissionsManager.flows.test.js.map +1 -1
- package/out/src/index.all.d.ts +2 -0
- package/out/src/index.all.d.ts.map +1 -1
- package/out/src/index.all.js +2 -0
- package/out/src/index.all.js.map +1 -1
- package/out/src/index.mobile.d.ts +1 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +1 -0
- package/out/src/index.mobile.js.map +1 -1
- package/out/src/mockchain/MockChainMigrations.d.ts +20 -0
- package/out/src/mockchain/MockChainMigrations.d.ts.map +1 -0
- package/out/src/mockchain/MockChainMigrations.js +67 -0
- package/out/src/mockchain/MockChainMigrations.js.map +1 -0
- package/out/src/mockchain/MockChainStorage.d.ts +58 -0
- package/out/src/mockchain/MockChainStorage.d.ts.map +1 -0
- package/out/src/mockchain/MockChainStorage.js +101 -0
- package/out/src/mockchain/MockChainStorage.js.map +1 -0
- package/out/src/mockchain/MockChainTracker.d.ts +28 -0
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -0
- package/out/src/mockchain/MockChainTracker.js +95 -0
- package/out/src/mockchain/MockChainTracker.js.map +1 -0
- package/out/src/mockchain/MockMiner.d.ts +16 -0
- package/out/src/mockchain/MockMiner.d.ts.map +1 -0
- package/out/src/mockchain/MockMiner.js +137 -0
- package/out/src/mockchain/MockMiner.js.map +1 -0
- package/out/src/mockchain/MockServices.d.ts +44 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -0
- package/out/src/mockchain/MockServices.js +505 -0
- package/out/src/mockchain/MockServices.js.map +1 -0
- package/out/src/mockchain/index.d.ts +9 -0
- package/out/src/mockchain/index.d.ts.map +1 -0
- package/out/src/mockchain/index.js +18 -0
- package/out/src/mockchain/index.js.map +1 -0
- package/out/src/mockchain/merkleTree.d.ts +13 -0
- package/out/src/mockchain/merkleTree.d.ts.map +1 -0
- package/out/src/mockchain/merkleTree.js +113 -0
- package/out/src/mockchain/merkleTree.js.map +1 -0
- package/out/src/monitor/Monitor.d.ts +27 -3
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +31 -1
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +27 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.js +260 -0
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -0
- package/out/src/monitor/tasks/TaskMineBlock.d.ts +13 -0
- package/out/src/monitor/tasks/TaskMineBlock.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskMineBlock.js +29 -0
- package/out/src/monitor/tasks/TaskMineBlock.js.map +1 -0
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +15 -5
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts +2 -0
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.d.ts.map +1 -0
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js +257 -0
- package/out/src/monitor/tasks/__tests/TaskArcSSE.test.js.map +1 -0
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -1
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +5 -3
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +2 -0
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +1 -1
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/services/Services.d.ts +20 -4
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +163 -33
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/verifyBeef.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +20 -4
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +1 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +24 -6
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.man.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +8 -8
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js +109 -0
- package/out/src/services/chaintracker/chaintracks/__tests/bulkIngestorFailures.test.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js +3 -8
- package/out/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts +22 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +54 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js +3 -42
- 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 +2 -41
- 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 +3 -42
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +2 -20
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +5 -55
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +27 -21
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +19 -4
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/index.d.ts +1 -0
- package/out/src/services/index.d.ts.map +1 -1
- package/out/src/services/index.js +1 -0
- package/out/src/services/index.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +57 -0
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -0
- package/out/src/services/providers/ArcSSEClient.js +111 -0
- package/out/src/services/providers/ArcSSEClient.js.map +1 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +10 -1
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +2 -0
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts +2 -0
- package/out/src/services/providers/__tests/ArcSSEClient.test.d.ts.map +1 -0
- package/out/src/services/providers/__tests/ArcSSEClient.test.js +256 -0
- package/out/src/services/providers/__tests/ArcSSEClient.test.js.map +1 -0
- package/out/src/services/providers/exchangeRates.d.ts +1 -1
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +20 -14
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +6 -2
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +8 -0
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +125 -71
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +8 -0
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +42 -0
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +1 -15
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +0 -53
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/__test/getBeefForTransaction.test.js +49 -2
- package/out/src/storage/__test/getBeefForTransaction.test.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/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +24 -7
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js +153 -1
- package/out/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.js.map +1 -1
- package/out/src/storage/methods/__test/offsetKey.test.js +133 -286
- package/out/src/storage/methods/__test/offsetKey.test.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +16 -11
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +73 -34
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +25 -0
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +84 -14
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +17 -3
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +28 -2
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +83 -50
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +1 -0
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +59 -8
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts +2 -0
- package/out/src/storage/remoting/__test/StorageClient.man.test.d.ts.map +1 -0
- package/out/src/storage/remoting/__test/StorageClient.man.test.js +487 -0
- package/out/src/storage/remoting/__test/StorageClient.man.test.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +41 -1
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +4 -0
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/brc114ActionTimeLabels.d.ts +9 -0
- package/out/src/utility/brc114ActionTimeLabels.d.ts.map +1 -0
- package/out/src/utility/brc114ActionTimeLabels.js +51 -0
- package/out/src/utility/brc114ActionTimeLabels.js.map +1 -0
- package/out/src/utility/utilityHelpers.d.ts +5 -0
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +24 -1
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +10 -3
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +34 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.d.ts +1 -19
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js +0 -52
- package/out/src/wab-client/auth-method-interactors/DevConsoleInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts +1 -3
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js +0 -24
- package/out/src/wab-client/auth-method-interactors/PersonaIDInteractor.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts +1 -19
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js +0 -52
- package/out/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,108 @@ This document captures the history of significant changes to the wallet-toolbox
|
|
|
4
4
|
The git commit history contains the details but is unable to draw
|
|
5
5
|
attention to changes that materially alter behavior or extend functionality.
|
|
6
6
|
|
|
7
|
+
## wallet-toolbox 2.1.8
|
|
8
|
+
|
|
9
|
+
- Drop no longer required verifyAndRepairBeef method
|
|
10
|
+
- Simplify collectCommission tests in offsetKey.test.ts
|
|
11
|
+
- Remove duplicate BulkFileDataReader class.
|
|
12
|
+
- Reorg createDefault*ChaintracksOptions to reduce duplicated code.
|
|
13
|
+
- Reorg auth-method-interactors
|
|
14
|
+
- Flip waitForAuthentication grouped permission request event (now first) and activation (now second)
|
|
15
|
+
|
|
16
|
+
## wallet-toolbox 2.1.7
|
|
17
|
+
|
|
18
|
+
- Sonarqube recommended changes...
|
|
19
|
+
|
|
20
|
+
## wallet-toolbox 2.1.6
|
|
21
|
+
|
|
22
|
+
- Improve change-making algorithm: cap change outputs per transaction to 8 (gradual UTXO pool build-up, smaller BEEFs). Enforce dynamic dust floor so no change output is worth less than 2× the fee to spend it.
|
|
23
|
+
|
|
24
|
+
## wallet-toolbox 2.1.5
|
|
25
|
+
|
|
26
|
+
- Update deps, docs, lint
|
|
27
|
+
|
|
28
|
+
## wallet-toolbox 2.1.4
|
|
29
|
+
|
|
30
|
+
- Change `Monitor`: Add SSE event hooks.
|
|
31
|
+
- Add `ArcSSEClient` to drive SSE event hooks on mobile
|
|
32
|
+
|
|
33
|
+
## wallet-toolbox 2.1.3
|
|
34
|
+
|
|
35
|
+
- Change `Monitor`: no retry for invalid beefs in TaskSendWaiting. Cleanup logging.
|
|
36
|
+
|
|
37
|
+
## wallet-toolbox 2.1.2
|
|
38
|
+
|
|
39
|
+
- Fix Chaintracks no longer hangs if bulk ingestor fails to reach chain tip.
|
|
40
|
+
|
|
41
|
+
## wallet-toolbox 2.1.1
|
|
42
|
+
|
|
43
|
+
### Add `teratest` and `mock` chain types
|
|
44
|
+
|
|
45
|
+
- Change `Chain` type from `'main' | 'test'` to `'main' | 'test' | 'teratest' | 'mock'`.
|
|
46
|
+
|
|
47
|
+
**`teratest` chain:**
|
|
48
|
+
|
|
49
|
+
- Add ARC URL `https://arc-teratest.taal.com` for the teratest network.
|
|
50
|
+
- Chaintracks URL follows existing `${chain}net-chaintracks.babbage.systems` pattern.
|
|
51
|
+
- WhatsOnChain URL follows existing `https://api.whatsonchain.com/v1/bsv/${network}` pattern.
|
|
52
|
+
- Bitails is not available on teratest (only `main` and `test`).
|
|
53
|
+
|
|
54
|
+
**`mock` chain — full self-contained mock blockchain:**
|
|
55
|
+
|
|
56
|
+
- Add new `src/mockchain/` module with `MockServices`, `MockChainTracker`, `MockMiner`, `MockChainStorage`, and merkle tree utilities.
|
|
57
|
+
- `MockServices` implements the `WalletServices` interface against a local SQLite database (3 tables: `mockchain_block_headers`, `mockchain_transactions`, `mockchain_utxos`).
|
|
58
|
+
- Transactions are validated with full script execution via `@bsv/sdk` `Transaction.verify()`.
|
|
59
|
+
- Coinbase maturity rule enforced (100 block confirmations required before spending).
|
|
60
|
+
- On-demand block mining via `MockServices.mineBlock()`.
|
|
61
|
+
- Chain reorganization simulation via `MockServices.reorg()` with `txidMap` for controlling which transactions land in which new blocks.
|
|
62
|
+
- Add `TaskMineBlock` monitor task for periodic mining (10 minutes) with `mineNow` static flag for on-demand triggering.
|
|
63
|
+
- `Monitor.services` type widened from `Services` to `Services | WalletServices` to support mock chain.
|
|
64
|
+
- `Services` class, `createDefaultWalletServicesOptions`, and external service providers (`WhatsOnChain`, `Bitails`) throw explicit errors if instantiated with `'mock'` chain.
|
|
65
|
+
|
|
66
|
+
**Explicit chain handling across codebase:**
|
|
67
|
+
|
|
68
|
+
- Convert chain-dependent ternaries to explicit switch statements in `toWalletNetwork`, `genesisHeader`, `Bitails` constructor, WoC WebSocket ingestors, and `ChaintracksStorageNoDb`.
|
|
69
|
+
- Each chain value (`main`, `test`, `teratest`, `mock`) is handled explicitly rather than falling through a catch-all else branch.
|
|
70
|
+
|
|
71
|
+
## wallet-toolbox 2.0.24
|
|
72
|
+
|
|
73
|
+
Optimize createAction (fewer db transactions)
|
|
74
|
+
Add postBeef services soft timeout failover
|
|
75
|
+
PR 130 randomBytesHex in Setup
|
|
76
|
+
|
|
77
|
+
## wallet-toolbox 2.0.23
|
|
78
|
+
|
|
79
|
+
Add output table indices to speed up listOutputs and createAction
|
|
80
|
+
|
|
81
|
+
## wallet-toolbox 2.0.20
|
|
82
|
+
|
|
83
|
+
Add BRC-115 new manifest specs to support group and counterparty permissions.
|
|
84
|
+
|
|
85
|
+
## wallet-toolbox 2.0.19
|
|
86
|
+
|
|
87
|
+
Add BRC-114 action time labels for filtering actions by creation time.
|
|
88
|
+
|
|
89
|
+
## wallet-toolbox 2.0.18
|
|
90
|
+
|
|
91
|
+
Update bsv/auth-express-middleware 2.0.4
|
|
92
|
+
|
|
93
|
+
## wallet-toolbox 2.0.17
|
|
94
|
+
|
|
95
|
+
Update @bsv/sdk to 2.0.4 to fix StorageServer failing from stale AuthFetch sessions.
|
|
96
|
+
|
|
97
|
+
## wallet-toolbox 2.0.9
|
|
98
|
+
|
|
99
|
+
Added support for more currency types.
|
|
100
|
+
|
|
101
|
+
## wallet-toolbox 2.0.8
|
|
102
|
+
|
|
103
|
+
Add check for cross session signAction errors.
|
|
104
|
+
|
|
105
|
+
## wallet-toolbox 2.0.7
|
|
106
|
+
|
|
107
|
+
Add StorageClient.man.test.ts to stress test storage.babbage.systems
|
|
108
|
+
|
|
7
109
|
## wallet-toolbox 2.0.5
|
|
8
110
|
|
|
9
111
|
Change sqlite support to better-sqlite3, all tests resolved. Support for existing databases confirmed.
|
|
@@ -276,7 +378,7 @@ Changes to improve computing balances (sum of satoshis) over various sets of wal
|
|
|
276
378
|
## wallet-toolbox 1.3.29
|
|
277
379
|
|
|
278
380
|
- add verifyUnlockScripts to both createAction and signAction flows
|
|
279
|
-
|
|
381
|
+
|
|
280
382
|
## wallet-toolbox 1.3.28
|
|
281
383
|
|
|
282
384
|
- adminStats now includes monitorStats and servicesStats of type ServicesCallHistory (wallet-toolbox/src/sdk/WalletServices.interfaces.ts)
|
|
@@ -307,7 +409,7 @@ New outputs created by `createAction` / `signAction` that are NOT assigned to a
|
|
|
307
409
|
Implications:
|
|
308
410
|
|
|
309
411
|
- Outputs transferred to a second party, either through internalizeAction or custom means, MUST NOT be assigned to a basket
|
|
310
|
-
as this allows them to be spent without your wallet being notified that they are no longer spendable. This is a usage guideline, it is not enforced.
|
|
412
|
+
as this allows them to be spent without your wallet being notified that they are no longer spendable. This is a usage guideline, it is not enforced.
|
|
311
413
|
- These outputs will NOT be returned by `listOutputs`, as it only returns spendable outputs.
|
|
312
414
|
- These outputs WILL be returned by `listActions` with the includeOutputs option set to true.
|
|
313
415
|
- Your wallet will mark any output you include as inputs in your own transactions as spent at the time of transaction creation.
|
package/README.md
CHANGED
|
@@ -1,43 +1,126 @@
|
|
|
1
|
-
# BSV
|
|
1
|
+
# BSV Wallet Toolbox
|
|
2
|
+
|
|
3
|
+
[](https://github.com/bsv-blockchain/wallet-toolbox/actions)
|
|
4
|
+
[](https://www.npmjs.com/package/@bsv/wallet-toolbox)
|
|
5
|
+
[](https://www.npmjs.com/package/@bsv/wallet-toolbox)
|
|
6
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
7
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
8
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
9
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
10
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
11
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
12
|
+
[](https://github.com/bsv-blockchain/wallet-toolbox/actions/workflows/github-code-scanning/codeql)
|
|
13
|
+
[](https://sonarcloud.io/summary/new_code?id=bsv-blockchain_wallet-toolbox)
|
|
14
|
+
[](./LICENSE.txt)
|
|
15
|
+
|
|
16
|
+
A [BRC-100](https://github.com/bitcoin-sv/BRCs/blob/master/wallet/0100.md) conforming wallet implementation for the BSV blockchain, built on the [BSV SDK](https://bsv-blockchain.github.io/ts-sdk). Provides persistent storage, protocol-based key derivation, transaction monitoring, chain tracking, and signing — everything needed to build wallet-powered applications on BSV.
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
The Wallet Toolbox is the reference implementation of the BRC-100 wallet interface. It connects the BSV SDK's cryptographic primitives to real storage backends, network services, and signing flows so that application developers don't have to wire these layers together themselves.
|
|
21
|
+
|
|
22
|
+
### What's Inside
|
|
23
|
+
|
|
24
|
+
| Module | Description |
|
|
25
|
+
|--------|-------------|
|
|
26
|
+
| **Wallet** | Full BRC-100 wallet — action creation, signing, certificate management, identity discovery, output tracking |
|
|
27
|
+
| **Storage** | Pluggable persistence with three backends: **SQLite/MySQL** (via Knex), **IndexedDB** (browser/mobile), and **remote** (client/server over HTTP) |
|
|
28
|
+
| **Services** | Network layer — ARC transaction broadcasting, chain tracking (Chaintracks), merkle proof verification, UTXO lookups via WhatsOnChain |
|
|
29
|
+
| **Monitor** | Background daemon that watches pending transactions, rebroadcasts failures, handles chain reorganizations, and manages proof acquisition |
|
|
30
|
+
| **Signer** | `WalletSigner` bridges any BRC-100 wallet to the SDK's `Transaction` signing interface |
|
|
31
|
+
| **Key Management** | `PrivilegedKeyManager` for secure key storage with Shamir secret sharing and obfuscation; protocol-based key derivation per BRC-42/43 |
|
|
32
|
+
| **Permissions** | `WalletPermissionsManager` for fine-grained per-app, per-protocol permission control with grouped approval flows |
|
|
33
|
+
| **MockChain** | In-memory blockchain for testing — mock mining, UTXO tracking, and merkle proof generation without a network |
|
|
34
|
+
| **Entropy** | `EntropyCollector` gathers mouse/touch entropy for high-quality randomness in browser environments |
|
|
35
|
+
|
|
36
|
+
### Packages
|
|
37
|
+
|
|
38
|
+
The toolbox publishes three npm packages from this repo:
|
|
39
|
+
|
|
40
|
+
- **[`@bsv/wallet-toolbox`](https://www.npmjs.com/package/@bsv/wallet-toolbox)** — Full package with all storage backends (SQLite, MySQL, IndexedDB, remote)
|
|
41
|
+
- **[`@bsv/wallet-toolbox-client`](https://www.npmjs.com/package/@bsv/wallet-toolbox-client)** — Browser build; excludes Node-only backends (Knex/SQLite/MySQL)
|
|
42
|
+
- **[`@bsv/wallet-toolbox-mobile`](https://www.npmjs.com/package/@bsv/wallet-toolbox-mobile)** — Mobile build; IndexedDB and remote storage only
|
|
43
|
+
|
|
44
|
+
## Getting Started
|
|
45
|
+
|
|
46
|
+
### Installation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Full (Node.js servers, CLIs)
|
|
50
|
+
npm install @bsv/wallet-toolbox
|
|
51
|
+
|
|
52
|
+
# Browser apps
|
|
53
|
+
npm install @bsv/wallet-toolbox-client
|
|
54
|
+
|
|
55
|
+
# React Native / mobile
|
|
56
|
+
npm install @bsv/wallet-toolbox-mobile
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Quick Example
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { SetupWallet } from '@bsv/wallet-toolbox'
|
|
63
|
+
|
|
64
|
+
// Create a wallet with SQLite storage and default mainnet services
|
|
65
|
+
const wallet = await SetupWallet({
|
|
66
|
+
env: 'main',
|
|
67
|
+
endpointUrl: 'https://your-storage-server.example.com'
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
// Create a transaction
|
|
71
|
+
const result = await wallet.createAction({
|
|
72
|
+
description: 'Send payment',
|
|
73
|
+
outputs: [{
|
|
74
|
+
lockingScript: '76a914...88ac',
|
|
75
|
+
satoshis: 1000,
|
|
76
|
+
outputDescription: 'payment'
|
|
77
|
+
}]
|
|
78
|
+
})
|
|
79
|
+
```
|
|
2
80
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Objective
|
|
6
|
-
|
|
7
|
-
The BSV Wallet Toolbox builds on the [SDK](https://bsv-blockchain.github.io/ts-sdk).
|
|
8
|
-
|
|
9
|
-
It aims to support building sophisticated applications and services on the BSV Blockchain technology stack.
|
|
81
|
+
## Documentation
|
|
10
82
|
|
|
11
|
-
|
|
83
|
+
[Full API documentation](https://bsv-blockchain.github.io/wallet-toolbox) is available on GitHub Pages.
|
|
12
84
|
|
|
13
|
-
|
|
85
|
+
The codebase has detailed JSDoc annotations throughout — these will surface inline in editors like VS Code.
|
|
14
86
|
|
|
15
|
-
|
|
87
|
+
## Development
|
|
16
88
|
|
|
17
|
-
|
|
89
|
+
```bash
|
|
90
|
+
git clone https://github.com/bsv-blockchain/wallet-toolbox.git
|
|
91
|
+
cd wallet-toolbox
|
|
92
|
+
npm install
|
|
93
|
+
npm run build
|
|
94
|
+
npm test
|
|
95
|
+
```
|
|
18
96
|
|
|
19
|
-
|
|
97
|
+
Tests use Jest. Files named `*.man.test.ts` are manual/integration tests excluded from CI — they require network access or long runtimes and are run locally by developers.
|
|
20
98
|
|
|
21
|
-
|
|
99
|
+
## Contributing
|
|
22
100
|
|
|
23
|
-
|
|
24
|
-
2. **Set Up**: Run `npm install` to install all dependencies.
|
|
25
|
-
3. **Make Changes**: Create a new branch and make your changes.
|
|
26
|
-
4. **Test**: Ensure all tests pass by running `npm test`.
|
|
27
|
-
5. **Commit**: Commit your changes and push to your fork.
|
|
28
|
-
6. **Pull Request**: Open a pull request from your fork to this repository.
|
|
29
|
-
For more details, check the [contribution guidelines](./CONTRIBUTING.md).
|
|
101
|
+
We welcome bug reports, feature requests, and pull requests.
|
|
30
102
|
|
|
31
|
-
|
|
103
|
+
1. Fork and clone the repository
|
|
104
|
+
2. `npm install`
|
|
105
|
+
3. Create a feature branch
|
|
106
|
+
4. Make your changes and ensure `npm test` passes
|
|
107
|
+
5. Open a pull request
|
|
32
108
|
|
|
33
|
-
|
|
109
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for full guidelines.
|
|
34
110
|
|
|
35
|
-
|
|
111
|
+
## Contributors
|
|
36
112
|
|
|
37
|
-
|
|
113
|
+
| | Name | GitHub | Role |
|
|
114
|
+
|---|------|--------|------|
|
|
115
|
+
| | Tone Engel | [@tonesnotes](https://github.com/tonesnotes) | Lead developer, maintainer |
|
|
116
|
+
| | Darren Kellenschwiler | [@sirdeggen](https://github.com/sirdeggen) | Core contributor |
|
|
117
|
+
| | Brayden Langley | [@BraydenLangley](https://github.com/BraydenLangley) | Core contributor |
|
|
118
|
+
| | Ty Everett | [@ty-everett](https://github.com/ty-everett) | Core contributor, reviewer |
|
|
119
|
+
| | Jackie Lu | [@jackielu3](https://github.com/jackielu3) | Contributor |
|
|
120
|
+
| | David Case | [@shruggr](https://github.com/shruggr) | Contributor |
|
|
121
|
+
| | Stephen Thomson | [@Stephen-Thomson](https://github.com/Stephen-Thomson) | Contributor |
|
|
122
|
+
| | Chance Barimbao | [@ChanceBarimbao](https://github.com/ChanceBarimbao) | Contributor |
|
|
38
123
|
|
|
39
124
|
## License
|
|
40
125
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Thank you for being a part of the BSV Blockchain Libraries Project. Let's build the future of BSV Blockchain together!
|
|
126
|
+
Released under the [Open BSV License](./LICENSE.txt).
|