@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.
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":"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"}
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: TX_INPUT_BASE + TX_INPUT_P2PKH,
50
- p2wpkh: TX_INPUT_BASE + TX_INPUT_P2WPKH,
51
- "p2sh-p2wpkh": TX_INPUT_BASE + TX_INPUT_P2SH_P2PKH,
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(extendedUtxo, targets, Math.round(feeRate));
120
+ selectResponse = coinselect(filteredUtxo, targets, Math.round(feeRate));
113
121
  break;
114
122
  case "accumulative":
115
- selectResponse = coinselectAccumulative(extendedUtxo, targets, Math.round(feeRate));
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(extendedUtxo, [{ address: targets[0].address }], Math.round(feeRate));
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
- throw new Error("not enough balance");
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.length * componentBytes.bytePerOutput;
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 > 600) {
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 (!changeObject)
148
- throw new Error("change not exist");
149
- change = {
150
- address: changeObject.address,
151
- value: changeIndex >= 0 ? outputs[changeIndex].value + diff : diff,
152
- };
153
- fee = fee - diff;
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 = Buffer.from(publicKey, "hex");
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(Object.assign({}, target));
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.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.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": "a0a25d80d8dde45895ee6e922a4b442f44d6ad08",
37
+ "gitHead": "f95581445c76a2ccf0b26d88d26c82530a9c2f74",
38
38
  "devDependencies": {
39
39
  "@babel/preset-react": "^7.23.3"
40
40
  }
@@ -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
- const TX_EMPTY_SIZE = 4 + 1 + 1 + 4
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: TX_INPUT_BASE + TX_INPUT_P2PKH,
21
- p2wpkh: TX_INPUT_BASE + TX_INPUT_P2WPKH,
22
- "p2sh-p2wpkh": TX_INPUT_BASE + TX_INPUT_P2SH_P2PKH,
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(extendedUtxo, targets, Math.round(feeRate))
197
-
210
+ selectResponse = coinselect(filteredUtxo, targets, Math.round(feeRate))
198
211
  break
199
212
  case "accumulative":
200
- selectResponse = coinselectAccumulative(extendedUtxo, targets, Math.round(feeRate))
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
- extendedUtxo,
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?: Buffer
238
+ address?: string
225
239
  value: number
226
240
  }[]
227
241
  fee: number
228
242
  } = selectResponse
229
243
 
230
244
  if (!inputs || !outputs) {
231
- throw new Error("not enough balance")
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
- // console.log(inputs, outputs, feeRate)
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.length * componentBytes.bytePerOutput
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
- // console.log(inputsSizes, outputSizes)
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 > 600) {
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 (!changeObject) throw new Error("change not exist")
266
- change = {
267
- address: changeObject.address,
268
- value: changeIndex >= 0 ? outputs[changeIndex].value + diff : diff,
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
- fee = fee - diff
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
- // todo: fix after update to p2tr
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({ ...target })
551
+ newPsbt.addOutput(target)
509
552
  }
510
553
 
511
554
  // add changeAddress