@teleportdao/bitcoin 1.5.5 → 1.5.6
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/.tmp/check.ts +95 -13
- package/dist/bitcoin-utils.d.ts.map +1 -1
- package/dist/bitcoin-utils.js +1 -0
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/bundle.js +2 -2
- package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +69 -31
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/package.json +3 -3
- package/src/bitcoin-utils.ts +1 -0
- package/src/transaction-builder/transaction-builder.ts +81 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,22 +37,27 @@ const bitcoin_utils_1 = require("../bitcoin-utils");
|
|
|
37
37
|
const coinselect = require("coinselect");
|
|
38
38
|
const coinselectSplit = require("coinselect/split");
|
|
39
39
|
const coinselectAccumulative = require("coinselect/accumulative");
|
|
40
|
-
const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
|
|
41
|
-
const TX_INPUT_BASE = 32 + 4 + 1 + 4;
|
|
42
|
-
const TX_INPUT_P2PKH = 107;
|
|
43
|
-
const TX_INPUT_P2SH_P2PKH = 50;
|
|
44
|
-
const TX_INPUT_P2WPKH = 47;
|
|
45
|
-
const TX_OUTPUT_BASE = 8 + 1;
|
|
46
|
-
const TX_OUTPUT_P2PKH = 25;
|
|
47
40
|
const componentBytes = {
|
|
48
41
|
bytePerInput: {
|
|
49
|
-
p2pkh:
|
|
50
|
-
p2wpkh:
|
|
51
|
-
"p2sh-p2wpkh":
|
|
42
|
+
p2pkh: 148,
|
|
43
|
+
p2wpkh: 68,
|
|
44
|
+
"p2sh-p2wpkh": 91,
|
|
45
|
+
p2tr: 58,
|
|
46
|
+
},
|
|
47
|
+
baseTxBytes: 10 + 2,
|
|
48
|
+
bytePerOutput: {
|
|
49
|
+
p2pkh: 34,
|
|
50
|
+
p2wpkh: 31,
|
|
51
|
+
p2sh: 32,
|
|
52
|
+
p2tr: 43,
|
|
53
|
+
default: 35,
|
|
54
|
+
},
|
|
55
|
+
opReturn: {
|
|
56
|
+
dataLessThan75: 31,
|
|
57
|
+
dataMoreThan75: 91,
|
|
52
58
|
},
|
|
53
|
-
baseTxBytes: TX_EMPTY_SIZE,
|
|
54
|
-
bytePerOutput: TX_OUTPUT_BASE + TX_OUTPUT_P2PKH,
|
|
55
59
|
};
|
|
60
|
+
const DUST = 1000;
|
|
56
61
|
class BaseBitcoinLikeTransaction {
|
|
57
62
|
constructor({ network, testnet, feeMin = 0, dustLimit, maximumNumberOfOutputsInTransaction = 50, }) {
|
|
58
63
|
this.testnet = testnet;
|
|
@@ -106,51 +111,84 @@ class BaseBitcoinLikeTransaction {
|
|
|
106
111
|
});
|
|
107
112
|
}
|
|
108
113
|
static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeObject, selectType = "normal", }) {
|
|
114
|
+
const filteredUtxo = extendedUtxo.filter((u) => u.value >
|
|
115
|
+
+feeRate *
|
|
116
|
+
componentBytes.bytePerInput[u.signerInfo.addressType]);
|
|
109
117
|
let selectResponse;
|
|
110
118
|
switch (selectType) {
|
|
111
119
|
case "normal":
|
|
112
|
-
selectResponse = coinselect(
|
|
120
|
+
selectResponse = coinselect(filteredUtxo, targets, Math.round(feeRate));
|
|
113
121
|
break;
|
|
114
122
|
case "accumulative":
|
|
115
|
-
selectResponse = coinselectAccumulative(
|
|
123
|
+
selectResponse = coinselectAccumulative(filteredUtxo, targets, Math.round(feeRate));
|
|
116
124
|
break;
|
|
117
125
|
case "full":
|
|
118
126
|
if (!targets[0].address) {
|
|
119
127
|
throw new Error();
|
|
120
128
|
}
|
|
121
|
-
selectResponse = coinselectSplit(
|
|
129
|
+
selectResponse = coinselectSplit(filteredUtxo, [{ address: targets[0].address }], Math.round(feeRate));
|
|
122
130
|
break;
|
|
123
131
|
default:
|
|
124
132
|
break;
|
|
125
133
|
}
|
|
126
134
|
let { inputs, outputs, fee, } = selectResponse;
|
|
127
135
|
if (!inputs || !outputs) {
|
|
128
|
-
|
|
136
|
+
inputs = filteredUtxo;
|
|
137
|
+
outputs = targets;
|
|
138
|
+
fee = inputs.reduce((a, b) => a + b.value, 0) - outputs.reduce((a, b) => a + b.value, 0);
|
|
129
139
|
}
|
|
130
140
|
const inputsSizes = inputs.map((i) => componentBytes.bytePerInput[i.signerInfo.addressType]);
|
|
131
|
-
const outputSizes = outputs.
|
|
141
|
+
const outputSizes = outputs.map((outP) => {
|
|
142
|
+
if (outP.address) {
|
|
143
|
+
let addressType = "default";
|
|
144
|
+
try {
|
|
145
|
+
addressType = (0, bitcoin_utils_1.getAddressType)(outP.address);
|
|
146
|
+
}
|
|
147
|
+
catch (_a) {
|
|
148
|
+
addressType = "default";
|
|
149
|
+
}
|
|
150
|
+
return componentBytes.bytePerOutput[addressType];
|
|
151
|
+
}
|
|
152
|
+
if (outP.script) {
|
|
153
|
+
if (outP.script.byteLength < 75) {
|
|
154
|
+
return componentBytes.opReturn.dataLessThan75;
|
|
155
|
+
}
|
|
156
|
+
return componentBytes.opReturn.dataMoreThan75;
|
|
157
|
+
}
|
|
158
|
+
return componentBytes.bytePerOutput.default;
|
|
159
|
+
});
|
|
132
160
|
const txSize = componentBytes.baseTxBytes +
|
|
133
161
|
inputsSizes.reduce((a, c) => a + c, 0) +
|
|
134
|
-
outputSizes +
|
|
135
|
-
componentBytes.bytePerOutput;
|
|
136
|
-
const txFee = txSize * feeRate;
|
|
162
|
+
outputSizes.reduce((a, c) => a + c, 0) +
|
|
163
|
+
componentBytes.bytePerOutput.default;
|
|
164
|
+
const txFee = txSize * Math.round(feeRate);
|
|
165
|
+
if (inputs.reduce((a, b) => a + b.value, 0) - outputs.reduce((a, b) => a + b.value, 0) - txFee <
|
|
166
|
+
DUST) {
|
|
167
|
+
throw new Error("not enough balance");
|
|
168
|
+
}
|
|
137
169
|
let diff = fee - txFee;
|
|
138
170
|
let changeIndex = outputs.findIndex((x) => !(x === null || x === void 0 ? void 0 : x.address) && !x.script && (x.value || 0) > 0);
|
|
139
171
|
let change;
|
|
140
|
-
if (changeIndex >= 0 || diff >
|
|
172
|
+
if (changeIndex >= 0 || diff > DUST) {
|
|
141
173
|
if (changeIndex >= 0) {
|
|
142
|
-
diff = diff + componentBytes.bytePerOutput * feeRate;
|
|
174
|
+
diff = diff + componentBytes.bytePerOutput.default * Math.round(feeRate);
|
|
143
175
|
}
|
|
144
176
|
if (diff < 0) {
|
|
145
177
|
diff = 0;
|
|
146
178
|
}
|
|
147
|
-
if (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
179
|
+
if (selectType === "full") {
|
|
180
|
+
outputs[0].value = outputs[0].value + diff;
|
|
181
|
+
fee = fee - diff;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
if (!changeObject)
|
|
185
|
+
throw new Error("change not exist");
|
|
186
|
+
change = {
|
|
187
|
+
address: changeObject.address,
|
|
188
|
+
value: changeIndex >= 0 ? outputs[changeIndex].value + diff : diff,
|
|
189
|
+
};
|
|
190
|
+
fee = fee - diff;
|
|
191
|
+
}
|
|
154
192
|
if (changeIndex >= 0) {
|
|
155
193
|
outputs.splice(changeIndex, 1);
|
|
156
194
|
}
|
|
@@ -260,7 +298,7 @@ class BaseBitcoinLikeTransaction {
|
|
|
260
298
|
};
|
|
261
299
|
if (!addressObject.pubkey)
|
|
262
300
|
throw new Error("invalid signer info for p2tr address (pubkey)");
|
|
263
|
-
inputs[i].tapInternalKey =
|
|
301
|
+
inputs[i].tapInternalKey = addressObject.internalPubkey;
|
|
264
302
|
if (inputs[i].signerInfo.includeHex) {
|
|
265
303
|
if (transactionHex && transactionId === inputs[i].hash) {
|
|
266
304
|
inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
|
|
@@ -351,7 +389,7 @@ class BaseBitcoinLikeTransaction {
|
|
|
351
389
|
}
|
|
352
390
|
}
|
|
353
391
|
for (const target of outputs) {
|
|
354
|
-
newPsbt.addOutput(
|
|
392
|
+
newPsbt.addOutput(target);
|
|
355
393
|
}
|
|
356
394
|
if (change && Object.keys(change).length !== 0) {
|
|
357
395
|
newPsbt.addOutput(change);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teleportdao/bitcoin",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.6",
|
|
4
4
|
"description": "teleswap bitcoin package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"browser": "dist/bundle.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"license": "ISC",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@bitcoinerlab/secp256k1": "^1.0.5",
|
|
18
|
-
"@teleportdao/configs": "^1.5.
|
|
18
|
+
"@teleportdao/configs": "^1.5.6",
|
|
19
19
|
"@teleportdao/providers": "^1.5.4",
|
|
20
20
|
"axios": "^0.27.2",
|
|
21
21
|
"bignumber.js": "^9.1.1",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "f95581445c76a2ccf0b26d88d26c82530a9c2f74",
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@babel/preset-react": "^7.23.3"
|
|
40
40
|
}
|
package/src/bitcoin-utils.ts
CHANGED
|
@@ -9,6 +9,7 @@ import * as bitcoinEcPair from "bitcoinjs-ecpair"
|
|
|
9
9
|
const bip32 = BIP32Factory(ecc)
|
|
10
10
|
const ECPair = bitcoinEcPair.ECPair
|
|
11
11
|
|
|
12
|
+
bitcoin.initEccLib(ecc)
|
|
12
13
|
let varUnit = require("varuint-bitcoin")
|
|
13
14
|
const fastRoot = require("merkle-lib/fastRoot")
|
|
14
15
|
const merkle = require("merkle-lib")
|
|
@@ -7,24 +7,30 @@ const coinselect = require("coinselect")
|
|
|
7
7
|
const coinselectSplit = require("coinselect/split")
|
|
8
8
|
const coinselectAccumulative = require("coinselect/accumulative")
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
const TX_INPUT_BASE = 32 + 4 + 1 + 4
|
|
12
|
-
const TX_INPUT_P2PKH = 107
|
|
13
|
-
const TX_INPUT_P2SH_P2PKH = 50
|
|
14
|
-
const TX_INPUT_P2WPKH = 47
|
|
15
|
-
const TX_OUTPUT_BASE = 8 + 1
|
|
16
|
-
const TX_OUTPUT_P2PKH = 25
|
|
17
|
-
|
|
10
|
+
// https://bitcoin.stackexchange.com/questions/84004/how-do-virtual-size-stripped-size-and-raw-size-compare-between-legacy-address-f
|
|
18
11
|
const componentBytes = {
|
|
19
12
|
bytePerInput: {
|
|
20
|
-
p2pkh:
|
|
21
|
-
p2wpkh:
|
|
22
|
-
"p2sh-p2wpkh":
|
|
13
|
+
p2pkh: 148,
|
|
14
|
+
p2wpkh: 68,
|
|
15
|
+
"p2sh-p2wpkh": 91,
|
|
16
|
+
p2tr: 58,
|
|
17
|
+
},
|
|
18
|
+
baseTxBytes: 10 + 2, // +2 extra bytes to be sure
|
|
19
|
+
bytePerOutput: {
|
|
20
|
+
p2pkh: 34,
|
|
21
|
+
p2wpkh: 31,
|
|
22
|
+
p2sh: 32,
|
|
23
|
+
p2tr: 43,
|
|
24
|
+
default: 35,
|
|
25
|
+
},
|
|
26
|
+
opReturn: {
|
|
27
|
+
dataLessThan75: 31,
|
|
28
|
+
dataMoreThan75: 91,
|
|
23
29
|
},
|
|
24
|
-
baseTxBytes: TX_EMPTY_SIZE,
|
|
25
|
-
bytePerOutput: TX_OUTPUT_BASE + TX_OUTPUT_P2PKH,
|
|
26
30
|
}
|
|
27
31
|
|
|
32
|
+
const DUST = 1000
|
|
33
|
+
|
|
28
34
|
export type Utxo = {
|
|
29
35
|
hash: string
|
|
30
36
|
value: number
|
|
@@ -190,21 +196,28 @@ class BaseBitcoinLikeTransaction {
|
|
|
190
196
|
}
|
|
191
197
|
selectType?: "normal" | "accumulative" | "full"
|
|
192
198
|
}) {
|
|
199
|
+
const filteredUtxo = extendedUtxo.filter(
|
|
200
|
+
(u) =>
|
|
201
|
+
u.value >
|
|
202
|
+
+feeRate *
|
|
203
|
+
componentBytes.bytePerInput[
|
|
204
|
+
u.signerInfo.addressType as keyof typeof componentBytes.bytePerInput
|
|
205
|
+
],
|
|
206
|
+
)
|
|
193
207
|
let selectResponse
|
|
194
208
|
switch (selectType) {
|
|
195
209
|
case "normal":
|
|
196
|
-
selectResponse = coinselect(
|
|
197
|
-
|
|
210
|
+
selectResponse = coinselect(filteredUtxo, targets, Math.round(feeRate))
|
|
198
211
|
break
|
|
199
212
|
case "accumulative":
|
|
200
|
-
selectResponse = coinselectAccumulative(
|
|
213
|
+
selectResponse = coinselectAccumulative(filteredUtxo, targets, Math.round(feeRate))
|
|
201
214
|
break
|
|
202
215
|
case "full":
|
|
203
216
|
if (!(targets[0] as TargetAddress).address) {
|
|
204
217
|
throw new Error()
|
|
205
218
|
}
|
|
206
219
|
selectResponse = coinselectSplit(
|
|
207
|
-
|
|
220
|
+
filteredUtxo,
|
|
208
221
|
[{ address: (targets[0] as TargetAddress).address }],
|
|
209
222
|
Math.round(feeRate),
|
|
210
223
|
)
|
|
@@ -213,6 +226,7 @@ class BaseBitcoinLikeTransaction {
|
|
|
213
226
|
default:
|
|
214
227
|
break
|
|
215
228
|
}
|
|
229
|
+
|
|
216
230
|
let {
|
|
217
231
|
inputs,
|
|
218
232
|
outputs,
|
|
@@ -221,53 +235,83 @@ class BaseBitcoinLikeTransaction {
|
|
|
221
235
|
inputs?: ExtendedUtxo[]
|
|
222
236
|
outputs?: {
|
|
223
237
|
script?: Buffer
|
|
224
|
-
address?:
|
|
238
|
+
address?: string
|
|
225
239
|
value: number
|
|
226
240
|
}[]
|
|
227
241
|
fee: number
|
|
228
242
|
} = selectResponse
|
|
229
243
|
|
|
230
244
|
if (!inputs || !outputs) {
|
|
231
|
-
|
|
245
|
+
inputs = filteredUtxo
|
|
246
|
+
outputs = targets
|
|
247
|
+
fee = inputs.reduce((a, b) => a + b.value, 0) - outputs.reduce((a, b) => a + b.value, 0)
|
|
232
248
|
}
|
|
233
|
-
|
|
249
|
+
|
|
234
250
|
const inputsSizes = inputs.map(
|
|
235
251
|
(i) =>
|
|
236
252
|
componentBytes.bytePerInput[
|
|
237
253
|
i.signerInfo.addressType as keyof typeof componentBytes.bytePerInput
|
|
238
254
|
],
|
|
239
255
|
)
|
|
240
|
-
const outputSizes = outputs.
|
|
256
|
+
const outputSizes = outputs.map((outP) => {
|
|
257
|
+
if (outP.address) {
|
|
258
|
+
let addressType = "default"
|
|
259
|
+
try {
|
|
260
|
+
addressType = getAddressType(outP.address)
|
|
261
|
+
} catch {
|
|
262
|
+
addressType = "default"
|
|
263
|
+
}
|
|
264
|
+
return componentBytes.bytePerOutput[
|
|
265
|
+
addressType as keyof typeof componentBytes.bytePerOutput
|
|
266
|
+
]
|
|
267
|
+
}
|
|
241
268
|
|
|
242
|
-
|
|
269
|
+
if (outP.script) {
|
|
270
|
+
if (outP.script.byteLength < 75) {
|
|
271
|
+
return componentBytes.opReturn.dataLessThan75
|
|
272
|
+
}
|
|
273
|
+
return componentBytes.opReturn.dataMoreThan75
|
|
274
|
+
}
|
|
275
|
+
return componentBytes.bytePerOutput.default
|
|
276
|
+
})
|
|
243
277
|
|
|
244
278
|
const txSize =
|
|
245
279
|
componentBytes.baseTxBytes +
|
|
246
280
|
inputsSizes.reduce((a, c) => a + c, 0) +
|
|
247
|
-
outputSizes +
|
|
248
|
-
componentBytes.bytePerOutput
|
|
249
|
-
|
|
250
|
-
const txFee = txSize * feeRate
|
|
281
|
+
outputSizes.reduce((a, c) => a + c, 0) +
|
|
282
|
+
componentBytes.bytePerOutput.default
|
|
283
|
+
|
|
284
|
+
const txFee = txSize * Math.round(feeRate)
|
|
285
|
+
if (
|
|
286
|
+
inputs.reduce((a, b) => a + b.value, 0) - outputs.reduce((a, b) => a + b.value, 0) - txFee <
|
|
287
|
+
DUST
|
|
288
|
+
) {
|
|
289
|
+
throw new Error("not enough balance")
|
|
290
|
+
}
|
|
251
291
|
let diff = fee - txFee
|
|
252
|
-
// console.log({ txSize, txFee, diff, fee })
|
|
253
|
-
|
|
254
292
|
let changeIndex = outputs.findIndex((x) => !x?.address && !x.script && (x.value || 0) > 0)
|
|
255
293
|
let change: ChangeTarget | undefined
|
|
256
|
-
if (changeIndex >= 0 || diff >
|
|
294
|
+
if (changeIndex >= 0 || diff > DUST) {
|
|
257
295
|
if (changeIndex >= 0) {
|
|
258
|
-
diff = diff + componentBytes.bytePerOutput * feeRate
|
|
296
|
+
diff = diff + componentBytes.bytePerOutput.default * Math.round(feeRate)
|
|
259
297
|
}
|
|
260
298
|
|
|
261
299
|
if (diff < 0) {
|
|
262
300
|
diff = 0
|
|
263
301
|
}
|
|
264
302
|
|
|
265
|
-
if (
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
303
|
+
if (selectType === "full") {
|
|
304
|
+
outputs[0].value = outputs[0].value + diff
|
|
305
|
+
fee = fee - diff
|
|
306
|
+
} else {
|
|
307
|
+
if (!changeObject) throw new Error("change not exist")
|
|
308
|
+
change = {
|
|
309
|
+
address: changeObject.address,
|
|
310
|
+
value: changeIndex >= 0 ? outputs[changeIndex].value + diff : diff,
|
|
311
|
+
}
|
|
312
|
+
fee = fee - diff
|
|
269
313
|
}
|
|
270
|
-
|
|
314
|
+
|
|
271
315
|
if (changeIndex >= 0) {
|
|
272
316
|
outputs.splice(changeIndex, 1)
|
|
273
317
|
}
|
|
@@ -400,8 +444,7 @@ class BaseBitcoinLikeTransaction {
|
|
|
400
444
|
value: inputs[i].value,
|
|
401
445
|
}
|
|
402
446
|
if (!addressObject.pubkey) throw new Error("invalid signer info for p2tr address (pubkey)")
|
|
403
|
-
|
|
404
|
-
inputs[i].tapInternalKey = Buffer.from(publicKey, "hex")
|
|
447
|
+
inputs[i].tapInternalKey = addressObject.internalPubkey
|
|
405
448
|
|
|
406
449
|
if (inputs[i].signerInfo.includeHex) {
|
|
407
450
|
if (transactionHex && transactionId === inputs[i].hash) {
|
|
@@ -505,7 +548,7 @@ class BaseBitcoinLikeTransaction {
|
|
|
505
548
|
|
|
506
549
|
// add outputs
|
|
507
550
|
for (const target of outputs) {
|
|
508
|
-
newPsbt.addOutput(
|
|
551
|
+
newPsbt.addOutput(target)
|
|
509
552
|
}
|
|
510
553
|
|
|
511
554
|
// add changeAddress
|