@atomicfinance/bitcoin-esplora-api-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/dist/BitcoinEsploraApiProvider.js +5 -5
- package/dist/BitcoinEsploraApiProvider.js.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +8 -8
- package/lib/BitcoinEsploraApiProvider.js +150 -0
- package/lib/index.js +34 -0
- package/lib/types.js +3 -0
- package/package.json +7 -7
- package/CHANGELOG.md +0 -259
|
@@ -12,7 +12,7 @@ class BitcoinEsploraApiProvider extends node_provider_1.NodeProvider {
|
|
|
12
12
|
super({
|
|
13
13
|
baseURL: url,
|
|
14
14
|
responseType: 'text',
|
|
15
|
-
transformResponse: undefined,
|
|
15
|
+
transformResponse: undefined, // https://github.com/axios/axios/issues/907,
|
|
16
16
|
});
|
|
17
17
|
this._network = network;
|
|
18
18
|
this._numberOfBlockConfirmation = numberOfBlockConfirmation;
|
|
@@ -41,7 +41,7 @@ class BitcoinEsploraApiProvider extends node_provider_1.NodeProvider {
|
|
|
41
41
|
async getBalance(_addresses) {
|
|
42
42
|
const addresses = _addresses.map(utils_1.addressToString);
|
|
43
43
|
const _utxos = await this.getUnspentTransactions(addresses);
|
|
44
|
-
const utxos = lodash_1.flatten(_utxos);
|
|
44
|
+
const utxos = (0, lodash_1.flatten)(_utxos);
|
|
45
45
|
return utxos.reduce((acc, utxo) => acc.plus(utxo.value), new types_1.BigNumber(0));
|
|
46
46
|
}
|
|
47
47
|
async _getUnspentTransactions(address) {
|
|
@@ -56,7 +56,7 @@ class BitcoinEsploraApiProvider extends node_provider_1.NodeProvider {
|
|
|
56
56
|
async getUnspentTransactions(_addresses) {
|
|
57
57
|
const addresses = _addresses.map(utils_1.addressToString);
|
|
58
58
|
const utxoSets = await Promise.all(addresses.map((addr) => this._getUnspentTransactions(addr)));
|
|
59
|
-
const utxos = lodash_1.flatten(utxoSets);
|
|
59
|
+
const utxos = (0, lodash_1.flatten)(utxoSets);
|
|
60
60
|
return utxos;
|
|
61
61
|
}
|
|
62
62
|
async _getAddressTransactionCount(address) {
|
|
@@ -96,9 +96,9 @@ class BitcoinEsploraApiProvider extends node_provider_1.NodeProvider {
|
|
|
96
96
|
const confirmations = tx.status.confirmed
|
|
97
97
|
? currentHeight - tx.status.block_height + 1
|
|
98
98
|
: 0;
|
|
99
|
-
const decodedTx = bitcoin_utils_1.decodeRawTransaction(hex, this._network);
|
|
99
|
+
const decodedTx = (0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network);
|
|
100
100
|
decodedTx.confirmations = confirmations;
|
|
101
|
-
return bitcoin_utils_1.normalizeTransactionObject(decodedTx, tx.fee, {
|
|
101
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)(decodedTx, tx.fee, {
|
|
102
102
|
hash: tx.status.block_hash,
|
|
103
103
|
number: tx.status.block_height,
|
|
104
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitcoinEsploraApiProvider.js","sourceRoot":"","sources":["../lib/BitcoinEsploraApiProvider.ts"],"names":[],"mappings":";;AAAA,gEAGsC;AACtC,kDAA4E;AAC5E,gEAA4D;AAC5D,gDAK8B;AAC9B,gDAAuD;AAEvD,mCAAiC;AAajC,MAAqB,yBACnB,SAAQ,4BAAY;IAOpB,YAAY,OAAkC;QAC5C,MAAM,EACJ,GAAG,EACH,OAAO,EACP,yBAAyB,GAAG,CAAC,EAC7B,iBAAiB,GAAG,CAAC,GACtB,GAAG,OAAO,CAAC;QACZ,KAAK,CAAC;YACJ,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"BitcoinEsploraApiProvider.js","sourceRoot":"","sources":["../lib/BitcoinEsploraApiProvider.ts"],"names":[],"mappings":";;AAAA,gEAGsC;AACtC,kDAA4E;AAC5E,gEAA4D;AAC5D,gDAK8B;AAC9B,gDAAuD;AAEvD,mCAAiC;AAajC,MAAqB,yBACnB,SAAQ,4BAAY;IAOpB,YAAY,OAAkC;QAC5C,MAAM,EACJ,GAAG,EACH,OAAO,EACP,yBAAyB,GAAG,CAAC,EAC7B,iBAAiB,GAAG,CAAC,GACtB,GAAG,OAAO,CAAC;QACZ,KAAK,CAAC;YACJ,OAAO,EAAE,GAAG;YACZ,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,SAAS,EAAE,6CAA6C;SAC5E,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B;QAClE,IAAI;YACF,MAAM,YAAY,GAAyB,MAAM,IAAI,CAAC,OAAO,CAC3D,gBAAgB,CACjB,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3D,QAAQ,CAAC,KAAK,CAAC,CAChB,CAAC;YACF,MAAM,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;oBACtE,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,IAAI,CAAC;YACX,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAChC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAgC;QAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC;QAE9B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,iBAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAe;QAC3C,MAAM,IAAI,GAAmB,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,OAAO,OAAO,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,GAAG,IAAI;YACP,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,UAAgC;QAEhC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAC;QACF,MAAM,KAAK,GAAG,IAAA,gBAAO,EAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,OAAe;QAC/C,MAAM,IAAI,GAAoB,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,UAAgC;QAChE,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC;QAClD,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC,CACH,CAAC;QACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,sBAAsB,CAAC,CAAC;QACvE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,eAAuB;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,eAAe,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,eAAuB;QAC1C,IAAI,IAAyB,CAAC;QAE9B,IAAI;YACF,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,eAAe,EAAE,CAAC,CAAC;SACrD;QAAC,OAAO,CAAC,EAAE;YACV,IACE,CAAC,CAAC,IAAI,KAAK,WAAW;gBACtB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAC3C;gBACA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM,IAAI,wBAAe,CACvB,0BAA0B,eAAe,EAAE,EAC3C,KAAK,CACN,CAAC;aACH;YAED,MAAM,CAAC,CAAC;SACT;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAuB,EAAE,aAAqB;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;YACvC,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC;YAC5C,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,SAAS,GAAG,IAAA,oCAAoB,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;QACxC,OAAO,IAAA,0CAA0B,EAAC,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE;YACnD,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU;YAC1B,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,IAAI,CAAC;QAET,IAAI;YACF,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;SAClD;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;gBACnE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM,IAAI,2BAAkB,CAAC,oBAAoB,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;aACtE;YAED,MAAM,CAAC,CAAC;SACT;QAED,MAAM,EACJ,EAAE,EAAE,IAAI,EACR,MAAM,EAAE,MAAM,EACd,SAAS,EACT,UAAU,EACV,IAAI,EACJ,iBAAiB,EAAE,UAAU,EAC7B,UAAU,EACV,KAAK,GACN,GAAG,IAAI,CAAC;QAET,OAAO;YACL,IAAI;YACJ,MAAM;YACN,SAAS,EAAE,UAAU,IAAI,SAAS;YAClC,IAAI;YACJ,UAAU;YACV,UAAU;YACV,KAAK;SACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,eAAuB;QAChD,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,eAAuB;QACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,cAAsB;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9C,CAAC;CACF;AAtMD,4CAsMC"}
|
package/dist/index.js
CHANGED
|
@@ -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];
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAEqC;AAG5B,oCALF,mCAAyB,CAKE;AAFlC,iDAAmC;AAEC,0BAAO"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type FeeEstimates = {
|
|
2
2
|
[index: string]: number;
|
|
3
3
|
};
|
|
4
|
-
export
|
|
4
|
+
export type TxStatus = {
|
|
5
5
|
confirmed: boolean;
|
|
6
6
|
block_hash?: string;
|
|
7
7
|
block_height?: number;
|
|
8
8
|
block_time?: number;
|
|
9
9
|
};
|
|
10
|
-
export
|
|
10
|
+
export type UTXO = {
|
|
11
11
|
txid: string;
|
|
12
12
|
vout: number;
|
|
13
13
|
status: TxStatus;
|
|
14
14
|
value: number;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export type Address = {
|
|
17
17
|
address: string;
|
|
18
18
|
chain_stats: {
|
|
19
19
|
funded_txo_count: number;
|
|
@@ -30,14 +30,14 @@ export declare type Address = {
|
|
|
30
30
|
tx_count: number;
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
|
-
export
|
|
33
|
+
export type Vout = {
|
|
34
34
|
scriptpubkey: string;
|
|
35
35
|
scriptpubkey_asm: string;
|
|
36
36
|
scriptpubkey_type: string;
|
|
37
37
|
scriptpubkey_address?: string;
|
|
38
38
|
value: number;
|
|
39
39
|
};
|
|
40
|
-
export
|
|
40
|
+
export type Vin = {
|
|
41
41
|
txid: string;
|
|
42
42
|
vout: number;
|
|
43
43
|
prevout: Vout;
|
|
@@ -46,7 +46,7 @@ export declare type Vin = {
|
|
|
46
46
|
is_coinbase: boolean;
|
|
47
47
|
sequence: number;
|
|
48
48
|
};
|
|
49
|
-
export
|
|
49
|
+
export type Transaction = {
|
|
50
50
|
txid: string;
|
|
51
51
|
version: number;
|
|
52
52
|
locktime: number;
|
|
@@ -57,7 +57,7 @@ export declare type Transaction = {
|
|
|
57
57
|
fee: number;
|
|
58
58
|
status: TxStatus;
|
|
59
59
|
};
|
|
60
|
-
export
|
|
60
|
+
export type Block = {
|
|
61
61
|
id: string;
|
|
62
62
|
height: number;
|
|
63
63
|
version: number;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bitcoin_utils_1 = require("@atomicfinance/bitcoin-utils");
|
|
4
|
+
const errors_1 = require("@atomicfinance/errors");
|
|
5
|
+
const node_provider_1 = require("@atomicfinance/node-provider");
|
|
6
|
+
const types_1 = require("@atomicfinance/types");
|
|
7
|
+
const utils_1 = require("@atomicfinance/utils");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
class BitcoinEsploraApiProvider extends node_provider_1.NodeProvider {
|
|
10
|
+
constructor(options) {
|
|
11
|
+
const { url, network, numberOfBlockConfirmation = 1, defaultFeePerByte = 3, } = options;
|
|
12
|
+
super({
|
|
13
|
+
baseURL: url,
|
|
14
|
+
responseType: 'text',
|
|
15
|
+
transformResponse: undefined, // https://github.com/axios/axios/issues/907,
|
|
16
|
+
});
|
|
17
|
+
this._network = network;
|
|
18
|
+
this._numberOfBlockConfirmation = numberOfBlockConfirmation;
|
|
19
|
+
this._defaultFeePerByte = defaultFeePerByte;
|
|
20
|
+
this._usedAddressCache = {};
|
|
21
|
+
}
|
|
22
|
+
async getFeePerByte(numberOfBlocks = this._numberOfBlockConfirmation) {
|
|
23
|
+
try {
|
|
24
|
+
const feeEstimates = await this.nodeGet('/fee-estimates');
|
|
25
|
+
const blockOptions = Object.keys(feeEstimates).map((block) => parseInt(block));
|
|
26
|
+
const closestBlockOption = blockOptions.reduce((prev, curr) => {
|
|
27
|
+
return Math.abs(prev - numberOfBlocks) < Math.abs(curr - numberOfBlocks)
|
|
28
|
+
? prev
|
|
29
|
+
: curr;
|
|
30
|
+
});
|
|
31
|
+
const rate = Math.round(feeEstimates[closestBlockOption]);
|
|
32
|
+
return rate;
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return this._defaultFeePerByte;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async getMinRelayFee() {
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
async getBalance(_addresses) {
|
|
42
|
+
const addresses = _addresses.map(utils_1.addressToString);
|
|
43
|
+
const _utxos = await this.getUnspentTransactions(addresses);
|
|
44
|
+
const utxos = (0, lodash_1.flatten)(_utxos);
|
|
45
|
+
return utxos.reduce((acc, utxo) => acc.plus(utxo.value), new types_1.BigNumber(0));
|
|
46
|
+
}
|
|
47
|
+
async _getUnspentTransactions(address) {
|
|
48
|
+
const data = await this.nodeGet(`/address/${address}/utxo`);
|
|
49
|
+
return data.map((utxo) => ({
|
|
50
|
+
...utxo,
|
|
51
|
+
address,
|
|
52
|
+
value: utxo.value,
|
|
53
|
+
blockHeight: utxo.status.block_height,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
async getUnspentTransactions(_addresses) {
|
|
57
|
+
const addresses = _addresses.map(utils_1.addressToString);
|
|
58
|
+
const utxoSets = await Promise.all(addresses.map((addr) => this._getUnspentTransactions(addr)));
|
|
59
|
+
const utxos = (0, lodash_1.flatten)(utxoSets);
|
|
60
|
+
return utxos;
|
|
61
|
+
}
|
|
62
|
+
async _getAddressTransactionCount(address) {
|
|
63
|
+
const data = await this.nodeGet(`/address/${address}`);
|
|
64
|
+
return data.chain_stats.tx_count + data.mempool_stats.tx_count;
|
|
65
|
+
}
|
|
66
|
+
async getAddressTransactionCounts(_addresses) {
|
|
67
|
+
const addresses = _addresses.map(utils_1.addressToString);
|
|
68
|
+
const transactionCountsArray = await Promise.all(addresses.map(async (addr) => {
|
|
69
|
+
const txCount = await this._getAddressTransactionCount(addr);
|
|
70
|
+
return { [addr]: txCount };
|
|
71
|
+
}));
|
|
72
|
+
const transactionCounts = Object.assign({}, ...transactionCountsArray);
|
|
73
|
+
return transactionCounts;
|
|
74
|
+
}
|
|
75
|
+
async getTransactionHex(transactionHash) {
|
|
76
|
+
return this.nodeGet(`/tx/${transactionHash}/hex`);
|
|
77
|
+
}
|
|
78
|
+
async getTransaction(transactionHash) {
|
|
79
|
+
let data;
|
|
80
|
+
try {
|
|
81
|
+
data = await this.nodeGet(`/tx/${transactionHash}`);
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
if (e.name === 'NodeError' &&
|
|
85
|
+
e.message.includes('Transaction not found')) {
|
|
86
|
+
const { name, message, ...attrs } = e;
|
|
87
|
+
throw new errors_1.TxNotFoundError(`Transaction not found: ${transactionHash}`, attrs);
|
|
88
|
+
}
|
|
89
|
+
throw e;
|
|
90
|
+
}
|
|
91
|
+
const currentHeight = await this.getBlockHeight();
|
|
92
|
+
return this.formatTransaction(data, currentHeight);
|
|
93
|
+
}
|
|
94
|
+
async formatTransaction(tx, currentHeight) {
|
|
95
|
+
const hex = await this.getTransactionHex(tx.txid);
|
|
96
|
+
const confirmations = tx.status.confirmed
|
|
97
|
+
? currentHeight - tx.status.block_height + 1
|
|
98
|
+
: 0;
|
|
99
|
+
const decodedTx = (0, bitcoin_utils_1.decodeRawTransaction)(hex, this._network);
|
|
100
|
+
decodedTx.confirmations = confirmations;
|
|
101
|
+
return (0, bitcoin_utils_1.normalizeTransactionObject)(decodedTx, tx.fee, {
|
|
102
|
+
hash: tx.status.block_hash,
|
|
103
|
+
number: tx.status.block_height,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async getBlockByHash(blockHash) {
|
|
107
|
+
let data;
|
|
108
|
+
try {
|
|
109
|
+
data = await this.nodeGet(`/block/${blockHash}`);
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
if (e.name === 'NodeError' && e.message.includes('Block not found')) {
|
|
113
|
+
const { name, message, ...attrs } = e;
|
|
114
|
+
throw new errors_1.BlockNotFoundError(`Block not found: ${blockHash}`, attrs);
|
|
115
|
+
}
|
|
116
|
+
throw e;
|
|
117
|
+
}
|
|
118
|
+
const { id: hash, height: number, timestamp, mediantime, size, previousblockhash: parentHash, difficulty, nonce, } = data;
|
|
119
|
+
return {
|
|
120
|
+
hash,
|
|
121
|
+
number,
|
|
122
|
+
timestamp: mediantime || timestamp,
|
|
123
|
+
size,
|
|
124
|
+
parentHash,
|
|
125
|
+
difficulty,
|
|
126
|
+
nonce,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async getBlockHash(blockNumber) {
|
|
130
|
+
return this.nodeGet(`/block-height/${blockNumber}`);
|
|
131
|
+
}
|
|
132
|
+
async getBlockByNumber(blockNumber) {
|
|
133
|
+
return this.getBlockByHash(await this.getBlockHash(blockNumber));
|
|
134
|
+
}
|
|
135
|
+
async getBlockHeight() {
|
|
136
|
+
const data = await this.nodeGet('/blocks/tip/height');
|
|
137
|
+
return parseInt(data);
|
|
138
|
+
}
|
|
139
|
+
async getTransactionByHash(transactionHash) {
|
|
140
|
+
return this.getTransaction(transactionHash);
|
|
141
|
+
}
|
|
142
|
+
async getRawTransactionByHash(transactionHash) {
|
|
143
|
+
return this.getTransactionHex(transactionHash);
|
|
144
|
+
}
|
|
145
|
+
async sendRawTransaction(rawTransaction) {
|
|
146
|
+
return this.nodePost('/tx', rawTransaction);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.default = BitcoinEsploraApiProvider;
|
|
150
|
+
//# sourceMappingURL=BitcoinEsploraApiProvider.js.map
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
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.esplora = exports.BitcoinEsploraApiProvider = void 0;
|
|
30
|
+
const BitcoinEsploraApiProvider_1 = __importDefault(require("./BitcoinEsploraApiProvider"));
|
|
31
|
+
exports.BitcoinEsploraApiProvider = BitcoinEsploraApiProvider_1.default;
|
|
32
|
+
const esplora = __importStar(require("./types"));
|
|
33
|
+
exports.esplora = esplora;
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
package/lib/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atomicfinance/bitcoin-esplora-api-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,12 +24,12 @@
|
|
|
24
24
|
"node": ">=14"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@atomicfinance/bitcoin-utils": "^3.
|
|
28
|
-
"@atomicfinance/crypto": "^3.
|
|
29
|
-
"@atomicfinance/errors": "^3.
|
|
30
|
-
"@atomicfinance/node-provider": "^3.
|
|
31
|
-
"@atomicfinance/types": "^3.
|
|
32
|
-
"@atomicfinance/utils": "^3.
|
|
27
|
+
"@atomicfinance/bitcoin-utils": "^3.5.1",
|
|
28
|
+
"@atomicfinance/crypto": "^3.5.1",
|
|
29
|
+
"@atomicfinance/errors": "^3.5.1",
|
|
30
|
+
"@atomicfinance/node-provider": "^3.5.1",
|
|
31
|
+
"@atomicfinance/types": "^3.5.1",
|
|
32
|
+
"@atomicfinance/utils": "^3.5.1",
|
|
33
33
|
"@babel/runtime": "^7.12.1",
|
|
34
34
|
"bignumber.js": "^9.0.0",
|
|
35
35
|
"bitcoin-networks": "^1.0.0",
|
package/CHANGELOG.md
DELETED
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
# @atomicfinance/bitcoin-esplora-api-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/types@3.4.7
|
|
10
|
-
- @atomicfinance/bitcoin-utils@3.4.7
|
|
11
|
-
- @atomicfinance/crypto@3.4.7
|
|
12
|
-
- @atomicfinance/errors@3.4.7
|
|
13
|
-
- @atomicfinance/node-provider@3.4.7
|
|
14
|
-
- @atomicfinance/utils@3.4.7
|
|
15
|
-
|
|
16
|
-
## 3.4.6
|
|
17
|
-
|
|
18
|
-
### Patch Changes
|
|
19
|
-
|
|
20
|
-
- b765b9c: Bump nodep-dlc to 0.23.5
|
|
21
|
-
- Updated dependencies [b765b9c]
|
|
22
|
-
- @atomicfinance/types@3.4.6
|
|
23
|
-
- @atomicfinance/bitcoin-utils@3.4.6
|
|
24
|
-
- @atomicfinance/crypto@3.4.6
|
|
25
|
-
- @atomicfinance/errors@3.4.6
|
|
26
|
-
- @atomicfinance/node-provider@3.4.6
|
|
27
|
-
- @atomicfinance/utils@3.4.6
|
|
28
|
-
|
|
29
|
-
## 3.4.5
|
|
30
|
-
|
|
31
|
-
### Patch Changes
|
|
32
|
-
|
|
33
|
-
- 74b7a4f: Bump node-dlc to 0.23.4
|
|
34
|
-
- Updated dependencies [74b7a4f]
|
|
35
|
-
- @atomicfinance/types@3.4.5
|
|
36
|
-
- @atomicfinance/bitcoin-utils@3.4.5
|
|
37
|
-
- @atomicfinance/crypto@3.4.5
|
|
38
|
-
- @atomicfinance/errors@3.4.5
|
|
39
|
-
- @atomicfinance/node-provider@3.4.5
|
|
40
|
-
- @atomicfinance/utils@3.4.5
|
|
41
|
-
|
|
42
|
-
## 3.4.4
|
|
43
|
-
|
|
44
|
-
### Patch Changes
|
|
45
|
-
|
|
46
|
-
- cc8f06a: Bump node-dlc to 0.23.3
|
|
47
|
-
- Updated dependencies [cc8f06a]
|
|
48
|
-
- @atomicfinance/types@3.4.4
|
|
49
|
-
- @atomicfinance/bitcoin-utils@3.4.4
|
|
50
|
-
- @atomicfinance/crypto@3.4.4
|
|
51
|
-
- @atomicfinance/errors@3.4.4
|
|
52
|
-
- @atomicfinance/node-provider@3.4.4
|
|
53
|
-
- @atomicfinance/utils@3.4.4
|
|
54
|
-
|
|
55
|
-
## 3.4.3
|
|
56
|
-
|
|
57
|
-
### Patch Changes
|
|
58
|
-
|
|
59
|
-
- db49017: Bump node-dlc to 0.23.2 for all packages
|
|
60
|
-
- Updated dependencies [db49017]
|
|
61
|
-
- @atomicfinance/types@3.4.3
|
|
62
|
-
- @atomicfinance/bitcoin-utils@3.4.3
|
|
63
|
-
- @atomicfinance/crypto@3.4.3
|
|
64
|
-
- @atomicfinance/errors@3.4.3
|
|
65
|
-
- @atomicfinance/node-provider@3.4.3
|
|
66
|
-
- @atomicfinance/utils@3.4.3
|
|
67
|
-
|
|
68
|
-
## 3.4.2
|
|
69
|
-
|
|
70
|
-
### Patch Changes
|
|
71
|
-
|
|
72
|
-
- e701ba6: Bump node-dlc- to 0.23.1 and add node-dlc batch tx builder validation tests
|
|
73
|
-
- Updated dependencies [e701ba6]
|
|
74
|
-
- @atomicfinance/types@3.4.2
|
|
75
|
-
- @atomicfinance/bitcoin-utils@3.4.2
|
|
76
|
-
- @atomicfinance/crypto@3.4.2
|
|
77
|
-
- @atomicfinance/errors@3.4.2
|
|
78
|
-
- @atomicfinance/node-provider@3.4.2
|
|
79
|
-
- @atomicfinance/utils@3.4.2
|
|
80
|
-
|
|
81
|
-
## 3.4.1
|
|
82
|
-
|
|
83
|
-
### Patch Changes
|
|
84
|
-
|
|
85
|
-
- 9781efe: Add getInputsForDualFunding functionality and bump @node-dlc
|
|
86
|
-
- Updated dependencies [9781efe]
|
|
87
|
-
- @atomicfinance/bitcoin-utils@3.4.1
|
|
88
|
-
- @atomicfinance/types@3.4.1
|
|
89
|
-
- @atomicfinance/crypto@3.4.1
|
|
90
|
-
- @atomicfinance/errors@3.4.1
|
|
91
|
-
- @atomicfinance/node-provider@3.4.1
|
|
92
|
-
- @atomicfinance/utils@3.4.1
|
|
93
|
-
|
|
94
|
-
## 3.4.0
|
|
95
|
-
|
|
96
|
-
### Minor Changes
|
|
97
|
-
|
|
98
|
-
- 314d7d7: Add batch dlc funding transactions
|
|
99
|
-
|
|
100
|
-
### Patch Changes
|
|
101
|
-
|
|
102
|
-
- Updated dependencies [314d7d7]
|
|
103
|
-
- @atomicfinance/types@3.4.0
|
|
104
|
-
- @atomicfinance/bitcoin-utils@3.4.0
|
|
105
|
-
- @atomicfinance/crypto@3.4.0
|
|
106
|
-
- @atomicfinance/errors@3.4.0
|
|
107
|
-
- @atomicfinance/node-provider@3.4.0
|
|
108
|
-
- @atomicfinance/utils@3.4.0
|
|
109
|
-
|
|
110
|
-
## 3.3.1
|
|
111
|
-
|
|
112
|
-
### Patch Changes
|
|
113
|
-
|
|
114
|
-
- 7f6f4a8: Fix rounding error with find payout
|
|
115
|
-
- Updated dependencies [7f6f4a8]
|
|
116
|
-
- @atomicfinance/bitcoin-utils@3.3.1
|
|
117
|
-
- @atomicfinance/crypto@3.3.1
|
|
118
|
-
- @atomicfinance/errors@3.3.1
|
|
119
|
-
- @atomicfinance/node-provider@3.3.1
|
|
120
|
-
- @atomicfinance/types@3.3.1
|
|
121
|
-
- @atomicfinance/utils@3.3.1
|
|
122
|
-
|
|
123
|
-
## 3.3.0
|
|
124
|
-
|
|
125
|
-
### Minor Changes
|
|
126
|
-
|
|
127
|
-
- 4a512ee: Fix find outcome index for hyperbola payout curve edge case
|
|
128
|
-
|
|
129
|
-
### Patch Changes
|
|
130
|
-
|
|
131
|
-
- Updated dependencies [4a512ee]
|
|
132
|
-
- @atomicfinance/bitcoin-utils@3.3.0
|
|
133
|
-
- @atomicfinance/crypto@3.3.0
|
|
134
|
-
- @atomicfinance/errors@3.3.0
|
|
135
|
-
- @atomicfinance/node-provider@3.3.0
|
|
136
|
-
- @atomicfinance/types@3.3.0
|
|
137
|
-
- @atomicfinance/utils@3.3.0
|
|
138
|
-
|
|
139
|
-
## 3.2.5
|
|
140
|
-
|
|
141
|
-
### Patch Changes
|
|
142
|
-
|
|
143
|
-
- Updated dependencies [a72c7b9]
|
|
144
|
-
- @atomicfinance/types@3.2.5
|
|
145
|
-
- @atomicfinance/bitcoin-utils@3.2.5
|
|
146
|
-
- @atomicfinance/crypto@3.2.5
|
|
147
|
-
- @atomicfinance/errors@3.2.5
|
|
148
|
-
- @atomicfinance/node-provider@3.2.5
|
|
149
|
-
- @atomicfinance/utils@3.2.5
|
|
150
|
-
|
|
151
|
-
## 3.2.4
|
|
152
|
-
|
|
153
|
-
### Patch Changes
|
|
154
|
-
|
|
155
|
-
- 177b76a: Upgrade node-dlc to 0.22.4
|
|
156
|
-
- Updated dependencies [177b76a]
|
|
157
|
-
- @atomicfinance/bitcoin-utils@3.2.4
|
|
158
|
-
- @atomicfinance/crypto@3.2.4
|
|
159
|
-
- @atomicfinance/errors@3.2.4
|
|
160
|
-
- @atomicfinance/node-provider@3.2.4
|
|
161
|
-
- @atomicfinance/types@3.2.4
|
|
162
|
-
- @atomicfinance/utils@3.2.4
|
|
163
|
-
|
|
164
|
-
## 3.2.3
|
|
165
|
-
|
|
166
|
-
### Patch Changes
|
|
167
|
-
|
|
168
|
-
- @atomicfinance/bitcoin-utils@3.2.3
|
|
169
|
-
- @atomicfinance/crypto@3.2.3
|
|
170
|
-
- @atomicfinance/errors@3.2.3
|
|
171
|
-
- @atomicfinance/node-provider@3.2.3
|
|
172
|
-
- @atomicfinance/types@3.2.3
|
|
173
|
-
- @atomicfinance/utils@3.2.3
|
|
174
|
-
|
|
175
|
-
## 3.2.2
|
|
176
|
-
|
|
177
|
-
### Patch Changes
|
|
178
|
-
|
|
179
|
-
- @atomicfinance/bitcoin-utils@3.2.2
|
|
180
|
-
- @atomicfinance/crypto@3.2.2
|
|
181
|
-
- @atomicfinance/errors@3.2.2
|
|
182
|
-
- @atomicfinance/node-provider@3.2.2
|
|
183
|
-
- @atomicfinance/types@3.2.2
|
|
184
|
-
- @atomicfinance/utils@3.2.2
|
|
185
|
-
|
|
186
|
-
## 3.2.1
|
|
187
|
-
|
|
188
|
-
### Patch Changes
|
|
189
|
-
|
|
190
|
-
- Updated dependencies [f69141e]
|
|
191
|
-
- @atomicfinance/types@3.2.1
|
|
192
|
-
- @atomicfinance/bitcoin-utils@3.2.1
|
|
193
|
-
- @atomicfinance/crypto@3.2.1
|
|
194
|
-
- @atomicfinance/errors@3.2.1
|
|
195
|
-
- @atomicfinance/node-provider@3.2.1
|
|
196
|
-
- @atomicfinance/utils@3.2.1
|
|
197
|
-
|
|
198
|
-
## 3.2.0
|
|
199
|
-
|
|
200
|
-
### Patch Changes
|
|
201
|
-
|
|
202
|
-
- Updated dependencies [dc9ac8a]
|
|
203
|
-
- @atomicfinance/types@3.2.0
|
|
204
|
-
- @atomicfinance/bitcoin-utils@3.2.0
|
|
205
|
-
- @atomicfinance/crypto@3.2.0
|
|
206
|
-
- @atomicfinance/errors@3.2.0
|
|
207
|
-
- @atomicfinance/node-provider@3.2.0
|
|
208
|
-
- @atomicfinance/utils@3.2.0
|
|
209
|
-
|
|
210
|
-
## 3.1.1
|
|
211
|
-
|
|
212
|
-
### Patch Changes
|
|
213
|
-
|
|
214
|
-
- @atomicfinance/bitcoin-utils@3.1.1
|
|
215
|
-
- @atomicfinance/crypto@3.1.1
|
|
216
|
-
- @atomicfinance/errors@3.1.1
|
|
217
|
-
- @atomicfinance/node-provider@3.1.1
|
|
218
|
-
- @atomicfinance/types@3.1.1
|
|
219
|
-
- @atomicfinance/utils@3.1.1
|
|
220
|
-
|
|
221
|
-
## 3.1.0
|
|
222
|
-
|
|
223
|
-
### Patch Changes
|
|
224
|
-
|
|
225
|
-
- Updated dependencies [c60033b]
|
|
226
|
-
- @atomicfinance/types@3.1.0
|
|
227
|
-
- @atomicfinance/bitcoin-utils@3.1.0
|
|
228
|
-
- @atomicfinance/crypto@3.1.0
|
|
229
|
-
- @atomicfinance/errors@3.1.0
|
|
230
|
-
- @atomicfinance/node-provider@3.1.0
|
|
231
|
-
- @atomicfinance/utils@3.1.0
|
|
232
|
-
|
|
233
|
-
## 3.0.1
|
|
234
|
-
|
|
235
|
-
### Patch Changes
|
|
236
|
-
|
|
237
|
-
- Updated dependencies [0ff98b5]
|
|
238
|
-
- @atomicfinance/node-provider@3.0.1
|
|
239
|
-
- @atomicfinance/bitcoin-utils@3.0.1
|
|
240
|
-
- @atomicfinance/crypto@3.0.1
|
|
241
|
-
- @atomicfinance/errors@3.0.1
|
|
242
|
-
- @atomicfinance/types@3.0.1
|
|
243
|
-
- @atomicfinance/utils@3.0.1
|
|
244
|
-
|
|
245
|
-
## 3.0.0
|
|
246
|
-
|
|
247
|
-
### Major Changes
|
|
248
|
-
|
|
249
|
-
- a06082e: Create unified standalone `bitcoin-abstraction-layer` package
|
|
250
|
-
|
|
251
|
-
### Patch Changes
|
|
252
|
-
|
|
253
|
-
- Updated dependencies [a06082e]
|
|
254
|
-
- @atomicfinance/types@3.0.0
|
|
255
|
-
- @atomicfinance/bitcoin-utils@3.0.0
|
|
256
|
-
- @atomicfinance/crypto@3.0.0
|
|
257
|
-
- @atomicfinance/errors@3.0.0
|
|
258
|
-
- @atomicfinance/node-provider@3.0.0
|
|
259
|
-
- @atomicfinance/utils@3.0.0
|