mainnet-js 2.7.31 → 3.0.0-next.0
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/index.html +1 -1
- package/dist/{mainnet-2.7.31.js → mainnet-3.0.0-next.0.js} +718 -678
- package/dist/module/cache/MemoryCache.d.ts +0 -1
- package/dist/module/cache/MemoryCache.d.ts.map +1 -1
- package/dist/module/cache/MemoryCache.js +5 -7
- package/dist/module/cache/MemoryCache.js.map +1 -1
- package/dist/module/cache/index.d.ts +1 -0
- package/dist/module/cache/index.d.ts.map +1 -1
- package/dist/module/cache/index.js +1 -0
- package/dist/module/cache/index.js.map +1 -1
- package/dist/module/cache/walletCache.d.ts +39 -0
- package/dist/module/cache/walletCache.d.ts.map +1 -0
- package/dist/module/cache/walletCache.js +141 -0
- package/dist/module/cache/walletCache.js.map +1 -0
- package/dist/module/history/{electrumTransformer.d.ts → getHistory.d.ts} +3 -3
- package/dist/module/history/getHistory.d.ts.map +1 -0
- package/dist/module/history/{electrumTransformer.js → getHistory.js} +47 -14
- package/dist/module/history/getHistory.js.map +1 -0
- package/dist/module/index.d.ts +3 -1
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +3 -1
- package/dist/module/index.js.map +1 -1
- package/dist/module/interface.d.ts +7 -1
- package/dist/module/interface.d.ts.map +1 -1
- package/dist/module/interface.js.map +1 -1
- package/dist/module/message/interface.d.ts +2 -2
- package/dist/module/message/interface.d.ts.map +1 -1
- package/dist/module/message/interface.js +0 -3
- package/dist/module/message/interface.js.map +1 -1
- package/dist/module/message/signed.d.ts +5 -5
- package/dist/module/message/signed.d.ts.map +1 -1
- package/dist/module/message/signed.js +14 -14
- package/dist/module/message/signed.js.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.d.ts +2 -2
- package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.js +2 -1
- package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
- package/dist/module/network/NetworkProvider.d.ts +2 -2
- package/dist/module/network/NetworkProvider.d.ts.map +1 -1
- package/dist/module/network/constant.js +4 -4
- package/dist/module/network/constant.js.map +1 -1
- package/dist/module/transaction/Wif.d.ts +21 -19
- package/dist/module/transaction/Wif.d.ts.map +1 -1
- package/dist/module/transaction/Wif.js +18 -15
- package/dist/module/transaction/Wif.js.map +1 -1
- package/dist/module/util/checkUtxos.d.ts +2 -2
- package/dist/module/util/checkUtxos.d.ts.map +1 -1
- package/dist/module/util/checkUtxos.js +11 -12
- package/dist/module/util/checkUtxos.js.map +1 -1
- package/dist/module/util/deriveCashaddr.d.ts.map +1 -1
- package/dist/module/util/deriveCashaddr.js +6 -0
- 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/hd.d.ts +3 -0
- package/dist/module/util/hd.d.ts.map +1 -0
- package/dist/module/util/hd.js +11 -0
- package/dist/module/util/hd.js.map +1 -0
- package/dist/module/util/index.d.ts +1 -0
- package/dist/module/util/index.d.ts.map +1 -1
- package/dist/module/util/index.js +1 -0
- package/dist/module/util/index.js.map +1 -1
- package/dist/module/util/sumUtxoValue.d.ts +3 -3
- package/dist/module/util/sumUtxoValue.d.ts.map +1 -1
- package/dist/module/util/sumUtxoValue.js.map +1 -1
- package/dist/module/wallet/Base.d.ts +37 -93
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +83 -250
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/HDWallet.d.ts +164 -0
- package/dist/module/wallet/HDWallet.d.ts.map +1 -0
- package/dist/module/wallet/HDWallet.js +486 -0
- package/dist/module/wallet/HDWallet.js.map +1 -0
- package/dist/module/wallet/Watch.d.ts +151 -0
- package/dist/module/wallet/Watch.d.ts.map +1 -0
- package/dist/module/wallet/Watch.js +307 -0
- package/dist/module/wallet/Watch.js.map +1 -0
- package/dist/module/wallet/Wif.d.ts +23 -29
- package/dist/module/wallet/Wif.d.ts.map +1 -1
- package/dist/module/wallet/Wif.js +204 -267
- package/dist/module/wallet/Wif.js.map +1 -1
- package/dist/module/wallet/createWallet.d.ts +7 -1
- package/dist/module/wallet/createWallet.d.ts.map +1 -1
- package/dist/module/wallet/createWallet.js +26 -17
- package/dist/module/wallet/createWallet.js.map +1 -1
- package/dist/module/wallet/interface.d.ts +3 -3
- package/dist/module/wallet/interface.d.ts.map +1 -1
- package/dist/module/wallet/model.d.ts +3 -3
- package/dist/module/wallet/model.d.ts.map +1 -1
- package/dist/module/wallet/model.js +2 -18
- package/dist/module/wallet/model.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/cache/MemoryCache.ts +5 -5
- package/src/cache/index.ts +1 -0
- package/src/cache/walletCache.ts +252 -0
- package/src/history/{electrumTransformer.test.ts → getHistory.test.ts} +6 -19
- package/src/history/{electrumTransformer.ts → getHistory.ts} +63 -15
- package/src/index.ts +3 -1
- package/src/interface.ts +8 -1
- package/src/message/interface.ts +2 -28
- package/src/message/signed.test.ts +56 -48
- package/src/message/signed.ts +15 -18
- package/src/network/ElectrumNetworkProvider.ts +4 -4
- package/src/network/NetworkProvider.ts +2 -2
- package/src/network/Rpc.test.ts +1 -1
- package/src/network/constant.ts +4 -4
- package/src/transaction/Wif.ts +41 -35
- package/src/util/checkUtxos.ts +21 -26
- package/src/util/deriveCashaddr.ts +8 -0
- package/src/util/deriveNetwork.ts +1 -1
- package/src/util/derivePublicKeyHash.test.ts +0 -13
- package/src/util/hd.ts +16 -0
- package/src/util/index.ts +1 -0
- package/src/util/sumUtxoValue.ts +5 -5
- package/src/wallet/Base.ts +123 -332
- package/src/wallet/HDWallet.test.ts +372 -0
- package/src/wallet/HDWallet.ts +764 -0
- package/src/wallet/Watch.ts +447 -0
- package/src/wallet/Wif.ts +258 -283
- package/src/wallet/createWallet.ts +28 -18
- package/src/wallet/interface.ts +3 -3
- package/src/wallet/model.test.ts +2 -2
- package/src/wallet/model.ts +6 -23
- package/dist/module/history/electrumTransformer.d.ts.map +0 -1
- package/dist/module/history/electrumTransformer.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { prefixFromNetworkMap } from "../enum.js";
|
|
2
|
+
import { getNamedWalletId } from "./Base.js";
|
|
3
|
+
import { HDWallet, RegTestHDWallet, TestNetHDWallet } from "./HDWallet.js";
|
|
2
4
|
import {
|
|
3
|
-
getNamedWalletId,
|
|
4
5
|
RegTestWatchWallet,
|
|
5
6
|
TestNetWatchWallet,
|
|
6
7
|
WatchWallet,
|
|
7
|
-
} from "./
|
|
8
|
+
} from "./Watch.js";
|
|
8
9
|
import {
|
|
9
10
|
RegTestWallet,
|
|
10
11
|
RegTestWifWallet,
|
|
@@ -50,6 +51,17 @@ export const walletClassMap = {
|
|
|
50
51
|
return RegTestWatchWallet;
|
|
51
52
|
},
|
|
52
53
|
},
|
|
54
|
+
hd: {
|
|
55
|
+
mainnet: () => {
|
|
56
|
+
return HDWallet;
|
|
57
|
+
},
|
|
58
|
+
testnet: () => {
|
|
59
|
+
return TestNetHDWallet;
|
|
60
|
+
},
|
|
61
|
+
regtest: () => {
|
|
62
|
+
return RegTestHDWallet;
|
|
63
|
+
},
|
|
64
|
+
},
|
|
53
65
|
};
|
|
54
66
|
|
|
55
67
|
/**
|
|
@@ -104,7 +116,7 @@ export async function namedWallet(
|
|
|
104
116
|
wallet = await walletClassMap[walletType][networkType]().named(name);
|
|
105
117
|
checkWalletTypeAndNetwork(wallet, walletType, networkType);
|
|
106
118
|
} else {
|
|
107
|
-
|
|
119
|
+
const walletId = await getNamedWalletId(name, dbName);
|
|
108
120
|
if (walletId !== undefined) {
|
|
109
121
|
wallet = await walletFromId(walletId);
|
|
110
122
|
wallet.name = name;
|
|
@@ -148,21 +160,20 @@ export async function replaceNamedWallet(body): Promise<Wallet> {
|
|
|
148
160
|
* @returns A promise to a new wallet object
|
|
149
161
|
*/
|
|
150
162
|
export async function createWallet(body: WalletRequestI): Promise<Wallet> {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
let networkType = body.network ? body.network : "mainnet";
|
|
163
|
+
const walletType = body.type ? body.type : "seed";
|
|
164
|
+
const networkType = body.network ? body.network : "mainnet";
|
|
154
165
|
|
|
155
166
|
// Named wallets are saved in the database
|
|
156
167
|
if (body.name && body.name.length > 0) {
|
|
157
|
-
wallet = await namedWallet(body.name, walletType, networkType);
|
|
168
|
+
const wallet = await namedWallet(body.name, walletType, networkType);
|
|
158
169
|
return wallet;
|
|
159
170
|
}
|
|
160
171
|
// This handles unsaved/unnamed wallets
|
|
161
172
|
else {
|
|
162
|
-
|
|
163
|
-
wallet =
|
|
173
|
+
const walletClass = walletClassMap[walletType][networkType]();
|
|
174
|
+
const wallet = new walletClass();
|
|
164
175
|
wallet.walletType = walletType;
|
|
165
|
-
return wallet.
|
|
176
|
+
return wallet.initialize();
|
|
166
177
|
}
|
|
167
178
|
}
|
|
168
179
|
|
|
@@ -174,7 +185,7 @@ export async function createWallet(body: WalletRequestI): Promise<Wallet> {
|
|
|
174
185
|
export async function createWalletResponse(
|
|
175
186
|
walletRequest: WalletRequestI
|
|
176
187
|
): Promise<WalletResponseI> {
|
|
177
|
-
|
|
188
|
+
const wallet = await createWallet(walletRequest);
|
|
178
189
|
if (wallet) {
|
|
179
190
|
return asJsonResponse(wallet);
|
|
180
191
|
} else {
|
|
@@ -212,17 +223,16 @@ function asJsonResponse(wallet: Wallet): WalletResponseI {
|
|
|
212
223
|
* @returns A wallet
|
|
213
224
|
*/
|
|
214
225
|
export async function walletFromId(walletId: string): Promise<any> {
|
|
215
|
-
|
|
226
|
+
const [walletType, network, name]: string[] = walletId.split(":");
|
|
216
227
|
|
|
217
228
|
if (walletType === "named") {
|
|
218
229
|
return await namedWallet(name, walletType, network);
|
|
219
230
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
let wallet = await createWallet(walletRequest);
|
|
231
|
+
|
|
232
|
+
const walletClass = walletClassMap[walletType][network]();
|
|
233
|
+
const wallet = new walletClass();
|
|
234
|
+
wallet.walletType = walletType;
|
|
235
|
+
|
|
226
236
|
await (wallet as any).fromId(walletId);
|
|
227
237
|
return wallet;
|
|
228
238
|
}
|
package/src/wallet/interface.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { WalletTypeEnum, FeePaidByEnum } from "./enum.js";
|
|
|
2
2
|
import { NetworkEnum } from "../enum.js";
|
|
3
3
|
import { ElectrumRawTransaction } from "../network/interface.js";
|
|
4
4
|
import { BalanceResponse } from "../util/balanceObjectFromSatoshi.js";
|
|
5
|
-
import {
|
|
5
|
+
import { Utxo } from "../interface.js";
|
|
6
6
|
|
|
7
7
|
export interface WalletRequestI {
|
|
8
8
|
name?: string;
|
|
@@ -44,7 +44,7 @@ export interface WalletInfoI {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export interface SendRequestOptionsI {
|
|
47
|
-
utxoIds?: string[] |
|
|
47
|
+
utxoIds?: string[] | Utxo[];
|
|
48
48
|
changeAddress?: string;
|
|
49
49
|
slpSemiAware?: boolean; // a flag which requires an utxo to have more than 546 sats to be spendable and counted in the balance
|
|
50
50
|
queryBalance?: boolean;
|
|
@@ -52,7 +52,7 @@ export interface SendRequestOptionsI {
|
|
|
52
52
|
feePaidBy?: FeePaidByEnum;
|
|
53
53
|
checkTokenQuantities?: boolean; // true
|
|
54
54
|
tokenOperation?: "send" | "genesis" | "mint" | "burn"; // undefined. internal use only
|
|
55
|
-
ensureUtxos?:
|
|
55
|
+
ensureUtxos?: Utxo[]; // ensure these inputs will be consumed in the transaction
|
|
56
56
|
buildUnsigned?: boolean; // false
|
|
57
57
|
}
|
|
58
58
|
|
package/src/wallet/model.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UtxoId } from "../interface";
|
|
2
2
|
import { fromUtxoId, toUtxoId } from "./model";
|
|
3
3
|
|
|
4
4
|
test("Should serialize utxo", () => {
|
|
@@ -22,6 +22,6 @@ test("Should deserialize utxo", () => {
|
|
|
22
22
|
txid: "this",
|
|
23
23
|
vout: 42,
|
|
24
24
|
satoshis: 1,
|
|
25
|
-
} as
|
|
25
|
+
} as UtxoId;
|
|
26
26
|
expect(toUtxoId(u)).toBe("this:42:1");
|
|
27
27
|
});
|
package/src/wallet/model.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BalanceResponse } from "../util/balanceObjectFromSatoshi.js";
|
|
2
2
|
import { sanitizeUnit } from "../util/sanitizeUnit.js";
|
|
3
3
|
import { UnitEnum } from "../enum.js";
|
|
4
|
-
import { NFTCapability,
|
|
4
|
+
import { NFTCapability, Utxo, UtxoId } from "../interface.js";
|
|
5
5
|
import { DELIMITER } from "../constant.js";
|
|
6
6
|
import {
|
|
7
7
|
Input,
|
|
@@ -343,34 +343,17 @@ export class XPubKey {
|
|
|
343
343
|
}
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
export const fromUtxoId = (utxoId: string):
|
|
347
|
-
const [txid, vout, satoshis
|
|
348
|
-
utxoId.split(DELIMITER);
|
|
346
|
+
export const fromUtxoId = (utxoId: string): UtxoId => {
|
|
347
|
+
const [txid, vout, satoshis] = utxoId.split(DELIMITER);
|
|
349
348
|
return {
|
|
350
349
|
satoshis: satoshis ? parseInt(satoshis) : 0,
|
|
351
350
|
vout: parseInt(vout),
|
|
352
351
|
txid,
|
|
353
|
-
|
|
354
|
-
? {
|
|
355
|
-
tokenId,
|
|
356
|
-
amount: BigInt(amount),
|
|
357
|
-
capability: capability || undefined,
|
|
358
|
-
commitment: commitment || undefined,
|
|
359
|
-
}
|
|
360
|
-
: undefined,
|
|
361
|
-
} as UtxoI;
|
|
352
|
+
} as UtxoId;
|
|
362
353
|
};
|
|
363
354
|
|
|
364
|
-
export const toUtxoId = (utxo:
|
|
365
|
-
return [
|
|
366
|
-
utxo.txid,
|
|
367
|
-
utxo.vout,
|
|
368
|
-
utxo.satoshis,
|
|
369
|
-
utxo.token?.tokenId,
|
|
370
|
-
utxo.token?.amount,
|
|
371
|
-
utxo.token?.capability,
|
|
372
|
-
utxo.token?.commitment,
|
|
373
|
-
]
|
|
355
|
+
export const toUtxoId = (utxo: UtxoId): string => {
|
|
356
|
+
return [utxo.txid, utxo.vout, utxo.satoshis]
|
|
374
357
|
.join(DELIMITER)
|
|
375
358
|
.replace(/:+$/, "");
|
|
376
359
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electrumTransformer.d.ts","sourceRoot":"","sources":["../../../src/history/electrumTransformer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAG5D,OAAO,EAAE,sBAAsB,EAAY,MAAM,gBAAgB,CAAC;AASlE,eAAO,MAAM,iBAAiB,qEAQ3B;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,OAAO,CAAC,sBAAsB,EAAE,CAkTnC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electrumTransformer.js","sourceRoot":"","sources":["../../../src/history/electrumTransformer.ts"],"names":[],"mappings":"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"}
|