@bsv/wallet-toolbox 1.1.13 → 1.1.14
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/docs/README.md +8 -2
- package/docs/client.md +453 -346
- package/docs/open-rpc/index.html +46 -0
- package/docs/services.md +236 -211
- package/docs/setup.md +20 -4
- package/docs/storage.md +30 -5
- package/docs/wallet.md +453 -346
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +9 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +19 -3
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/Wallet.d.ts +6 -0
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +57 -0
- package/out/src/Wallet.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +18 -13
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/services/Services.d.ts +4 -11
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +19 -37
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/__tests/ARC.test.d.ts +2 -0
- package/out/src/services/__tests/ARC.test.d.ts.map +1 -0
- package/out/src/services/__tests/ARC.test.js +98 -0
- package/out/src/services/__tests/ARC.test.js.map +1 -0
- package/out/src/services/__tests/arcServices.test.d.ts +2 -0
- package/out/src/services/__tests/arcServices.test.d.ts.map +1 -0
- package/out/src/services/__tests/arcServices.test.js +7 -0
- package/out/src/services/__tests/arcServices.test.js.map +1 -0
- package/out/src/services/__tests/postBeef.test.js +45 -7
- package/out/src/services/__tests/postBeef.test.js.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +16 -4
- package/out/src/services/createDefaultWalletServicesOptions.js.map +1 -1
- package/out/src/services/providers/ARC.d.ts +91 -0
- package/out/src/services/providers/ARC.d.ts.map +1 -0
- package/out/src/services/providers/ARC.js +192 -0
- package/out/src/services/providers/ARC.js.map +1 -0
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +21 -0
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -0
- package/out/src/services/providers/SdkWhatsOnChain.js +67 -0
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -0
- package/out/src/services/providers/WhatsOnChain.d.ts +35 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -0
- package/out/src/services/providers/WhatsOnChain.js +266 -0
- package/out/src/services/providers/WhatsOnChain.js.map +1 -0
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts +2 -0
- package/out/src/services/providers/__tests/WhatsOnChain.test.d.ts.map +1 -0
- package/out/src/services/providers/__tests/WhatsOnChain.test.js +176 -0
- package/out/src/services/providers/__tests/WhatsOnChain.test.js.map +1 -0
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +9 -2
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +12 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +24 -1
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +1 -1
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js +0 -1
- package/out/src/storage/schema/entities/__tests/ProvenTxTests.test.js.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/utilityHelpers.js +1 -1
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/test/Wallet/StorageClient/storageClient.man.test.js +22 -3
- package/out/test/Wallet/StorageClient/storageClient.man.test.js.map +1 -1
- package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js +40 -0
- package/out/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.js.map +1 -1
- package/out/test/services/Services.test.js +0 -31
- package/out/test/services/Services.test.js.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.d.ts +26 -18
- package/out/test/utils/TestUtilsWalletStorage.d.ts.map +1 -1
- package/out/test/utils/TestUtilsWalletStorage.js +135 -27
- package/out/test/utils/TestUtilsWalletStorage.js.map +1 -1
- package/out/test/wallet/list/listActions2.test.js +36 -2
- package/out/test/wallet/list/listActions2.test.js.map +1 -1
- package/out/tsconfig.all.tsbuildinfo +1 -1
- package/package.json +5 -7
- package/src/Setup.ts +0 -1
- package/src/SetupClient.ts +26 -6
- package/src/Wallet.ts +66 -2
- package/src/sdk/WalletServices.interfaces.ts +19 -14
- package/src/services/Services.ts +23 -62
- package/src/services/__tests/ARC.test.ts +110 -0
- package/src/services/__tests/arcServices.test.ts +8 -0
- package/src/services/__tests/postBeef.test.ts +47 -9
- package/src/services/createDefaultWalletServicesOptions.ts +19 -6
- package/src/services/providers/ARC.ts +289 -0
- package/src/services/providers/SdkWhatsOnChain.ts +96 -0
- package/src/services/providers/WhatsOnChain.ts +369 -0
- package/src/services/providers/__tests/WhatsOnChain.test.ts +227 -0
- package/src/storage/methods/createAction.ts +26 -4
- package/src/storage/methods/generateChange.ts +42 -2
- package/src/storage/methods/processAction.ts +2 -1
- package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +0 -1
- package/src/storage/sync/StorageMySQLDojoReader.ts +1 -1
- package/src/utility/utilityHelpers.ts +1 -1
- package/test/Wallet/StorageClient/storageClient.man.test.ts +30 -4
- package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +54 -0
- package/test/services/Services.test.ts +0 -30
- package/test/utils/TestUtilsWalletStorage.ts +175 -45
- package/test/wallet/list/listActions2.test.ts +4 -7
- package/out/src/services/__tests/postBeefToArcTaal.test.d.ts +0 -2
- package/out/src/services/__tests/postBeefToArcTaal.test.d.ts.map +0 -1
- package/out/src/services/__tests/postBeefToArcTaal.test.js +0 -479
- package/out/src/services/__tests/postBeefToArcTaal.test.js.map +0 -1
- package/out/src/services/__tests/postTxs.test.d.ts +0 -2
- package/out/src/services/__tests/postTxs.test.d.ts.map +0 -1
- package/out/src/services/__tests/postTxs.test.js +0 -28
- package/out/src/services/__tests/postTxs.test.js.map +0 -1
- package/out/src/services/providers/arcServices.d.ts +0 -62
- package/out/src/services/providers/arcServices.d.ts.map +0 -1
- package/out/src/services/providers/arcServices.js +0 -375
- package/out/src/services/providers/arcServices.js.map +0 -1
- package/out/src/services/providers/whatsonchain.d.ts +0 -17
- package/out/src/services/providers/whatsonchain.d.ts.map +0 -1
- package/out/src/services/providers/whatsonchain.js +0 -130
- package/out/src/services/providers/whatsonchain.js.map +0 -1
- package/out/test/examples/README.man.test.d.ts +0 -2
- package/out/test/examples/README.man.test.d.ts.map +0 -1
- package/out/test/examples/README.man.test.js +0 -47
- package/out/test/examples/README.man.test.js.map +0 -1
- package/src/services/__tests/postBeefToArcTaal.test.ts +0 -487
- package/src/services/__tests/postTxs.test.ts +0 -28
- package/src/services/providers/arcServices.ts +0 -578
- package/src/services/providers/whatsonchain.ts +0 -170
- package/test/examples/README.man.test.ts +0 -53
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ChainTracker, HttpClient, WhatsOnChainConfig } from '@bsv/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a chain tracker based on What's On Chain .
|
|
4
|
+
*/
|
|
5
|
+
export default class SdkWhatsOnChain implements ChainTracker {
|
|
6
|
+
readonly network: string;
|
|
7
|
+
readonly apiKey: string;
|
|
8
|
+
protected readonly URL: string;
|
|
9
|
+
protected readonly httpClient: HttpClient;
|
|
10
|
+
/**
|
|
11
|
+
* Constructs an instance of the WhatsOnChain ChainTracker.
|
|
12
|
+
*
|
|
13
|
+
* @param {'main' | 'test' | 'stn'} network - The BSV network to use when calling the WhatsOnChain API.
|
|
14
|
+
* @param {WhatsOnChainConfig} config - Configuration options for the WhatsOnChain ChainTracker.
|
|
15
|
+
*/
|
|
16
|
+
constructor(network?: 'main' | 'test' | 'stn', config?: WhatsOnChainConfig);
|
|
17
|
+
isValidRootForHeight(root: string, height: number): Promise<boolean>;
|
|
18
|
+
currentHeight(): Promise<number>;
|
|
19
|
+
protected getHttpHeaders(): Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=SdkWhatsOnChain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdkWhatsOnChain.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/SdkWhatsOnChain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,UAAU,EACV,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAMjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,YAAY;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAEzC;;;;;OAKG;gBAED,OAAO,GAAE,MAAM,GAAG,MAAM,GAAG,KAAc,EACzC,MAAM,GAAE,kBAAuB;IAS3B,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBpE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAyBtC,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAWnD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sdk_1 = require("@bsv/sdk");
|
|
4
|
+
/**
|
|
5
|
+
* Represents a chain tracker based on What's On Chain .
|
|
6
|
+
*/
|
|
7
|
+
class SdkWhatsOnChain {
|
|
8
|
+
/**
|
|
9
|
+
* Constructs an instance of the WhatsOnChain ChainTracker.
|
|
10
|
+
*
|
|
11
|
+
* @param {'main' | 'test' | 'stn'} network - The BSV network to use when calling the WhatsOnChain API.
|
|
12
|
+
* @param {WhatsOnChainConfig} config - Configuration options for the WhatsOnChain ChainTracker.
|
|
13
|
+
*/
|
|
14
|
+
constructor(network = 'main', config = {}) {
|
|
15
|
+
const { apiKey, httpClient } = config;
|
|
16
|
+
this.network = network;
|
|
17
|
+
this.URL = `https://api.whatsonchain.com/v1/bsv/${network}`;
|
|
18
|
+
this.httpClient = httpClient !== null && httpClient !== void 0 ? httpClient : (0, sdk_1.defaultHttpClient)();
|
|
19
|
+
this.apiKey = apiKey !== null && apiKey !== void 0 ? apiKey : '';
|
|
20
|
+
}
|
|
21
|
+
async isValidRootForHeight(root, height) {
|
|
22
|
+
const requestOptions = {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
headers: this.getHttpHeaders()
|
|
25
|
+
};
|
|
26
|
+
const response = await this.httpClient.request(`${this.URL}/block/${height}/header`, requestOptions);
|
|
27
|
+
if (response.ok) {
|
|
28
|
+
const { merkleroot } = response.data;
|
|
29
|
+
return merkleroot === root;
|
|
30
|
+
}
|
|
31
|
+
else if (response.status === 404) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new Error(`Failed to verify merkleroot for height ${height} because of an error: ${JSON.stringify(response.data)} `);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async currentHeight() {
|
|
39
|
+
try {
|
|
40
|
+
const requestOptions = {
|
|
41
|
+
method: 'GET',
|
|
42
|
+
headers: this.getHttpHeaders()
|
|
43
|
+
};
|
|
44
|
+
const response = await this.httpClient.request(`${this.URL}/block/headers`, requestOptions);
|
|
45
|
+
if (response.ok) {
|
|
46
|
+
return response.data[0].height;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw new Error(`Failed to get current height because of an error: ${JSON.stringify(response.data)} `);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw new Error(`Failed to get current height because of an error: ${error instanceof Error ? error.message : String(error)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
getHttpHeaders() {
|
|
57
|
+
const headers = {
|
|
58
|
+
Accept: 'application/json'
|
|
59
|
+
};
|
|
60
|
+
if (typeof this.apiKey === 'string' && this.apiKey.trim() !== '') {
|
|
61
|
+
headers.Authorization = this.apiKey;
|
|
62
|
+
}
|
|
63
|
+
return headers;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.default = SdkWhatsOnChain;
|
|
67
|
+
//# sourceMappingURL=SdkWhatsOnChain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdkWhatsOnChain.js","sourceRoot":"","sources":["../../../../src/services/providers/SdkWhatsOnChain.ts"],"names":[],"mappings":";;AAAA,kCAKiB;AAMjB;;GAEG;AACH,MAAqB,eAAe;IAMlC;;;;;OAKG;IACH,YACE,UAAmC,MAAM,EACzC,SAA6B,EAAE;QAE/B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,uCAAuC,OAAO,EAAE,CAAA;QAC3D,IAAI,CAAC,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAA,uBAAiB,GAAE,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY,EAAE,MAAc;QACrD,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;SAC/B,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAC5C,GAAG,IAAI,CAAC,GAAG,UAAU,MAAM,SAAS,EACpC,cAAc,CACf,CAAA;QACD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAA;YACpC,OAAO,UAAU,KAAK,IAAI,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACnC,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,0CAA0C,MAAM,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAC1G,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG;gBACrB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;aAC/B,CAAA;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAC5C,GAAG,IAAI,CAAC,GAAG,gBAAgB,EAC3B,cAAc,CACf,CAAA;YACD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CACtF,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,qDAAqD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9G,CAAA;QACH,CAAC;IACH,CAAC;IAES,cAAc;QACtB,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAA;QAED,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;QACrC,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAjFD,kCAiFC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { HexString, WhatsOnChainConfig } from '@bsv/sdk';
|
|
2
|
+
import { sdk } from '../../index.client';
|
|
3
|
+
import SdkWhatsOnChain from './SdkWhatsOnChain';
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
export declare class WhatsOnChain extends SdkWhatsOnChain {
|
|
8
|
+
constructor(chain?: sdk.Chain, config?: WhatsOnChainConfig);
|
|
9
|
+
/**
|
|
10
|
+
* 2025-02-16 throwing internal server error 500.
|
|
11
|
+
* @param txid
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
getTxPropagation(txid: string): Promise<number>;
|
|
15
|
+
/**
|
|
16
|
+
* May return undefined for unmined transactions that are in the mempool.
|
|
17
|
+
* @param txid
|
|
18
|
+
* @returns raw transaction as hex string or undefined if txid not found in mined block.
|
|
19
|
+
*/
|
|
20
|
+
getRawTx(txid: string): Promise<string | undefined>;
|
|
21
|
+
getRawTxResult(txid: string): Promise<sdk.GetRawTxResult>;
|
|
22
|
+
/**
|
|
23
|
+
* @param rawTx raw transaction to broadcast as hex string
|
|
24
|
+
* @returns txid returned by transaction processor of transaction broadcast
|
|
25
|
+
*/
|
|
26
|
+
postRawTx(rawTx: HexString): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* @param txid
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
getMerklePath(txid: string, services: sdk.WalletServices): Promise<sdk.GetMerklePathResult>;
|
|
32
|
+
updateBsvExchangeRate(rate?: sdk.BsvExchangeRate, updateMsecs?: number): Promise<sdk.BsvExchangeRate>;
|
|
33
|
+
getUtxoStatus(output: string, outputFormat?: sdk.GetUtxoStatusOutputFormat): Promise<sdk.GetUtxoStatusResult>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=WhatsOnChain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsOnChain.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/WhatsOnChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAGL,GAAG,EAGJ,MAAM,oBAAoB,CAAA;AAE3B,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAE/C;;GAEG;AACH,qBAAa,YAAa,SAAQ,eAAe;gBACnC,KAAK,GAAE,GAAG,CAAC,KAAc,EAAE,MAAM,GAAE,kBAAuB;IAItE;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBrD;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAsCnD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAa/D;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDlD;;;OAGG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,GAAG,CAAC,cAAc,GAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAiE7B,qBAAqB,CACzB,IAAI,CAAC,EAAE,GAAG,CAAC,eAAe,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IA+CzB,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,GAAG,CAAC,yBAAyB,GAC3C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;CAwEpC"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WhatsOnChain = void 0;
|
|
7
|
+
const index_client_1 = require("../../index.client");
|
|
8
|
+
const tscProofToMerklePath_1 = require("../../utility/tscProofToMerklePath");
|
|
9
|
+
const SdkWhatsOnChain_1 = __importDefault(require("./SdkWhatsOnChain"));
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
class WhatsOnChain extends SdkWhatsOnChain_1.default {
|
|
14
|
+
constructor(chain = 'main', config = {}) {
|
|
15
|
+
super(chain, config);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 2025-02-16 throwing internal server error 500.
|
|
19
|
+
* @param txid
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
async getTxPropagation(txid) {
|
|
23
|
+
const requestOptions = {
|
|
24
|
+
method: 'GET',
|
|
25
|
+
headers: this.getHttpHeaders()
|
|
26
|
+
};
|
|
27
|
+
const response = await this.httpClient.request(`${this.URL}/tx/hash/${txid}/propagation`, requestOptions);
|
|
28
|
+
if (!response.data ||
|
|
29
|
+
!response.ok ||
|
|
30
|
+
response.status !== 200 ||
|
|
31
|
+
response.statusText !== 'OK')
|
|
32
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('txid', `valid transaction. '${txid}' response ${response.statusText}`);
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* May return undefined for unmined transactions that are in the mempool.
|
|
37
|
+
* @param txid
|
|
38
|
+
* @returns raw transaction as hex string or undefined if txid not found in mined block.
|
|
39
|
+
*/
|
|
40
|
+
async getRawTx(txid) {
|
|
41
|
+
const headers = this.getHttpHeaders();
|
|
42
|
+
headers['Cache-Control'] = 'no-cache';
|
|
43
|
+
const requestOptions = {
|
|
44
|
+
method: 'GET',
|
|
45
|
+
headers
|
|
46
|
+
};
|
|
47
|
+
for (let retry = 0; retry < 2; retry++) {
|
|
48
|
+
const response = await this.httpClient.request(`${this.URL}/tx/${txid}/hex`, requestOptions);
|
|
49
|
+
if (response.statusText === 'Too Many Requests' && retry < 2) {
|
|
50
|
+
await (0, index_client_1.wait)(2000);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (response.status === 404 && response.statusText === 'Not Found')
|
|
54
|
+
return undefined;
|
|
55
|
+
if (!response.data ||
|
|
56
|
+
!response.ok ||
|
|
57
|
+
response.status !== 200 ||
|
|
58
|
+
response.statusText !== 'OK')
|
|
59
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('txid', `valid transaction. '${txid}' response ${response.statusText}`);
|
|
60
|
+
return response.data;
|
|
61
|
+
}
|
|
62
|
+
throw new index_client_1.sdk.WERR_INTERNAL();
|
|
63
|
+
}
|
|
64
|
+
async getRawTxResult(txid) {
|
|
65
|
+
const r = { name: 'WoC', txid: (0, index_client_1.asString)(txid) };
|
|
66
|
+
try {
|
|
67
|
+
const rawTxHex = await this.getRawTx(txid);
|
|
68
|
+
if (rawTxHex)
|
|
69
|
+
r.rawTx = (0, index_client_1.asArray)(rawTxHex);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
r.error = index_client_1.sdk.WalletError.fromUnknown(err);
|
|
73
|
+
}
|
|
74
|
+
return r;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* @param rawTx raw transaction to broadcast as hex string
|
|
78
|
+
* @returns txid returned by transaction processor of transaction broadcast
|
|
79
|
+
*/
|
|
80
|
+
async postRawTx(rawTx) {
|
|
81
|
+
const headers = this.getHttpHeaders();
|
|
82
|
+
headers['Content-Type'] = 'application/json';
|
|
83
|
+
headers['Accept'] = 'text/plain';
|
|
84
|
+
const requestOptions = {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
headers,
|
|
87
|
+
data: { txhex: rawTx }
|
|
88
|
+
};
|
|
89
|
+
for (let retry = 0; retry < 2; retry++) {
|
|
90
|
+
try {
|
|
91
|
+
const response = await this.httpClient.request(`${this.URL}/tx/raw`, requestOptions);
|
|
92
|
+
if (response.statusText === 'Too Many Requests' && retry < 2) {
|
|
93
|
+
await (0, index_client_1.wait)(2000);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (response.ok) {
|
|
97
|
+
const txid = response.data;
|
|
98
|
+
return txid;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
if (typeof response.data === 'string')
|
|
102
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('rawTx', `valid. ${response.data}`);
|
|
103
|
+
else
|
|
104
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('rawTx', `valid. ${response.status} ${response.statusText}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (eu) {
|
|
108
|
+
if (eu instanceof index_client_1.sdk.WERR_INVALID_PARAMETER)
|
|
109
|
+
throw eu;
|
|
110
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
111
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('rawTx', `valid rawTx. error ${e.code} ${e.message} ${rawTx}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
throw new index_client_1.sdk.WERR_INTERNAL();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @param txid
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
async getMerklePath(txid, services) {
|
|
121
|
+
const r = { name: 'WoCTsc' };
|
|
122
|
+
const headers = this.getHttpHeaders();
|
|
123
|
+
const requestOptions = {
|
|
124
|
+
method: 'GET',
|
|
125
|
+
headers
|
|
126
|
+
};
|
|
127
|
+
for (let retry = 0; retry < 2; retry++) {
|
|
128
|
+
try {
|
|
129
|
+
const response = await this.httpClient.request(`${this.URL}/tx/${txid}/proof/tsc`, requestOptions);
|
|
130
|
+
if (response.statusText === 'Too Many Requests' && retry < 2) {
|
|
131
|
+
await (0, index_client_1.wait)(2000);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (response.status === 404 && response.statusText === 'Not Found')
|
|
135
|
+
return r;
|
|
136
|
+
if (!response.ok ||
|
|
137
|
+
response.status !== 200 ||
|
|
138
|
+
response.statusText !== 'OK')
|
|
139
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('txid', `valid transaction. '${txid}' response ${response.statusText}`);
|
|
140
|
+
if (!response.data) {
|
|
141
|
+
// Unmined, proof not yet available.
|
|
142
|
+
return r;
|
|
143
|
+
}
|
|
144
|
+
if (!Array.isArray(response.data))
|
|
145
|
+
response.data = [response.data];
|
|
146
|
+
if (response.data.length != 1)
|
|
147
|
+
return r;
|
|
148
|
+
const p = response.data[0];
|
|
149
|
+
const header = await services.hashToHeader(p.target);
|
|
150
|
+
if (header) {
|
|
151
|
+
const proof = {
|
|
152
|
+
index: p.index,
|
|
153
|
+
nodes: p.nodes,
|
|
154
|
+
height: header.height
|
|
155
|
+
};
|
|
156
|
+
r.merklePath = (0, tscProofToMerklePath_1.convertProofToMerklePath)(txid, proof);
|
|
157
|
+
r.header = header;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('blockhash', 'a valid on-chain block hash');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
r.error = index_client_1.sdk.WalletError.fromUnknown(err);
|
|
165
|
+
}
|
|
166
|
+
return r;
|
|
167
|
+
}
|
|
168
|
+
throw new index_client_1.sdk.WERR_INTERNAL();
|
|
169
|
+
}
|
|
170
|
+
async updateBsvExchangeRate(rate, updateMsecs) {
|
|
171
|
+
if (rate) {
|
|
172
|
+
// Check if the rate we know is stale enough to update.
|
|
173
|
+
updateMsecs || (updateMsecs = 1000 * 60 * 15);
|
|
174
|
+
if (new Date(Date.now() - updateMsecs) < rate.timestamp)
|
|
175
|
+
return rate;
|
|
176
|
+
}
|
|
177
|
+
const requestOptions = {
|
|
178
|
+
method: 'GET',
|
|
179
|
+
headers: this.getHttpHeaders()
|
|
180
|
+
};
|
|
181
|
+
for (let retry = 0; retry < 2; retry++) {
|
|
182
|
+
const response = await this.httpClient.request(`${this.URL}/exchangerate`, requestOptions);
|
|
183
|
+
if (response.statusText === 'Too Many Requests' && retry < 2) {
|
|
184
|
+
await (0, index_client_1.wait)(2000);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (!response.data ||
|
|
188
|
+
!response.ok ||
|
|
189
|
+
response.status !== 200 ||
|
|
190
|
+
response.statusText !== 'OK')
|
|
191
|
+
throw new index_client_1.sdk.WERR_INVALID_OPERATION(`WoC exchangerate response ${response.statusText}`);
|
|
192
|
+
const wocrate = response.data;
|
|
193
|
+
if (wocrate.currency !== 'USD')
|
|
194
|
+
wocrate.rate = NaN;
|
|
195
|
+
const newRate = {
|
|
196
|
+
timestamp: new Date(),
|
|
197
|
+
base: 'USD',
|
|
198
|
+
rate: wocrate.rate
|
|
199
|
+
};
|
|
200
|
+
return newRate;
|
|
201
|
+
}
|
|
202
|
+
throw new index_client_1.sdk.WERR_INTERNAL();
|
|
203
|
+
}
|
|
204
|
+
async getUtxoStatus(output, outputFormat) {
|
|
205
|
+
const r = {
|
|
206
|
+
name: 'WoC',
|
|
207
|
+
status: 'error',
|
|
208
|
+
error: new index_client_1.sdk.WERR_INTERNAL(),
|
|
209
|
+
details: []
|
|
210
|
+
};
|
|
211
|
+
for (let retry = 0;; retry++) {
|
|
212
|
+
let url = '';
|
|
213
|
+
try {
|
|
214
|
+
const scriptHash = (0, index_client_1.validateScriptHash)(output, outputFormat);
|
|
215
|
+
const requestOptions = {
|
|
216
|
+
method: 'GET',
|
|
217
|
+
headers: this.getHttpHeaders()
|
|
218
|
+
};
|
|
219
|
+
const response = await this.httpClient.request(`${this.URL}/script/${scriptHash}/unspent`, requestOptions);
|
|
220
|
+
if (response.statusText === 'Too Many Requests' && retry < 2) {
|
|
221
|
+
await (0, index_client_1.wait)(2000);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if (!response.data ||
|
|
225
|
+
!response.ok ||
|
|
226
|
+
response.status !== 200 ||
|
|
227
|
+
response.statusText !== 'OK')
|
|
228
|
+
throw new index_client_1.sdk.WERR_INVALID_OPERATION(`WoC exchangerate response ${response.statusText}`);
|
|
229
|
+
if (Array.isArray(response.data)) {
|
|
230
|
+
const data = response.data;
|
|
231
|
+
if (data.length === 0) {
|
|
232
|
+
r.status = 'success';
|
|
233
|
+
r.error = undefined;
|
|
234
|
+
r.isUtxo = false;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
r.status = 'success';
|
|
238
|
+
r.error = undefined;
|
|
239
|
+
r.isUtxo = true;
|
|
240
|
+
for (const s of data) {
|
|
241
|
+
r.details.push({
|
|
242
|
+
txid: s.tx_hash,
|
|
243
|
+
satoshis: s.value,
|
|
244
|
+
height: s.height,
|
|
245
|
+
index: s.tx_pos
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
throw new index_client_1.sdk.WERR_INTERNAL('data is not an array');
|
|
252
|
+
}
|
|
253
|
+
return r;
|
|
254
|
+
}
|
|
255
|
+
catch (eu) {
|
|
256
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
257
|
+
if (e.code !== 'ECONNRESET' || retry > 2) {
|
|
258
|
+
r.error = new index_client_1.sdk.WERR_INTERNAL(`service failure: ${url}, error: ${JSON.stringify(index_client_1.sdk.WalletError.fromUnknown(eu))}`);
|
|
259
|
+
return r;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
exports.WhatsOnChain = WhatsOnChain;
|
|
266
|
+
//# sourceMappingURL=WhatsOnChain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsOnChain.js","sourceRoot":"","sources":["../../../../src/services/providers/WhatsOnChain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsOnChain.test.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/__tests/WhatsOnChain.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const TestUtilsWalletStorage_1 = require("../../../../test/utils/TestUtilsWalletStorage");
|
|
4
|
+
const WhatsOnChain_1 = require("../WhatsOnChain");
|
|
5
|
+
const Services_1 = require("../../Services");
|
|
6
|
+
const index_client_1 = require("../../../index.client");
|
|
7
|
+
const index_all_1 = require("../../../index.all");
|
|
8
|
+
describe('whatsonchain tests', () => {
|
|
9
|
+
jest.setTimeout(99999999);
|
|
10
|
+
const envTest = TestUtilsWalletStorage_1._tu.getEnv('test');
|
|
11
|
+
const wocTest = new WhatsOnChain_1.WhatsOnChain(envTest.chain, {
|
|
12
|
+
apiKey: envTest.taalApiKey
|
|
13
|
+
});
|
|
14
|
+
const envMain = TestUtilsWalletStorage_1._tu.getEnv('main');
|
|
15
|
+
const wocMain = new WhatsOnChain_1.WhatsOnChain(envMain.chain, {
|
|
16
|
+
apiKey: envMain.taalApiKey
|
|
17
|
+
});
|
|
18
|
+
test('0 getRawTx testnet', async () => {
|
|
19
|
+
const rawTx = await wocTest.getRawTx('7e5b797b86abd31a654bf296900d6cb14d04ef0811568ff4675494af2d92166b');
|
|
20
|
+
expect(rawTx ===
|
|
21
|
+
'010000000158EED5DBBB7E2F7D70C79A11B9B61AABEECFA5A7CEC679BEDD00F42C48A4BD45010000006B483045022100AE8BB45498A40E2AC797775C405C108168804CD84E8C09A9D42D280D18EDDB6D022024863BFAAC5FF3C24CA65E2F3677EDA092BC3CC5D2EFABA73264B8FF55CF416B412102094AAF520E14E1C4D68496822800BCC7D3B3B26CA368E004A2CB70B398D82FACFFFFFFFF0203000000000000007421020A624B72B34BC192851C5D8890926BBB70B31BC10FDD4E3BC6534E41B1C81B93AC03010203030405064630440220013B4984F4054C2FBCD2F448AB896CCA5C4E234BF765B0C7FB27EDE572A7F7DA02201A5C8D0D023F94C209046B9A2B96B2882C5E43B72D8115561DF8C07442010EEA6D7592090000000000001976A9146511FCE2F7EF785A2102142FBF381AD1291C918688AC00000000');
|
|
22
|
+
expect(await wocTest.getRawTx('1'.repeat(64))).toBeUndefined();
|
|
23
|
+
});
|
|
24
|
+
test('1 getRawTx mainnet', async () => {
|
|
25
|
+
const rawTx = await wocMain.getRawTx('d9978ffc6676523208f7b33bebf1b176388bbeace2c7ef67ce35c2eababa1805');
|
|
26
|
+
expect(rawTx ===
|
|
27
|
+
'0100000001026A66A5F724EB490A55E0E08553286F08AD57E92C4BF34B5C44EA6BC0A49828020000006B483045022100C3D9A5ACA30C1F2E1A54532162E7AFE5AA69150E4C06D760414A16D1EA1BABD602205E0D9191838B0911A1E7328554A2B22EFAA80CF52B15FBA37C3046A0996C7AAD412103FA3CF488CA98D9F2DB91843F36BAF6BE39F6C947976C02394602D09FBC5F4CF4FFFFFFFF0210270000000000001976A91444C04354E88975C4BEF30CFE89D300CC7659F7E588AC96BC0000000000001976A9149A53E5CF5F1876924D98A8B35CA0BC693618682488AC00000000');
|
|
28
|
+
expect(await wocMain.getRawTx('1'.repeat(64))).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
test('2 getMerklePath testnet', async () => {
|
|
31
|
+
const services = new Services_1.Services(envTest.chain);
|
|
32
|
+
{
|
|
33
|
+
const r = await wocTest.getMerklePath('7e5b797b86abd31a654bf296900d6cb14d04ef0811568ff4675494af2d92166b', services);
|
|
34
|
+
const s = JSON.stringify(r);
|
|
35
|
+
expect(s).toBe('{"name":"WoCTsc","merklePath":{"blockHeight":1661398,"path":[[{"offset":6,"hash":"7e5b797b86abd31a654bf296900d6cb14d04ef0811568ff4675494af2d92166b","txid":true},{"offset":7,"hash":"97dd9d9080394d52338588732d9f84e1debca93f171f674ac3beac1e75495568"}],[{"offset":2,"hash":"81beedcd219d9e03255bde2ee479db34b9fed04d30373ba8bc264a64af2515b9"}],[{"offset":0,"hash":"9965f9aaeea33f6878335e6f7e6bdb544c3a8550c84e2f0daca54e9cd912111c"}]]},"header":{"version":536870912,"previousHash":"000000000688340a14b77e49bb0fca5ac7b624f7f79a5517583d1aae61c4e658","merkleRoot":"edbc07082ca0a31d5ec89d1f503a9cd41112c0d8f3221a96acfb8a9d16f8e82b","time":1739624725,"bits":486604799,"nonce":1437884974,"height":1661398,"hash":"00000000d8a73bf9a37272a71886ea92a25376bed1c1916f2b5cfbec4d6f6a25"}}');
|
|
36
|
+
}
|
|
37
|
+
{
|
|
38
|
+
const r = await wocTest.getMerklePath('1'.repeat(64), services);
|
|
39
|
+
const s = JSON.stringify(r);
|
|
40
|
+
expect(s).toBe('{"name":"WoCTsc"}');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
test('3 getMerklePath mainnet', async () => {
|
|
44
|
+
const services = new Services_1.Services(envMain.chain);
|
|
45
|
+
{
|
|
46
|
+
const r = await wocMain.getMerklePath('d9978ffc6676523208f7b33bebf1b176388bbeace2c7ef67ce35c2eababa1805', services);
|
|
47
|
+
const s = JSON.stringify(r);
|
|
48
|
+
expect(s).toBe('{"name":"WoCTsc","merklePath":{"blockHeight":883637,"path":[[{"offset":46,"hash":"d9978ffc6676523208f7b33bebf1b176388bbeace2c7ef67ce35c2eababa1805","txid":true},{"offset":47,"hash":"066f6fa6fa988f2e3a9d6fe35fa0d3666c652dac35cabaeebff3738a4e67f68f"}],[{"offset":22,"hash":"232089a6f77c566151bc4701fda394b5cc5bf17073140d46a73c4c3ed0a7b911"}],[{"offset":10,"hash":"c639b3a6ce127f67dbd01c7331a6fca62a4b429830387bd68ac6ac05e162116d"}],[{"offset":4,"hash":"730cec44be97881530947d782bb328d25f1122fdae206296937fffb03e936d48"}],[{"offset":3,"hash":"28b681f8ab8db0fa4d5d20cb1532b95184a155346b0b8447bde580b2406d51e6"}],[{"offset":0,"hash":"c49a18028e230dd1439b26794c08c339506f24a450f067c4facd4e0d5a346490"}],[{"offset":1,"hash":"0ba57d1b1fad6874de3640c01088e3dedad3507e5b3a3102b9a8a8055f3df88b"}],[{"offset":1,"hash":"c830edebe5565c19ba584ec73d49129344d17539f322509b7c314ae641c2fcdb"}],[{"offset":1,"hash":"ff62d5ed2a94eb93a2b7d084b8f15b12083573896b6a58cf871507e3352c75f5"}]]},"header":{"version":1040187392,"previousHash":"00000000000000000d9f6889dd6743500adee204ea25d8a57225ecd48b111769","merkleRoot":"59c1efd79fae0d9c29dd8da63f8eeec0aadde048f4491c6bfa324fcfd537156d","time":1739329877,"bits":403818359,"nonce":596827153,"height":883637,"hash":"0000000000000000060ac8d63b78d41f58c9aba0b09f81db7d51fa4905a47263"}}');
|
|
49
|
+
}
|
|
50
|
+
{
|
|
51
|
+
const r = await wocMain.getMerklePath('1'.repeat(64), services);
|
|
52
|
+
const s = JSON.stringify(r);
|
|
53
|
+
expect(s).toBe('{"name":"WoCTsc"}');
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
test('4 updateBsvExchangeRate', async () => {
|
|
57
|
+
{
|
|
58
|
+
const r = await wocMain.updateBsvExchangeRate();
|
|
59
|
+
expect(r.base).toBe('USD');
|
|
60
|
+
expect(r.rate).toBeGreaterThan(0);
|
|
61
|
+
expect(r.timestamp).toBeTruthy();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
test('5 getTxPropagation testnet', async () => {
|
|
65
|
+
return;
|
|
66
|
+
// throwing internal server error 500 when tested.
|
|
67
|
+
const count = await wocTest.getTxPropagation('7e5b797b86abd31a654bf296900d6cb14d04ef0811568ff4675494af2d92166b');
|
|
68
|
+
expect(count > 0);
|
|
69
|
+
expect((await wocTest.getTxPropagation('1'.repeat(64))) === 0);
|
|
70
|
+
});
|
|
71
|
+
test('6 getTxPropagation mainnet', async () => { });
|
|
72
|
+
test.skip('7 postRawTx testnet', async () => {
|
|
73
|
+
if (index_all_1.Setup.noEnv('test'))
|
|
74
|
+
return;
|
|
75
|
+
const woc = wocTest;
|
|
76
|
+
const c = await TestUtilsWalletStorage_1._tu.createNoSendTxPair('test');
|
|
77
|
+
const rawTxDo = c.beef.findTxid(c.txidDo).tx.toHex();
|
|
78
|
+
const rawTxUndo = c.beef.findTxid(c.txidUndo).tx.toHex();
|
|
79
|
+
const txidDo = await woc.postRawTx(rawTxDo);
|
|
80
|
+
expect(txidDo).toBe(c.txidDo);
|
|
81
|
+
await (0, index_client_1.wait)(1000);
|
|
82
|
+
const txidUndo = await woc.postRawTx(rawTxUndo);
|
|
83
|
+
expect(txidUndo).toBe(c.txidUndo);
|
|
84
|
+
});
|
|
85
|
+
test.skip('7a nosend cleanup testnet', async () => {
|
|
86
|
+
const c = await TestUtilsWalletStorage_1._tu.createWalletSetupEnv('test');
|
|
87
|
+
const actions = await c.wallet.listActions({ labels: [], limit: 1000 });
|
|
88
|
+
const nosends = actions.actions.filter(a => a.status === 'nosend');
|
|
89
|
+
const refs = ['yUfgNVaFcBNyP2Xv'];
|
|
90
|
+
for (const ref of refs) {
|
|
91
|
+
try {
|
|
92
|
+
await c.wallet.abortAction({ reference: ref });
|
|
93
|
+
}
|
|
94
|
+
catch (eu) {
|
|
95
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
test.skip('8 postRawTx mainnet', async () => {
|
|
100
|
+
if (index_all_1.Setup.noEnv('main'))
|
|
101
|
+
return;
|
|
102
|
+
const woc = wocMain;
|
|
103
|
+
const c = await TestUtilsWalletStorage_1._tu.createNoSendTxPair('main');
|
|
104
|
+
const rawTxDo = c.beef.findTxid(c.txidDo).tx.toHex();
|
|
105
|
+
const rawTxUndo = c.beef.findTxid(c.txidUndo).tx.toHex();
|
|
106
|
+
const txidDo = await woc.postRawTx(rawTxDo);
|
|
107
|
+
expect(txidDo).toBe(c.txidDo);
|
|
108
|
+
/*
|
|
109
|
+
try {
|
|
110
|
+
// This method is broken as of 2025-02-16
|
|
111
|
+
const count = await woc.getTxPropagation(txidDo)
|
|
112
|
+
} catch {}
|
|
113
|
+
// getRawTx returns undefined for unmined transactions, sometimes.
|
|
114
|
+
let rawTx = await woc.getRawTx(txidDo)
|
|
115
|
+
let i = 0
|
|
116
|
+
while (!rawTx) {
|
|
117
|
+
console.log(`${i++} waiting for WhatsOnChain to acknowledge new transaction exists.`)
|
|
118
|
+
await wait(5000)
|
|
119
|
+
rawTx = await woc.getRawTx(txidDo)
|
|
120
|
+
}
|
|
121
|
+
expect(rawTx).toBe(rawTxDo)
|
|
122
|
+
*/
|
|
123
|
+
// allow for propagation...
|
|
124
|
+
await (0, index_client_1.wait)(1000);
|
|
125
|
+
const txidUndo = await woc.postRawTx(rawTxUndo);
|
|
126
|
+
expect(txidUndo).toBe(c.txidUndo);
|
|
127
|
+
await (0, index_client_1.wait)(1000);
|
|
128
|
+
// Confirm double spend detection.
|
|
129
|
+
// 'The rawTx parameter must be valid. unexpected response code 500: 258: txn-mempool-conflict'
|
|
130
|
+
// 'The rawTx parameter must be valid. unexpected response code 500: Missing inputs'
|
|
131
|
+
try {
|
|
132
|
+
await woc.postRawTx(c.doubleSpendTx.toHex());
|
|
133
|
+
expect(false);
|
|
134
|
+
}
|
|
135
|
+
catch (eu) {
|
|
136
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
137
|
+
expect(e.message ===
|
|
138
|
+
'The rawTx parameter must be valid. unexpected response code 500: 258: txn-mempool-conflict' ||
|
|
139
|
+
'The rawTx parameter must be valid. unexpected response code 500: Missing inputs');
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
test.skip('8a nosend cleanup mainnet', async () => {
|
|
143
|
+
const c = await TestUtilsWalletStorage_1._tu.createWalletSetupEnv('main');
|
|
144
|
+
const actions = await c.wallet.listActions({ labels: [], limit: 1000 });
|
|
145
|
+
const nosends = actions.actions.filter(a => a.status === 'nosend');
|
|
146
|
+
// No way to get from actions to reference string values for use with abortAction...
|
|
147
|
+
if (c['activeStorage']) {
|
|
148
|
+
const s = c['activeStorage'];
|
|
149
|
+
const userId = c['userId'];
|
|
150
|
+
const txs = await s.findTransactions({
|
|
151
|
+
partial: { userId, status: 'nosend' }
|
|
152
|
+
});
|
|
153
|
+
const refs = txs.map(tx => tx.reference);
|
|
154
|
+
for (const ref of refs) {
|
|
155
|
+
try {
|
|
156
|
+
await c.wallet.abortAction({ reference: ref });
|
|
157
|
+
}
|
|
158
|
+
catch (eu) {
|
|
159
|
+
const e = index_client_1.sdk.WalletError.fromUnknown(eu);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
await c.wallet.destroy();
|
|
164
|
+
});
|
|
165
|
+
test.skip('8b run monitor mainnet', async () => {
|
|
166
|
+
if (index_all_1.Setup.noEnv('main'))
|
|
167
|
+
return;
|
|
168
|
+
if (!index_all_1.Setup.getEnv('main').filePath)
|
|
169
|
+
return;
|
|
170
|
+
// Only run if `Setup` style .env is present with a sqlite filePath...
|
|
171
|
+
const c = await TestUtilsWalletStorage_1._tu.createWalletSetupEnv('main');
|
|
172
|
+
await c.monitor.runOnce();
|
|
173
|
+
await c.wallet.destroy();
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=WhatsOnChain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsOnChain.test.js","sourceRoot":"","sources":["../../../../../src/services/providers/__tests/WhatsOnChain.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAction.d.ts","sourceRoot":"","sources":["../../../../src/storage/methods/createAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,uCAAuC,EAGvC,SAAS,EAKV,MAAM,UAAU,CAAA;AACjB,OAAO,EAKL,GAAG,EAIH,eAAe,
|
|
1
|
+
{"version":3,"file":"createAction.d.ts","sourceRoot":"","sources":["../../../../src/storage/methods/createAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,uCAAuC,EAGvC,SAAS,EAKV,MAAM,UAAU,CAAA;AACjB,OAAO,EAKL,GAAG,EAIH,eAAe,EAYhB,MAAM,oBAAoB,CAAA;AAQ3B,wBAAsB,YAAY,CAChC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,GAAG,CAAC,MAAM,EAChB,KAAK,EAAE,GAAG,CAAC,qBAAqB,EAChC,UAAU,CAAC,EAAE,uCAAuC,GACnD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CA2HxC;AAmBD,MAAM,WAAW,wBAAyB,SAAQ,GAAG,CAAC,uBAAuB;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAA;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAyzBD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAY7C;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAUvC;AAED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,SAAS,GAAG;IACtE,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAEA"}
|