mainnet-js 3.1.7 → 4.0.0-next.10
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/dist/module/cache/IndexedDbCache.d.ts +1 -1
- package/dist/module/cache/IndexedDbCache.d.ts.map +1 -1
- package/dist/module/cache/MemoryCache.d.ts +1 -1
- package/dist/module/cache/MemoryCache.d.ts.map +1 -1
- package/dist/module/cache/WebStorageCache.d.ts +1 -1
- package/dist/module/cache/WebStorageCache.d.ts.map +1 -1
- package/dist/module/cache/walletCache.d.ts +16 -6
- package/dist/module/cache/walletCache.d.ts.map +1 -1
- package/dist/module/cache/walletCache.js +92 -34
- package/dist/module/cache/walletCache.js.map +1 -1
- package/dist/module/cli.js +1 -2
- package/dist/module/cli.js.map +1 -1
- package/dist/module/db/index.d.ts +1 -1
- package/dist/module/db/index.d.ts.map +1 -1
- package/dist/module/db/index.js +1 -1
- package/dist/module/db/index.js.map +1 -1
- package/dist/module/enum.d.ts +1 -1
- package/dist/module/enum.d.ts.map +1 -1
- package/dist/module/history/getHistory.d.ts +1 -1
- package/dist/module/history/getHistory.d.ts.map +1 -1
- package/dist/module/history/getHistory.js +3 -3
- package/dist/module/history/getHistory.js.map +1 -1
- package/dist/module/index.d.ts +25 -22
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +33 -26
- package/dist/module/index.js.map +1 -1
- package/dist/module/interface.d.ts +12 -2
- package/dist/module/interface.d.ts.map +1 -1
- package/dist/module/interface.js.map +1 -1
- package/dist/module/libauth.d.ts +1 -1
- package/dist/module/libauth.d.ts.map +1 -1
- package/dist/module/libauth.js +1 -1
- package/dist/module/libauth.js.map +1 -1
- package/dist/module/mine/mine.d.ts +2 -7
- package/dist/module/mine/mine.d.ts.map +1 -1
- package/dist/module/mine/mine.js +6 -27
- package/dist/module/mine/mine.js.map +1 -1
- package/dist/module/network/Connection.d.ts +1 -12
- package/dist/module/network/Connection.d.ts.map +1 -1
- package/dist/module/network/Connection.js +24 -33
- package/dist/module/network/Connection.js.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.d.ts +16 -17
- package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.js +91 -93
- package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
- package/dist/module/network/MockNetworkProvider.d.ts +28 -0
- package/dist/module/network/MockNetworkProvider.d.ts.map +1 -0
- package/dist/module/network/MockNetworkProvider.js +74 -0
- package/dist/module/network/MockNetworkProvider.js.map +1 -0
- package/dist/module/network/NetworkProvider.d.ts +9 -2
- package/dist/module/network/NetworkProvider.d.ts.map +1 -1
- package/dist/module/network/configuration.d.ts +2 -4
- package/dist/module/network/configuration.d.ts.map +1 -1
- package/dist/module/network/configuration.js +25 -50
- package/dist/module/network/configuration.js.map +1 -1
- package/dist/module/network/constant.d.ts +7 -7
- package/dist/module/network/constant.d.ts.map +1 -1
- package/dist/module/network/constant.js +21 -24
- package/dist/module/network/constant.js.map +1 -1
- package/dist/module/network/default.d.ts +5 -3
- package/dist/module/network/default.d.ts.map +1 -1
- package/dist/module/network/default.js +29 -51
- package/dist/module/network/default.js.map +1 -1
- package/dist/module/network/index.d.ts +4 -4
- package/dist/module/network/index.d.ts.map +1 -1
- package/dist/module/network/index.js +2 -2
- package/dist/module/network/index.js.map +1 -1
- package/dist/module/network/interface.d.ts +0 -6
- package/dist/module/network/interface.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.d.ts +1 -1
- package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.js +13 -7
- package/dist/module/rate/ExchangeRate.js.map +1 -1
- package/dist/module/transaction/Wif.d.ts +3 -3
- package/dist/module/transaction/Wif.d.ts.map +1 -1
- package/dist/module/transaction/Wif.js +4 -4
- package/dist/module/transaction/Wif.js.map +1 -1
- package/dist/module/transaction/allocateFee.d.ts +1 -1
- package/dist/module/transaction/allocateFee.d.ts.map +1 -1
- package/dist/module/transaction/allocateFee.js +2 -2
- package/dist/module/transaction/allocateFee.js.map +1 -1
- package/dist/module/util/deriveCashaddr.js.map +1 -1
- package/dist/module/util/deriveNetwork.js +1 -1
- package/dist/module/util/deriveNetwork.js.map +1 -1
- package/dist/module/util/getAddrsByXpubKey.js +1 -1
- package/dist/module/util/getAddrsByXpubKey.js.map +1 -1
- package/dist/module/util/getXPubKey.js +1 -1
- package/dist/module/util/getXPubKey.js.map +1 -1
- package/dist/module/util/hd.d.ts +2 -0
- package/dist/module/util/hd.d.ts.map +1 -1
- package/dist/module/util/hd.js +41 -0
- package/dist/module/util/hd.js.map +1 -1
- package/dist/module/util/index.d.ts +7 -9
- package/dist/module/util/index.d.ts.map +1 -1
- package/dist/module/util/index.js +7 -9
- package/dist/module/util/index.js.map +1 -1
- package/dist/module/util/transaction.js +1 -1
- package/dist/module/util/transaction.js.map +1 -1
- package/dist/module/wallet/Base.d.ts +13 -9
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +54 -58
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/HDWallet.d.ts.map +1 -1
- package/dist/module/wallet/HDWallet.js +19 -38
- package/dist/module/wallet/HDWallet.js.map +1 -1
- package/dist/module/wallet/Util.d.ts +4 -22
- package/dist/module/wallet/Util.d.ts.map +1 -1
- package/dist/module/wallet/Util.js +75 -102
- package/dist/module/wallet/Util.js.map +1 -1
- package/dist/module/wallet/Watch.d.ts +24 -5
- package/dist/module/wallet/Watch.d.ts.map +1 -1
- package/dist/module/wallet/Watch.js +141 -17
- package/dist/module/wallet/Watch.js.map +1 -1
- package/dist/module/wallet/Wif.d.ts +2 -6
- package/dist/module/wallet/Wif.d.ts.map +1 -1
- package/dist/module/wallet/Wif.js +3 -69
- package/dist/module/wallet/Wif.js.map +1 -1
- package/dist/module/wallet/createWallet.d.ts +1 -1
- package/dist/module/wallet/createWallet.d.ts.map +1 -1
- package/dist/module/wallet/createWallet.js +2 -1
- package/dist/module/wallet/createWallet.js.map +1 -1
- package/dist/module/wallet/interface.d.ts +3 -2
- package/dist/module/wallet/interface.d.ts.map +1 -1
- package/dist/module/wallet/model.d.ts +2 -1
- package/dist/module/wallet/model.d.ts.map +1 -1
- package/dist/module/wallet/model.js +1 -1
- package/dist/module/wallet/model.js.map +1 -1
- package/package.json +17 -29
- package/dist/index.html +0 -9
- package/dist/mainnet-3.1.7.js +0 -2066
- package/dist/module/network/util.d.ts +0 -3
- package/dist/module/network/util.d.ts.map +0 -1
- package/dist/module/network/util.js +0 -27
- package/dist/module/network/util.js.map +0 -1
- package/dist/module/test/expect.d.ts +0 -12
- package/dist/module/test/expect.d.ts.map +0 -1
- package/dist/module/test/expect.js +0 -47
- package/dist/module/test/expect.js.map +0 -1
- package/dist/module/test/fetch.d.ts +0 -3
- package/dist/module/test/fetch.d.ts.map +0 -1
- package/dist/module/test/fetch.js +0 -32
- package/dist/module/test/fetch.js.map +0 -1
- package/dist/module/util/randomBytes.d.ts +0 -2
- package/dist/module/util/randomBytes.d.ts.map +0 -1
- package/dist/module/util/randomBytes.js +0 -13
- package/dist/module/util/randomBytes.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/cache/IndexedDbCache.test.ts +0 -15
- package/src/cache/IndexedDbCache.ts +0 -172
- package/src/cache/MemoryCache.test.ts +0 -15
- package/src/cache/MemoryCache.ts +0 -32
- package/src/cache/WebStorageCache.test.ts +0 -15
- package/src/cache/WebStorageCache.ts +0 -38
- package/src/cache/index.ts +0 -2
- package/src/cache/interface.ts +0 -9
- package/src/cache/walletCache.ts +0 -254
- package/src/chain.ts +0 -3
- package/src/cli.ts +0 -32
- package/src/config.ts +0 -23
- package/src/constant.ts +0 -27
- package/src/db/ExchangeRateProvider.ts +0 -28
- package/src/db/StorageProvider.ts +0 -64
- package/src/db/index.ts +0 -2
- package/src/db/interface.ts +0 -11
- package/src/enum.ts +0 -34
- package/src/history/getHistory.test.ts +0 -290
- package/src/history/getHistory.ts +0 -411
- package/src/history/interface.ts +0 -24
- package/src/index.ts +0 -48
- package/src/interface.ts +0 -72
- package/src/libauth.ts +0 -11
- package/src/message/index.ts +0 -2
- package/src/message/interface.ts +0 -40
- package/src/message/signed.test.ts +0 -309
- package/src/message/signed.ts +0 -201
- package/src/mine/index.ts +0 -1
- package/src/mine/mine.test.ts +0 -10
- package/src/mine/mine.ts +0 -42
- package/src/network/Connection.test.ts +0 -51
- package/src/network/Connection.ts +0 -73
- package/src/network/ElectrumNetworkProvider.ts +0 -657
- package/src/network/NetworkProvider.ts +0 -180
- package/src/network/Rpc.test.ts +0 -130
- package/src/network/configuration.test.ts +0 -59
- package/src/network/configuration.ts +0 -72
- package/src/network/constant.ts +0 -43
- package/src/network/default.ts +0 -120
- package/src/network/electrum.test.ts +0 -28
- package/src/network/getRelayFeeCache.test.ts +0 -15
- package/src/network/getRelayFeeCache.ts +0 -23
- package/src/network/index.ts +0 -14
- package/src/network/interface.ts +0 -80
- package/src/network/util.test.ts +0 -24
- package/src/network/util.ts +0 -30
- package/src/rate/ExchangeRate.test.headless.js +0 -35
- package/src/rate/ExchangeRate.test.ts +0 -51
- package/src/rate/ExchangeRate.ts +0 -142
- package/src/test/expect.ts +0 -59
- package/src/test/fetch.ts +0 -39
- package/src/test/json.test.ts +0 -13
- package/src/transaction/Wif.ts +0 -680
- package/src/transaction/allocateFee.test.ts +0 -298
- package/src/transaction/allocateFee.ts +0 -149
- package/src/util/amountInSatoshi.test.ts +0 -27
- package/src/util/amountInSatoshi.ts +0 -33
- package/src/util/asSendRequestObject.ts +0 -81
- package/src/util/base64.test.ts +0 -39
- package/src/util/base64.ts +0 -12
- package/src/util/browserNotSupported.ts +0 -7
- package/src/util/checkForEmptySeed.ts +0 -9
- package/src/util/checkUtxos.ts +0 -29
- package/src/util/checkWifNetwork.ts +0 -24
- package/src/util/convert.test.ts +0 -46
- package/src/util/convert.ts +0 -50
- package/src/util/delay.ts +0 -3
- package/src/util/deriveCashaddr.test.ts +0 -164
- package/src/util/deriveCashaddr.ts +0 -143
- package/src/util/deriveLockscript.ts +0 -16
- package/src/util/deriveNetwork.ts +0 -19
- package/src/util/derivePublicKeyHash.test.ts +0 -55
- package/src/util/derivePublicKeyHash.ts +0 -64
- package/src/util/floor.test.ts +0 -21
- package/src/util/floor.ts +0 -4
- package/src/util/getAddrsByXpubKey.test.ts +0 -115
- package/src/util/getAddrsByXpubKey.ts +0 -86
- package/src/util/getRuntimePlatform.test.headless.js +0 -40
- package/src/util/getRuntimePlatform.test.ts +0 -5
- package/src/util/getRuntimePlatform.ts +0 -31
- package/src/util/getUsdRate.ts +0 -5
- package/src/util/getXPubKey.ts +0 -39
- package/src/util/hash160.test.ts +0 -18
- package/src/util/hash160.ts +0 -12
- package/src/util/hd.ts +0 -16
- package/src/util/header.test.ts +0 -34
- package/src/util/header.ts +0 -26
- package/src/util/index.ts +0 -33
- package/src/util/randomBytes.ts +0 -13
- package/src/util/randomInt.test.ts +0 -15
- package/src/util/randomInt.ts +0 -4
- package/src/util/sanitizeAddress.ts +0 -10
- package/src/util/sanitizeUnit.ts +0 -11
- package/src/util/satoshiToAmount.test.ts +0 -6
- package/src/util/satoshiToAmount.ts +0 -33
- package/src/util/sumSendRequestAmounts.ts +0 -34
- package/src/util/sumUtxoValue.ts +0 -27
- package/src/util/transaction.ts +0 -10
- package/src/wallet/Base.ts +0 -1563
- package/src/wallet/Cashtokens.test.headless.js +0 -730
- package/src/wallet/Cashtokens.test.ts +0 -1411
- package/src/wallet/HDWallet.test.ts +0 -1086
- package/src/wallet/HDWallet.ts +0 -992
- package/src/wallet/Util.test.ts +0 -134
- package/src/wallet/Util.ts +0 -191
- package/src/wallet/WalletCache.test.ts +0 -45
- package/src/wallet/Watch.ts +0 -441
- package/src/wallet/Wif.bip39.test.ts +0 -48
- package/src/wallet/Wif.test.ts +0 -1189
- package/src/wallet/Wif.ts +0 -687
- package/src/wallet/Wif.watchOnly.test.ts +0 -58
- package/src/wallet/createWallet.ts +0 -238
- package/src/wallet/enum.ts +0 -18
- package/src/wallet/interface.ts +0 -102
- package/src/wallet/model.test.ts +0 -24
- package/src/wallet/model.ts +0 -352
- package/tsconfig.browser.json +0 -11
- package/tsconfig.json +0 -33
- package/webpack.config.cjs +0 -132
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { binToHex, CashAddressType, decodeHdPublicKey, deriveHdPathRelative, encodeCashAddress, } from "@bitauth/libauth";
|
|
2
2
|
import { hash160 } from "./hash160.js";
|
|
3
3
|
/**
|
|
4
4
|
* Derive cashsaddresses given the `xpub`, relative `path` and count of addresses to derive.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAddrsByXpubKey.js","sourceRoot":"","sources":["../../../src/util/getAddrsByXpubKey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"getAddrsByXpubKey.js","sourceRoot":"","sources":["../../../src/util/getAddrsByXpubKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deriveHdPath, deriveHdPrivateNodeFromSeed, deriveHdPublicNode, encodeHdPublicKey, hexToBin, } from "@bitauth/libauth";
|
|
2
2
|
export function getXPubKey(seed, derivationPath, network) {
|
|
3
3
|
if (typeof seed === "string") {
|
|
4
4
|
seed = hexToBin(seed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getXPubKey.js","sourceRoot":"","sources":["../../../src/util/getXPubKey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"getXPubKey.js","sourceRoot":"","sources":["../../../src/util/getXPubKey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,iBAAiB,EAEjB,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,UAAU,CACxB,IAAyB,EACzB,cAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,GAAG,2BAA2B,CAAC,IAAI,EAAE;QAC7C,cAAc,EAAE,IAAI,EAAE,iFAAiF;QACvG,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC;IACb,CAAC;IACD,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,OAAO,GAAG,iBAAiB,CAC7B;QACE,OAAO,EAAE,OAAuB;QAChC,IAAI,EAAE,gBAAgB;KACvB,EACD;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAC,WAAW,CAAC;IACd,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/module/util/hd.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare const arrayRange: (start: number, stop: number) => number[];
|
|
2
2
|
export declare const getNextUnusedIndex: (index: number, statuses: Array<string | null>) => number;
|
|
3
|
+
export declare function deriveHdPaths(mnemonic: string, network: string, hdPaths: string[]): Promise<any[]>;
|
|
4
|
+
export declare function getXPubKeys(mnemonic: string, network: string, paths?: string[]): Promise<any[]>;
|
|
3
5
|
//# sourceMappingURL=hd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hd.d.ts","sourceRoot":"","sources":["../../../src/util/hd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hd.d.ts","sourceRoot":"","sources":["../../../src/util/hd.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,UAAU,UAAW,MAAM,QAAQ,MAAM,aACa,CAAC;AAEpE,eAAO,MAAM,kBAAkB,UACtB,MAAM,YACH,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAC7B,MASF,CAAC;AAEF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,GAAG,EAAE,CAAC,CAyChB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAEhB"}
|
package/dist/module/util/hd.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { deriveHdPath, deriveHdPrivateNodeFromSeed, deriveHdPublicNode, deriveSeedFromBip39Mnemonic, encodeHdPublicKey, } from "@bitauth/libauth";
|
|
2
|
+
import { DERIVATION_PATHS } from "../constant.js";
|
|
3
|
+
import { XPubKey } from "../wallet/model.js";
|
|
4
|
+
import { checkForEmptySeed } from "./checkForEmptySeed.js";
|
|
1
5
|
export const arrayRange = (start, stop) => Array.from({ length: stop - start }, (_, index) => start + index);
|
|
2
6
|
export const getNextUnusedIndex = (index, statuses) => {
|
|
3
7
|
if (index === -1) {
|
|
@@ -8,4 +12,41 @@ export const getNextUnusedIndex = (index, statuses) => {
|
|
|
8
12
|
}
|
|
9
13
|
return index;
|
|
10
14
|
};
|
|
15
|
+
export async function deriveHdPaths(mnemonic, network, hdPaths) {
|
|
16
|
+
const seed = deriveSeedFromBip39Mnemonic(mnemonic);
|
|
17
|
+
checkForEmptySeed(seed);
|
|
18
|
+
const hdNode = deriveHdPrivateNodeFromSeed(seed, {
|
|
19
|
+
assumeValidity: true,
|
|
20
|
+
throwErrors: true,
|
|
21
|
+
});
|
|
22
|
+
const result = [];
|
|
23
|
+
for (const path of hdPaths) {
|
|
24
|
+
if (path === "m") {
|
|
25
|
+
throw Error("Storing or sharing of parent public key may lead to loss of funds. Storing or sharing *root* parent public keys is strongly discouraged, although all parent keys have risk. See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#implications");
|
|
26
|
+
}
|
|
27
|
+
const childNode = deriveHdPath(hdNode, path);
|
|
28
|
+
if (typeof childNode === "string") {
|
|
29
|
+
throw Error(childNode);
|
|
30
|
+
}
|
|
31
|
+
const node = deriveHdPublicNode(childNode);
|
|
32
|
+
if (typeof node === "string") {
|
|
33
|
+
throw Error(node);
|
|
34
|
+
}
|
|
35
|
+
const xPubKey = encodeHdPublicKey({
|
|
36
|
+
network: network,
|
|
37
|
+
node: node,
|
|
38
|
+
}, {
|
|
39
|
+
throwErrors: true,
|
|
40
|
+
}).hdPublicKey;
|
|
41
|
+
const key = new XPubKey({
|
|
42
|
+
path: path,
|
|
43
|
+
xPubKey: xPubKey,
|
|
44
|
+
});
|
|
45
|
+
result.push(await key.ready());
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
export async function getXPubKeys(mnemonic, network, paths) {
|
|
50
|
+
return deriveHdPaths(mnemonic, network, paths ?? DERIVATION_PATHS);
|
|
51
|
+
}
|
|
11
52
|
//# sourceMappingURL=hd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hd.js","sourceRoot":"","sources":["../../../src/util/hd.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,QAA8B,EACtB,EAAE;IACV,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hd.js","sourceRoot":"","sources":["../../../src/util/hd.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,EAC3B,iBAAiB,GAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,QAA8B,EACtB,EAAE;IACV,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,OAAe,EACf,OAAiB;IAEjB,MAAM,IAAI,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,EAAE;QAC/C,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,KAAK,CACT,+PAA+P,CAChQ,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAC/B;YACE,OAAO,EAAE,OAAuB;YAChC,IAAI,EAAE,IAAI;SACX,EACD;YACE,WAAW,EAAE,IAAI;SAClB,CACF,CAAC,WAAW,CAAC;QACd,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;YACtB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,OAAe,EACf,KAAgB;IAEhB,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,gBAAgB,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
+
export { binToHex, hexToBin } from "@bitauth/libauth";
|
|
2
|
+
export { ExchangeRate, getExchangeRatePromise } from "../rate/ExchangeRate.js";
|
|
1
3
|
export { amountInSatoshi } from "./amountInSatoshi.js";
|
|
2
4
|
export { asSendRequestObject } from "./asSendRequestObject.js";
|
|
3
5
|
export { atob, btoa } from "./base64.js";
|
|
4
|
-
export
|
|
6
|
+
export * from "./checkUtxos.js";
|
|
5
7
|
export * from "./convert.js";
|
|
6
8
|
export { delay } from "./delay.js";
|
|
9
|
+
export * from "./deriveCashaddr.js";
|
|
7
10
|
export { derivedNetwork } from "./deriveNetwork.js";
|
|
8
11
|
export { derivePublicKeyHash } from "./derivePublicKeyHash.js";
|
|
9
|
-
export * from "./deriveCashaddr.js";
|
|
10
|
-
export { getAddrsByXpubKey, getAddrsByXpubKeyObject, getXpubKeyInfo, getXpubKeyInfoObject, } from "../util/getAddrsByXpubKey.js";
|
|
11
12
|
export { getRuntimePlatform, RuntimePlatform } from "./getRuntimePlatform.js";
|
|
12
13
|
export { getUsdRate } from "./getUsdRate.js";
|
|
13
14
|
export { hash160 } from "./hash160.js";
|
|
14
|
-
export {
|
|
15
|
+
export { decodeHeader } from "./header.js";
|
|
16
|
+
export { getWeakRandomInt } from "./randomInt.js";
|
|
15
17
|
export { sanitizeAddress } from "./sanitizeAddress.js";
|
|
16
18
|
export { sanitizeUnit } from "./sanitizeUnit.js";
|
|
17
|
-
export { getWeakRandomInt } from "./randomInt.js";
|
|
18
|
-
export { getXPubKey } from "../util/getXPubKey.js";
|
|
19
|
-
export { sumUtxoValue } from "./sumUtxoValue.js";
|
|
20
19
|
export * from "./sumUtxoValue.js";
|
|
21
|
-
export {
|
|
22
|
-
export * from "./checkUtxos.js";
|
|
20
|
+
export { sumUtxoValue } from "./sumUtxoValue.js";
|
|
23
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
+
export { binToHex, hexToBin } from "@bitauth/libauth";
|
|
2
|
+
export { ExchangeRate, getExchangeRatePromise } from "../rate/ExchangeRate.js";
|
|
1
3
|
export { amountInSatoshi } from "./amountInSatoshi.js";
|
|
2
4
|
export { asSendRequestObject } from "./asSendRequestObject.js";
|
|
3
5
|
export { atob, btoa } from "./base64.js";
|
|
4
|
-
export
|
|
6
|
+
export * from "./checkUtxos.js";
|
|
5
7
|
export * from "./convert.js";
|
|
6
8
|
export { delay } from "./delay.js";
|
|
9
|
+
export * from "./deriveCashaddr.js";
|
|
7
10
|
export { derivedNetwork } from "./deriveNetwork.js";
|
|
8
11
|
export { derivePublicKeyHash } from "./derivePublicKeyHash.js";
|
|
9
|
-
export * from "./deriveCashaddr.js";
|
|
10
|
-
export { getAddrsByXpubKey, getAddrsByXpubKeyObject, getXpubKeyInfo, getXpubKeyInfoObject, } from "../util/getAddrsByXpubKey.js";
|
|
11
12
|
export { getRuntimePlatform, RuntimePlatform } from "./getRuntimePlatform.js";
|
|
12
13
|
export { getUsdRate } from "./getUsdRate.js";
|
|
13
14
|
export { hash160 } from "./hash160.js";
|
|
14
|
-
export {
|
|
15
|
+
export { decodeHeader } from "./header.js";
|
|
16
|
+
export { getWeakRandomInt } from "./randomInt.js";
|
|
15
17
|
export { sanitizeAddress } from "./sanitizeAddress.js";
|
|
16
18
|
export { sanitizeUnit } from "./sanitizeUnit.js";
|
|
17
|
-
export { getWeakRandomInt } from "./randomInt.js";
|
|
18
|
-
export { getXPubKey } from "../util/getXPubKey.js";
|
|
19
|
-
export { sumUtxoValue } from "./sumUtxoValue.js";
|
|
20
19
|
export * from "./sumUtxoValue.js";
|
|
21
|
-
export {
|
|
22
|
-
export * from "./checkUtxos.js";
|
|
20
|
+
export { sumUtxoValue } from "./sumUtxoValue.js";
|
|
23
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { hexToBin, sha256
|
|
1
|
+
import { binToHex, hexToBin, sha256 } from "@bitauth/libauth";
|
|
2
2
|
export async function getTransactionHash(rawTransactionHex) {
|
|
3
3
|
const transactionBin = hexToBin(rawTransactionHex);
|
|
4
4
|
// transaction hash is a double sha256 of a raw transaction data, reversed byte order
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/util/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/util/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,iBAAyB;IAEzB,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAEnD,qFAAqF;IACrF,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -2,14 +2,12 @@ import { CashAddressNetworkPrefix } from "@bitauth/libauth";
|
|
|
2
2
|
import { WalletCache } from "../cache/walletCache.js";
|
|
3
3
|
import StorageProvider from "../db/StorageProvider.js";
|
|
4
4
|
import { NetworkType } from "../enum.js";
|
|
5
|
-
import { HexHeaderI, TxI, Utxo } from "../interface.js";
|
|
6
|
-
import { SignedMessageResponseI, VerifyMessageResponseI } from "../message/interface.js";
|
|
5
|
+
import { DsproofData, HexHeaderI, TxI, Utxo } from "../interface.js";
|
|
7
6
|
import ElectrumNetworkProvider from "../network/ElectrumNetworkProvider.js";
|
|
8
7
|
import { ElectrumRawTransaction } from "../network/interface.js";
|
|
9
8
|
import { WalletTypeEnum } from "./enum.js";
|
|
10
9
|
import { CancelFn, SendRequestOptionsI, WaitForTransactionOptions, WaitForTransactionResponse, WalletI, WalletInfoI } from "./interface.js";
|
|
11
|
-
import { OpReturnData, SendRequest, SendRequestArray, SendRequestType, SendResponse, TokenBurnRequest, TokenGenesisRequest, TokenMintRequest, TokenSendRequest } from "./model.js";
|
|
12
|
-
import { Util } from "./Util.js";
|
|
10
|
+
import { OpReturnData, SendRequest, SendRequestArray, SendRequestType, SendResponse, SourceOutput, TokenBurnRequest, TokenGenesisRequest, TokenMintRequest, TokenSendRequest } from "./model.js";
|
|
13
11
|
export declare const placeholderCashAddr = "bitcoincash:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqfnhks603";
|
|
14
12
|
export declare const placeholderTokenAddr = "bitcoincash:zqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqweyg7usz";
|
|
15
13
|
/**
|
|
@@ -25,11 +23,8 @@ export declare class BaseWallet implements WalletI {
|
|
|
25
23
|
_slpSemiAware: boolean;
|
|
26
24
|
readonly isTestnet: boolean;
|
|
27
25
|
name: string;
|
|
28
|
-
_util?: Util;
|
|
29
26
|
protected cancelFns: CancelFn[];
|
|
30
27
|
get networkPrefix(): CashAddressNetworkPrefix;
|
|
31
|
-
get util(): Util;
|
|
32
|
-
static get util(): Util;
|
|
33
28
|
getInfo(): WalletInfoI;
|
|
34
29
|
slpSemiAware(value?: boolean): this;
|
|
35
30
|
protected getNetworkProvider(network?: NetworkType): any;
|
|
@@ -203,6 +198,16 @@ export declare class BaseWallet implements WalletI {
|
|
|
203
198
|
*/
|
|
204
199
|
watchTransactions(callback: (transaction: ElectrumRawTransaction) => void): Promise<CancelFn>;
|
|
205
200
|
watchTokenTransactions(callback: (tx: ElectrumRawTransaction) => void): Promise<CancelFn>;
|
|
201
|
+
/**
|
|
202
|
+
* Watch for double-spend proofs on incoming transactions.
|
|
203
|
+
* For each new unconfirmed transaction, subscribes to its dsproof
|
|
204
|
+
* for a short window. If a dsproof arrives, the callback is invoked.
|
|
205
|
+
*
|
|
206
|
+
* @param callback - Called with the dsproof data when a double-spend is detected
|
|
207
|
+
* @param window - How long (ms) to watch each transaction for dsproofs (default 5000)
|
|
208
|
+
* @returns Cancel function to stop watching
|
|
209
|
+
*/
|
|
210
|
+
watchDoubleSpends(callback: (dsproof: DsproofData) => void, window?: number): Promise<CancelFn>;
|
|
206
211
|
protected _getMaxAmountToSend(params?: {
|
|
207
212
|
outputCount?: number;
|
|
208
213
|
options?: SendRequestOptionsI;
|
|
@@ -242,6 +247,7 @@ export declare class BaseWallet implements WalletI {
|
|
|
242
247
|
* @returns the transaction id sent to the network
|
|
243
248
|
*/
|
|
244
249
|
protected sendMaxRaw(cashaddr: string, options?: SendRequestOptionsI, privateKey?: Uint8Array): Promise<SendResponse>;
|
|
250
|
+
protected _send(encodedTransaction: Uint8Array, categories: string[], sourceOutputs: SourceOutput[] | undefined, options?: SendRequestOptionsI): Promise<SendResponse>;
|
|
245
251
|
/**
|
|
246
252
|
* encodeTransaction Encode and sign a transaction given a list of sendRequests, options and estimate fees.
|
|
247
253
|
* @param {SendRequest[]} sendRequests SendRequests
|
|
@@ -351,8 +357,6 @@ export declare class BaseWallet implements WalletI {
|
|
|
351
357
|
getAllNftTokenBalances(): Promise<{
|
|
352
358
|
[category: string]: number;
|
|
353
359
|
}>;
|
|
354
|
-
sign(message: string, privateKey?: Uint8Array | undefined): SignedMessageResponseI;
|
|
355
|
-
verify(message: string, sig: string, address?: string, publicKey?: Uint8Array): VerifyMessageResponseI;
|
|
356
360
|
}
|
|
357
361
|
/**
|
|
358
362
|
* _checkContextSafety (internal) if running in nodejs, will disable saving
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../../src/wallet/Base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,wBAAwB,
|
|
1
|
+
{"version":3,"file":"Base.d.ts","sourceRoot":"","sources":["../../../src/wallet/Base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { binToHex } from "@bitauth/libauth";
|
|
1
|
+
import { binToHex, sha256 } from "@bitauth/libauth";
|
|
2
2
|
import { NetworkType, prefixFromNetworkMap } from "../enum.js";
|
|
3
|
-
import { NFTCapability } from "../interface.js";
|
|
3
|
+
import { NFTCapability, } from "../interface.js";
|
|
4
4
|
import { getNetworkProvider } from "../network/default.js";
|
|
5
5
|
import { getRelayFeeCache } from "../network/getRelayFeeCache.js";
|
|
6
6
|
import { buildEncodedTransaction, getFeeAmount, getFeeAmountSimple, getSuitableUtxos, placeholderPrivateKeyBin, } from "../transaction/Wif.js";
|
|
@@ -9,8 +9,6 @@ import { asSendRequestObject, getRuntimePlatform, sumTokenAmounts, sumUtxoValue,
|
|
|
9
9
|
import { sumSendRequestAmounts } from "../util/sumSendRequestAmounts.js";
|
|
10
10
|
import { FeePaidByEnum, WalletTypeEnum } from "./enum.js";
|
|
11
11
|
import { fromUtxoId, OpReturnData, SendRequest, SendResponse, TokenSendRequest, } from "./model.js";
|
|
12
|
-
import { Util } from "./Util.js";
|
|
13
|
-
import { SignedMessage } from "../message/signed.js";
|
|
14
12
|
export const placeholderCashAddr = "bitcoincash:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqfnhks603";
|
|
15
13
|
export const placeholderTokenAddr = "bitcoincash:zqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqweyg7usz";
|
|
16
14
|
/**
|
|
@@ -21,17 +19,6 @@ export class BaseWallet {
|
|
|
21
19
|
get networkPrefix() {
|
|
22
20
|
return prefixFromNetworkMap[this.network];
|
|
23
21
|
}
|
|
24
|
-
// interface to util functions. see Util.ts
|
|
25
|
-
get util() {
|
|
26
|
-
if (!this._util) {
|
|
27
|
-
this._util = new Util(this.network);
|
|
28
|
-
}
|
|
29
|
-
return this._util;
|
|
30
|
-
}
|
|
31
|
-
// interface to util util. see Util.Util
|
|
32
|
-
static get util() {
|
|
33
|
-
return new this().util;
|
|
34
|
-
}
|
|
35
22
|
// Return wallet info
|
|
36
23
|
getInfo() {
|
|
37
24
|
throw Error("getInfo not implemented in BaseWallet");
|
|
@@ -355,6 +342,11 @@ export class BaseWallet {
|
|
|
355
342
|
// waits for address balance to be greater than or equal to the target value
|
|
356
343
|
// this call halts the execution
|
|
357
344
|
async waitForBalance(value) {
|
|
345
|
+
// Check if condition is already met before watching
|
|
346
|
+
const currentBalance = await this.getBalance();
|
|
347
|
+
if (currentBalance >= value) {
|
|
348
|
+
return currentBalance;
|
|
349
|
+
}
|
|
358
350
|
return new Promise(async (resolve) => {
|
|
359
351
|
let watchCancel;
|
|
360
352
|
watchCancel = await this.watchBalance(async (balance) => {
|
|
@@ -376,6 +368,11 @@ export class BaseWallet {
|
|
|
376
368
|
// waits for address token balance to be greater than or equal to the target amount
|
|
377
369
|
// this call halts the execution
|
|
378
370
|
async waitForTokenBalance(category, amount) {
|
|
371
|
+
// Check if condition is already met before watching
|
|
372
|
+
const currentBalance = await this.getTokenBalance(category);
|
|
373
|
+
if (currentBalance >= amount) {
|
|
374
|
+
return currentBalance;
|
|
375
|
+
}
|
|
379
376
|
return new Promise(async (resolve) => {
|
|
380
377
|
let watchCancel;
|
|
381
378
|
watchCancel = await this.watchTokenBalance(category, async (balance) => {
|
|
@@ -429,6 +426,25 @@ export class BaseWallet {
|
|
|
429
426
|
}
|
|
430
427
|
});
|
|
431
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Watch for double-spend proofs on incoming transactions.
|
|
431
|
+
* For each new unconfirmed transaction, subscribes to its dsproof
|
|
432
|
+
* for a short window. If a dsproof arrives, the callback is invoked.
|
|
433
|
+
*
|
|
434
|
+
* @param callback - Called with the dsproof data when a double-spend is detected
|
|
435
|
+
* @param window - How long (ms) to watch each transaction for dsproofs (default 5000)
|
|
436
|
+
* @returns Cancel function to stop watching
|
|
437
|
+
*/
|
|
438
|
+
async watchDoubleSpends(callback, window = 5000) {
|
|
439
|
+
return this.watchTransactionHashes(async (txHash) => {
|
|
440
|
+
const cancel = await this.provider.subscribeToDsproof(txHash, ([proofTxHash, dsproof]) => {
|
|
441
|
+
if (txHash === proofTxHash && dsproof !== null) {
|
|
442
|
+
callback(dsproof);
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
setTimeout(() => cancel(), window);
|
|
446
|
+
});
|
|
447
|
+
}
|
|
432
448
|
async _getMaxAmountToSend(params = {
|
|
433
449
|
outputCount: 1,
|
|
434
450
|
options: {},
|
|
@@ -495,23 +511,7 @@ export class BaseWallet {
|
|
|
495
511
|
*/
|
|
496
512
|
async send(requests, options) {
|
|
497
513
|
const { encodedTransaction, categories, sourceOutputs } = await this.encodeTransaction(requests, undefined, options);
|
|
498
|
-
|
|
499
|
-
resp.categories = categories;
|
|
500
|
-
if (options?.buildUnsigned !== true) {
|
|
501
|
-
const txId = await this.submitTransaction(encodedTransaction, options?.awaitTransactionPropagation === undefined ||
|
|
502
|
-
options?.awaitTransactionPropagation === true);
|
|
503
|
-
resp.txId = txId;
|
|
504
|
-
resp.explorerUrl = this.explorerUrl(resp.txId);
|
|
505
|
-
if (options?.queryBalance === undefined ||
|
|
506
|
-
options?.queryBalance === true) {
|
|
507
|
-
resp.balance = await this.getBalance();
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
else {
|
|
511
|
-
resp.unsignedTransaction = binToHex(encodedTransaction);
|
|
512
|
-
resp.sourceOutputs = sourceOutputs;
|
|
513
|
-
}
|
|
514
|
-
return resp;
|
|
514
|
+
return this._send(encodedTransaction, categories, sourceOutputs, options);
|
|
515
515
|
}
|
|
516
516
|
/**
|
|
517
517
|
* sendMax Send all available funds to a destination cash address
|
|
@@ -547,11 +547,26 @@ export class BaseWallet {
|
|
|
547
547
|
value: maxSpendableAmount,
|
|
548
548
|
});
|
|
549
549
|
const { encodedTransaction, categories, sourceOutputs } = await this.encodeTransaction([sendRequest], true, options, privateKey);
|
|
550
|
+
return this._send(encodedTransaction, categories, sourceOutputs, options);
|
|
551
|
+
}
|
|
552
|
+
async _send(encodedTransaction, categories, sourceOutputs, options) {
|
|
550
553
|
const resp = new SendResponse({});
|
|
551
554
|
resp.categories = categories;
|
|
552
|
-
if (options?.
|
|
553
|
-
|
|
554
|
-
|
|
555
|
+
if (options?.broadcast === false) {
|
|
556
|
+
resp.transaction = binToHex(encodedTransaction);
|
|
557
|
+
resp.txId = binToHex(sha256.hash(sha256.hash(encodedTransaction)).reverse());
|
|
558
|
+
}
|
|
559
|
+
else if (options?.buildUnsigned !== true) {
|
|
560
|
+
const awaitPropagation = options?.awaitTransactionPropagation === undefined ||
|
|
561
|
+
options?.awaitTransactionPropagation === true;
|
|
562
|
+
let updatePromise;
|
|
563
|
+
if (awaitPropagation) {
|
|
564
|
+
updatePromise = this.waitForUpdate({ timeout: 2500 });
|
|
565
|
+
}
|
|
566
|
+
const [_, txId] = await Promise.all([
|
|
567
|
+
updatePromise,
|
|
568
|
+
this.submitTransaction(encodedTransaction, awaitPropagation),
|
|
569
|
+
]);
|
|
555
570
|
resp.txId = txId;
|
|
556
571
|
resp.explorerUrl = this.explorerUrl(resp.txId);
|
|
557
572
|
if (options?.queryBalance === undefined ||
|
|
@@ -712,7 +727,7 @@ export class BaseWallet {
|
|
|
712
727
|
if (!this.provider) {
|
|
713
728
|
throw Error("Wallet network provider was not initialized");
|
|
714
729
|
}
|
|
715
|
-
|
|
730
|
+
const rawTransaction = binToHex(transaction);
|
|
716
731
|
return await this.provider.sendRawTransaction(rawTransaction, awaitPropagation);
|
|
717
732
|
}
|
|
718
733
|
// gets transaction history of this wallet
|
|
@@ -776,14 +791,9 @@ export class BaseWallet {
|
|
|
776
791
|
}
|
|
777
792
|
// waiting for any address transaction
|
|
778
793
|
let watchCancel;
|
|
779
|
-
let initialResponseSeen = false;
|
|
780
794
|
watchCancel = await this.watchStatus(async (_status) => {
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
resolve(makeResponse());
|
|
784
|
-
return;
|
|
785
|
-
}
|
|
786
|
-
initialResponseSeen = true;
|
|
795
|
+
await watchCancel?.();
|
|
796
|
+
resolve(makeResponse());
|
|
787
797
|
});
|
|
788
798
|
});
|
|
789
799
|
}
|
|
@@ -1019,7 +1029,7 @@ export class BaseWallet {
|
|
|
1019
1029
|
* @returns {bigint} fungible token balance
|
|
1020
1030
|
*/
|
|
1021
1031
|
async getTokenBalance(category) {
|
|
1022
|
-
const utxos = (await this.getTokenUtxos(category)).filter((val) => val.token?.amount);
|
|
1032
|
+
const utxos = (await this.getTokenUtxos(category)).filter((val) => val.token?.amount && val.token?.category === category);
|
|
1023
1033
|
return sumTokenAmounts(utxos, category);
|
|
1024
1034
|
}
|
|
1025
1035
|
/**
|
|
@@ -1063,20 +1073,6 @@ export class BaseWallet {
|
|
|
1063
1073
|
}
|
|
1064
1074
|
return result;
|
|
1065
1075
|
}
|
|
1066
|
-
//#endregion Cashtokens
|
|
1067
|
-
sign(message, privateKey = undefined) {
|
|
1068
|
-
if (!privateKey) {
|
|
1069
|
-
throw new Error("Signing private key not provided");
|
|
1070
|
-
}
|
|
1071
|
-
return new SignedMessage().sign(message, privateKey);
|
|
1072
|
-
}
|
|
1073
|
-
// Convenience wrapper to verify interface
|
|
1074
|
-
verify(message, sig, address, publicKey) {
|
|
1075
|
-
if (!address && !publicKey) {
|
|
1076
|
-
throw new Error("Either address or publicKey must be provided for verification");
|
|
1077
|
-
}
|
|
1078
|
-
return new SignedMessage().verify(message, sig, address, publicKey);
|
|
1079
|
-
}
|
|
1080
1076
|
}
|
|
1081
1077
|
/**
|
|
1082
1078
|
* _checkContextSafety (internal) if running in nodejs, will disable saving
|