@atomicfinance/bitcoin-js-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.
|
@@ -5,7 +5,7 @@ import { BIP32Interface } from 'bip32';
|
|
|
5
5
|
import { BitcoinNetwork } from 'bitcoin-networks';
|
|
6
6
|
import * as bitcoin from 'bitcoinjs-lib';
|
|
7
7
|
import { ECPairInterface } from 'bitcoinjs-lib';
|
|
8
|
-
|
|
8
|
+
type WalletProviderConstructor<T = Provider> = new (...args: any[]) => T;
|
|
9
9
|
interface BitcoinJsWalletProviderOptions {
|
|
10
10
|
network: BitcoinNetwork;
|
|
11
11
|
mnemonic: string;
|
|
@@ -14,7 +14,7 @@ interface BitcoinJsWalletProviderOptions {
|
|
|
14
14
|
addressIndex?: number;
|
|
15
15
|
changeAddressIndex?: number;
|
|
16
16
|
}
|
|
17
|
-
declare const BitcoinJsWalletProvider_base: (new (...args: any[]) => {
|
|
17
|
+
declare const BitcoinJsWalletProvider_base: (abstract new (...args: any[]) => {
|
|
18
18
|
_network: BitcoinNetwork;
|
|
19
19
|
_unusedAddressesBlacklist: {
|
|
20
20
|
[address: string]: true;
|
|
@@ -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];
|
|
@@ -34,7 +38,7 @@ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
|
34
38
|
const bitcoinjs_message_1 = require("bitcoinjs-message");
|
|
35
39
|
const secp256k1_1 = __importDefault(require("secp256k1"));
|
|
36
40
|
const FEE_PER_BYTE_FALLBACK = 5;
|
|
37
|
-
class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider_1.default) {
|
|
41
|
+
class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(provider_1.default) {
|
|
38
42
|
constructor(options) {
|
|
39
43
|
const { network, mnemonic, baseDerivationPath, addressType = types_1.bitcoin.AddressType.BECH32, addressIndex = 0, changeAddressIndex = 0, } = options;
|
|
40
44
|
super({
|
|
@@ -51,8 +55,8 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
51
55
|
async seedNode() {
|
|
52
56
|
if (this._seedNode)
|
|
53
57
|
return this._seedNode;
|
|
54
|
-
const seed = await bip39_1.mnemonicToSeed(this._mnemonic);
|
|
55
|
-
this._seedNode = bip32_1.fromSeed(seed, this._network);
|
|
58
|
+
const seed = await (0, bip39_1.mnemonicToSeed)(this._mnemonic);
|
|
59
|
+
this._seedNode = (0, bip32_1.fromSeed)(seed, this._network);
|
|
56
60
|
return this._seedNode;
|
|
57
61
|
}
|
|
58
62
|
async baseDerivationNode() {
|
|
@@ -76,7 +80,7 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
76
80
|
async signMessage(message, from) {
|
|
77
81
|
const address = await this.getWalletAddress(from);
|
|
78
82
|
const keyPair = await this.keyPair(address.derivationPath);
|
|
79
|
-
const signature = await bitcoinjs_message_1.signAsync(message, keyPair.privateKey, keyPair.compressed);
|
|
83
|
+
const signature = await (0, bitcoinjs_message_1.signAsync)(message, keyPair.privateKey, keyPair.compressed);
|
|
80
84
|
return signature.toString('hex');
|
|
81
85
|
}
|
|
82
86
|
_createMultisigPayment(m, pubkeys) {
|
|
@@ -121,11 +125,11 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
121
125
|
* @returns a base64 encoded psbt string
|
|
122
126
|
*/
|
|
123
127
|
buildMultisigPSBT(m, pubkeys, inputs, outputs) {
|
|
124
|
-
assert_1.default(inputs.length > 0, 'no inputs found');
|
|
125
|
-
assert_1.default(outputs.length > 0, 'no outputs found');
|
|
128
|
+
(0, assert_1.default)(inputs.length > 0, 'no inputs found');
|
|
129
|
+
(0, assert_1.default)(outputs.length > 0, 'no outputs found');
|
|
126
130
|
const p2wsh = this._createMultisigPayment(m, pubkeys);
|
|
127
131
|
// Verify pubkeyhash for all inputs matches the p2wsh hash
|
|
128
|
-
assert_1.default(inputs.every((input) => p2wsh.output.toString('hex') === input.scriptPubKey), 'address pubkeyhash does not match input scriptPubKey');
|
|
132
|
+
(0, assert_1.default)(inputs.every((input) => p2wsh.output.toString('hex') === input.scriptPubKey), 'address pubkeyhash does not match input scriptPubKey');
|
|
129
133
|
// creator
|
|
130
134
|
const psbt = new bitcoin.Psbt({ network: this._network });
|
|
131
135
|
// updater
|
|
@@ -154,7 +158,7 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
154
158
|
async walletProcessPSBT(psbtString) {
|
|
155
159
|
const psbt = bitcoin.Psbt.fromBase64(psbtString);
|
|
156
160
|
await Promise.all(psbt.data.inputs.map(async (input, i) => {
|
|
157
|
-
assert_1.default(psbt.getInputType(i).slice(0, 5) === 'p2wsh', 'only accepts P2WSH inputs');
|
|
161
|
+
(0, assert_1.default)(psbt.getInputType(i).slice(0, 5) === 'p2wsh', 'only accepts P2WSH inputs');
|
|
158
162
|
const scriptStack = bitcoin.script.decompile(input.witnessScript);
|
|
159
163
|
const pubkeys = scriptStack.filter((data) => Buffer.isBuffer(data) && secp256k1_1.default.publicKeyVerify(data));
|
|
160
164
|
await Promise.all(pubkeys.map(async (key) => {
|
|
@@ -206,7 +210,7 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
206
210
|
async sendSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
|
|
207
211
|
const { hex, fee } = await this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
|
|
208
212
|
await this.getMethod('sendRawTransaction')(hex);
|
|
209
|
-
return bitcoin_utils_1.normalizeTransactionObject(bitcoin_utils_1.decodeRawTransaction(hex, this._network), fee);
|
|
213
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
210
214
|
}
|
|
211
215
|
async buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
|
|
212
216
|
return this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
|
|
@@ -255,7 +259,7 @@ class BitcoinJsWalletProvider extends bitcoin_wallet_provider_1.default(provider
|
|
|
255
259
|
if (amountToSend - outputBalance > 0) {
|
|
256
260
|
targets.push({ id: 'main', value: amountToSend - outputBalance });
|
|
257
261
|
}
|
|
258
|
-
return bitcoin_utils_1.selectCoins(fixedInputs, targets, Math.ceil(_feePerByte), fixedInputs);
|
|
262
|
+
return (0, bitcoin_utils_1.selectCoins)(fixedInputs, targets, Math.ceil(_feePerByte), fixedInputs);
|
|
259
263
|
}
|
|
260
264
|
async _buildTransactionWithoutUtxoCheck(outputs, feePerByte, fixedInputs) {
|
|
261
265
|
const network = this._network;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitcoinJsWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinJsWalletProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BitcoinJsWalletProvider.js","sourceRoot":"","sources":["../lib/BitcoinJsWalletProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAIsC;AACtC,qGAA2E;AAC3E,uEAA+C;AAC/C,gDAQ8B;AAC9B,oDAA4B;AAC5B,iCAAiD;AACjD,iCAAuC;AAEvC,uDAAyC;AACzC,iDAMuB;AACvB,yDAAoE;AACpE,0DAAkC;AAElC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAahC,MAAqB,uBAAwB,SAAQ,IAAA,iCAAqB,EACxE,kBAAqC,CACtC;IAKC,YAAY,OAAuC;QACjD,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,WAAW,GAAG,eAAE,CAAC,WAAW,CAAC,MAAM,EACnC,YAAY,GAAG,CAAC,EAChB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO,CAAC;QACZ,KAAK,CAAC;YACJ,OAAO;YACP,kBAAkB;YAClB,WAAW;YACX,YAAY;YACZ,kBAAkB;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAE/D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1C,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAc,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAA,gBAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,cAAsB;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9C,OAAO,sBAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,cAAsB;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAY;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAkB,EACxC,OAAO,EACP,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,UAAU,CACnB,CAAC;QACF,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB,CAAC,CAAS,EAAE,OAAiB;QACjD,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;YACtB,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,CAAC,MAAM,4BAA4B,CAAC,aAAa,CAC1F,CAAC;SACH;QACD,yBAAyB;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjC,CAAC,EAAE,CAAC;YACJ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YACnC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,CAAS,EAAE,OAAiB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;SACpD,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,iBAAiB,CACf,CAAS,EACT,OAAiB,EACjB,MAAe,EACf,OAAiB;QAEjB,IAAA,gBAAM,EAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC7C,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEtD,0DAA0D;QAC1D,IAAA,gBAAM,EACJ,MAAM,CAAC,KAAK,CACV,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,YAAY,CACtE,EACD,sDAAsD,CACvD,CAAC;QAEF,UAAU;QACV,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1D,UAAU;QACV,MAAM,CAAC,OAAO,CAAC,CAAC,KAAY,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;gBACzD,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,MAAM,CAAC,EAAE;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;YAC9C,IAAA,gBAAM,EACJ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,EAC5C,2BAA2B,CAC5B,CAAC;YAEF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CACnE,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACxB,8BAA8B;gBAC9B,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzD,MAAM,EAAE,GAAa;oBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC,CAAC;gBAEH,oDAAoD;gBACpD,MAAM,OAAO,GAAY,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAEjE,0CAA0C;gBAC1C,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,iBAAiB;gBACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAE3D,0BAA0B;gBAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7B,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,mCAAmC;QACzE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,UAAkB;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI;YACF,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,mCAAmC;YACzE,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAAC,OAAO,KAAK,EAAE;YACd,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,QAAQ,EAAE,KAAK;aAChB,CAAC;SACH;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE;YACtC,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kCAAkC,CACtC,qBAA6B,EAC7B,UAAkB,EAClB,QAAkB,EAClB,WAAoB;QAEpB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,oCAAoC,CAClE,qBAAqB,EACrB,UAAU,EACV,QAAQ,EACR,WAAW,CACZ,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,IAAA,0CAA0B,EAC/B,IAAA,oCAAoB,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,EACxC,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mCAAmC,CACvC,qBAA6B,EAC7B,UAAkB,EAClB,QAAkB,EAClB,WAAoB;QAKpB,OAAO,IAAI,CAAC,oCAAoC,CAC9C,qBAAqB,EACrB,UAAU,EACV,QAAQ,EACR,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oCAAoC,CACxC,qBAA6B,EAC7B,UAAkB,EAClB,WAAqB,EAAE,EACvB,WAAoB;QAKpB,MAAM,WAAW,GACf,UAAU;YACV,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,qBAAqB,CAAC;QACxB,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI;YACF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACnD,QAAQ,EACR,WAAW,EACV,WAAqC,EACtC,GAAG,EACH,IAAI,CACL,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,EAAE;gBAC1B,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;aACxE;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAE,eAAe,CAAC,MAAkB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;SAClD;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,MAAM,KAAK,CACT,6DAA6D,CAC9D,CAAC;aACH;YAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kCAAkC,CACnE,QAAQ,EACR,WAAW,EACX,WAAW,CACZ,CAAC;YACF,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACtE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;SAClD;QACD,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CACnC,CAAC,WAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAC5D,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,qBAAqB;YACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,iCAAiC,CAC3C,QAAQ,EACR,WAAW,EACX,MAAM,CACP,CAAC;IACJ,CAAC;IAED,kCAAkC,CAChC,QAAkB,EAClB,WAAmB,EACnB,WAAoB;QAOpB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAChB,WAAW;YACX,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B;QAEnG,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC,CAAC;QACJ,IAAI,YAAY,GAAG,aAAa,GAAG,CAAC,EAAE;YACpC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,CAAC,CAAC;SACnE;QAED,OAAO,IAAA,2BAAW,EAChB,WAAW,EACX,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EACtB,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iCAAiC,CACrC,OAAiB,EACjB,UAAkB,EAClB,WAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,kCAAkC,CACrD,OAAO,EACP,UAAU,EACV,WAAW,CACZ,CAAC;QACF,MAAM,MAAM,GAAG,WAAW,CAAC;QAE3B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,sBAAsB;YAC5C,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CACxD,OAAO,CAAC,SAAS,CAClB,CAAC;YAEF,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;SACxE;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CACxD,OAAO,CAAC,SAAS,CAClB,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,CAAC;YAE1B,MAAM,UAAU,GAAG;gBACjB,iBAAiB;gBACjB,GAAG,EAAE,CAAC;gBACN,OAAO;gBACP,YAAY,EAAE,CAAC;aAChB,CAAC;YAEF,IAAI,YAAY,EAAE;gBAChB,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aAC3C;YAED,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtB;QAED,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAA0B,EAC1B,UAAmB,EACnB,WAAwB;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC3D,OAAO,EACP,UAAU,EACV,WAAW,CACZ,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;SACJ;QAED,MAAM,IAAI,GAAG,IAAI,oBAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEnC,MAAM,YAAY,GAAG;YACnB,eAAE,CAAC,WAAW,CAAC,MAAM;YACrB,eAAE,CAAC,WAAW,CAAC,WAAW;SAC3B,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CACxD,OAAO,CAAC,SAAS,CAClB,CAAC;YAEF,MAAM,SAAS,GAAQ;gBACrB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrB,QAAQ,EAAE,CAAC;aACZ,CAAC;YAEF,IAAI,YAAY,EAAE;gBAChB,SAAS,CAAC,WAAW,GAAG;oBACtB,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;iBACvB,CAAC;aACH;iBAAM;gBACL,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAChE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACf,CAAC;gBACF,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;aAC3D;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,WAAW,EAAE;gBACpD,SAAS,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;aACvD;YAED,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAC1B;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;aACJ;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,qBAA6B,EAC7B,UAAkB;QAElB,IAAI,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,WAAW;YAAE,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC;QAExE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC/D,EAAE,EACF,WAAW,EACX,EAAE,EACF,GAAG,EACH,IAAI,CACL,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;SACH;QAED,MAAM,QAAQ,GAAG;YACf;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;aACxB;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,UAAU,EACT,MAAgC,CAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,MAA4B;QACvD,MAAM,IAAI,GAAG,oBAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACtC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,MAQC,EACD,SAAiB,EACjB,EAAO,EACP,SAAkB,EAClB,MAAgB;QAEhB,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY;gBAClC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY;gBACxB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,OAAO,CAAC;YACZ,IAAI,MAAM,EAAE;gBACV,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAC3B,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,EACtB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EACnB,2BAAoB,CAAC,WAAW,CACjC,CAAC;aACH;iBAAM;gBACL,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAC3B,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,EACtB,2BAAoB,CAAC,WAAW,CACjC,CAAC;aACH;YAED,MAAM,GAAG,GAAG,sBAAM,CAAC,SAAS,CAAC,MAAM,CACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EACzB,2BAAoB,CAAC,WAAW,CACjC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC;aAC3D,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,WAAW;YACvD,OAAO,aAAa,CAAC;aAClB,IAAI,IAAI,CAAC,YAAY,KAAK,eAAE,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA9mBD,0CA8mBC"}
|
|
@@ -0,0 +1,424 @@
|
|
|
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
|
+
const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
|
|
30
|
+
const bitcoin_wallet_provider_1 = __importDefault(require("@atomicfinance/bitcoin-wallet-provider"));
|
|
31
|
+
const provider_1 = __importDefault(require("@atomicfinance/provider"));
|
|
32
|
+
const types_1 = require("@atomicfinance/types");
|
|
33
|
+
const assert_1 = __importDefault(require("assert"));
|
|
34
|
+
const bip32_1 = require("bip32");
|
|
35
|
+
const bip39_1 = require("bip39");
|
|
36
|
+
const bitcoin = __importStar(require("bitcoinjs-lib"));
|
|
37
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
38
|
+
const bitcoinjs_message_1 = require("bitcoinjs-message");
|
|
39
|
+
const secp256k1_1 = __importDefault(require("secp256k1"));
|
|
40
|
+
const FEE_PER_BYTE_FALLBACK = 5;
|
|
41
|
+
class BitcoinJsWalletProvider extends (0, bitcoin_wallet_provider_1.default)(provider_1.default) {
|
|
42
|
+
constructor(options) {
|
|
43
|
+
const { network, mnemonic, baseDerivationPath, addressType = types_1.bitcoin.AddressType.BECH32, addressIndex = 0, changeAddressIndex = 0, } = options;
|
|
44
|
+
super({
|
|
45
|
+
network,
|
|
46
|
+
baseDerivationPath,
|
|
47
|
+
addressType,
|
|
48
|
+
addressIndex,
|
|
49
|
+
changeAddressIndex,
|
|
50
|
+
});
|
|
51
|
+
if (!mnemonic)
|
|
52
|
+
throw new Error('Mnemonic should not be empty');
|
|
53
|
+
this._mnemonic = mnemonic;
|
|
54
|
+
}
|
|
55
|
+
async seedNode() {
|
|
56
|
+
if (this._seedNode)
|
|
57
|
+
return this._seedNode;
|
|
58
|
+
const seed = await (0, bip39_1.mnemonicToSeed)(this._mnemonic);
|
|
59
|
+
this._seedNode = (0, bip32_1.fromSeed)(seed, this._network);
|
|
60
|
+
return this._seedNode;
|
|
61
|
+
}
|
|
62
|
+
async baseDerivationNode() {
|
|
63
|
+
if (this._baseDerivationNode)
|
|
64
|
+
return this._baseDerivationNode;
|
|
65
|
+
const baseNode = await this.seedNode();
|
|
66
|
+
this._baseDerivationNode = baseNode.derivePath(this._baseDerivationPath);
|
|
67
|
+
return this._baseDerivationNode;
|
|
68
|
+
}
|
|
69
|
+
async keyPair(derivationPath) {
|
|
70
|
+
const wif = await this._toWIF(derivationPath);
|
|
71
|
+
return bitcoinjs_lib_1.ECPair.fromWIF(wif, this._network);
|
|
72
|
+
}
|
|
73
|
+
async _toWIF(derivationPath) {
|
|
74
|
+
const node = await this.seedNode();
|
|
75
|
+
return node.derivePath(derivationPath).toWIF();
|
|
76
|
+
}
|
|
77
|
+
async exportPrivateKey() {
|
|
78
|
+
return this._toWIF(this._baseDerivationPath);
|
|
79
|
+
}
|
|
80
|
+
async signMessage(message, from) {
|
|
81
|
+
const address = await this.getWalletAddress(from);
|
|
82
|
+
const keyPair = await this.keyPair(address.derivationPath);
|
|
83
|
+
const signature = await (0, bitcoinjs_message_1.signAsync)(message, keyPair.privateKey, keyPair.compressed);
|
|
84
|
+
return signature.toString('hex');
|
|
85
|
+
}
|
|
86
|
+
_createMultisigPayment(m, pubkeys) {
|
|
87
|
+
if (m > pubkeys.length) {
|
|
88
|
+
throw new Error(`not enough keys supplied (got ${pubkeys.length} keys, but need at least ${m} to redeem)`);
|
|
89
|
+
}
|
|
90
|
+
// Create m-of-n multisig
|
|
91
|
+
const p2ms = bitcoin.payments.p2ms({
|
|
92
|
+
m: m,
|
|
93
|
+
pubkeys: pubkeys.map((key) => Buffer.from(key, 'hex')),
|
|
94
|
+
network: this._network,
|
|
95
|
+
});
|
|
96
|
+
// Create p2wsh for multisig
|
|
97
|
+
const p2wsh = bitcoin.payments.p2wsh({
|
|
98
|
+
redeem: p2ms,
|
|
99
|
+
network: this._network,
|
|
100
|
+
});
|
|
101
|
+
return p2wsh;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Creates a native-segwit multi-signature address (P2MS in P2WSH) with n signatures of m required keys
|
|
105
|
+
* https://developer.bitcoin.org/reference/rpc/createmultisig.html
|
|
106
|
+
* @param m the number of required signatures
|
|
107
|
+
* @param pubkeys n possible pubkeys in total
|
|
108
|
+
* @returns a json object containing the `address` and `redeemScript`
|
|
109
|
+
*/
|
|
110
|
+
createMultisig(m, pubkeys) {
|
|
111
|
+
const p2wsh = this._createMultisigPayment(m, pubkeys);
|
|
112
|
+
return {
|
|
113
|
+
address: p2wsh.address,
|
|
114
|
+
redeemScript: p2wsh.redeem?.output?.toString('hex'),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Creates a PSBT of a native-segwit multi-signature address (P2MS in P2WSH) with n signatures of m required keys
|
|
119
|
+
* https://developer.bitcoin.org/reference/rpc/createmultisig.html
|
|
120
|
+
* https://developer.bitcoin.org/reference/rpc/createpsbt.html
|
|
121
|
+
* @param m the number of required signatures
|
|
122
|
+
* @param pubkeys n possible pubkeys in total
|
|
123
|
+
* @param inputs the Inputs to the PSBT
|
|
124
|
+
* @param ouputs the Outputs to the PSBT
|
|
125
|
+
* @returns a base64 encoded psbt string
|
|
126
|
+
*/
|
|
127
|
+
buildMultisigPSBT(m, pubkeys, inputs, outputs) {
|
|
128
|
+
(0, assert_1.default)(inputs.length > 0, 'no inputs found');
|
|
129
|
+
(0, assert_1.default)(outputs.length > 0, 'no outputs found');
|
|
130
|
+
const p2wsh = this._createMultisigPayment(m, pubkeys);
|
|
131
|
+
// Verify pubkeyhash for all inputs matches the p2wsh hash
|
|
132
|
+
(0, assert_1.default)(inputs.every((input) => p2wsh.output.toString('hex') === input.scriptPubKey), 'address pubkeyhash does not match input scriptPubKey');
|
|
133
|
+
// creator
|
|
134
|
+
const psbt = new bitcoin.Psbt({ network: this._network });
|
|
135
|
+
// updater
|
|
136
|
+
inputs.forEach((input) => {
|
|
137
|
+
psbt.addInput({
|
|
138
|
+
hash: input.txid,
|
|
139
|
+
index: input.vout,
|
|
140
|
+
witnessUtxo: { script: p2wsh.output, value: input.value },
|
|
141
|
+
witnessScript: p2wsh.redeem.output,
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
outputs.forEach((output) => {
|
|
145
|
+
psbt.addOutput({
|
|
146
|
+
address: output.to,
|
|
147
|
+
value: output.value,
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
return psbt.toBase64();
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Update a PSBT with input information from our wallet and then sign inputs that we can sign for
|
|
154
|
+
* https://developer.bitcoin.org/reference/rpc/walletprocesspsbt.html
|
|
155
|
+
* @param psbt a base64 encoded psbt string (P2WSH only)
|
|
156
|
+
* @returns a base64 encoded signed psbt string
|
|
157
|
+
*/
|
|
158
|
+
async walletProcessPSBT(psbtString) {
|
|
159
|
+
const psbt = bitcoin.Psbt.fromBase64(psbtString);
|
|
160
|
+
await Promise.all(psbt.data.inputs.map(async (input, i) => {
|
|
161
|
+
(0, assert_1.default)(psbt.getInputType(i).slice(0, 5) === 'p2wsh', 'only accepts P2WSH inputs');
|
|
162
|
+
const scriptStack = bitcoin.script.decompile(input.witnessScript);
|
|
163
|
+
const pubkeys = scriptStack.filter((data) => Buffer.isBuffer(data) && secp256k1_1.default.publicKeyVerify(data));
|
|
164
|
+
await Promise.all(pubkeys.map(async (key) => {
|
|
165
|
+
// create address using pubkey
|
|
166
|
+
const { address: addressString } = bitcoin.payments.p2wpkh({
|
|
167
|
+
pubkey: key,
|
|
168
|
+
network: this._network,
|
|
169
|
+
});
|
|
170
|
+
// Retrieve address object from wallet using address
|
|
171
|
+
const address = await this.findAddress([addressString]);
|
|
172
|
+
// exit if address doesn't exist in wallet
|
|
173
|
+
if (!address)
|
|
174
|
+
return;
|
|
175
|
+
// derive keypair
|
|
176
|
+
const keyPair = await this.keyPair(address.derivationPath);
|
|
177
|
+
// sign PSBT using keypair
|
|
178
|
+
psbt.signInput(i, keyPair);
|
|
179
|
+
}));
|
|
180
|
+
}));
|
|
181
|
+
psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
|
|
182
|
+
return psbt.toBase64();
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Finalize the inputs of a PSBT. If the transaction is fully signed, it will
|
|
186
|
+
* produce a network serialized transaction which can be broadcast with sendrawtransaction
|
|
187
|
+
* https://developer.bitcoin.org/reference/rpc/finalizepsbt.html
|
|
188
|
+
* @param psbt a base64 encoded psbt string
|
|
189
|
+
* @returns a json object containing `psbt` in base64, `hex` for transaction and `complete` for if
|
|
190
|
+
* the transaction has a complete set of signatures
|
|
191
|
+
*/
|
|
192
|
+
finalizePSBT(psbtString) {
|
|
193
|
+
const psbt = bitcoin.Psbt.fromBase64(psbtString);
|
|
194
|
+
try {
|
|
195
|
+
psbt.validateSignaturesOfAllInputs(); // ensure all signatures are valid!
|
|
196
|
+
psbt.finalizeAllInputs();
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
return {
|
|
200
|
+
psbt: psbt.toBase64(),
|
|
201
|
+
complete: false,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
psbt: psbt.toBase64(),
|
|
206
|
+
hex: psbt.extractTransaction().toHex(),
|
|
207
|
+
complete: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async sendSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
|
|
211
|
+
const { hex, fee } = await this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
|
|
212
|
+
await this.getMethod('sendRawTransaction')(hex);
|
|
213
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)((0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network), fee);
|
|
214
|
+
}
|
|
215
|
+
async buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs) {
|
|
216
|
+
return this._buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs, fixedInputs);
|
|
217
|
+
}
|
|
218
|
+
async _buildSweepTransactionWithSetOutputs(externalChangeAddress, feePerByte, _outputs = [], fixedInputs) {
|
|
219
|
+
const _feePerByte = feePerByte ||
|
|
220
|
+
(await this.getMethod('getFeePerByte')()) ||
|
|
221
|
+
FEE_PER_BYTE_FALLBACK;
|
|
222
|
+
const inputs = [];
|
|
223
|
+
const outputs = [];
|
|
224
|
+
try {
|
|
225
|
+
const inputsForAmount = await this.getInputsForAmount(_outputs, _feePerByte, fixedInputs, 100, true);
|
|
226
|
+
if (inputsForAmount.change) {
|
|
227
|
+
throw Error('There should not be any change for sweeping transaction');
|
|
228
|
+
}
|
|
229
|
+
inputs.push(...(inputsForAmount.inputs || []));
|
|
230
|
+
outputs.push(...(inputsForAmount.outputs || []));
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
if (fixedInputs.length === 0) {
|
|
234
|
+
throw Error(`Inputs for amount doesn't exist and no fixedInputs provided`);
|
|
235
|
+
}
|
|
236
|
+
const inputsForAmount = await this._getInputForAmountWithoutUtxoCheck(_outputs, _feePerByte, fixedInputs);
|
|
237
|
+
inputs.push(...(inputsForAmount.inputs.map((utxo) => types_1.Input.fromUTXO(utxo)) || []));
|
|
238
|
+
outputs.push(...(inputsForAmount.outputs || []));
|
|
239
|
+
}
|
|
240
|
+
_outputs.forEach((output) => {
|
|
241
|
+
const spliceIndex = outputs.findIndex((sweepOutput) => output.value === sweepOutput.value);
|
|
242
|
+
outputs.splice(spliceIndex, 1);
|
|
243
|
+
});
|
|
244
|
+
_outputs.push({
|
|
245
|
+
to: externalChangeAddress,
|
|
246
|
+
value: outputs[0].value,
|
|
247
|
+
});
|
|
248
|
+
return this._buildTransactionWithoutUtxoCheck(_outputs, _feePerByte, inputs);
|
|
249
|
+
}
|
|
250
|
+
_getInputForAmountWithoutUtxoCheck(_outputs, _feePerByte, fixedInputs) {
|
|
251
|
+
const utxoBalance = fixedInputs.reduce((a, b) => a + (b['value'] || 0), 0);
|
|
252
|
+
const outputBalance = _outputs.reduce((a, b) => a + (b['value'] || 0), 0);
|
|
253
|
+
const amountToSend = utxoBalance -
|
|
254
|
+
_feePerByte * ((_outputs.length + 1) * 39 + fixedInputs.length * 153); // todo better calculation
|
|
255
|
+
const targets = _outputs.map((target, i) => ({
|
|
256
|
+
id: 'main',
|
|
257
|
+
value: target.value,
|
|
258
|
+
}));
|
|
259
|
+
if (amountToSend - outputBalance > 0) {
|
|
260
|
+
targets.push({ id: 'main', value: amountToSend - outputBalance });
|
|
261
|
+
}
|
|
262
|
+
return (0, bitcoin_utils_1.selectCoins)(fixedInputs, targets, Math.ceil(_feePerByte), fixedInputs);
|
|
263
|
+
}
|
|
264
|
+
async _buildTransactionWithoutUtxoCheck(outputs, feePerByte, fixedInputs) {
|
|
265
|
+
const network = this._network;
|
|
266
|
+
const { fee } = this._getInputForAmountWithoutUtxoCheck(outputs, feePerByte, fixedInputs);
|
|
267
|
+
const inputs = fixedInputs;
|
|
268
|
+
const txb = new bitcoin.TransactionBuilder(network);
|
|
269
|
+
for (const output of outputs) {
|
|
270
|
+
const to = output.to; // Allow for OP_RETURN
|
|
271
|
+
txb.addOutput(to, output.value);
|
|
272
|
+
}
|
|
273
|
+
const prevOutScriptType = 'p2wpkh';
|
|
274
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
275
|
+
const wallet = await this.getWalletAddress(inputs[i].address);
|
|
276
|
+
const keyPair = await this.keyPair(wallet.derivationPath);
|
|
277
|
+
const paymentVariant = this.getPaymentVariantFromPublicKey(keyPair.publicKey);
|
|
278
|
+
txb.addInput(inputs[i].txid, inputs[i].vout, 0, paymentVariant.output);
|
|
279
|
+
}
|
|
280
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
281
|
+
const wallet = await this.getWalletAddress(inputs[i].address);
|
|
282
|
+
const keyPair = await this.keyPair(wallet.derivationPath);
|
|
283
|
+
const paymentVariant = this.getPaymentVariantFromPublicKey(keyPair.publicKey);
|
|
284
|
+
const needsWitness = true;
|
|
285
|
+
const signParams = {
|
|
286
|
+
prevOutScriptType,
|
|
287
|
+
vin: i,
|
|
288
|
+
keyPair,
|
|
289
|
+
witnessValue: 0,
|
|
290
|
+
};
|
|
291
|
+
if (needsWitness) {
|
|
292
|
+
signParams.witnessValue = inputs[i].value;
|
|
293
|
+
}
|
|
294
|
+
txb.sign(signParams);
|
|
295
|
+
}
|
|
296
|
+
return { hex: txb.build().toHex(), fee };
|
|
297
|
+
}
|
|
298
|
+
async _buildTransaction(targets, feePerByte, fixedInputs) {
|
|
299
|
+
const network = this._network;
|
|
300
|
+
const unusedAddress = await this.getUnusedAddress(true);
|
|
301
|
+
const { inputs, change, fee } = await this.getInputsForAmount(targets, feePerByte, fixedInputs);
|
|
302
|
+
if (change) {
|
|
303
|
+
targets.push({
|
|
304
|
+
address: unusedAddress.address,
|
|
305
|
+
value: change.value,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
const psbt = new bitcoinjs_lib_1.Psbt({ network });
|
|
309
|
+
const needsWitness = [
|
|
310
|
+
types_1.bitcoin.AddressType.BECH32,
|
|
311
|
+
types_1.bitcoin.AddressType.P2SH_SEGWIT,
|
|
312
|
+
].includes(this._addressType);
|
|
313
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
314
|
+
const wallet = await this.getWalletAddress(inputs[i].address);
|
|
315
|
+
const keyPair = await this.keyPair(wallet.derivationPath);
|
|
316
|
+
const paymentVariant = this.getPaymentVariantFromPublicKey(keyPair.publicKey);
|
|
317
|
+
const psbtInput = {
|
|
318
|
+
hash: inputs[i].txid,
|
|
319
|
+
index: inputs[i].vout,
|
|
320
|
+
sequence: 0,
|
|
321
|
+
};
|
|
322
|
+
if (needsWitness) {
|
|
323
|
+
psbtInput.witnessUtxo = {
|
|
324
|
+
script: paymentVariant.output,
|
|
325
|
+
value: inputs[i].value,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
const inputTxRaw = await this.getMethod('getRawTransactionByHash')(inputs[i].txid);
|
|
330
|
+
psbtInput.nonWitnessUtxo = Buffer.from(inputTxRaw, 'hex');
|
|
331
|
+
}
|
|
332
|
+
if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT) {
|
|
333
|
+
psbtInput.redeemScript = paymentVariant.redeem.output;
|
|
334
|
+
}
|
|
335
|
+
psbt.addInput(psbtInput);
|
|
336
|
+
}
|
|
337
|
+
for (const output of targets) {
|
|
338
|
+
if (output.script) {
|
|
339
|
+
psbt.addOutput({
|
|
340
|
+
value: output.value,
|
|
341
|
+
script: output.script,
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
psbt.addOutput({
|
|
346
|
+
value: output.value,
|
|
347
|
+
address: output.address,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
352
|
+
const wallet = await this.getWalletAddress(inputs[i].address);
|
|
353
|
+
const keyPair = await this.keyPair(wallet.derivationPath);
|
|
354
|
+
psbt.signInput(i, keyPair);
|
|
355
|
+
psbt.validateSignaturesOfInput(i);
|
|
356
|
+
}
|
|
357
|
+
psbt.finalizeAllInputs();
|
|
358
|
+
return { hex: psbt.extractTransaction().toHex(), fee };
|
|
359
|
+
}
|
|
360
|
+
async _buildSweepTransaction(externalChangeAddress, feePerByte) {
|
|
361
|
+
let _feePerByte = feePerByte || null;
|
|
362
|
+
if (!_feePerByte)
|
|
363
|
+
_feePerByte = await this.getMethod('getFeePerByte')();
|
|
364
|
+
const { inputs, outputs, change } = await this.getInputsForAmount([], _feePerByte, [], 100, true);
|
|
365
|
+
if (change) {
|
|
366
|
+
throw new Error('There should not be any change for sweeping transaction');
|
|
367
|
+
}
|
|
368
|
+
const _outputs = [
|
|
369
|
+
{
|
|
370
|
+
address: externalChangeAddress,
|
|
371
|
+
value: outputs[0].value,
|
|
372
|
+
},
|
|
373
|
+
];
|
|
374
|
+
return this._buildTransaction(_outputs, feePerByte, inputs);
|
|
375
|
+
}
|
|
376
|
+
async signPSBT(data, inputs) {
|
|
377
|
+
const psbt = bitcoinjs_lib_1.Psbt.fromBase64(data, { network: this._network });
|
|
378
|
+
for (const input of inputs) {
|
|
379
|
+
const keyPair = await this.keyPair(input.derivationPath);
|
|
380
|
+
psbt.signInput(input.index, keyPair);
|
|
381
|
+
}
|
|
382
|
+
return psbt.toBase64();
|
|
383
|
+
}
|
|
384
|
+
async signBatchP2SHTransaction(inputs, addresses, tx, _lockTime, segwit) {
|
|
385
|
+
const keyPairs = [];
|
|
386
|
+
for (const address of addresses) {
|
|
387
|
+
const wallet = await this.getWalletAddress(address);
|
|
388
|
+
const keyPair = await this.keyPair(wallet.derivationPath);
|
|
389
|
+
keyPairs.push(keyPair);
|
|
390
|
+
}
|
|
391
|
+
const sigs = [];
|
|
392
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
393
|
+
const index = inputs[i].txInputIndex
|
|
394
|
+
? inputs[i].txInputIndex
|
|
395
|
+
: inputs[i].index;
|
|
396
|
+
let sigHash;
|
|
397
|
+
if (segwit) {
|
|
398
|
+
sigHash = tx.hashForWitnessV0(index, inputs[i].outputScript, inputs[i].vout.vSat, bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
sigHash = tx.hashForSignature(index, inputs[i].outputScript, bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
|
|
402
|
+
}
|
|
403
|
+
const sig = bitcoinjs_lib_1.script.signature.encode(keyPairs[i].sign(sigHash), bitcoinjs_lib_1.Transaction.SIGHASH_ALL);
|
|
404
|
+
sigs.push(sig);
|
|
405
|
+
}
|
|
406
|
+
return sigs;
|
|
407
|
+
}
|
|
408
|
+
getScriptType() {
|
|
409
|
+
if (this._addressType === types_1.bitcoin.AddressType.LEGACY)
|
|
410
|
+
return 'p2pkh';
|
|
411
|
+
else if (this._addressType === types_1.bitcoin.AddressType.P2SH_SEGWIT)
|
|
412
|
+
return 'p2sh-p2wpkh';
|
|
413
|
+
else if (this._addressType === types_1.bitcoin.AddressType.BECH32)
|
|
414
|
+
return 'p2wpkh';
|
|
415
|
+
}
|
|
416
|
+
async getConnectedNetwork() {
|
|
417
|
+
return this._network;
|
|
418
|
+
}
|
|
419
|
+
async isWalletAvailable() {
|
|
420
|
+
return true;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
exports.default = BitcoinJsWalletProvider;
|
|
424
|
+
//# sourceMappingURL=BitcoinJsWalletProvider.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.BitcoinJsWalletProvider = void 0;
|
|
7
|
+
const BitcoinJsWalletProvider_1 = __importDefault(require("./BitcoinJsWalletProvider"));
|
|
8
|
+
exports.BitcoinJsWalletProvider = BitcoinJsWalletProvider_1.default;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomicfinance/bitcoin-js-wallet-provider",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"node": ">=14"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@atomicfinance/bitcoin-utils": "^3.
|
|
28
|
-
"@atomicfinance/bitcoin-wallet-provider": "^3.
|
|
29
|
-
"@atomicfinance/types": "^3.
|
|
30
|
-
"@atomicfinance/utils": "^3.
|
|
27
|
+
"@atomicfinance/bitcoin-utils": "^3.5.1",
|
|
28
|
+
"@atomicfinance/bitcoin-wallet-provider": "^3.5.1",
|
|
29
|
+
"@atomicfinance/types": "^3.5.1",
|
|
30
|
+
"@atomicfinance/utils": "^3.5.1",
|
|
31
31
|
"@babel/runtime": "^7.12.1",
|
|
32
32
|
"@node-dlc/core": "0.23.6",
|
|
33
33
|
"bip32": "^2.0.6",
|
package/CHANGELOG.md
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
# @atomicfinance/bitcoin-js-wallet-provider
|
|
2
|
-
|
|
3
|
-
## 3.4.7
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- 0ba01ef: Bump @node-dlc to 0.23.6
|
|
8
|
-
- Updated dependencies [0ba01ef]
|
|
9
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.7
|
|
10
|
-
- @atomicfinance/types@3.4.7
|
|
11
|
-
- @atomicfinance/bitcoin-utils@3.4.7
|
|
12
|
-
- @atomicfinance/utils@3.4.7
|
|
13
|
-
|
|
14
|
-
## 3.4.6
|
|
15
|
-
|
|
16
|
-
### Patch Changes
|
|
17
|
-
|
|
18
|
-
- b765b9c: Bump nodep-dlc to 0.23.5
|
|
19
|
-
- Updated dependencies [b765b9c]
|
|
20
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.6
|
|
21
|
-
- @atomicfinance/types@3.4.6
|
|
22
|
-
- @atomicfinance/bitcoin-utils@3.4.6
|
|
23
|
-
- @atomicfinance/utils@3.4.6
|
|
24
|
-
|
|
25
|
-
## 3.4.5
|
|
26
|
-
|
|
27
|
-
### Patch Changes
|
|
28
|
-
|
|
29
|
-
- 74b7a4f: Bump node-dlc to 0.23.4
|
|
30
|
-
- Updated dependencies [74b7a4f]
|
|
31
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.5
|
|
32
|
-
- @atomicfinance/types@3.4.5
|
|
33
|
-
- @atomicfinance/bitcoin-utils@3.4.5
|
|
34
|
-
- @atomicfinance/utils@3.4.5
|
|
35
|
-
|
|
36
|
-
## 3.4.4
|
|
37
|
-
|
|
38
|
-
### Patch Changes
|
|
39
|
-
|
|
40
|
-
- cc8f06a: Bump node-dlc to 0.23.3
|
|
41
|
-
- Updated dependencies [cc8f06a]
|
|
42
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.4
|
|
43
|
-
- @atomicfinance/types@3.4.4
|
|
44
|
-
- @atomicfinance/bitcoin-utils@3.4.4
|
|
45
|
-
- @atomicfinance/utils@3.4.4
|
|
46
|
-
|
|
47
|
-
## 3.4.3
|
|
48
|
-
|
|
49
|
-
### Patch Changes
|
|
50
|
-
|
|
51
|
-
- db49017: Bump node-dlc to 0.23.2 for all packages
|
|
52
|
-
- Updated dependencies [db49017]
|
|
53
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.3
|
|
54
|
-
- @atomicfinance/types@3.4.3
|
|
55
|
-
- @atomicfinance/bitcoin-utils@3.4.3
|
|
56
|
-
- @atomicfinance/utils@3.4.3
|
|
57
|
-
|
|
58
|
-
## 3.4.2
|
|
59
|
-
|
|
60
|
-
### Patch Changes
|
|
61
|
-
|
|
62
|
-
- e701ba6: Bump node-dlc- to 0.23.1 and add node-dlc batch tx builder validation tests
|
|
63
|
-
- Updated dependencies [e701ba6]
|
|
64
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.2
|
|
65
|
-
- @atomicfinance/types@3.4.2
|
|
66
|
-
- @atomicfinance/bitcoin-utils@3.4.2
|
|
67
|
-
- @atomicfinance/utils@3.4.2
|
|
68
|
-
|
|
69
|
-
## 3.4.1
|
|
70
|
-
|
|
71
|
-
### Patch Changes
|
|
72
|
-
|
|
73
|
-
- 9781efe: Add getInputsForDualFunding functionality and bump @node-dlc
|
|
74
|
-
- Updated dependencies [9781efe]
|
|
75
|
-
- @atomicfinance/bitcoin-utils@3.4.1
|
|
76
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.1
|
|
77
|
-
- @atomicfinance/types@3.4.1
|
|
78
|
-
- @atomicfinance/utils@3.4.1
|
|
79
|
-
|
|
80
|
-
## 3.4.0
|
|
81
|
-
|
|
82
|
-
### Minor Changes
|
|
83
|
-
|
|
84
|
-
- 314d7d7: Add batch dlc funding transactions
|
|
85
|
-
|
|
86
|
-
### Patch Changes
|
|
87
|
-
|
|
88
|
-
- Updated dependencies [314d7d7]
|
|
89
|
-
- @atomicfinance/types@3.4.0
|
|
90
|
-
- @atomicfinance/bitcoin-utils@3.4.0
|
|
91
|
-
- @atomicfinance/bitcoin-wallet-provider@3.4.0
|
|
92
|
-
- @atomicfinance/utils@3.4.0
|
|
93
|
-
|
|
94
|
-
## 3.3.1
|
|
95
|
-
|
|
96
|
-
### Patch Changes
|
|
97
|
-
|
|
98
|
-
- 7f6f4a8: Fix rounding error with find payout
|
|
99
|
-
- Updated dependencies [7f6f4a8]
|
|
100
|
-
- @atomicfinance/bitcoin-utils@3.3.1
|
|
101
|
-
- @atomicfinance/bitcoin-wallet-provider@3.3.1
|
|
102
|
-
- @atomicfinance/types@3.3.1
|
|
103
|
-
- @atomicfinance/utils@3.3.1
|
|
104
|
-
|
|
105
|
-
## 3.3.0
|
|
106
|
-
|
|
107
|
-
### Minor Changes
|
|
108
|
-
|
|
109
|
-
- 4a512ee: Fix find outcome index for hyperbola payout curve edge case
|
|
110
|
-
|
|
111
|
-
### Patch Changes
|
|
112
|
-
|
|
113
|
-
- Updated dependencies [4a512ee]
|
|
114
|
-
- @atomicfinance/bitcoin-utils@3.3.0
|
|
115
|
-
- @atomicfinance/bitcoin-wallet-provider@3.3.0
|
|
116
|
-
- @atomicfinance/types@3.3.0
|
|
117
|
-
- @atomicfinance/utils@3.3.0
|
|
118
|
-
|
|
119
|
-
## 3.2.5
|
|
120
|
-
|
|
121
|
-
### Patch Changes
|
|
122
|
-
|
|
123
|
-
- Updated dependencies [a72c7b9]
|
|
124
|
-
- @atomicfinance/types@3.2.5
|
|
125
|
-
- @atomicfinance/bitcoin-utils@3.2.5
|
|
126
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.5
|
|
127
|
-
- @atomicfinance/utils@3.2.5
|
|
128
|
-
|
|
129
|
-
## 3.2.4
|
|
130
|
-
|
|
131
|
-
### Patch Changes
|
|
132
|
-
|
|
133
|
-
- 177b76a: Upgrade node-dlc to 0.22.4
|
|
134
|
-
- Updated dependencies [177b76a]
|
|
135
|
-
- @atomicfinance/bitcoin-utils@3.2.4
|
|
136
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.4
|
|
137
|
-
- @atomicfinance/types@3.2.4
|
|
138
|
-
- @atomicfinance/utils@3.2.4
|
|
139
|
-
|
|
140
|
-
## 3.2.3
|
|
141
|
-
|
|
142
|
-
### Patch Changes
|
|
143
|
-
|
|
144
|
-
- dcb115e: custom starting changeAddressIndex
|
|
145
|
-
- Updated dependencies [dcb115e]
|
|
146
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.3
|
|
147
|
-
- @atomicfinance/bitcoin-utils@3.2.3
|
|
148
|
-
- @atomicfinance/types@3.2.3
|
|
149
|
-
- @atomicfinance/utils@3.2.3
|
|
150
|
-
|
|
151
|
-
## 3.2.2
|
|
152
|
-
|
|
153
|
-
### Patch Changes
|
|
154
|
-
|
|
155
|
-
- e5ff4c2: custom starting addressIndex
|
|
156
|
-
- Updated dependencies [e5ff4c2]
|
|
157
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.2
|
|
158
|
-
- @atomicfinance/bitcoin-utils@3.2.2
|
|
159
|
-
- @atomicfinance/types@3.2.2
|
|
160
|
-
- @atomicfinance/utils@3.2.2
|
|
161
|
-
|
|
162
|
-
## 3.2.1
|
|
163
|
-
|
|
164
|
-
### Patch Changes
|
|
165
|
-
|
|
166
|
-
- Updated dependencies [f69141e]
|
|
167
|
-
- @atomicfinance/types@3.2.1
|
|
168
|
-
- @atomicfinance/bitcoin-utils@3.2.1
|
|
169
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.1
|
|
170
|
-
- @atomicfinance/utils@3.2.1
|
|
171
|
-
|
|
172
|
-
## 3.2.0
|
|
173
|
-
|
|
174
|
-
### Patch Changes
|
|
175
|
-
|
|
176
|
-
- Updated dependencies [dc9ac8a]
|
|
177
|
-
- @atomicfinance/types@3.2.0
|
|
178
|
-
- @atomicfinance/bitcoin-utils@3.2.0
|
|
179
|
-
- @atomicfinance/bitcoin-wallet-provider@3.2.0
|
|
180
|
-
- @atomicfinance/utils@3.2.0
|
|
181
|
-
|
|
182
|
-
## 3.1.1
|
|
183
|
-
|
|
184
|
-
### Patch Changes
|
|
185
|
-
|
|
186
|
-
- 51fc309: Bump address gap from 20 to 30
|
|
187
|
-
- Updated dependencies [51fc309]
|
|
188
|
-
- @atomicfinance/bitcoin-wallet-provider@3.1.1
|
|
189
|
-
- @atomicfinance/bitcoin-utils@3.1.1
|
|
190
|
-
- @atomicfinance/types@3.1.1
|
|
191
|
-
- @atomicfinance/utils@3.1.1
|
|
192
|
-
|
|
193
|
-
## 3.1.0
|
|
194
|
-
|
|
195
|
-
### Patch Changes
|
|
196
|
-
|
|
197
|
-
- Updated dependencies [c60033b]
|
|
198
|
-
- @atomicfinance/types@3.1.0
|
|
199
|
-
- @atomicfinance/bitcoin-utils@3.1.0
|
|
200
|
-
- @atomicfinance/bitcoin-wallet-provider@3.1.0
|
|
201
|
-
- @atomicfinance/utils@3.1.0
|
|
202
|
-
|
|
203
|
-
## 3.0.1
|
|
204
|
-
|
|
205
|
-
### Patch Changes
|
|
206
|
-
|
|
207
|
-
- @atomicfinance/bitcoin-utils@3.0.1
|
|
208
|
-
- @atomicfinance/bitcoin-wallet-provider@3.0.1
|
|
209
|
-
- @atomicfinance/types@3.0.1
|
|
210
|
-
- @atomicfinance/utils@3.0.1
|
|
211
|
-
|
|
212
|
-
## 3.0.0
|
|
213
|
-
|
|
214
|
-
### Major Changes
|
|
215
|
-
|
|
216
|
-
- a06082e: Create unified standalone `bitcoin-abstraction-layer` package
|
|
217
|
-
|
|
218
|
-
### Patch Changes
|
|
219
|
-
|
|
220
|
-
- Updated dependencies [a06082e]
|
|
221
|
-
- @atomicfinance/bitcoin-wallet-provider@3.0.0
|
|
222
|
-
- @atomicfinance/types@3.0.0
|
|
223
|
-
- @atomicfinance/bitcoin-utils@3.0.0
|
|
224
|
-
- @atomicfinance/utils@3.0.0
|