@teleportdao/bitcoin 3.0.0 → 4.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bitcoin-interface-ordinal.d.ts +24 -24
- package/dist/bitcoin-interface-ordinal.d.ts.map +1 -1
- package/dist/bitcoin-interface-ordinal.js +89 -107
- package/dist/bitcoin-interface-ordinal.js.map +1 -1
- package/dist/bitcoin-interface-teleswap.d.ts +2 -2
- package/dist/bitcoin-interface-teleswap.d.ts.map +1 -1
- package/dist/bitcoin-interface-teleswap.js +77 -88
- package/dist/bitcoin-interface-teleswap.js.map +1 -1
- package/dist/bitcoin-interface-utils.d.ts +7 -4
- package/dist/bitcoin-interface-utils.d.ts.map +1 -1
- package/dist/bitcoin-interface-utils.js +11 -5
- package/dist/bitcoin-interface-utils.js.map +1 -1
- package/dist/bitcoin-interface-wallet.d.ts +1 -0
- package/dist/bitcoin-interface-wallet.d.ts.map +1 -1
- package/dist/bitcoin-interface-wallet.js +87 -95
- package/dist/bitcoin-interface-wallet.js.map +1 -1
- package/dist/bitcoin-interface.d.ts.map +1 -1
- package/dist/bitcoin-interface.js +58 -87
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bitcoin-utils.d.ts +7 -4
- package/dist/bitcoin-utils.d.ts.map +1 -1
- package/dist/bitcoin-utils.js +93 -54
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/bitcoin-wallet-base.d.ts +23 -11
- package/dist/bitcoin-wallet-base.d.ts.map +1 -1
- package/dist/bitcoin-wallet-base.js +148 -138
- package/dist/bitcoin-wallet-base.js.map +1 -1
- package/dist/helper/brc20-helper.d.ts.map +1 -1
- package/dist/helper/brc20-helper.js +4 -6
- package/dist/helper/brc20-helper.js.map +1 -1
- package/dist/helper/index.js +17 -7
- package/dist/helper/index.js.map +1 -1
- package/dist/helper/ordinal-helper.d.ts +3 -9
- package/dist/helper/ordinal-helper.d.ts.map +1 -1
- package/dist/helper/ordinal-helper.js +20 -85
- package/dist/helper/ordinal-helper.js.map +1 -1
- package/dist/helper/teleswap-helper.d.ts.map +1 -1
- package/dist/helper/teleswap-helper.js +13 -12
- package/dist/helper/teleswap-helper.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -7
- package/dist/index.js.map +1 -1
- package/dist/multisig-wallet-helper.d.ts +14 -1
- package/dist/multisig-wallet-helper.d.ts.map +1 -1
- package/dist/multisig-wallet-helper.js +135 -149
- package/dist/multisig-wallet-helper.js.map +1 -1
- package/dist/ordinal-wallet.d.ts +27 -19
- package/dist/ordinal-wallet.d.ts.map +1 -1
- package/dist/ordinal-wallet.js +263 -293
- package/dist/ordinal-wallet.js.map +1 -1
- package/dist/sign/sign-transaction.d.ts +5 -2
- package/dist/sign/sign-transaction.d.ts.map +1 -1
- package/dist/sign/sign-transaction.js +32 -39
- package/dist/sign/sign-transaction.js.map +1 -1
- package/dist/teleswap-wallet.d.ts +1 -0
- package/dist/teleswap-wallet.d.ts.map +1 -1
- package/dist/teleswap-wallet.js +40 -53
- package/dist/teleswap-wallet.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +21 -21
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/coin-select.d.ts +19 -3
- package/dist/transaction-builder/coin-select.d.ts.map +1 -1
- package/dist/transaction-builder/coin-select.js +193 -181
- package/dist/transaction-builder/coin-select.js.map +1 -1
- package/dist/transaction-builder/index.d.ts +1 -0
- package/dist/transaction-builder/index.d.ts.map +1 -1
- package/dist/transaction-builder/index.js +1 -0
- package/dist/transaction-builder/index.js.map +1 -1
- package/dist/transaction-builder/ordinal-transaction-builder.d.ts +4 -4
- package/dist/transaction-builder/ordinal-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/ordinal-transaction-builder.js +51 -48
- package/dist/transaction-builder/ordinal-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.d.ts +57 -54
- package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +394 -308
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/dist/utils/networks.js +17 -7
- package/dist/utils/networks.js.map +1 -1
- package/dist/utils/tools.js +24 -35
- package/dist/utils/tools.js.map +1 -1
- package/package.json +4 -4
- package/src/bitcoin-interface-utils.ts +17 -8
- package/src/bitcoin-interface-wallet.ts +15 -1
- package/src/bitcoin-utils.ts +52 -3
- package/src/bitcoin-wallet-base.ts +67 -23
- package/src/helper/ordinal-helper.ts +0 -83
- package/src/index.ts +2 -0
- package/src/multisig-wallet-helper.ts +296 -0
- package/src/sign/sign-transaction.ts +5 -7
- package/src/transaction-builder/coin-select.ts +633 -0
- package/src/transaction-builder/index.ts +1 -0
- package/src/transaction-builder/transaction-builder.ts +424 -279
- package/dist/bitcoin-wallet-base copy.d.ts +0 -122
- package/dist/bitcoin-wallet-base copy.d.ts.map +0 -1
- package/dist/bitcoin-wallet-base copy.js +0 -279
- package/dist/bitcoin-wallet-base copy.js.map +0 -1
- package/dist/multisig-coordinator-wallet.d.ts +0 -2
- package/dist/multisig-coordinator-wallet.d.ts.map +0 -1
- package/dist/multisig-coordinator-wallet.js +0 -6
- package/dist/multisig-coordinator-wallet.js.map +0 -1
- package/dist/multisig-wallet.d.ts +0 -20
- package/dist/multisig-wallet.d.ts.map +0 -1
- package/dist/multisig-wallet.js +0 -119
- package/dist/multisig-wallet.js.map +0 -1
|
@@ -7,6 +7,8 @@ exports.BitcoinInterfaceUtils = void 0;
|
|
|
7
7
|
const networks_1 = __importDefault(require("./utils/networks"));
|
|
8
8
|
const bitcoin_utils_1 = require("./bitcoin-utils");
|
|
9
9
|
class BitcoinInterfaceUtils {
|
|
10
|
+
testnet;
|
|
11
|
+
network;
|
|
10
12
|
constructor(networkName) {
|
|
11
13
|
this.testnet = networkName.includes("_testnet");
|
|
12
14
|
this.network = networks_1.default[networkName];
|
|
@@ -17,11 +19,11 @@ class BitcoinInterfaceUtils {
|
|
|
17
19
|
throw new Error("incorrect input");
|
|
18
20
|
return addressObj.address;
|
|
19
21
|
}
|
|
20
|
-
convertScriptToAddress(scriptHex
|
|
21
|
-
let
|
|
22
|
-
if (!
|
|
23
|
-
throw new Error("
|
|
24
|
-
return
|
|
22
|
+
convertScriptToAddress(scriptHex) {
|
|
23
|
+
let address = (0, bitcoin_utils_1.convertBitcoinScriptToAddress)(Buffer.from(scriptHex, "hex"), this.network);
|
|
24
|
+
if (!address)
|
|
25
|
+
throw new Error("invalid script");
|
|
26
|
+
return address;
|
|
25
27
|
}
|
|
26
28
|
convertAddressToScript(address) {
|
|
27
29
|
let { addressObject, addressType } = (0, bitcoin_utils_1.createAddressObjectByAddress)(address, this.network);
|
|
@@ -40,6 +42,10 @@ class BitcoinInterfaceUtils {
|
|
|
40
42
|
let addObj = (0, bitcoin_utils_1.createAddressObjectByPublicKey)({ publicKey: Buffer.from(publicKey, "hex"), addressType }, this.network);
|
|
41
43
|
return addObj;
|
|
42
44
|
}
|
|
45
|
+
createMultisigAddressObjectByPublicKeys(multisig, addressType) {
|
|
46
|
+
let addObj = (0, bitcoin_utils_1.createMultisigAddressObjectByPublicKeys)(addressType, multisig, this.network);
|
|
47
|
+
return addObj;
|
|
48
|
+
}
|
|
43
49
|
}
|
|
44
50
|
exports.BitcoinInterfaceUtils = BitcoinInterfaceUtils;
|
|
45
51
|
exports.default = BitcoinInterfaceUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-utils.js","sourceRoot":"","sources":["../src/bitcoin-interface-utils.ts"],"names":[],"mappings":";;;;;;AACA,gEAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-utils.js","sourceRoot":"","sources":["../src/bitcoin-interface-utils.ts"],"names":[],"mappings":";;;;;;AACA,gEAAuC;AACvC,mDAMwB;AAExB,MAAa,qBAAqB;IAChC,OAAO,CAAS;IAChB,OAAO,CAAS;IAChB,YAAY,WAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC/C,IAAI,CAAC,OAAO,GAAG,kBAAQ,CAAC,WAAW,CAAC,CAAA;IACtC,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,WAAmB;QACvD,IAAI,UAAU,GAAG,IAAA,yCAAyB,EACxC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAClD,IAAI,CAAC,OAAO,CACb,CAAA;QACD,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC3D,OAAO,UAAU,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,sBAAsB,CAAC,SAAiB;QACtC,IAAI,OAAO,GAAG,IAAA,6CAA6B,EAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACxF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAC/C,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,sBAAsB,CAAC,OAAe;QACpC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,IAAA,4CAA4B,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACxF,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAA;QAC/E,OAAO;YACL,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,IAAI;YACJ,WAAW;SACZ,CAAA;IACH,CAAC;IAED,sBAAsB,CAAC,OAAe;QACpC,IAAI,MAAM,GAAG,IAAA,4CAA4B,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAChE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,8BAA8B,CAAC,SAAiB,EAAE,WAAmB;QACnE,IAAI,MAAM,GAAG,IAAA,8CAA8B,EACzC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,EACzD,IAAI,CAAC,OAAO,CACb,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,uCAAuC,CACrC,QAGC,EACD,WAAmB;QAEnB,IAAI,MAAM,GAAG,IAAA,uDAAuC,EAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACzF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAxDD,sDAwDC;AAED,kBAAe,qBAAqB,CAAA"}
|
|
@@ -24,6 +24,7 @@ export declare class BitcoinInterfaceWallet extends BitcoinInterfaceUtils {
|
|
|
24
24
|
}[]>;
|
|
25
25
|
getBalance(address: string): Promise<number>;
|
|
26
26
|
getRawTransaction(txId: string): Promise<string>;
|
|
27
|
+
getTransaction(txId: string): Promise<bitcoinProvider.Types.ConfirmedTransaction>;
|
|
27
28
|
sendRawTransaction(txHex: string): Promise<any>;
|
|
28
29
|
}
|
|
29
30
|
export default BitcoinInterfaceWallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-wallet.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AAE3E,qBAAa,sBAAuB,SAAQ,qBAAqB;IAC/D,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,YAAY,CAAA;IAChD,WAAW,EAAE,eAAe,CAAC,YAAY,CAAA;IACzC,WAAW,CAAC,EAAE,eAAe,CAAC,UAAU,CAAA;gBAC5B,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,qBAAqB;IAgBjE,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-wallet.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AAE3E,qBAAa,sBAAuB,SAAQ,qBAAqB;IAC/D,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,YAAY,CAAA;IAChD,WAAW,EAAE,eAAe,CAAC,YAAY,CAAA;IACzC,WAAW,CAAC,EAAE,eAAe,CAAC,UAAU,CAAA;gBAC5B,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,qBAAqB;IAgBjE,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM;IAa7C,OAAO,CAAC,OAAO,EAAE,MAAM;IAIvB,eAAe,CAAC,UAAU,EAAE,UAAU;;;;;;IAUtC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE;IAyBvC,wBAAwB,CAAC,WAAW,EAAE,UAAU,EAAE;;;;;;IAyBlD,UAAU,CAAC,OAAO,EAAE,MAAM;IAK1B,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAM9B,cAAc,CAAC,IAAI,EAAE,MAAM;IAK3B,kBAAkB,CAAC,KAAK,EAAE,MAAM;CAKvC;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -1,125 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.BitcoinInterfaceWallet = void 0;
|
|
13
4
|
const providers_1 = require("@teleportdao/providers");
|
|
14
5
|
const bitcoin_interface_utils_1 = require("./bitcoin-interface-utils");
|
|
15
6
|
class BitcoinInterfaceWallet extends bitcoin_interface_utils_1.BitcoinInterfaceUtils {
|
|
7
|
+
utxoProvider;
|
|
8
|
+
apiProvider;
|
|
9
|
+
rpcProvider;
|
|
16
10
|
constructor(networkName, connectionInfo) {
|
|
17
|
-
var _a;
|
|
18
11
|
super(networkName);
|
|
19
|
-
if (
|
|
12
|
+
if (connectionInfo?.api?.provider === "BlockStream") {
|
|
20
13
|
this.apiProvider = new providers_1.bitcoin.BlockStream(this.testnet);
|
|
21
14
|
}
|
|
22
15
|
else {
|
|
23
16
|
this.apiProvider = new providers_1.bitcoin.MempoolSpace(this.testnet);
|
|
24
17
|
}
|
|
25
|
-
this.utxoProvider =
|
|
18
|
+
this.utxoProvider = connectionInfo?.utxo
|
|
26
19
|
? providers_1.bitcoin.getUtxoProvider(connectionInfo.utxo, networkName)
|
|
27
20
|
: this.apiProvider;
|
|
28
|
-
if (connectionInfo
|
|
29
|
-
this.rpcProvider = providers_1.bitcoin.getRpcProvider(connectionInfo
|
|
21
|
+
if (connectionInfo?.rpc)
|
|
22
|
+
this.rpcProvider = providers_1.bitcoin.getRpcProvider(connectionInfo?.rpc);
|
|
30
23
|
}
|
|
31
|
-
getFeeRate(speed) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
async getFeeRate(speed) {
|
|
25
|
+
try {
|
|
26
|
+
let feeRate = await this.apiProvider.getRecommendedFeeRate(speed);
|
|
27
|
+
return feeRate;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (this.rpcProvider) {
|
|
31
|
+
let feeRate = await this.rpcProvider.getFeeRate("fast");
|
|
32
|
+
return feeRate;
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
35
36
|
}
|
|
36
|
-
getUtxo(address) {
|
|
37
|
-
return
|
|
38
|
-
return this.utxoProvider.getUtxos(address);
|
|
39
|
-
});
|
|
37
|
+
async getUtxo(address) {
|
|
38
|
+
return this.utxoProvider.getUtxos(address);
|
|
40
39
|
}
|
|
41
|
-
getExtendedUtxo(signerInfo) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}));
|
|
50
|
-
});
|
|
40
|
+
async getExtendedUtxo(signerInfo) {
|
|
41
|
+
let utxos = await this.getUtxo(signerInfo.address);
|
|
42
|
+
return utxos.map((tx) => ({
|
|
43
|
+
hash: tx.txId,
|
|
44
|
+
value: tx.value,
|
|
45
|
+
index: tx.index,
|
|
46
|
+
signerInfo,
|
|
47
|
+
}));
|
|
51
48
|
}
|
|
52
|
-
getAddressesUtxo(allAddresses) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
async getAddressesUtxo(allAddresses) {
|
|
50
|
+
const chunkOfAddresses = [];
|
|
51
|
+
const chunkLength = 20;
|
|
52
|
+
for (let i = 0; i < allAddresses.length; i += chunkLength) {
|
|
53
|
+
const tmp = allAddresses.slice(i, i + chunkLength);
|
|
54
|
+
chunkOfAddresses.push(tmp);
|
|
55
|
+
}
|
|
56
|
+
let results = [];
|
|
57
|
+
for (let addresses of chunkOfAddresses) {
|
|
58
|
+
const allPromises = [];
|
|
59
|
+
for (let address of addresses) {
|
|
60
|
+
let promise = await this.getUtxo(address);
|
|
61
|
+
allPromises.push(promise);
|
|
59
62
|
}
|
|
60
|
-
let
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
for (let address of addresses) {
|
|
64
|
-
let promise = yield this.getUtxo(address);
|
|
65
|
-
allPromises.push(promise);
|
|
66
|
-
}
|
|
67
|
-
let result = yield Promise.all(allPromises);
|
|
68
|
-
if (result.flat(1).length === 0) {
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
results.push(result.flat(1));
|
|
63
|
+
let result = await Promise.all(allPromises);
|
|
64
|
+
if (result.flat(1).length === 0) {
|
|
65
|
+
break;
|
|
72
66
|
}
|
|
73
|
-
|
|
74
|
-
}
|
|
67
|
+
results.push(result.flat(1));
|
|
68
|
+
}
|
|
69
|
+
return results.flat(1);
|
|
75
70
|
}
|
|
76
|
-
getAddressesExtendedUtxo(signerInfos) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
71
|
+
async getAddressesExtendedUtxo(signerInfos) {
|
|
72
|
+
const chunkOfAddresses = [];
|
|
73
|
+
const chunkLength = 20;
|
|
74
|
+
for (let i = 0; i < signerInfos.length; i += chunkLength) {
|
|
75
|
+
const tmp = signerInfos.slice(i, i + chunkLength);
|
|
76
|
+
chunkOfAddresses.push(tmp);
|
|
77
|
+
}
|
|
78
|
+
let results = [];
|
|
79
|
+
for (let addresses of chunkOfAddresses) {
|
|
80
|
+
const allPromises = [];
|
|
81
|
+
for (let signerInfo of addresses) {
|
|
82
|
+
let promise = await this.getExtendedUtxo(signerInfo);
|
|
83
|
+
allPromises.push(promise);
|
|
83
84
|
}
|
|
84
|
-
let
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
for (let signerInfo of addresses) {
|
|
88
|
-
let promise = yield this.getExtendedUtxo(signerInfo);
|
|
89
|
-
allPromises.push(promise);
|
|
90
|
-
}
|
|
91
|
-
let result = yield Promise.all(allPromises);
|
|
92
|
-
if (result.flat(1).length === 0) {
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
results.push(result.flat(1));
|
|
85
|
+
let result = await Promise.all(allPromises);
|
|
86
|
+
if (result.flat(1).length === 0) {
|
|
87
|
+
break;
|
|
96
88
|
}
|
|
97
|
-
|
|
98
|
-
}
|
|
89
|
+
results.push(result.flat(1));
|
|
90
|
+
}
|
|
91
|
+
return results.flat(1);
|
|
92
|
+
}
|
|
93
|
+
async getBalance(address) {
|
|
94
|
+
let utxos = await this.utxoProvider.getUtxos(address);
|
|
95
|
+
return utxos.reduce((a, tx) => a + Number(tx.value), 0);
|
|
99
96
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
async getRawTransaction(txId) {
|
|
98
|
+
if (this.rpcProvider)
|
|
99
|
+
return this.rpcProvider.getRawTransaction(txId);
|
|
100
|
+
if (this.utxoProvider.getRawTransaction)
|
|
101
|
+
return this.utxoProvider.getRawTransaction(txId);
|
|
102
|
+
return this.apiProvider.getRawTransaction(txId);
|
|
105
103
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (this.utxoProvider.getRawTransaction)
|
|
111
|
-
return this.utxoProvider.getRawTransaction(txId);
|
|
112
|
-
return this.apiProvider.getRawTransaction(txId);
|
|
113
|
-
});
|
|
104
|
+
async getTransaction(txId) {
|
|
105
|
+
if (this.rpcProvider)
|
|
106
|
+
return this.rpcProvider.getTransaction(txId);
|
|
107
|
+
return this.apiProvider.getTransaction(txId);
|
|
114
108
|
}
|
|
115
|
-
sendRawTransaction(txHex) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return this.apiProvider.sendRawTransaction(txHex);
|
|
122
|
-
});
|
|
109
|
+
async sendRawTransaction(txHex) {
|
|
110
|
+
if (this.rpcProvider)
|
|
111
|
+
return this.rpcProvider.sendRawTransaction(txHex);
|
|
112
|
+
if (this.utxoProvider.sendRawTransaction)
|
|
113
|
+
return this.utxoProvider.sendRawTransaction(txHex);
|
|
114
|
+
return this.apiProvider.sendRawTransaction(txHex);
|
|
123
115
|
}
|
|
124
116
|
}
|
|
125
117
|
exports.BitcoinInterfaceWallet = BitcoinInterfaceWallet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-wallet.js","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-wallet.js","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOnE,OAAO,sBAAsB,MAAM,4BAA4B,CAAA;AAE/D,qBAAa,gBAAiB,SAAQ,sBAAsB;IACpD,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAI/B,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,iBAAiB,EAAE,MAAM,CAAA;QACzB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC;IAYI,eAAe,CAAC,WAAW,EAAE;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE;YACZ,iBAAiB,EAAE,MAAM,CAAA;YACzB,gBAAgB,EAAE,MAAM,CAAA;SACzB,CAAA;KACF
|
|
1
|
+
{"version":3,"file":"bitcoin-interface.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAOnE,OAAO,sBAAsB,MAAM,4BAA4B,CAAA;AAE/D,qBAAa,gBAAiB,SAAQ,sBAAsB;IACpD,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOvD,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAI9B,kBAAkB,CAAC,IAAI,EAAE,MAAM;IAI/B,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,iBAAiB,EAAE,MAAM,CAAA;QACzB,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC;IAYI,eAAe,CAAC,WAAW,EAAE;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE;YACZ,iBAAiB,EAAE,MAAM,CAAA;YACzB,gBAAgB,EAAE,MAAM,CAAA;SACzB,CAAA;KACF;;;;;;;;;;+BAvBoB,MAAM;8BACP,MAAM;;;;;IA6CpB,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;;;;;;;;;;IAsBJ,6BAA6B,CACjC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,UAAU,GAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC3B,EAAO;CAWX;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -17,95 +8,75 @@ const tools_1 = require("./utils/tools");
|
|
|
17
8
|
const bitcoin_utils_1 = require("./bitcoin-utils");
|
|
18
9
|
const bitcoin_interface_wallet_1 = __importDefault(require("./bitcoin-interface-wallet"));
|
|
19
10
|
class BitcoinInterface extends bitcoin_interface_wallet_1.default {
|
|
20
|
-
getLatestBlockNumber() {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return latestHeight;
|
|
24
|
-
});
|
|
11
|
+
async getLatestBlockNumber() {
|
|
12
|
+
let latestHeight = await (this.rpcProvider || this.apiProvider).getLatestBlockNumber();
|
|
13
|
+
return latestHeight;
|
|
25
14
|
}
|
|
26
|
-
getBlockHash(blockNumber) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return headerHash;
|
|
30
|
-
});
|
|
15
|
+
async getBlockHash(blockNumber) {
|
|
16
|
+
let headerHash = await (0, tools_1.runWithRetries)(() => (this.rpcProvider || this.apiProvider).getBlockHash(blockNumber));
|
|
17
|
+
return headerHash;
|
|
31
18
|
}
|
|
32
|
-
getBlockHeaderHex(blockNumber) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return headerHex;
|
|
36
|
-
});
|
|
19
|
+
async getBlockHeaderHex(blockNumber) {
|
|
20
|
+
let headerHex = await (0, tools_1.runWithRetries)(() => (this.rpcProvider || this.apiProvider).getBlockHeaderHex(blockNumber));
|
|
21
|
+
return headerHex;
|
|
37
22
|
}
|
|
38
|
-
getTransaction(txId) {
|
|
39
|
-
return
|
|
40
|
-
return (this.rpcProvider || this.apiProvider).getTransaction(txId);
|
|
41
|
-
});
|
|
23
|
+
async getTransaction(txId) {
|
|
24
|
+
return (this.rpcProvider || this.apiProvider).getTransaction(txId);
|
|
42
25
|
}
|
|
43
|
-
getRawTransaction(txId) {
|
|
44
|
-
return
|
|
45
|
-
return (this.rpcProvider || this.apiProvider).getRawTransaction(txId);
|
|
46
|
-
});
|
|
26
|
+
async getRawTransaction(txId) {
|
|
27
|
+
return (this.rpcProvider || this.apiProvider).getRawTransaction(txId);
|
|
47
28
|
}
|
|
48
|
-
sendRawTransaction(txId) {
|
|
49
|
-
return
|
|
50
|
-
return (this.rpcProvider || this.apiProvider).sendRawTransaction(txId);
|
|
51
|
-
});
|
|
29
|
+
async sendRawTransaction(txId) {
|
|
30
|
+
return (this.rpcProvider || this.apiProvider).sendRawTransaction(txId);
|
|
52
31
|
}
|
|
53
|
-
getMerkleProof(txId, blockHash) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
retrySleep: 2000,
|
|
61
|
-
});
|
|
62
|
-
let proof = (0, bitcoin_utils_1.calculateMerkleProof)(txIds, txId);
|
|
63
|
-
return proof;
|
|
32
|
+
async getMerkleProof(txId, blockHash) {
|
|
33
|
+
if (!this.rpcProvider) {
|
|
34
|
+
return this.apiProvider.getMerkleProof(txId);
|
|
35
|
+
}
|
|
36
|
+
let txIds = await (0, tools_1.runWithRetries)(() => this.rpcProvider.getBlockTransactionIds(blockHash), {
|
|
37
|
+
maxTries: 5,
|
|
38
|
+
retrySleep: 2000,
|
|
64
39
|
});
|
|
40
|
+
let proof = (0, bitcoin_utils_1.calculateMerkleProof)(txIds, txId);
|
|
41
|
+
return proof;
|
|
65
42
|
}
|
|
66
|
-
getRequestProof(transaction) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
84
|
-
});
|
|
43
|
+
async getRequestProof(transaction) {
|
|
44
|
+
let transactionHex = transaction.hex || (await this.getRawTransaction(transaction.txId));
|
|
45
|
+
let blockHash = transaction.blockHash;
|
|
46
|
+
let blockNumber = transaction.blockNumber;
|
|
47
|
+
if (!(transaction.blockHash && transaction.blockNumber)) {
|
|
48
|
+
let txInfo = await this.getTransaction(transaction.txId);
|
|
49
|
+
blockHash = txInfo.blockHash;
|
|
50
|
+
blockNumber = txInfo.blockNumber;
|
|
51
|
+
}
|
|
52
|
+
let parsedTx = (0, bitcoin_utils_1.parseRawTransaction)(transactionHex);
|
|
53
|
+
let merkleProof = transaction.merkleProof || (await this.getMerkleProof(transaction.txId, blockHash));
|
|
54
|
+
return {
|
|
55
|
+
parsedTx,
|
|
56
|
+
merkleProof,
|
|
57
|
+
blockNumber: blockNumber,
|
|
58
|
+
blockHash: blockHash,
|
|
59
|
+
};
|
|
85
60
|
}
|
|
86
|
-
getBlockTransactions(addresses, blockNumber, inputTxIds = []) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
retrySleep: 2000,
|
|
94
|
-
});
|
|
95
|
-
return (0, bitcoin_utils_1.extractTransactionsAndBlockInfoFromRawBlock)(rawBlockHex, blockNumber, addresses, inputTxIds, this.network);
|
|
61
|
+
async getBlockTransactions(addresses, blockNumber, inputTxIds = []) {
|
|
62
|
+
if (!this.rpcProvider) {
|
|
63
|
+
throw new Error("RPC provider not set");
|
|
64
|
+
}
|
|
65
|
+
let rawBlockHex = await (0, tools_1.runWithRetries)(() => this.rpcProvider.getBlockByBlockNumber(blockNumber, 0), {
|
|
66
|
+
maxTries: 10,
|
|
67
|
+
retrySleep: 2000,
|
|
96
68
|
});
|
|
69
|
+
return (0, bitcoin_utils_1.extractTransactionsAndBlockInfoFromRawBlock)(rawBlockHex, blockNumber, addresses, inputTxIds, this.network);
|
|
97
70
|
}
|
|
98
|
-
getMultipleBlocksTransactions(addresses, startBlockNumber, endBlockNumber, inputTxIds = []) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return blockTxs.flat(1);
|
|
108
|
-
});
|
|
71
|
+
async getMultipleBlocksTransactions(addresses, startBlockNumber, endBlockNumber, inputTxIds = []) {
|
|
72
|
+
let blockTxs = [];
|
|
73
|
+
for (let blockNumber = +startBlockNumber + 1; blockNumber <= endBlockNumber; blockNumber += 1) {
|
|
74
|
+
console.log(blockNumber);
|
|
75
|
+
const response = await this.getBlockTransactions(addresses, blockNumber, inputTxIds);
|
|
76
|
+
blockTxs.push(response.withdrawTxs, response.depositTxs);
|
|
77
|
+
}
|
|
78
|
+
blockTxs = await Promise.all(blockTxs);
|
|
79
|
+
return blockTxs.flat(1);
|
|
109
80
|
}
|
|
110
81
|
}
|
|
111
82
|
exports.BitcoinInterface = BitcoinInterface;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface.js","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitcoin-interface.js","sourceRoot":"","sources":["../src/bitcoin-interface.ts"],"names":[],"mappings":"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"}
|
package/dist/bitcoin-utils.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as bitcoin from "bitcoinjs-lib";
|
|
3
2
|
import networks from "./utils/networks";
|
|
4
3
|
import { Transaction } from "./type";
|
|
@@ -7,8 +6,8 @@ export declare function generateMnemonic(): string;
|
|
|
7
6
|
export declare function getPrivateKeyHexFromMnemonic(mnemonic: string, index?: number, isChange?: boolean): Promise<string>;
|
|
8
7
|
export declare function reverseBytes(hexInput: string): string;
|
|
9
8
|
export declare function getPublicKeyHexByXpubAndIndex(xpub: string, index?: number, isChange?: boolean, network?: bitcoin.networks.Network): string;
|
|
10
|
-
export declare function getPubKeyFromPrivateKeyWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): Buffer
|
|
11
|
-
export declare function getPubKeyFromPrivateKeyHex(privateKeyHex: string, network?: bitcoin.networks.Network): Buffer
|
|
9
|
+
export declare function getPubKeyFromPrivateKeyWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): Buffer<ArrayBufferLike>;
|
|
10
|
+
export declare function getPubKeyFromPrivateKeyHex(privateKeyHex: string, network?: bitcoin.networks.Network): Buffer<ArrayBufferLike>;
|
|
12
11
|
export declare function getPrivateKeyHexFromWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): string;
|
|
13
12
|
export declare function parseRawTransaction(rawTransaction: string): {
|
|
14
13
|
version: string;
|
|
@@ -30,7 +29,7 @@ export declare function parseBlockHeader(headerHex: string): {
|
|
|
30
29
|
difficulty: string;
|
|
31
30
|
nonce: string;
|
|
32
31
|
};
|
|
33
|
-
export declare function getAddressType(address: string, network?: bitcoin.networks.Network): "p2tr" | "p2wpkh" | "p2sh" | "p2pkh";
|
|
32
|
+
export declare function getAddressType(address: string, network?: bitcoin.networks.Network): "p2tr" | "p2wsh" | "p2wpkh" | "p2sh" | "p2pkh";
|
|
34
33
|
export declare function createAddressObjectByAddress(address: string, network?: bitcoin.networks.Network): {
|
|
35
34
|
addressObject: bitcoin.payments.Payment;
|
|
36
35
|
addressType: "p2tr" | "p2wpkh" | "p2sh" | "p2pkh";
|
|
@@ -88,6 +87,10 @@ export declare function createAddressObjectByPublicKey({ addressType, publicKey
|
|
|
88
87
|
publicKey: Buffer;
|
|
89
88
|
}, network?: bitcoin.Network): bitcoin.payments.Payment;
|
|
90
89
|
export declare function publicKeyConvertor(publicKeyHex: string, compressed?: boolean): string;
|
|
90
|
+
export declare function createMultisigAddressObjectByPublicKeys(addressType: string, multisig: {
|
|
91
|
+
publicKeys: Buffer[];
|
|
92
|
+
numberOfSigners?: number;
|
|
93
|
+
}, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
|
|
91
94
|
export declare const addressTypeHelper: {
|
|
92
95
|
addressTypesNumber: {
|
|
93
96
|
[key: string]: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.ts"],"names":[],"mappings":"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"}
|