@atomicfinance/bitcoin-wallet-provider 3.4.7 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +1 -0
- package/CHANGELOG.md +23 -0
- package/dist/BitcoinWalletProvider.d.ts +107 -109
- package/dist/BitcoinWalletProvider.js +17 -13
- package/dist/BitcoinWalletProvider.js.map +1 -1
- package/lib/BitcoinWalletProvider.js +596 -0
- package/lib/index.js +9 -0
- package/package.json +4 -4
package/.turbo/turbo-build.log
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @atomicfinance/bitcoin-wallet-provider
|
|
2
2
|
|
|
3
|
+
## 3.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9aa93d3: Fix types for bitcoin-rpc-provider
|
|
8
|
+
- Updated dependencies [9aa93d3]
|
|
9
|
+
- @atomicfinance/bitcoin-utils@3.5.1
|
|
10
|
+
- @atomicfinance/provider@3.5.1
|
|
11
|
+
- @atomicfinance/types@3.5.1
|
|
12
|
+
|
|
13
|
+
## 3.5.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- fb279b7: Update dependencies for Node LTS and fix payout index edge cases
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [fb279b7]
|
|
22
|
+
- @atomicfinance/bitcoin-utils@3.5.0
|
|
23
|
+
- @atomicfinance/provider@3.5.0
|
|
24
|
+
- @atomicfinance/types@3.5.0
|
|
25
|
+
|
|
3
26
|
## 3.4.7
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
|
@@ -5,7 +5,7 @@ import { Address, bitcoin as bT, SendOptions, Transaction } from '@atomicfinance
|
|
|
5
5
|
import { BitcoinNetwork } from 'bitcoin-networks';
|
|
6
6
|
import * as bitcoin from 'bitcoinjs-lib';
|
|
7
7
|
import { BIP32Interface } from 'bitcoinjs-lib';
|
|
8
|
-
|
|
8
|
+
type UnusedAddressesBlacklist = {
|
|
9
9
|
[address: string]: true;
|
|
10
10
|
};
|
|
11
11
|
export declare enum AddressSearchType {
|
|
@@ -13,114 +13,112 @@ export declare enum AddressSearchType {
|
|
|
13
13
|
CHANGE = 1,
|
|
14
14
|
EXTERNAL_OR_CHANGE = 2
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
type DerivationCache = {
|
|
17
17
|
[index: string]: Address;
|
|
18
18
|
};
|
|
19
|
-
|
|
20
|
-
declare const _default: <T extends Constructor<Provider>>(superclass: T) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
} & T;
|
|
19
|
+
type Constructor<T = unknown> = new (...args: any[]) => T;
|
|
20
|
+
declare const _default: <T extends Constructor<Provider>>(superclass: T) => (abstract new (...args: any[]) => {
|
|
21
|
+
_network: BitcoinNetwork;
|
|
22
|
+
_unusedAddressesBlacklist: UnusedAddressesBlacklist;
|
|
23
|
+
_maxAddressesToDerive: number;
|
|
24
|
+
_baseDerivationPath: string;
|
|
25
|
+
_addressType: bT.AddressType;
|
|
26
|
+
_addressIndex: number;
|
|
27
|
+
_changeAddressIndex: number;
|
|
28
|
+
_derivationCache: DerivationCache;
|
|
29
|
+
baseDerivationNode(): Promise<BIP32Interface>;
|
|
30
|
+
_buildTransaction(targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[]): Promise<{
|
|
31
|
+
hex: string;
|
|
32
|
+
fee: number;
|
|
33
|
+
}>;
|
|
34
|
+
_buildSweepTransaction(externalChangeAddress: string, feePerByte?: number): Promise<{
|
|
35
|
+
hex: string;
|
|
36
|
+
fee: number;
|
|
37
|
+
}>;
|
|
38
|
+
signPSBT(data: string, inputs: bT.PsbtInputTarget[]): Promise<string>;
|
|
39
|
+
signBatchP2SHTransaction(inputs: [
|
|
40
|
+
{
|
|
41
|
+
inputTxHex: string;
|
|
42
|
+
index: number;
|
|
43
|
+
vout: any;
|
|
44
|
+
outputScript: Buffer;
|
|
45
|
+
}
|
|
46
|
+
], addresses: string, tx: any, lockTime?: number, segwit?: boolean): Promise<Buffer[]>;
|
|
47
|
+
getDerivationCache(): DerivationCache;
|
|
48
|
+
setDerivationCache(derivationCache: DerivationCache): Promise<void>;
|
|
49
|
+
sendOptionsToOutputs(transactions: SendOptions[]): bT.OutputTarget[];
|
|
50
|
+
buildTransaction(output: bT.OutputTarget, feePerByte: number): Promise<{
|
|
51
|
+
hex: string;
|
|
52
|
+
fee: number;
|
|
53
|
+
}>;
|
|
54
|
+
buildBatchTransaction(outputs: bT.OutputTarget[]): Promise<{
|
|
55
|
+
hex: string;
|
|
56
|
+
fee: number;
|
|
57
|
+
}>;
|
|
58
|
+
_sendTransaction(transactions: bT.OutputTarget[], feePerByte?: number): Promise<Transaction<bT.Transaction>>;
|
|
59
|
+
sendTransaction(options: SendOptions): Promise<Transaction<bT.Transaction>>;
|
|
60
|
+
sendBatchTransaction(transactions: SendOptions[]): Promise<Transaction<bT.Transaction>>;
|
|
61
|
+
buildSweepTransaction(externalChangeAddress: string, feePerByte: number): Promise<{
|
|
62
|
+
hex: string;
|
|
63
|
+
fee: number;
|
|
64
|
+
}>;
|
|
65
|
+
sendSweepTransaction(externalChangeAddress: Address | string, feePerByte: number): Promise<Transaction<bT.Transaction>>;
|
|
66
|
+
getUnusedAddressesBlacklist(): UnusedAddressesBlacklist;
|
|
67
|
+
setUnusedAddressesBlacklist(unusedAddressesBlacklist: UnusedAddressesBlacklist): void;
|
|
68
|
+
setMaxAddressesToDerive(maxAddressesToDerive: number): void;
|
|
69
|
+
getMaxAddressesToDerive(): number;
|
|
70
|
+
updateTransactionFee(tx: Transaction<bitcoin.Transaction> | string, newFeePerByte: number): Promise<Transaction<bT.Transaction>>;
|
|
71
|
+
getUnusedAddress(change?: boolean, numAddressPerCall?: number): Promise<any>;
|
|
72
|
+
_getUsedUnusedAddresses(numAddressPerCall: number, addressType: any): Promise<{
|
|
73
|
+
usedAddresses: any[];
|
|
74
|
+
unusedAddress: {
|
|
75
|
+
change: any;
|
|
76
|
+
nonChange: any;
|
|
77
|
+
};
|
|
78
|
+
firstUnusedAddress: any;
|
|
79
|
+
}>;
|
|
80
|
+
getWalletAddress(address: string): Promise<Address>;
|
|
81
|
+
getAddressFromPublicKey(publicKey: Buffer): string;
|
|
82
|
+
getPaymentVariantFromPublicKey(publicKey: Buffer): bitcoin.payments.Payment;
|
|
83
|
+
getDerivationPathAddress(path: string): Promise<Address>;
|
|
84
|
+
/**
|
|
85
|
+
* getAddresses is an optimized version of upstream CAL's getAddresses.
|
|
86
|
+
* It removes the call to `asyncSetImmediate()`, speeding up the function by a factor of 6x.
|
|
87
|
+
*
|
|
88
|
+
* @param startingIndex
|
|
89
|
+
* @param numAddresses
|
|
90
|
+
* @param change
|
|
91
|
+
* @returns {Promise<Address[]>}
|
|
92
|
+
*/
|
|
93
|
+
getAddresses(startingIndex?: number, numAddresses?: number, change?: boolean): Promise<Address[]>;
|
|
94
|
+
/**
|
|
95
|
+
* findAddress is an optimized version of upstream CAL's findAddress.
|
|
96
|
+
*
|
|
97
|
+
* It searches through both change and non-change addresses (if change arg is not provided) each iteration.
|
|
98
|
+
*
|
|
99
|
+
* This is in contrast to the original findAddress function which searches
|
|
100
|
+
* through all non-change addresses before moving on to change addresses.
|
|
101
|
+
*
|
|
102
|
+
* @param addresses
|
|
103
|
+
* @returns {Promise<Address>}
|
|
104
|
+
*/
|
|
105
|
+
findAddress(addresses: string[], change?: boolean | null): Promise<Address>;
|
|
106
|
+
getUsedAddresses(numAddressPerCall?: number): Promise<any[]>;
|
|
107
|
+
withCachedUtxos(func: () => any): Promise<any>;
|
|
108
|
+
getTotalFee(opts: SendOptions, max: boolean): Promise<number>;
|
|
109
|
+
getTotalFees(transactions: SendOptions[], max: boolean): Promise<any>;
|
|
110
|
+
getInputsForAmount(_targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number, sweep?: boolean): Promise<{
|
|
111
|
+
inputs: bT.UTXO[];
|
|
112
|
+
change: CoinSelectTarget;
|
|
113
|
+
outputs: CoinSelectTarget[];
|
|
114
|
+
fee: number;
|
|
115
|
+
}>;
|
|
116
|
+
getInputsForDualFunding(collaterals: number[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number): Promise<{
|
|
117
|
+
inputs: import("@node-dlc/core").UTXO[];
|
|
118
|
+
fee: bigint;
|
|
119
|
+
}>;
|
|
120
|
+
client: import("@atomicfinance/types").IClient;
|
|
121
|
+
setClient(client?: import("@atomicfinance/types").IClient): void;
|
|
122
|
+
getMethod(method: string, requestor?: any): (...args: any[]) => any;
|
|
123
|
+
}) & T;
|
|
126
124
|
export default _default;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -74,7 +78,7 @@ exports.default = (superclass) => {
|
|
|
74
78
|
transactions.forEach((tx) => {
|
|
75
79
|
if (tx.to && tx.value && tx.value.gt(0)) {
|
|
76
80
|
targets.push({
|
|
77
|
-
address: utils_1.addressToString(tx.to),
|
|
81
|
+
address: (0, utils_1.addressToString)(tx.to),
|
|
78
82
|
value: tx.value.toNumber(),
|
|
79
83
|
});
|
|
80
84
|
}
|
|
@@ -100,7 +104,7 @@ exports.default = (superclass) => {
|
|
|
100
104
|
async _sendTransaction(transactions, feePerByte) {
|
|
101
105
|
const { hex, fee } = await this._buildTransaction(transactions, feePerByte);
|
|
102
106
|
await this.getMethod('sendRawTransaction')(hex);
|
|
103
|
-
return bitcoin_utils_1.normalizeTransactionObject(bitcoin_utils_1.decodeRawTransaction(hex, this._network), fee);
|
|
107
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
104
108
|
}
|
|
105
109
|
async sendTransaction(options) {
|
|
106
110
|
return this._sendTransaction(this.sendOptionsToOutputs([options]), options.fee);
|
|
@@ -112,9 +116,9 @@ exports.default = (superclass) => {
|
|
|
112
116
|
return this._buildSweepTransaction(externalChangeAddress, feePerByte);
|
|
113
117
|
}
|
|
114
118
|
async sendSweepTransaction(externalChangeAddress, feePerByte) {
|
|
115
|
-
const { hex, fee } = await this._buildSweepTransaction(utils_1.addressToString(externalChangeAddress), feePerByte);
|
|
119
|
+
const { hex, fee } = await this._buildSweepTransaction((0, utils_1.addressToString)(externalChangeAddress), feePerByte);
|
|
116
120
|
await this.getMethod('sendRawTransaction')(hex);
|
|
117
|
-
return bitcoin_utils_1.normalizeTransactionObject(bitcoin_utils_1.decodeRawTransaction(hex, this._network), fee);
|
|
121
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
118
122
|
}
|
|
119
123
|
getUnusedAddressesBlacklist() {
|
|
120
124
|
return this._unusedAddressesBlacklist;
|
|
@@ -147,7 +151,7 @@ exports.default = (superclass) => {
|
|
|
147
151
|
}));
|
|
148
152
|
const { hex, fee } = await this._buildTransaction(transactions, newFeePerByte, fixedInputs);
|
|
149
153
|
await this.getMethod('sendRawTransaction')(hex);
|
|
150
|
-
return bitcoin_utils_1.normalizeTransactionObject(bitcoin_utils_1.decodeRawTransaction(hex, this._network), fee);
|
|
154
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
151
155
|
}
|
|
152
156
|
async getUnusedAddress(change = false, numAddressPerCall = 100) {
|
|
153
157
|
const addressType = change ? CHANGE_ADDRESS : NONCHANGE_ADDRESS;
|
|
@@ -337,11 +341,11 @@ exports.default = (superclass) => {
|
|
|
337
341
|
}
|
|
338
342
|
async withCachedUtxos(func) {
|
|
339
343
|
const originalGetMethod = this.getMethod;
|
|
340
|
-
const memoizedGetFeePerByte = memoizee_1.default(this.getMethod('getFeePerByte'), {
|
|
344
|
+
const memoizedGetFeePerByte = (0, memoizee_1.default)(this.getMethod('getFeePerByte'), {
|
|
341
345
|
primitive: true,
|
|
342
346
|
});
|
|
343
|
-
const memoizedGetUnspentTransactions = memoizee_1.default(this.getMethod('getUnspentTransactions'), { primitive: true });
|
|
344
|
-
const memoizedGetAddressTransactionCounts = memoizee_1.default(this.getMethod('getAddressTransactionCounts'), {
|
|
347
|
+
const memoizedGetUnspentTransactions = (0, memoizee_1.default)(this.getMethod('getUnspentTransactions'), { primitive: true });
|
|
348
|
+
const memoizedGetAddressTransactionCounts = (0, memoizee_1.default)(this.getMethod('getAddressTransactionCounts'), {
|
|
345
349
|
primitive: true,
|
|
346
350
|
});
|
|
347
351
|
this.getMethod = (method, requestor = this) => {
|
|
@@ -410,7 +414,7 @@ exports.default = (superclass) => {
|
|
|
410
414
|
if (fixedInputs.length > 0) {
|
|
411
415
|
for (const input of fixedInputs) {
|
|
412
416
|
const txHex = await this.getMethod('getRawTransactionByHash')(input.txid);
|
|
413
|
-
const tx = bitcoin_utils_1.decodeRawTransaction(txHex, this._network);
|
|
417
|
+
const tx = (0, bitcoin_utils_1.decodeRawTransaction)(txHex, this._network);
|
|
414
418
|
const value = new types_1.BigNumber(tx.vout[input.vout].value)
|
|
415
419
|
.times(1e8)
|
|
416
420
|
.toNumber();
|
|
@@ -475,7 +479,7 @@ exports.default = (superclass) => {
|
|
|
475
479
|
script: target.script,
|
|
476
480
|
}));
|
|
477
481
|
}
|
|
478
|
-
const { inputs, outputs, change, fee } = bitcoin_utils_1.selectCoins(utxos, targets, Math.ceil(feePerByte), fixedUtxos);
|
|
482
|
+
const { inputs, outputs, change, fee } = (0, bitcoin_utils_1.selectCoins)(utxos, targets, Math.ceil(feePerByte), fixedUtxos);
|
|
479
483
|
if (inputs && outputs) {
|
|
480
484
|
return {
|
|
481
485
|
inputs,
|
|
@@ -529,7 +533,7 @@ exports.default = (superclass) => {
|
|
|
529
533
|
if (fixedInputs.length > 0) {
|
|
530
534
|
for (const input of fixedInputs) {
|
|
531
535
|
const txHex = await this.getMethod('getRawTransactionByHash')(input.txid);
|
|
532
|
-
const tx = bitcoin_utils_1.decodeRawTransaction(txHex, this._network);
|
|
536
|
+
const tx = (0, bitcoin_utils_1.decodeRawTransaction)(txHex, this._network);
|
|
533
537
|
const value = new types_1.BigNumber(tx.vout[input.vout].value)
|
|
534
538
|
.times(1e8)
|
|
535
539
|
.toNumber();
|
|
@@ -564,7 +568,7 @@ exports.default = (superclass) => {
|
|
|
564
568
|
if (feePerByte < minRelayFee) {
|
|
565
569
|
throw new Error(`Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`);
|
|
566
570
|
}
|
|
567
|
-
const { fee, inputs } = core_1.dualFundingCoinSelect(utxos, collaterals.map((c) => BigInt(c)), BigInt(feePerByte));
|
|
571
|
+
const { fee, inputs } = (0, core_1.dualFundingCoinSelect)(utxos, collaterals.map((c) => BigInt(c)), BigInt(feePerByte));
|
|
568
572
|
if (inputs.length > 0) {
|
|
569
573
|
return {
|
|
570
574
|
inputs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitcoinWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinWalletProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BitcoinWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinWalletProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,596 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.AddressSearchType = void 0;
|
|
30
|
+
const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
|
|
31
|
+
const errors_1 = require("@atomicfinance/errors");
|
|
32
|
+
const types_1 = require("@atomicfinance/types");
|
|
33
|
+
const utils_1 = require("@atomicfinance/utils");
|
|
34
|
+
const core_1 = require("@node-dlc/core");
|
|
35
|
+
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
36
|
+
const memoizee_1 = __importDefault(require("memoizee"));
|
|
37
|
+
const ADDRESS_GAP = 30;
|
|
38
|
+
const NONCHANGE_ADDRESS = 0;
|
|
39
|
+
const CHANGE_ADDRESS = 1;
|
|
40
|
+
const NONCHANGE_OR_CHANGE_ADDRESS = 2;
|
|
41
|
+
var AddressSearchType;
|
|
42
|
+
(function (AddressSearchType) {
|
|
43
|
+
AddressSearchType[AddressSearchType["EXTERNAL"] = 0] = "EXTERNAL";
|
|
44
|
+
AddressSearchType[AddressSearchType["CHANGE"] = 1] = "CHANGE";
|
|
45
|
+
AddressSearchType[AddressSearchType["EXTERNAL_OR_CHANGE"] = 2] = "EXTERNAL_OR_CHANGE";
|
|
46
|
+
})(AddressSearchType = exports.AddressSearchType || (exports.AddressSearchType = {}));
|
|
47
|
+
exports.default = (superclass) => {
|
|
48
|
+
class BitcoinWalletProvider extends superclass {
|
|
49
|
+
constructor(...args) {
|
|
50
|
+
const options = args[0];
|
|
51
|
+
const { network, baseDerivationPath, addressType = types_1.bitcoin.AddressType.BECH32, addressIndex = 0, changeAddressIndex = 0, } = options;
|
|
52
|
+
const addressTypes = Object.values(types_1.bitcoin.AddressType);
|
|
53
|
+
if (!addressTypes.includes(addressType)) {
|
|
54
|
+
throw new Error(`addressType must be one of ${addressTypes.join(',')}`);
|
|
55
|
+
}
|
|
56
|
+
super(options);
|
|
57
|
+
this._baseDerivationPath = baseDerivationPath;
|
|
58
|
+
this._network = network;
|
|
59
|
+
this._addressType = addressType;
|
|
60
|
+
this._addressIndex = addressIndex;
|
|
61
|
+
this._changeAddressIndex = changeAddressIndex;
|
|
62
|
+
this._derivationCache = {};
|
|
63
|
+
this._unusedAddressesBlacklist = {};
|
|
64
|
+
this._maxAddressesToDerive = 5000;
|
|
65
|
+
}
|
|
66
|
+
getDerivationCache() {
|
|
67
|
+
return this._derivationCache;
|
|
68
|
+
}
|
|
69
|
+
async setDerivationCache(derivationCache) {
|
|
70
|
+
const address = await this.getDerivationPathAddress(Object.keys(derivationCache)[0]);
|
|
71
|
+
if (derivationCache[address.derivationPath].address !== address.address) {
|
|
72
|
+
throw new Error(`derivationCache at ${address.derivationPath} does not match`);
|
|
73
|
+
}
|
|
74
|
+
this._derivationCache = derivationCache;
|
|
75
|
+
}
|
|
76
|
+
sendOptionsToOutputs(transactions) {
|
|
77
|
+
const targets = [];
|
|
78
|
+
transactions.forEach((tx) => {
|
|
79
|
+
if (tx.to && tx.value && tx.value.gt(0)) {
|
|
80
|
+
targets.push({
|
|
81
|
+
address: (0, utils_1.addressToString)(tx.to),
|
|
82
|
+
value: tx.value.toNumber(),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (tx.data) {
|
|
86
|
+
const scriptBuffer = bitcoin.script.compile([
|
|
87
|
+
bitcoin.script.OPS.OP_RETURN,
|
|
88
|
+
Buffer.from(tx.data, 'hex'),
|
|
89
|
+
]);
|
|
90
|
+
targets.push({
|
|
91
|
+
value: 0,
|
|
92
|
+
script: scriptBuffer,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return targets;
|
|
97
|
+
}
|
|
98
|
+
async buildTransaction(output, feePerByte) {
|
|
99
|
+
return this._buildTransaction([output], feePerByte);
|
|
100
|
+
}
|
|
101
|
+
async buildBatchTransaction(outputs) {
|
|
102
|
+
return this._buildTransaction(outputs);
|
|
103
|
+
}
|
|
104
|
+
async _sendTransaction(transactions, feePerByte) {
|
|
105
|
+
const { hex, fee } = await this._buildTransaction(transactions, feePerByte);
|
|
106
|
+
await this.getMethod('sendRawTransaction')(hex);
|
|
107
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
108
|
+
}
|
|
109
|
+
async sendTransaction(options) {
|
|
110
|
+
return this._sendTransaction(this.sendOptionsToOutputs([options]), options.fee);
|
|
111
|
+
}
|
|
112
|
+
async sendBatchTransaction(transactions) {
|
|
113
|
+
return this._sendTransaction(this.sendOptionsToOutputs(transactions));
|
|
114
|
+
}
|
|
115
|
+
async buildSweepTransaction(externalChangeAddress, feePerByte) {
|
|
116
|
+
return this._buildSweepTransaction(externalChangeAddress, feePerByte);
|
|
117
|
+
}
|
|
118
|
+
async sendSweepTransaction(externalChangeAddress, feePerByte) {
|
|
119
|
+
const { hex, fee } = await this._buildSweepTransaction((0, utils_1.addressToString)(externalChangeAddress), feePerByte);
|
|
120
|
+
await this.getMethod('sendRawTransaction')(hex);
|
|
121
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
122
|
+
}
|
|
123
|
+
getUnusedAddressesBlacklist() {
|
|
124
|
+
return this._unusedAddressesBlacklist;
|
|
125
|
+
}
|
|
126
|
+
setUnusedAddressesBlacklist(unusedAddressesBlacklist) {
|
|
127
|
+
this._unusedAddressesBlacklist = unusedAddressesBlacklist;
|
|
128
|
+
}
|
|
129
|
+
setMaxAddressesToDerive(maxAddressesToDerive) {
|
|
130
|
+
this._maxAddressesToDerive = maxAddressesToDerive;
|
|
131
|
+
}
|
|
132
|
+
getMaxAddressesToDerive() {
|
|
133
|
+
return this._maxAddressesToDerive;
|
|
134
|
+
}
|
|
135
|
+
async updateTransactionFee(tx, newFeePerByte) {
|
|
136
|
+
const txHash = typeof tx === 'string' ? tx : tx.hash;
|
|
137
|
+
const transaction = (await this.getMethod('getTransactionByHash')(txHash))._raw;
|
|
138
|
+
const fixedInputs = [transaction.vin[0]]; // TODO: should this pick more than 1 input? RBF doesn't mandate it
|
|
139
|
+
const lookupAddresses = transaction.vout.map((vout) => vout.scriptPubKey.addresses[0]);
|
|
140
|
+
const changeAddress = await this.findAddress(lookupAddresses, true);
|
|
141
|
+
const changeOutput = transaction.vout.find((vout) => vout.scriptPubKey.addresses[0] === changeAddress.address);
|
|
142
|
+
let outputs = transaction.vout;
|
|
143
|
+
if (changeOutput) {
|
|
144
|
+
outputs = outputs.filter((vout) => vout.scriptPubKey.addresses[0] !==
|
|
145
|
+
changeOutput.scriptPubKey.addresses[0]);
|
|
146
|
+
}
|
|
147
|
+
// TODO more checks?
|
|
148
|
+
const transactions = outputs.map((output) => ({
|
|
149
|
+
address: output.scriptPubKey.addresses[0],
|
|
150
|
+
value: new types_1.BigNumber(output.value).times(1e8).toNumber(),
|
|
151
|
+
}));
|
|
152
|
+
const { hex, fee } = await this._buildTransaction(transactions, newFeePerByte, fixedInputs);
|
|
153
|
+
await this.getMethod('sendRawTransaction')(hex);
|
|
154
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
155
|
+
}
|
|
156
|
+
async getUnusedAddress(change = false, numAddressPerCall = 100) {
|
|
157
|
+
const addressType = change ? CHANGE_ADDRESS : NONCHANGE_ADDRESS;
|
|
158
|
+
const key = change ? 'change' : 'nonChange';
|
|
159
|
+
const address = await this._getUsedUnusedAddresses(numAddressPerCall, addressType).then(({ unusedAddress }) => unusedAddress[key]);
|
|
160
|
+
this._unusedAddressesBlacklist[address.address] = true;
|
|
161
|
+
return address;
|
|
162
|
+
}
|
|
163
|
+
async _getUsedUnusedAddresses(numAddressPerCall = 100, addressType) {
|
|
164
|
+
const usedAddresses = [];
|
|
165
|
+
const addressCountMap = { change: 0, nonChange: 0 };
|
|
166
|
+
const unusedAddressMap = { change: null, nonChange: null };
|
|
167
|
+
let addrList;
|
|
168
|
+
let addressIndex = this._addressIndex;
|
|
169
|
+
let changeAddressIndex = this._changeAddressIndex;
|
|
170
|
+
let changeAddresses = [];
|
|
171
|
+
let nonChangeAddresses = [];
|
|
172
|
+
/* eslint-disable no-unmodified-loop-condition */
|
|
173
|
+
while ((addressType === NONCHANGE_OR_CHANGE_ADDRESS &&
|
|
174
|
+
(addressCountMap.change < ADDRESS_GAP ||
|
|
175
|
+
addressCountMap.nonChange < ADDRESS_GAP)) ||
|
|
176
|
+
(addressType === NONCHANGE_ADDRESS &&
|
|
177
|
+
addressCountMap.nonChange < ADDRESS_GAP) ||
|
|
178
|
+
(addressType === CHANGE_ADDRESS && addressCountMap.change < ADDRESS_GAP)) {
|
|
179
|
+
/* eslint-enable no-unmodified-loop-condition */
|
|
180
|
+
addrList = [];
|
|
181
|
+
if ((addressType === NONCHANGE_OR_CHANGE_ADDRESS ||
|
|
182
|
+
addressType === CHANGE_ADDRESS) &&
|
|
183
|
+
addressCountMap.change < ADDRESS_GAP) {
|
|
184
|
+
// Scanning for change addr
|
|
185
|
+
changeAddresses = await this.client.wallet.getAddresses(changeAddressIndex, numAddressPerCall, true);
|
|
186
|
+
addrList = addrList.concat(changeAddresses);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
changeAddresses = [];
|
|
190
|
+
}
|
|
191
|
+
if ((addressType === NONCHANGE_OR_CHANGE_ADDRESS ||
|
|
192
|
+
addressType === NONCHANGE_ADDRESS) &&
|
|
193
|
+
addressCountMap.nonChange < ADDRESS_GAP) {
|
|
194
|
+
// Scanning for non change addr
|
|
195
|
+
nonChangeAddresses = await this.getAddresses(addressIndex, numAddressPerCall, false);
|
|
196
|
+
addrList = addrList.concat(nonChangeAddresses);
|
|
197
|
+
}
|
|
198
|
+
const transactionCounts = await this.getMethod('getAddressTransactionCounts')(addrList);
|
|
199
|
+
for (const address of addrList) {
|
|
200
|
+
const isUsed = transactionCounts[address.address] > 0 ||
|
|
201
|
+
this._unusedAddressesBlacklist[address.address];
|
|
202
|
+
const isChangeAddress = changeAddresses.find((a) => address.address === a.address);
|
|
203
|
+
const key = isChangeAddress ? 'change' : 'nonChange';
|
|
204
|
+
if (isUsed) {
|
|
205
|
+
usedAddresses.push(address);
|
|
206
|
+
addressCountMap[key] = 0;
|
|
207
|
+
unusedAddressMap[key] = null;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
addressCountMap[key]++;
|
|
211
|
+
if (!unusedAddressMap[key]) {
|
|
212
|
+
unusedAddressMap[key] = address;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
addressIndex += numAddressPerCall;
|
|
217
|
+
changeAddressIndex += numAddressPerCall;
|
|
218
|
+
}
|
|
219
|
+
let firstUnusedAddress;
|
|
220
|
+
const indexNonChange = unusedAddressMap.nonChange
|
|
221
|
+
? unusedAddressMap.nonChange.index
|
|
222
|
+
: Infinity;
|
|
223
|
+
const indexChange = unusedAddressMap.change
|
|
224
|
+
? unusedAddressMap.change.index
|
|
225
|
+
: Infinity;
|
|
226
|
+
if (indexNonChange <= indexChange)
|
|
227
|
+
firstUnusedAddress = unusedAddressMap.nonChange;
|
|
228
|
+
else
|
|
229
|
+
firstUnusedAddress = unusedAddressMap.change;
|
|
230
|
+
return {
|
|
231
|
+
usedAddresses,
|
|
232
|
+
unusedAddress: unusedAddressMap,
|
|
233
|
+
firstUnusedAddress,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
async getWalletAddress(address) {
|
|
237
|
+
const foundAddress = await this.findAddress([address]);
|
|
238
|
+
if (foundAddress)
|
|
239
|
+
return foundAddress;
|
|
240
|
+
throw new Error('Wallet does not contain address');
|
|
241
|
+
}
|
|
242
|
+
getAddressFromPublicKey(publicKey) {
|
|
243
|
+
return this.getPaymentVariantFromPublicKey(publicKey).address;
|
|
244
|
+
}
|
|
245
|
+
getPaymentVariantFromPublicKey(publicKey) {
|
|
246
|
+
if (this._addressType === types_1.bitcoin.AddressType.LEGACY) {
|
|
247
|
+
return bitcoin.payments.p2pkh({
|
|
248
|
+
pubkey: publicKey,
|
|
249
|
+
network: this._network,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
else if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT) {
|
|
253
|
+
return bitcoin.payments.p2sh({
|
|
254
|
+
redeem: bitcoin.payments.p2wpkh({
|
|
255
|
+
pubkey: publicKey,
|
|
256
|
+
network: this._network,
|
|
257
|
+
}),
|
|
258
|
+
network: this._network,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else if (this._addressType === types_1.bitcoin.AddressType.BECH32) {
|
|
262
|
+
return bitcoin.payments.p2wpkh({
|
|
263
|
+
pubkey: publicKey,
|
|
264
|
+
network: this._network,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async getDerivationPathAddress(path) {
|
|
269
|
+
if (path in this._derivationCache) {
|
|
270
|
+
return this._derivationCache[path];
|
|
271
|
+
}
|
|
272
|
+
const baseDerivationNode = await this.baseDerivationNode();
|
|
273
|
+
const subPath = path.replace(this._baseDerivationPath + '/', '');
|
|
274
|
+
const publicKey = baseDerivationNode.derivePath(subPath).publicKey;
|
|
275
|
+
const address = this.getAddressFromPublicKey(publicKey);
|
|
276
|
+
const addressObject = new types_1.Address({
|
|
277
|
+
address,
|
|
278
|
+
publicKey: publicKey.toString('hex'),
|
|
279
|
+
derivationPath: path,
|
|
280
|
+
});
|
|
281
|
+
this._derivationCache[path] = addressObject;
|
|
282
|
+
return addressObject;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* getAddresses is an optimized version of upstream CAL's getAddresses.
|
|
286
|
+
* It removes the call to `asyncSetImmediate()`, speeding up the function by a factor of 6x.
|
|
287
|
+
*
|
|
288
|
+
* @param startingIndex
|
|
289
|
+
* @param numAddresses
|
|
290
|
+
* @param change
|
|
291
|
+
* @returns {Promise<Address[]>}
|
|
292
|
+
*/
|
|
293
|
+
async getAddresses(startingIndex = 0, numAddresses = 1, change = false) {
|
|
294
|
+
if (numAddresses < 1) {
|
|
295
|
+
throw new Error('You must return at least one address');
|
|
296
|
+
}
|
|
297
|
+
const addresses = [];
|
|
298
|
+
const lastIndex = startingIndex + numAddresses;
|
|
299
|
+
const changeVal = change ? '1' : '0';
|
|
300
|
+
for (let currentIndex = startingIndex; currentIndex < lastIndex; currentIndex++) {
|
|
301
|
+
const subPath = changeVal + '/' + currentIndex;
|
|
302
|
+
const path = this._baseDerivationPath + '/' + subPath;
|
|
303
|
+
const addressObject = await this.getDerivationPathAddress(path);
|
|
304
|
+
addresses.push(addressObject);
|
|
305
|
+
}
|
|
306
|
+
return addresses;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* findAddress is an optimized version of upstream CAL's findAddress.
|
|
310
|
+
*
|
|
311
|
+
* It searches through both change and non-change addresses (if change arg is not provided) each iteration.
|
|
312
|
+
*
|
|
313
|
+
* This is in contrast to the original findAddress function which searches
|
|
314
|
+
* through all non-change addresses before moving on to change addresses.
|
|
315
|
+
*
|
|
316
|
+
* @param addresses
|
|
317
|
+
* @returns {Promise<Address>}
|
|
318
|
+
*/
|
|
319
|
+
async findAddress(addresses, change = null) {
|
|
320
|
+
const addressesPerCall = 20;
|
|
321
|
+
let index = 0;
|
|
322
|
+
while (index < this._maxAddressesToDerive) {
|
|
323
|
+
const walletAddresses = [];
|
|
324
|
+
if (change === null || change === false) {
|
|
325
|
+
walletAddresses.push(...(await this.getAddresses(index, addressesPerCall, false)));
|
|
326
|
+
}
|
|
327
|
+
if (change === null || change === true) {
|
|
328
|
+
walletAddresses.push(...(await this.getAddresses(index, addressesPerCall, true)));
|
|
329
|
+
}
|
|
330
|
+
const walletAddress = walletAddresses.find((walletAddr) => addresses.find((addr) => walletAddr.address === addr));
|
|
331
|
+
if (walletAddress) {
|
|
332
|
+
// Increment max addresses to derive by 100 if found within 100 addresses of maxAddressesToDerive
|
|
333
|
+
this._maxAddressesToDerive = Math.max(this._maxAddressesToDerive, index + 100);
|
|
334
|
+
return walletAddress;
|
|
335
|
+
}
|
|
336
|
+
index += addressesPerCall;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
async getUsedAddresses(numAddressPerCall = 100) {
|
|
340
|
+
return this._getUsedUnusedAddresses(numAddressPerCall, AddressSearchType.EXTERNAL_OR_CHANGE).then(({ usedAddresses }) => usedAddresses);
|
|
341
|
+
}
|
|
342
|
+
async withCachedUtxos(func) {
|
|
343
|
+
const originalGetMethod = this.getMethod;
|
|
344
|
+
const memoizedGetFeePerByte = (0, memoizee_1.default)(this.getMethod('getFeePerByte'), {
|
|
345
|
+
primitive: true,
|
|
346
|
+
});
|
|
347
|
+
const memoizedGetUnspentTransactions = (0, memoizee_1.default)(this.getMethod('getUnspentTransactions'), { primitive: true });
|
|
348
|
+
const memoizedGetAddressTransactionCounts = (0, memoizee_1.default)(this.getMethod('getAddressTransactionCounts'), {
|
|
349
|
+
primitive: true,
|
|
350
|
+
});
|
|
351
|
+
this.getMethod = (method, requestor = this) => {
|
|
352
|
+
if (method === 'getFeePerByte')
|
|
353
|
+
return memoizedGetFeePerByte;
|
|
354
|
+
if (method === 'getUnspentTransactions')
|
|
355
|
+
return memoizedGetUnspentTransactions;
|
|
356
|
+
else if (method === 'getAddressTransactionCounts')
|
|
357
|
+
return memoizedGetAddressTransactionCounts;
|
|
358
|
+
else
|
|
359
|
+
return originalGetMethod.bind(this)(method, requestor);
|
|
360
|
+
};
|
|
361
|
+
const result = await func.bind(this)();
|
|
362
|
+
this.getMethod = originalGetMethod;
|
|
363
|
+
return result;
|
|
364
|
+
}
|
|
365
|
+
async getTotalFee(opts, max) {
|
|
366
|
+
const targets = this.sendOptionsToOutputs([opts]);
|
|
367
|
+
if (!max) {
|
|
368
|
+
const { fee } = await this.getInputsForAmount(targets, opts.fee);
|
|
369
|
+
return fee;
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
const { fee } = await this.getInputsForAmount(targets.filter((t) => !t.value), opts.fee, [], 100, true);
|
|
373
|
+
return fee;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
async getTotalFees(transactions, max) {
|
|
377
|
+
const fees = await this.withCachedUtxos(async () => {
|
|
378
|
+
const fees = {};
|
|
379
|
+
for (const tx of transactions) {
|
|
380
|
+
const fee = await this.getTotalFee(tx, max);
|
|
381
|
+
fees[tx.fee] = new types_1.BigNumber(fee);
|
|
382
|
+
}
|
|
383
|
+
return fees;
|
|
384
|
+
});
|
|
385
|
+
return fees;
|
|
386
|
+
}
|
|
387
|
+
async getInputsForAmount(_targets, feePerByte, fixedInputs = [], numAddressPerCall = 100, sweep = false) {
|
|
388
|
+
let addressIndex = 0;
|
|
389
|
+
let changeAddresses = [];
|
|
390
|
+
let externalAddresses = [];
|
|
391
|
+
const addressCountMap = {
|
|
392
|
+
change: 0,
|
|
393
|
+
nonChange: 0,
|
|
394
|
+
};
|
|
395
|
+
const feePerBytePromise = this.getMethod('getFeePerByte')();
|
|
396
|
+
let utxos = [];
|
|
397
|
+
while (addressCountMap.change < ADDRESS_GAP ||
|
|
398
|
+
addressCountMap.nonChange < ADDRESS_GAP) {
|
|
399
|
+
let addrList = [];
|
|
400
|
+
if (addressCountMap.change < ADDRESS_GAP) {
|
|
401
|
+
// Scanning for change addr
|
|
402
|
+
changeAddresses = await this.getAddresses(addressIndex, numAddressPerCall, true);
|
|
403
|
+
addrList = addrList.concat(changeAddresses);
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
changeAddresses = [];
|
|
407
|
+
}
|
|
408
|
+
if (addressCountMap.nonChange < ADDRESS_GAP) {
|
|
409
|
+
// Scanning for non change addr
|
|
410
|
+
externalAddresses = await this.getAddresses(addressIndex, numAddressPerCall, false);
|
|
411
|
+
addrList = addrList.concat(externalAddresses);
|
|
412
|
+
}
|
|
413
|
+
const fixedUtxos = [];
|
|
414
|
+
if (fixedInputs.length > 0) {
|
|
415
|
+
for (const input of fixedInputs) {
|
|
416
|
+
const txHex = await this.getMethod('getRawTransactionByHash')(input.txid);
|
|
417
|
+
const tx = (0, bitcoin_utils_1.decodeRawTransaction)(txHex, this._network);
|
|
418
|
+
const value = new types_1.BigNumber(tx.vout[input.vout].value)
|
|
419
|
+
.times(1e8)
|
|
420
|
+
.toNumber();
|
|
421
|
+
const address = tx.vout[input.vout].scriptPubKey.addresses[0];
|
|
422
|
+
const walletAddress = await this.getWalletAddress(address);
|
|
423
|
+
const utxo = {
|
|
424
|
+
...input,
|
|
425
|
+
value,
|
|
426
|
+
address,
|
|
427
|
+
derivationPath: walletAddress.derivationPath,
|
|
428
|
+
};
|
|
429
|
+
fixedUtxos.push(utxo);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (!sweep || fixedUtxos.length === 0) {
|
|
433
|
+
const _utxos = await this.getMethod('getUnspentTransactions')(addrList);
|
|
434
|
+
utxos.push(..._utxos.map((utxo) => {
|
|
435
|
+
const addr = addrList.find((a) => a.address === utxo.address);
|
|
436
|
+
return {
|
|
437
|
+
...utxo,
|
|
438
|
+
derivationPath: addr.derivationPath,
|
|
439
|
+
};
|
|
440
|
+
}));
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
utxos = fixedUtxos;
|
|
444
|
+
}
|
|
445
|
+
const utxoBalance = utxos.reduce((a, b) => a + (b.value || 0), 0);
|
|
446
|
+
const transactionCounts = await this.getMethod('getAddressTransactionCounts')(addrList);
|
|
447
|
+
if (!feePerByte)
|
|
448
|
+
feePerByte = await feePerBytePromise;
|
|
449
|
+
const minRelayFee = await this.getMethod('getMinRelayFee')();
|
|
450
|
+
if (feePerByte < minRelayFee) {
|
|
451
|
+
throw new Error(`Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`);
|
|
452
|
+
}
|
|
453
|
+
let targets;
|
|
454
|
+
if (sweep) {
|
|
455
|
+
const outputBalance = _targets.reduce((a, b) => a + (b['value'] || 0), 0);
|
|
456
|
+
const sweepOutputSize = 39;
|
|
457
|
+
const paymentOutputSize = _targets.filter((t) => t.value && t.address).length * 39;
|
|
458
|
+
const scriptOutputSize = _targets
|
|
459
|
+
.filter((t) => !t.value && t.script)
|
|
460
|
+
.reduce((size, t) => size + 39 + t.script.byteLength, 0);
|
|
461
|
+
const outputSize = sweepOutputSize + paymentOutputSize + scriptOutputSize;
|
|
462
|
+
const inputSize = utxos.length * 153;
|
|
463
|
+
const sweepFee = feePerByte * (inputSize + outputSize);
|
|
464
|
+
const amountToSend = new types_1.BigNumber(utxoBalance).minus(sweepFee);
|
|
465
|
+
targets = _targets.map((target) => ({
|
|
466
|
+
id: 'main',
|
|
467
|
+
value: target.value,
|
|
468
|
+
script: target.script,
|
|
469
|
+
}));
|
|
470
|
+
targets.push({
|
|
471
|
+
id: 'main',
|
|
472
|
+
value: amountToSend.minus(outputBalance).toNumber(),
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
targets = _targets.map((target) => ({
|
|
477
|
+
id: 'main',
|
|
478
|
+
value: target.value,
|
|
479
|
+
script: target.script,
|
|
480
|
+
}));
|
|
481
|
+
}
|
|
482
|
+
const { inputs, outputs, change, fee } = (0, bitcoin_utils_1.selectCoins)(utxos, targets, Math.ceil(feePerByte), fixedUtxos);
|
|
483
|
+
if (inputs && outputs) {
|
|
484
|
+
return {
|
|
485
|
+
inputs,
|
|
486
|
+
change,
|
|
487
|
+
outputs,
|
|
488
|
+
fee,
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
for (const address of addrList) {
|
|
492
|
+
const isUsed = transactionCounts[address.address];
|
|
493
|
+
const isChangeAddress = changeAddresses.find((a) => address.address === a.address);
|
|
494
|
+
const key = isChangeAddress ? 'change' : 'nonChange';
|
|
495
|
+
if (isUsed) {
|
|
496
|
+
addressCountMap[key] = 0;
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
addressCountMap[key]++;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
addressIndex += numAddressPerCall;
|
|
503
|
+
}
|
|
504
|
+
throw new errors_1.InsufficientBalanceError('Not enough balance');
|
|
505
|
+
}
|
|
506
|
+
async getInputsForDualFunding(collaterals, feePerByte, fixedInputs = [], numAddressPerCall = 100) {
|
|
507
|
+
let addressIndex = 0;
|
|
508
|
+
let changeAddresses = [];
|
|
509
|
+
let externalAddresses = [];
|
|
510
|
+
const addressCountMap = {
|
|
511
|
+
change: 0,
|
|
512
|
+
nonChange: 0,
|
|
513
|
+
};
|
|
514
|
+
const feePerBytePromise = this.getMethod('getFeePerByte')();
|
|
515
|
+
let utxos = [];
|
|
516
|
+
while (addressCountMap.change < ADDRESS_GAP ||
|
|
517
|
+
addressCountMap.nonChange < ADDRESS_GAP) {
|
|
518
|
+
let addrList = [];
|
|
519
|
+
if (addressCountMap.change < ADDRESS_GAP) {
|
|
520
|
+
// Scanning for change addr
|
|
521
|
+
changeAddresses = await this.getAddresses(addressIndex, numAddressPerCall, true);
|
|
522
|
+
addrList = addrList.concat(changeAddresses);
|
|
523
|
+
}
|
|
524
|
+
else {
|
|
525
|
+
changeAddresses = [];
|
|
526
|
+
}
|
|
527
|
+
if (addressCountMap.nonChange < ADDRESS_GAP) {
|
|
528
|
+
// Scanning for non change addr
|
|
529
|
+
externalAddresses = await this.getAddresses(addressIndex, numAddressPerCall, false);
|
|
530
|
+
addrList = addrList.concat(externalAddresses);
|
|
531
|
+
}
|
|
532
|
+
const fixedUtxos = [];
|
|
533
|
+
if (fixedInputs.length > 0) {
|
|
534
|
+
for (const input of fixedInputs) {
|
|
535
|
+
const txHex = await this.getMethod('getRawTransactionByHash')(input.txid);
|
|
536
|
+
const tx = (0, bitcoin_utils_1.decodeRawTransaction)(txHex, this._network);
|
|
537
|
+
const value = new types_1.BigNumber(tx.vout[input.vout].value)
|
|
538
|
+
.times(1e8)
|
|
539
|
+
.toNumber();
|
|
540
|
+
const address = tx.vout[input.vout].scriptPubKey.addresses[0];
|
|
541
|
+
const walletAddress = await this.getWalletAddress(address);
|
|
542
|
+
const utxo = {
|
|
543
|
+
...input,
|
|
544
|
+
value,
|
|
545
|
+
address,
|
|
546
|
+
derivationPath: walletAddress.derivationPath,
|
|
547
|
+
};
|
|
548
|
+
fixedUtxos.push(utxo);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
if (fixedUtxos.length === 0) {
|
|
552
|
+
const _utxos = await this.getMethod('getUnspentTransactions')(addrList);
|
|
553
|
+
utxos.push(..._utxos.map((utxo) => {
|
|
554
|
+
const addr = addrList.find((a) => a.address === utxo.address);
|
|
555
|
+
return {
|
|
556
|
+
...utxo,
|
|
557
|
+
derivationPath: addr.derivationPath,
|
|
558
|
+
};
|
|
559
|
+
}));
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
utxos = fixedUtxos;
|
|
563
|
+
}
|
|
564
|
+
const transactionCounts = await this.getMethod('getAddressTransactionCounts')(addrList);
|
|
565
|
+
if (!feePerByte)
|
|
566
|
+
feePerByte = await feePerBytePromise;
|
|
567
|
+
const minRelayFee = await this.getMethod('getMinRelayFee')();
|
|
568
|
+
if (feePerByte < minRelayFee) {
|
|
569
|
+
throw new Error(`Fee supplied (${feePerByte} sat/b) too low. Minimum relay fee is ${minRelayFee} sat/b`);
|
|
570
|
+
}
|
|
571
|
+
const { fee, inputs } = (0, core_1.dualFundingCoinSelect)(utxos, collaterals.map((c) => BigInt(c)), BigInt(feePerByte));
|
|
572
|
+
if (inputs.length > 0) {
|
|
573
|
+
return {
|
|
574
|
+
inputs,
|
|
575
|
+
fee,
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
for (const address of addrList) {
|
|
579
|
+
const isUsed = transactionCounts[address.address];
|
|
580
|
+
const isChangeAddress = changeAddresses.find((a) => address.address === a.address);
|
|
581
|
+
const key = isChangeAddress ? 'change' : 'nonChange';
|
|
582
|
+
if (isUsed) {
|
|
583
|
+
addressCountMap[key] = 0;
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
addressCountMap[key]++;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
addressIndex += numAddressPerCall;
|
|
590
|
+
}
|
|
591
|
+
throw new errors_1.InsufficientBalanceError('Not enough balance for dual funding');
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
return BitcoinWalletProvider;
|
|
595
|
+
};
|
|
596
|
+
//# sourceMappingURL=BitcoinWalletProvider.js.map
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
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.default = void 0;
|
|
7
|
+
var BitcoinWalletProvider_1 = require("./BitcoinWalletProvider");
|
|
8
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(BitcoinWalletProvider_1).default; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomicfinance/bitcoin-wallet-provider",
|
|
3
3
|
"umdName": "BitcoinWalletProvider",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.1",
|
|
5
5
|
"description": "Bitcoin Abstraction Layer Wallet Provider",
|
|
6
6
|
"author": "Atomic Finance <info@atomic.finance>",
|
|
7
7
|
"homepage": "",
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"lint:fix": "../../node_modules/.bin/eslint --fix --ignore-path ../../.eslintignore -c ../../.eslintrc.js ."
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@atomicfinance/bitcoin-utils": "^3.
|
|
19
|
-
"@atomicfinance/provider": "^3.
|
|
20
|
-
"@atomicfinance/types": "^3.
|
|
18
|
+
"@atomicfinance/bitcoin-utils": "^3.5.1",
|
|
19
|
+
"@atomicfinance/provider": "^3.5.1",
|
|
20
|
+
"@atomicfinance/types": "^3.5.1",
|
|
21
21
|
"@node-dlc/core": "0.23.6",
|
|
22
22
|
"bitcoin-networks": "^1.0.0",
|
|
23
23
|
"bitcoinjs-lib": "5.2.0",
|