@teleportdao/bitcoin 1.2.0 → 1.2.2
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-base.js +40 -59
- package/dist/bitcoin-base.js.map +1 -1
- package/dist/bitcoin-interface.js +216 -260
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bitcoin-utils.d.ts +9 -8
- package/dist/bitcoin-utils.d.ts.map +1 -1
- package/dist/bitcoin-utils.js +32 -12
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/helper/burn-request-helper.js +4 -1
- package/dist/helper/burn-request-helper.js.map +1 -1
- package/dist/helper/teleport-request-helper.js +3 -5
- package/dist/helper/teleport-request-helper.js.map +1 -1
- package/dist/sign/sign-transaction.js +11 -22
- package/dist/sign/sign-transaction.js.map +1 -1
- package/dist/teleport-dao-payments.js +122 -141
- package/dist/teleport-dao-payments.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +15 -32
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder-common.js +50 -70
- package/dist/transaction-builder/transaction-builder-common.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +42 -53
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/dist/utils/tools.js +16 -25
- package/dist/utils/tools.js.map +1 -1
- package/package.json +3 -3
- package/src/bitcoin-utils.js +33 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport-dao-payments.js","sourceRoot":"","sources":["../src/teleport-dao-payments.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"teleport-dao-payments.js","sourceRoot":"","sources":["../src/teleport-dao-payments.js"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,32 @@
|
|
|
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
|
const BaseTransactionBuilder = require("./transaction-builder");
|
|
12
3
|
const BitcoinInterface = require("../bitcoin-interface");
|
|
13
4
|
class BitcoinTransactionBuilder extends BaseTransactionBuilder {
|
|
14
5
|
constructor(connectionInfo, networkName, network) {
|
|
15
6
|
super({
|
|
16
7
|
network,
|
|
17
|
-
testnet: networkName
|
|
8
|
+
testnet: networkName?.includes("_testnet"),
|
|
18
9
|
dustLimit: 1000,
|
|
19
10
|
});
|
|
20
11
|
this.btcInterface = new BitcoinInterface(connectionInfo, networkName);
|
|
21
12
|
}
|
|
22
|
-
_getUtxo(userAddress) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}));
|
|
30
|
-
});
|
|
13
|
+
async _getUtxo(userAddress) {
|
|
14
|
+
let utxos = await this.btcInterface.getAddressesUtxo([userAddress]);
|
|
15
|
+
return utxos.map((tx) => ({
|
|
16
|
+
hash: tx.txId,
|
|
17
|
+
value: tx.value,
|
|
18
|
+
index: tx.index,
|
|
19
|
+
}));
|
|
31
20
|
}
|
|
32
|
-
_getFeeRate(speed) {
|
|
33
|
-
return
|
|
34
|
-
return this.btcInterface.getFeeRate(speed);
|
|
35
|
-
});
|
|
21
|
+
async _getFeeRate(speed) {
|
|
22
|
+
return this.btcInterface.getFeeRate(speed);
|
|
36
23
|
}
|
|
37
|
-
_getTransactionHex(transactionId) {
|
|
38
|
-
return
|
|
39
|
-
return this.btcInterface.provider.getRawTransaction(transactionId);
|
|
40
|
-
});
|
|
24
|
+
async _getTransactionHex(transactionId) {
|
|
25
|
+
return this.btcInterface.provider.getRawTransaction(transactionId);
|
|
41
26
|
}
|
|
42
|
-
sendTx(txHex) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return txId;
|
|
46
|
-
});
|
|
27
|
+
async sendTx(txHex) {
|
|
28
|
+
let txId = await this.btcInterface.provider.sendRawTransaction(txHex);
|
|
29
|
+
return txId;
|
|
47
30
|
}
|
|
48
31
|
}
|
|
49
32
|
module.exports = BitcoinTransactionBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/bitcoin-transaction-builder.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitcoin-transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/bitcoin-transaction-builder.js"],"names":[],"mappings":";AAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAC/D,MAAM,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAExD,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,YAAY,cAAc,EAAE,WAAW,EAAE,OAAO;QAC9C,KAAK,CAAC;YACJ,OAAO;YACP,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;YAC1C,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAW;QACxB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,KAAK,EAAE,EAAE,CAAC,KAAK;SAChB,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAK;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,aAAa;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK;QAChB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACrE,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,MAAM,CAAC,OAAO,GAAG,yBAAyB,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
|
const bitcoin = require("bitcoinjs-lib");
|
|
12
3
|
const coinselect = require("coinselect");
|
|
13
4
|
const coinselectSplit = require("coinselect/split");
|
|
@@ -37,25 +28,17 @@ class BaseBitcoinLikeTransaction {
|
|
|
37
28
|
this.feeMin = feeMin;
|
|
38
29
|
this.dustLimit = dustLimit || 1 * 2 * componentBytes.bytePerInput.p2pkh;
|
|
39
30
|
}
|
|
40
|
-
_getUtxo(userAddress) {
|
|
41
|
-
|
|
42
|
-
throw new Error("Do not call abstract method directly");
|
|
43
|
-
});
|
|
31
|
+
async _getUtxo(userAddress) {
|
|
32
|
+
throw new Error("Do not call abstract method directly");
|
|
44
33
|
}
|
|
45
|
-
_getTransactionHex(transactionId) {
|
|
46
|
-
|
|
47
|
-
throw new Error("Do not call abstract method directly");
|
|
48
|
-
});
|
|
34
|
+
async _getTransactionHex(transactionId) {
|
|
35
|
+
throw new Error("Do not call abstract method directly");
|
|
49
36
|
}
|
|
50
|
-
convertBaseInputsToInputs(baseInputs) {
|
|
51
|
-
|
|
52
|
-
throw new Error("Do not call abstract method directly");
|
|
53
|
-
});
|
|
37
|
+
async convertBaseInputsToInputs(baseInputs) {
|
|
38
|
+
throw new Error("Do not call abstract method directly");
|
|
54
39
|
}
|
|
55
|
-
createUnsignedTransaction(baseInputs) {
|
|
56
|
-
|
|
57
|
-
throw new Error("Do not call abstract method directly");
|
|
58
|
-
});
|
|
40
|
+
async createUnsignedTransaction(baseInputs) {
|
|
41
|
+
throw new Error("Do not call abstract method directly");
|
|
59
42
|
}
|
|
60
43
|
createAddressObject({ addressType, publicKey }) {
|
|
61
44
|
return createAddressObjectByPublicKey({ addressType, publicKey }, this.network);
|
|
@@ -116,55 +99,52 @@ class BaseBitcoinLikeTransaction {
|
|
|
116
99
|
change,
|
|
117
100
|
};
|
|
118
101
|
}
|
|
119
|
-
getExtendedUtxo(signerInfo) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
102
|
+
async getExtendedUtxo(signerInfo) {
|
|
103
|
+
let utxo = await this._getUtxo(signerInfo.address);
|
|
104
|
+
const extendedUtxo = utxo.map((input) => ({
|
|
105
|
+
...input,
|
|
106
|
+
signerInfo,
|
|
107
|
+
}));
|
|
108
|
+
if (!extendedUtxo || extendedUtxo.length === 0) {
|
|
109
|
+
throw new Error("no utxo found");
|
|
110
|
+
}
|
|
111
|
+
return extendedUtxo;
|
|
128
112
|
}
|
|
129
|
-
convertUtxoToInput({ extendedUtxo, targets, changeAddress, feeRate, selectType }) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
selectType,
|
|
137
|
-
});
|
|
138
|
-
let inputs = yield this.convertBaseInputsToInputs(filteredInputs);
|
|
139
|
-
return {
|
|
140
|
-
inputs,
|
|
141
|
-
outputs,
|
|
142
|
-
change,
|
|
143
|
-
fee,
|
|
144
|
-
feeRate,
|
|
145
|
-
};
|
|
113
|
+
async convertUtxoToInput({ extendedUtxo, targets, changeAddress, feeRate, selectType }) {
|
|
114
|
+
let { inputs: filteredInputs, outputs, change, fee, } = BaseBitcoinLikeTransaction.helperHandleInputsAndOutputs({
|
|
115
|
+
targets,
|
|
116
|
+
extendedUtxo,
|
|
117
|
+
feeRate,
|
|
118
|
+
changeAddress,
|
|
119
|
+
selectType,
|
|
146
120
|
});
|
|
121
|
+
let inputs = await this.convertBaseInputsToInputs(filteredInputs);
|
|
122
|
+
return {
|
|
123
|
+
inputs,
|
|
124
|
+
outputs,
|
|
125
|
+
change,
|
|
126
|
+
fee,
|
|
127
|
+
feeRate,
|
|
128
|
+
};
|
|
147
129
|
}
|
|
148
|
-
processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, selectType = "normal", }) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
feeRate,
|
|
165
|
-
});
|
|
166
|
-
return unsignedTransaction;
|
|
130
|
+
async processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, selectType = "normal", }) {
|
|
131
|
+
if (!selfTransaction && targets.length === 0)
|
|
132
|
+
throw new Error("no target");
|
|
133
|
+
const { inputs, outputs, change, fee } = await this.convertUtxoToInput({
|
|
134
|
+
extendedUtxo,
|
|
135
|
+
targets,
|
|
136
|
+
changeAddress,
|
|
137
|
+
feeRate,
|
|
138
|
+
selectType: fullAmount ? "full" : selectType,
|
|
139
|
+
});
|
|
140
|
+
let unsignedTransaction = await this.createUnsignedTransaction({
|
|
141
|
+
inputs,
|
|
142
|
+
outputs,
|
|
143
|
+
change,
|
|
144
|
+
fee,
|
|
145
|
+
feeRate,
|
|
167
146
|
});
|
|
147
|
+
return unsignedTransaction;
|
|
168
148
|
}
|
|
169
149
|
getOpReturnTarget(dataHex) {
|
|
170
150
|
if (!dataHex.length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder-common.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction-builder-common.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +1,52 @@
|
|
|
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
|
const bitcoin = require("bitcoinjs-lib");
|
|
12
3
|
const BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
|
|
13
4
|
class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
|
|
14
|
-
convertBaseInputsToInputs(baseInputs = []) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
5
|
+
async convertBaseInputsToInputs(baseInputs = []) {
|
|
6
|
+
let inputs = baseInputs;
|
|
7
|
+
let transactionId = null;
|
|
8
|
+
let transactionHex = null;
|
|
9
|
+
for (let i in inputs) {
|
|
10
|
+
let { address, publicKey, derivationPath, masterFingerprint, addressType } = inputs[i].signerInfo;
|
|
11
|
+
let addressObject = this.createAddressObject({
|
|
12
|
+
address,
|
|
13
|
+
publicKey: publicKey ? Buffer.from(publicKey, "hex") : null,
|
|
14
|
+
addressType,
|
|
15
|
+
});
|
|
16
|
+
if (derivationPath && masterFingerprint && publicKey && true) {
|
|
17
|
+
inputs[i].bip32Derivation = [
|
|
18
|
+
{
|
|
19
|
+
path: derivationPath,
|
|
20
|
+
pubkey: addressObject.pubkey,
|
|
21
|
+
masterFingerprint: Buffer.from(masterFingerprint, "hex"),
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
if (addressType === "p2pkh") {
|
|
26
|
+
if (transactionId === inputs[i].hash) {
|
|
27
|
+
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
34
28
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
else {
|
|
40
|
-
transactionHex = yield this._getTransactionHex(inputs[i].hash);
|
|
41
|
-
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
42
|
-
transactionId = inputs[i].hash;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else if (addressType === "p2wpkh") {
|
|
46
|
-
inputs[i].witnessUtxo = {
|
|
47
|
-
script: addressObject.output,
|
|
48
|
-
value: inputs[i].value,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
else if (addressType === "p2sh-p2wpkh") {
|
|
52
|
-
inputs[i].witnessUtxo = {
|
|
53
|
-
script: addressObject.output,
|
|
54
|
-
value: inputs[i].value,
|
|
55
|
-
};
|
|
56
|
-
inputs[i].redeemScript = addressObject.redeem.output;
|
|
29
|
+
else {
|
|
30
|
+
transactionHex = await this._getTransactionHex(inputs[i].hash);
|
|
31
|
+
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
32
|
+
transactionId = inputs[i].hash;
|
|
57
33
|
}
|
|
58
34
|
}
|
|
59
|
-
|
|
60
|
-
|
|
35
|
+
else if (addressType === "p2wpkh") {
|
|
36
|
+
inputs[i].witnessUtxo = {
|
|
37
|
+
script: addressObject.output,
|
|
38
|
+
value: inputs[i].value,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else if (addressType === "p2sh-p2wpkh") {
|
|
42
|
+
inputs[i].witnessUtxo = {
|
|
43
|
+
script: addressObject.output,
|
|
44
|
+
value: inputs[i].value,
|
|
45
|
+
};
|
|
46
|
+
inputs[i].redeemScript = addressObject.redeem.output;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return inputs;
|
|
61
50
|
}
|
|
62
51
|
createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }) {
|
|
63
52
|
const { network } = this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":"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"}
|
package/dist/utils/tools.js
CHANGED
|
@@ -1,35 +1,24 @@
|
|
|
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
|
const util = require("util");
|
|
12
3
|
const axios = require("axios");
|
|
13
4
|
const sleep = util.promisify(setTimeout);
|
|
14
|
-
function runWithRetries(action, config = {
|
|
5
|
+
async function runWithRetries(action, config = {
|
|
15
6
|
maxTries: 2,
|
|
16
7
|
retrySleep: 1000,
|
|
17
8
|
}) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return yield action();
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
lastError = error;
|
|
28
|
-
}
|
|
29
|
-
yield sleep(retrySleep);
|
|
9
|
+
const maxTries = config.maxTries || 2;
|
|
10
|
+
const retrySleep = config.retrySleep || 1000;
|
|
11
|
+
let lastError;
|
|
12
|
+
for (let count = 0; count < maxTries; count += 1) {
|
|
13
|
+
try {
|
|
14
|
+
return await action();
|
|
30
15
|
}
|
|
31
|
-
|
|
32
|
-
|
|
16
|
+
catch (error) {
|
|
17
|
+
lastError = error;
|
|
18
|
+
}
|
|
19
|
+
await sleep(retrySleep);
|
|
20
|
+
}
|
|
21
|
+
throw lastError || new Error("function failed after retries");
|
|
33
22
|
}
|
|
34
23
|
function getRandomInteger(min, max) {
|
|
35
24
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
@@ -41,7 +30,9 @@ function getAxiosInstance({ baseUrl, timeout = 10000, headers = {}, auth }) {
|
|
|
41
30
|
baseURL: host,
|
|
42
31
|
timeout,
|
|
43
32
|
auth,
|
|
44
|
-
headers:
|
|
33
|
+
headers: {
|
|
34
|
+
...headers,
|
|
35
|
+
},
|
|
45
36
|
});
|
|
46
37
|
instance.interceptors.response.use((response) => response, (error) => {
|
|
47
38
|
if (error.response) {
|
package/dist/utils/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":";AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AAExC,KAAK,UAAU,cAAc,CAC3B,MAAM,EACN,MAAM,GAAG;IACP,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,IAAI;CACjB;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;IAC5C,IAAI,SAAS,CAAA;IACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QAChD,IAAI;YACF,OAAO,MAAM,MAAM,EAAE,CAAA;SACtB;QAAC,OAAO,KAAK,EAAE;YACd,SAAS,GAAG,KAAK,CAAA;SAClB;QACD,MAAM,KAAK,CAAC,UAAU,CAAC,CAAA;KACxB;IACD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE;IACxE,IAAI,IAAI,GAAG,OAAO,CAAA;IAClB,IAAI,QAAQ,CAAA;IAEZ,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,IAAI;QACJ,OAAO,EAAE;YACP,GAAG,OAAO;SACX;KACF,CAAC,CAAA;IAGF,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAChC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAK,EAAE,EAAE;QAER,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,YAAY,GAAG,IAAI,KAAK,CAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CACtE,CAAA;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACpC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;SACpC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC,CACF,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,KAAK;IACL,cAAc;IACd,gBAAgB;IAChB,gBAAgB;CACjB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teleportdao/bitcoin",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "provider for different networks",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"author": "",
|
|
13
13
|
"license": "ISC",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@teleportdao/configs": "^1.2.
|
|
15
|
+
"@teleportdao/configs": "^1.2.2",
|
|
16
16
|
"@teleportdao/providers": "^1.1.0",
|
|
17
17
|
"axios": "^0.27.2",
|
|
18
18
|
"bignumber.js": "^9.1.1",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "1df5d3c9693d0f76113a48663d3ffd09dc5a260b"
|
|
35
35
|
}
|
package/src/bitcoin-utils.js
CHANGED
|
@@ -72,7 +72,7 @@ function reverseBytes(hexInput) {
|
|
|
72
72
|
return Buffer.from(hexInput, "hex").reverse().toString("hex")
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
function getAddressType(address, network) {
|
|
75
|
+
function getAddressType(address, network = bitcoin.networks.bitcoin) {
|
|
76
76
|
if (address.startsWith(network.bech32)) {
|
|
77
77
|
// todo : check length - it could be p2wsh
|
|
78
78
|
return "p2wpkh"
|
|
@@ -88,7 +88,7 @@ function getAddressType(address, network) {
|
|
|
88
88
|
throw new Error("invalid address")
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
function createAddressObjectByHash({ addressType, hash }, network) {
|
|
91
|
+
function createAddressObjectByHash({ addressType, hash }, network = bitcoin.networks.bitcoin) {
|
|
92
92
|
let addressObject
|
|
93
93
|
switch (addressType) {
|
|
94
94
|
case "p2pkh":
|
|
@@ -115,7 +115,7 @@ function createAddressObjectByHash({ addressType, hash }, network) {
|
|
|
115
115
|
return addressObject
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
function createAddressObjectByScript({ addressType, script }, network) {
|
|
118
|
+
function createAddressObjectByScript({ addressType, script }, network = bitcoin.networks.bitcoin) {
|
|
119
119
|
let addressObject
|
|
120
120
|
switch (addressType) {
|
|
121
121
|
case "p2pkh":
|
|
@@ -142,7 +142,10 @@ function createAddressObjectByScript({ addressType, script }, network) {
|
|
|
142
142
|
return addressObject
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
function createAddressObjectByPublicKey(
|
|
145
|
+
function createAddressObjectByPublicKey(
|
|
146
|
+
{ addressType, publicKey },
|
|
147
|
+
network = bitcoin.networks.bitcoin,
|
|
148
|
+
) {
|
|
146
149
|
let addressObject
|
|
147
150
|
|
|
148
151
|
switch (addressType) {
|
|
@@ -172,7 +175,7 @@ function createAddressObjectByPublicKey({ addressType, publicKey }, network) {
|
|
|
172
175
|
return addressObject
|
|
173
176
|
}
|
|
174
177
|
|
|
175
|
-
function createAddressObjectByAddress(address, network) {
|
|
178
|
+
function createAddressObjectByAddress(address, network = bitcoin.networks.bitcoin) {
|
|
176
179
|
let addressType = getAddressType(address, network)
|
|
177
180
|
let addressObject
|
|
178
181
|
switch (addressType) {
|
|
@@ -213,17 +216,17 @@ function getPublicKeyHexByXpubAndIndex(
|
|
|
213
216
|
.publicKey.toString("hex")
|
|
214
217
|
}
|
|
215
218
|
|
|
216
|
-
function getPubKeyFromPrivateKeyWIF(privateKeyWIF, network) {
|
|
219
|
+
function getPubKeyFromPrivateKeyWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
|
|
217
220
|
let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network)
|
|
218
221
|
return key.publicKey
|
|
219
222
|
}
|
|
220
223
|
|
|
221
|
-
function getPubKeyFromPrivateKeyHex(privateKeyHex, network) {
|
|
224
|
+
function getPubKeyFromPrivateKeyHex(privateKeyHex, network = bitcoin.networks.bitcoin) {
|
|
222
225
|
let key = bitcoin.ECPair.fromPrivateKey(Buffer.from(privateKeyHex, "hex"), network)
|
|
223
226
|
return key.publicKey
|
|
224
227
|
}
|
|
225
228
|
|
|
226
|
-
function getPrivateKeyHexFromWIF(privateKeyWIF, network) {
|
|
229
|
+
function getPrivateKeyHexFromWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
|
|
227
230
|
let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network)
|
|
228
231
|
return key.privateKey.toString("hex")
|
|
229
232
|
}
|
|
@@ -275,7 +278,7 @@ function parseBlockHeader(headerHex) {
|
|
|
275
278
|
return result
|
|
276
279
|
}
|
|
277
280
|
|
|
278
|
-
function convertBitcoinScriptToAddress(script, network) {
|
|
281
|
+
function convertBitcoinScriptToAddress(script, network = bitcoin.networks.bitcoin) {
|
|
279
282
|
try {
|
|
280
283
|
return bitcoin.address?.fromOutputScript(script, network)
|
|
281
284
|
} catch (error) {
|
|
@@ -432,6 +435,25 @@ function extractTransactionsAndBlockInfoFromRawBlock(
|
|
|
432
435
|
}
|
|
433
436
|
}
|
|
434
437
|
|
|
438
|
+
function validateAddress(address, network = bitcoin.networks.bitcoin) {
|
|
439
|
+
try {
|
|
440
|
+
let isValid = false
|
|
441
|
+
let isAddressSegwit = address.startsWith(network.bech32)
|
|
442
|
+
if (isAddressSegwit) {
|
|
443
|
+
bitcoin.address.fromBech32(address)
|
|
444
|
+
isValid = true
|
|
445
|
+
} else {
|
|
446
|
+
let base58Data = bitcoin.address.fromBase58Check(address)
|
|
447
|
+
isValid =
|
|
448
|
+
base58Data.version === Number(network.scriptHash) ||
|
|
449
|
+
base58Data.version === Number(network.pubKeyHash)
|
|
450
|
+
}
|
|
451
|
+
return isValid
|
|
452
|
+
} catch (error) {
|
|
453
|
+
return false
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
435
457
|
module.exports = {
|
|
436
458
|
parseRawTransaction,
|
|
437
459
|
calculateMerkleProof,
|
|
@@ -454,7 +476,8 @@ module.exports = {
|
|
|
454
476
|
// ---------------------------
|
|
455
477
|
parseRawBlock,
|
|
456
478
|
extractTransactionsAndBlockInfoFromRawBlock,
|
|
457
|
-
|
|
458
479
|
// -----------------------------
|
|
480
|
+
validateAddress,
|
|
481
|
+
|
|
459
482
|
networks,
|
|
460
483
|
}
|