@teleportdao/bitcoin 1.2.2 → 1.3.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-base.d.ts +1 -1
- package/dist/bitcoin-base.d.ts.map +1 -1
- package/dist/bitcoin-base.js +62 -41
- package/dist/bitcoin-base.js.map +1 -1
- package/dist/bitcoin-interface.d.ts +4 -4
- package/dist/bitcoin-interface.d.ts.map +1 -1
- package/dist/bitcoin-interface.js +258 -216
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bitcoin-utils.js +3 -2
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/helper/burn-request-helper.js +1 -4
- package/dist/helper/burn-request-helper.js.map +1 -1
- package/dist/helper/teleport-request-helper.js +6 -4
- package/dist/helper/teleport-request-helper.js.map +1 -1
- package/dist/sign/sign-transaction.js +22 -11
- package/dist/sign/sign-transaction.js.map +1 -1
- package/dist/teleport-dao-payments.d.ts +3 -3
- package/dist/teleport-dao-payments.d.ts.map +1 -1
- package/dist/teleport-dao-payments.js +141 -122
- package/dist/teleport-dao-payments.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +6 -2
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +32 -15
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder-common.js +70 -50
- package/dist/transaction-builder/transaction-builder-common.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +53 -42
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/dist/utils/tools.d.ts +2 -1
- package/dist/utils/tools.d.ts.map +1 -1
- package/dist/utils/tools.js +25 -16
- package/dist/utils/tools.js.map +1 -1
- package/package.json +6 -6
- package/src/bitcoin-base.js +3 -1
- package/src/bitcoin-interface.js +2 -3
- package/src/helper/teleport-request-helper.js +1 -1
- package/src/teleport-dao-payments.js +3 -2
|
@@ -1,32 +1,49 @@
|
|
|
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
|
+
};
|
|
2
11
|
const BaseTransactionBuilder = require("./transaction-builder");
|
|
3
12
|
const BitcoinInterface = require("../bitcoin-interface");
|
|
4
13
|
class BitcoinTransactionBuilder extends BaseTransactionBuilder {
|
|
5
14
|
constructor(connectionInfo, networkName, network) {
|
|
6
15
|
super({
|
|
7
16
|
network,
|
|
8
|
-
testnet: networkName
|
|
17
|
+
testnet: networkName === null || networkName === void 0 ? void 0 : networkName.includes("_testnet"),
|
|
9
18
|
dustLimit: 1000,
|
|
10
19
|
});
|
|
11
20
|
this.btcInterface = new BitcoinInterface(connectionInfo, networkName);
|
|
12
21
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
_getUtxo(userAddress) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
let utxos = yield this.btcInterface.getAddressesUtxo([userAddress]);
|
|
25
|
+
return utxos.map((tx) => ({
|
|
26
|
+
hash: tx.txId,
|
|
27
|
+
value: tx.value,
|
|
28
|
+
index: tx.index,
|
|
29
|
+
}));
|
|
30
|
+
});
|
|
20
31
|
}
|
|
21
|
-
|
|
22
|
-
return this
|
|
32
|
+
_getFeeRate(speed) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
return this.btcInterface.getFeeRate(speed);
|
|
35
|
+
});
|
|
23
36
|
}
|
|
24
|
-
|
|
25
|
-
return this
|
|
37
|
+
_getTransactionHex(transactionId) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
return this.btcInterface.provider.getRawTransaction(transactionId);
|
|
40
|
+
});
|
|
26
41
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
sendTx(txHex) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
let txId = yield this.btcInterface.provider.sendRawTransaction(txHex);
|
|
45
|
+
return txId;
|
|
46
|
+
});
|
|
30
47
|
}
|
|
31
48
|
}
|
|
32
49
|
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,aAAX,WAAW,uBAAX,WAAW,CAAE,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;IAEK,QAAQ,CAAC,WAAW;;YACxB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,KAAK,EAAE,EAAE,CAAC,KAAK;aAChB,CAAC,CAAC,CAAA;QACL,CAAC;KAAA;IAEK,WAAW,CAAC,KAAK;;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;KAAA;IAEK,kBAAkB,CAAC,aAAa;;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QACpE,CAAC;KAAA;IAEK,MAAM,CAAC,KAAK;;YAChB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACrE,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;CACF;AAED,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAAA"}
|
|
@@ -1,4 +1,13 @@
|
|
|
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
|
+
};
|
|
2
11
|
const bitcoin = require("bitcoinjs-lib");
|
|
3
12
|
const coinselect = require("coinselect");
|
|
4
13
|
const coinselectSplit = require("coinselect/split");
|
|
@@ -28,17 +37,25 @@ class BaseBitcoinLikeTransaction {
|
|
|
28
37
|
this.feeMin = feeMin;
|
|
29
38
|
this.dustLimit = dustLimit || 1 * 2 * componentBytes.bytePerInput.p2pkh;
|
|
30
39
|
}
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
_getUtxo(userAddress) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
throw new Error("Do not call abstract method directly");
|
|
43
|
+
});
|
|
33
44
|
}
|
|
34
|
-
|
|
35
|
-
|
|
45
|
+
_getTransactionHex(transactionId) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
throw new Error("Do not call abstract method directly");
|
|
48
|
+
});
|
|
36
49
|
}
|
|
37
|
-
|
|
38
|
-
|
|
50
|
+
convertBaseInputsToInputs(baseInputs) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
throw new Error("Do not call abstract method directly");
|
|
53
|
+
});
|
|
39
54
|
}
|
|
40
|
-
|
|
41
|
-
|
|
55
|
+
createUnsignedTransaction(baseInputs) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
throw new Error("Do not call abstract method directly");
|
|
58
|
+
});
|
|
42
59
|
}
|
|
43
60
|
createAddressObject({ addressType, publicKey }) {
|
|
44
61
|
return createAddressObjectByPublicKey({ addressType, publicKey }, this.network);
|
|
@@ -99,52 +116,55 @@ class BaseBitcoinLikeTransaction {
|
|
|
99
116
|
change,
|
|
100
117
|
};
|
|
101
118
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
return extendedUtxo;
|
|
112
|
-
}
|
|
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,
|
|
119
|
+
getExtendedUtxo(signerInfo) {
|
|
120
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
let utxo = yield this._getUtxo(signerInfo.address);
|
|
122
|
+
const extendedUtxo = utxo.map((input) => (Object.assign(Object.assign({}, input), { signerInfo })));
|
|
123
|
+
if (!extendedUtxo || extendedUtxo.length === 0) {
|
|
124
|
+
throw new Error("no utxo found");
|
|
125
|
+
}
|
|
126
|
+
return extendedUtxo;
|
|
120
127
|
});
|
|
121
|
-
let inputs = await this.convertBaseInputsToInputs(filteredInputs);
|
|
122
|
-
return {
|
|
123
|
-
inputs,
|
|
124
|
-
outputs,
|
|
125
|
-
change,
|
|
126
|
-
fee,
|
|
127
|
-
feeRate,
|
|
128
|
-
};
|
|
129
128
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
129
|
+
convertUtxoToInput({ extendedUtxo, targets, changeAddress, feeRate, selectType }) {
|
|
130
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
let { inputs: filteredInputs, outputs, change, fee, } = BaseBitcoinLikeTransaction.helperHandleInputsAndOutputs({
|
|
132
|
+
targets,
|
|
133
|
+
extendedUtxo,
|
|
134
|
+
feeRate,
|
|
135
|
+
changeAddress,
|
|
136
|
+
selectType,
|
|
137
|
+
});
|
|
138
|
+
let inputs = yield this.convertBaseInputsToInputs(filteredInputs);
|
|
139
|
+
return {
|
|
140
|
+
inputs,
|
|
141
|
+
outputs,
|
|
142
|
+
change,
|
|
143
|
+
fee,
|
|
144
|
+
feeRate,
|
|
145
|
+
};
|
|
139
146
|
});
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
}
|
|
148
|
+
processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, selectType = "normal", }) {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
if (!selfTransaction && targets.length === 0)
|
|
151
|
+
throw new Error("no target");
|
|
152
|
+
const { inputs, outputs, change, fee } = yield this.convertUtxoToInput({
|
|
153
|
+
extendedUtxo,
|
|
154
|
+
targets,
|
|
155
|
+
changeAddress,
|
|
156
|
+
feeRate,
|
|
157
|
+
selectType: fullAmount ? "full" : selectType,
|
|
158
|
+
});
|
|
159
|
+
let unsignedTransaction = yield this.createUnsignedTransaction({
|
|
160
|
+
inputs,
|
|
161
|
+
outputs,
|
|
162
|
+
change,
|
|
163
|
+
fee,
|
|
164
|
+
feeRate,
|
|
165
|
+
});
|
|
166
|
+
return unsignedTransaction;
|
|
146
167
|
});
|
|
147
|
-
return unsignedTransaction;
|
|
148
168
|
}
|
|
149
169
|
getOpReturnTarget(dataHex) {
|
|
150
170
|
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,52 +1,63 @@
|
|
|
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
|
+
};
|
|
2
11
|
const bitcoin = require("bitcoinjs-lib");
|
|
3
12
|
const BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
|
|
4
13
|
class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
let
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (addressType === "p2pkh") {
|
|
26
|
-
if (transactionId === inputs[i].hash) {
|
|
27
|
-
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
14
|
+
convertBaseInputsToInputs(baseInputs = []) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
let inputs = baseInputs;
|
|
17
|
+
let transactionId = null;
|
|
18
|
+
let transactionHex = null;
|
|
19
|
+
for (let i in inputs) {
|
|
20
|
+
let { address, publicKey, derivationPath, masterFingerprint, addressType } = inputs[i].signerInfo;
|
|
21
|
+
let addressObject = this.createAddressObject({
|
|
22
|
+
address,
|
|
23
|
+
publicKey: publicKey ? Buffer.from(publicKey, "hex") : null,
|
|
24
|
+
addressType,
|
|
25
|
+
});
|
|
26
|
+
if (derivationPath && masterFingerprint && publicKey && true) {
|
|
27
|
+
inputs[i].bip32Derivation = [
|
|
28
|
+
{
|
|
29
|
+
path: derivationPath,
|
|
30
|
+
pubkey: addressObject.pubkey,
|
|
31
|
+
masterFingerprint: Buffer.from(masterFingerprint, "hex"),
|
|
32
|
+
},
|
|
33
|
+
];
|
|
28
34
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
if (addressType === "p2pkh") {
|
|
36
|
+
if (transactionId === inputs[i].hash) {
|
|
37
|
+
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
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;
|
|
33
57
|
}
|
|
34
58
|
}
|
|
35
|
-
|
|
36
|
-
|
|
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;
|
|
59
|
+
return inputs;
|
|
60
|
+
});
|
|
50
61
|
}
|
|
51
62
|
createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }) {
|
|
52
63
|
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.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/utils/tools.js"],"names":[],"mappings":";AAGA,gEAAwC;AAExC;;;iBAmBC;AAED,0DAEC;AAED;;;;;QAkCC"}
|
package/dist/utils/tools.js
CHANGED
|
@@ -1,24 +1,35 @@
|
|
|
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
|
+
};
|
|
2
11
|
const util = require("util");
|
|
3
12
|
const axios = require("axios");
|
|
4
13
|
const sleep = util.promisify(setTimeout);
|
|
5
|
-
|
|
14
|
+
function runWithRetries(action, config = {
|
|
6
15
|
maxTries: 2,
|
|
7
16
|
retrySleep: 1000,
|
|
8
17
|
}) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
const maxTries = config.maxTries || 2;
|
|
20
|
+
const retrySleep = config.retrySleep || 1000;
|
|
21
|
+
let lastError;
|
|
22
|
+
for (let count = 0; count < maxTries; count += 1) {
|
|
23
|
+
try {
|
|
24
|
+
return yield action();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
lastError = error;
|
|
28
|
+
}
|
|
29
|
+
yield sleep(retrySleep);
|
|
15
30
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
await sleep(retrySleep);
|
|
20
|
-
}
|
|
21
|
-
throw lastError || new Error("function failed after retries");
|
|
31
|
+
throw lastError || new Error("function failed after retries");
|
|
32
|
+
});
|
|
22
33
|
}
|
|
23
34
|
function getRandomInteger(min, max) {
|
|
24
35
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
@@ -30,9 +41,7 @@ function getAxiosInstance({ baseUrl, timeout = 10000, headers = {}, auth }) {
|
|
|
30
41
|
baseURL: host,
|
|
31
42
|
timeout,
|
|
32
43
|
auth,
|
|
33
|
-
headers: {
|
|
34
|
-
...headers,
|
|
35
|
-
},
|
|
44
|
+
headers: Object.assign({}, headers),
|
|
36
45
|
});
|
|
37
46
|
instance.interceptors.response.use((response) => response, (error) => {
|
|
38
47
|
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,SAAe,cAAc,CAC3B,MAAM,EACN,MAAM,GAAG;IACP,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,IAAI;CACjB;;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;QAC5C,IAAI,SAAS,CAAA;QACb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;YAChD,IAAI;gBACF,OAAO,MAAM,MAAM,EAAE,CAAA;aACtB;YAAC,OAAO,KAAK,EAAE;gBACd,SAAS,GAAG,KAAK,CAAA;aAClB;YACD,MAAM,KAAK,CAAC,UAAU,CAAC,CAAA;SACxB;QACD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAC/D,CAAC;CAAA;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,oBACF,OAAO,CACX;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,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teleportdao/bitcoin",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.3.0-alpha.0",
|
|
4
|
+
"description": "teleswap bitcoin package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"test": "echo \"Error: no test specified\" && exit
|
|
8
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
9
9
|
"build": "tsc",
|
|
10
10
|
"build:watch": "tsc --watch"
|
|
11
11
|
},
|
|
12
12
|
"author": "",
|
|
13
13
|
"license": "ISC",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@teleportdao/configs": "^1.
|
|
16
|
-
"@teleportdao/providers": "^1.
|
|
15
|
+
"@teleportdao/configs": "^1.3.0-alpha.0",
|
|
16
|
+
"@teleportdao/providers": "^1.2.4",
|
|
17
17
|
"axios": "^0.27.2",
|
|
18
18
|
"bignumber.js": "^9.1.1",
|
|
19
19
|
"bip32": "^2.0.6",
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
|
-
"gitHead": "
|
|
34
|
+
"gitHead": "23f3e46120038a2495cea7f200abf36cd0b30616"
|
|
35
35
|
}
|
package/src/bitcoin-base.js
CHANGED
|
@@ -127,7 +127,7 @@ class BitcoinBase {
|
|
|
127
127
|
const account = node.derivePath(path)
|
|
128
128
|
const userKeyPair = account.derive(index)
|
|
129
129
|
this.setAccountPrivateKey(userKeyPair.privateKey.toString("hex"))
|
|
130
|
-
this.setAccount(addressType)
|
|
130
|
+
return this.setAccount(addressType)
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
setAccount(accountType = "p2pkh") {
|
|
@@ -177,6 +177,8 @@ class BitcoinBase {
|
|
|
177
177
|
addressType: this.currentAccountType,
|
|
178
178
|
publicKey: this.publicKey.toString("hex"),
|
|
179
179
|
})
|
|
180
|
+
if (amount - +amount.toFixed() !== 0)
|
|
181
|
+
throw new Error("incorrect amount. amount should be in satoshi")
|
|
180
182
|
let feeRate = await this.transactionBuilder._getFeeRate(speed)
|
|
181
183
|
let unsignedTx = await this.transactionBuilder.processUnsignedTransaction({
|
|
182
184
|
extendedUtxo,
|
package/src/bitcoin-interface.js
CHANGED
|
@@ -56,7 +56,7 @@ class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
56
56
|
throw new Error("incorrect speed")
|
|
57
57
|
}
|
|
58
58
|
let fee = await this.provider.getFeeRate(speed)
|
|
59
|
-
return fee
|
|
59
|
+
return +fee
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
// ----------- specific
|
|
@@ -190,6 +190,7 @@ class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
190
190
|
value: tx.value,
|
|
191
191
|
index: tx.index,
|
|
192
192
|
...addressesInfo[i],
|
|
193
|
+
signerInfo: addressesInfo[i],
|
|
193
194
|
})),
|
|
194
195
|
)
|
|
195
196
|
.flat(1),
|
|
@@ -275,7 +276,6 @@ class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
275
276
|
let requests = []
|
|
276
277
|
let invalidRequests = []
|
|
277
278
|
for (let transaction of transactions) {
|
|
278
|
-
console.log(`received tx to check for teleport: ${transaction.txId}`)
|
|
279
279
|
let address = transaction.address
|
|
280
280
|
let { request, lockerAddress, lockerLockingScript } = await this.getTeleportRequestByTx(
|
|
281
281
|
transaction,
|
|
@@ -314,7 +314,6 @@ class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
314
314
|
let validTxs = []
|
|
315
315
|
for (let transaction of transactions) {
|
|
316
316
|
let address = transaction.address
|
|
317
|
-
console.log(`received tx to check burn: ${transaction.txId}`)
|
|
318
317
|
// check if its a transaction to spend btc
|
|
319
318
|
let txBurnInfo = await this.getTransactionBurnInfoByTx(transaction, address)
|
|
320
319
|
if (txBurnInfo) {
|
|
@@ -84,7 +84,7 @@ class TeleportDaoPayment extends BitcoinBase {
|
|
|
84
84
|
isExchange = false,
|
|
85
85
|
exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
|
|
86
86
|
outputAmount = 0, // 28 bytes
|
|
87
|
-
deadline, // 4 bytes
|
|
87
|
+
deadline = 0, // 4 bytes
|
|
88
88
|
isFixedToken = false, // 1 byte
|
|
89
89
|
}) {
|
|
90
90
|
let dataHex = TeleportDaoPayment.getTransferOpReturnData({
|
|
@@ -126,7 +126,7 @@ class TeleportDaoPayment extends BitcoinBase {
|
|
|
126
126
|
isExchange = false,
|
|
127
127
|
exchangeTokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
|
|
128
128
|
outputAmount = 0, // 28 bytes
|
|
129
|
-
deadline, // 4 bytes
|
|
129
|
+
deadline = 0, // 4 bytes
|
|
130
130
|
isFixedToken = false, // 1 byte
|
|
131
131
|
feeSpeed = "normal",
|
|
132
132
|
}) {
|
|
@@ -226,6 +226,7 @@ class TeleportDaoPayment extends BitcoinBase {
|
|
|
226
226
|
.padStart(4, "0")
|
|
227
227
|
let speedHex = speed ? "01" : "00"
|
|
228
228
|
let dataHex = chainIdHex + appIdHex + recipientAddressHex + percentageFeeHex + speedHex
|
|
229
|
+
|
|
229
230
|
if (!isExchange) {
|
|
230
231
|
if (dataHex.length !== 26 * 2) throw new Error("invalid data length")
|
|
231
232
|
return dataHex
|