@btc-vision/bitcoin 6.5.1 → 6.5.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.
Files changed (103) hide show
  1. package/browser/chunks/crypto-0PweVewC.js +2033 -0
  2. package/browser/chunks/{payments-BE4vwHhV.js → payments-CgasufRS.js} +410 -408
  3. package/browser/chunks/psbt-BIwOrKer.js +4096 -0
  4. package/browser/chunks/{script-COWGdiOo.js → script-CROJPzz_.js} +96 -96
  5. package/browser/chunks/{transaction-BiXwH2v4.js → transaction-DchBu35N.js} +158 -147
  6. package/browser/chunks/{utils-BKmkTzNZ.js → utils-CO5kmxe9.js} +225 -223
  7. package/browser/crypto.d.ts +1 -1
  8. package/browser/hooks/HookedSigner.d.ts +1 -1
  9. package/browser/index.d.ts +23 -1
  10. package/browser/index.js +6 -6
  11. package/browser/payments/index.d.ts +2 -2
  12. package/browser/payments/lazy.d.ts +1 -1
  13. package/browser/psbt/bip371.d.ts +5 -1
  14. package/browser/psbt.d.ts +1 -1
  15. package/browser/typeforce.d.ts +38 -0
  16. package/browser/types.d.ts +22 -20
  17. package/build/address.js +2 -2
  18. package/build/bip66.js +2 -2
  19. package/build/block.js +2 -2
  20. package/build/crypto.d.ts +1 -1
  21. package/build/crypto.js +2 -3
  22. package/build/hooks/HookedSigner.d.ts +1 -1
  23. package/build/index.d.ts +23 -1
  24. package/build/payments/bip341.js +1 -1
  25. package/build/payments/index.d.ts +2 -2
  26. package/build/payments/lazy.d.ts +1 -1
  27. package/build/payments/p2op.js +3 -3
  28. package/build/payments/p2pk.js +1 -1
  29. package/build/payments/p2pkh.js +3 -3
  30. package/build/payments/p2sh.js +3 -3
  31. package/build/payments/p2tr.js +9 -5
  32. package/build/payments/p2wpkh.js +3 -3
  33. package/build/payments/p2wsh.js +2 -2
  34. package/build/psbt/bip371.d.ts +5 -1
  35. package/build/psbt/bip371.js +10 -7
  36. package/build/psbt/psbtutils.js +5 -4
  37. package/build/psbt.d.ts +1 -1
  38. package/build/psbt.js +78 -45
  39. package/build/script.js +2 -2
  40. package/build/script_signature.js +7 -7
  41. package/build/transaction.js +22 -10
  42. package/build/tsconfig.tsbuildinfo +1 -0
  43. package/build/types.d.ts +22 -20
  44. package/build/types.js +10 -9
  45. package/package.json +30 -59
  46. package/src/address.ts +2 -2
  47. package/src/bip66.ts +2 -2
  48. package/src/block.ts +8 -5
  49. package/src/crypto.ts +3 -4
  50. package/src/ecc_lib.ts +1 -1
  51. package/src/hooks/HookedSigner.ts +1 -1
  52. package/src/index.ts +34 -12
  53. package/src/payments/bip341.ts +1 -1
  54. package/src/payments/embed.ts +1 -2
  55. package/src/payments/index.ts +4 -4
  56. package/src/payments/lazy.ts +3 -3
  57. package/src/payments/p2op.ts +4 -3
  58. package/src/payments/p2pk.ts +1 -1
  59. package/src/payments/p2pkh.ts +3 -3
  60. package/src/payments/p2sh.ts +13 -5
  61. package/src/payments/p2tr.ts +8 -9
  62. package/src/payments/p2wpkh.ts +3 -3
  63. package/src/payments/p2wsh.ts +4 -4
  64. package/src/psbt/bip371.ts +22 -13
  65. package/src/psbt/psbtutils.ts +8 -5
  66. package/src/psbt.ts +127 -80
  67. package/src/script.ts +4 -4
  68. package/src/script_signature.ts +7 -7
  69. package/src/transaction.ts +31 -18
  70. package/src/typeforce.d.ts +38 -0
  71. package/src/types.ts +34 -29
  72. package/test/address.spec.ts +12 -4
  73. package/test/bitcoin.core.spec.ts +1 -1
  74. package/test/block.spec.ts +1 -1
  75. package/test/bufferutils.spec.ts +1 -1
  76. package/test/crypto.spec.ts +3 -2
  77. package/test/fixtures/address.json +1 -1
  78. package/test/integration/addresses.spec.ts +1 -1
  79. package/test/integration/bip32.spec.ts +2 -2
  80. package/test/integration/blocks.spec.ts +1 -1
  81. package/test/integration/cltv.spec.ts +3 -3
  82. package/test/integration/csv.spec.ts +3 -3
  83. package/test/integration/payments.spec.ts +1 -1
  84. package/test/integration/taproot.spec.ts +8 -7
  85. package/test/integration/transactions.spec.ts +2 -2
  86. package/test/payments.spec.ts +4 -3
  87. package/test/psbt.spec.ts +106 -74
  88. package/test/script.spec.ts +73 -7
  89. package/test/script_number.spec.ts +1 -1
  90. package/test/script_signature.spec.ts +1 -1
  91. package/test/transaction.spec.ts +1 -1
  92. package/test/tsconfig.json +1 -1
  93. package/test/types.spec.ts +1 -1
  94. package/vitest.config.ts +16 -0
  95. package/.babelrc +0 -13
  96. package/.mocharc.json +0 -13
  97. package/browser/chunks/crypto-C6FlKKmp.js +0 -2006
  98. package/browser/chunks/psbt-Dlosf9CT.js +0 -3853
  99. package/cjs/package.json +0 -3
  100. package/gulpfile.js +0 -42
  101. package/src/crypto/crypto-browser.js +0 -75
  102. package/test/ts-node-register.js +0 -7
  103. package/webpack.config.js +0 -79
@@ -1,27 +1,27 @@
1
- import { B as a, d as I, b as N, t as Z } from "./crypto-C6FlKKmp.js";
2
- import { f as z, k as K, l as D, a as C, m as b, n as P, o as _, N as $, S as W, g as R, p as V, B as m, r as M, F as Q, q as J, h as tt } from "./utils-BKmkTzNZ.js";
3
- import { c as et, d as st, o as it } from "./script-COWGdiOo.js";
4
- const { typeforce: A } = K;
5
- function p(f) {
6
- const t = f.length;
7
- return R(t) + t;
1
+ import { B as c, b as U, a as N, t as $ } from "./crypto-0PweVewC.js";
2
+ import { f as z, k as K, l as D, a as C, m as b, n as P, o as _, N as Q, S as W, g as v, p as V, B as A, r as M, F as J, q as x, h as tt } from "./utils-CO5kmxe9.js";
3
+ import { d as et, c as st, o as it } from "./script-CROJPzz_.js";
4
+ const { typeforce: p } = K;
5
+ function I(l) {
6
+ const t = l.length;
7
+ return v(t) + t;
8
8
  }
9
- function rt(f) {
10
- const t = f.length;
11
- return R(t) + f.reduce((e, s) => e + p(s), 0);
9
+ function rt(l) {
10
+ const t = l.length;
11
+ return v(t) + l.reduce((e, s) => e + I(s), 0);
12
12
  }
13
- const H = a.allocUnsafe(0), T = [], k = a.from(
13
+ const d = c.allocUnsafe(0), F = [], k = c.from(
14
14
  "0000000000000000000000000000000000000000000000000000000000000000",
15
15
  "hex"
16
- ), F = a.from(
16
+ ), T = c.from(
17
17
  "0000000000000000000000000000000000000000000000000000000000000001",
18
18
  "hex"
19
- ), nt = a.from("ffffffffffffffff", "hex"), ot = {
20
- script: H,
19
+ ), nt = c.from("ffffffffffffffff", "hex"), ot = {
20
+ script: d,
21
21
  valueBuffer: nt
22
22
  };
23
- function ht(f) {
24
- return f.value !== void 0;
23
+ function ht(l) {
24
+ return "value" in l;
25
25
  }
26
26
  class o {
27
27
  constructor() {
@@ -70,28 +70,28 @@ class o {
70
70
  const s = new z(t), i = new o();
71
71
  i.version = s.readInt32();
72
72
  const n = s.readUInt8(), r = s.readUInt8();
73
- let h = !1;
74
- n === o.ADVANCED_TRANSACTION_MARKER && r === o.ADVANCED_TRANSACTION_FLAG ? h = !0 : s.offset -= 2;
75
- const g = s.readVarInt();
76
- for (let w = 0; w < g; ++w) {
77
- const S = s.readSlice(32), U = s.readUInt32(), v = s.readVarSlice(), L = s.readUInt32();
73
+ let f = !1;
74
+ n === o.ADVANCED_TRANSACTION_MARKER && r === o.ADVANCED_TRANSACTION_FLAG ? f = !0 : s.offset -= 2;
75
+ const u = s.readVarInt();
76
+ for (let S = 0; S < u; ++S) {
77
+ const m = s.readSlice(32), E = s.readUInt32(), y = s.readVarSlice(), L = s.readUInt32();
78
78
  i.ins.push({
79
- hash: S,
80
- index: U,
81
- script: v,
79
+ hash: m,
80
+ index: E,
81
+ script: y,
82
82
  sequence: L,
83
- witness: T
83
+ witness: F
84
84
  });
85
85
  }
86
- const d = s.readVarInt();
87
- for (let w = 0; w < d; ++w)
86
+ const g = s.readVarInt();
87
+ for (let S = 0; S < g; ++S)
88
88
  i.outs.push({
89
89
  value: s.readUInt64(),
90
90
  script: s.readVarSlice()
91
91
  });
92
- if (h) {
93
- for (let w = 0; w < g; ++w)
94
- i.ins[w].witness = s.readVector();
92
+ if (f) {
93
+ for (let S = 0; S < u; ++S)
94
+ i.ins[S].witness = s.readVector();
95
95
  if (!i.hasWitnesses()) throw new Error("Transaction has superfluous witness data");
96
96
  }
97
97
  if (i.locktime = s.readUInt32(), e) return i;
@@ -100,10 +100,10 @@ class o {
100
100
  return i;
101
101
  }
102
102
  static fromHex(t) {
103
- return o.fromBuffer(a.from(t, "hex"), !1);
103
+ return o.fromBuffer(c.from(t, "hex"), !1);
104
104
  }
105
105
  static isCoinbaseHash(t) {
106
- A(D, t);
106
+ p(D, t);
107
107
  for (let e = 0; e < 32; ++e)
108
108
  if (t[e] !== 0) return !1;
109
109
  return !0;
@@ -112,24 +112,24 @@ class o {
112
112
  return this.ins.length === 1 && o.isCoinbaseHash(this.ins[0].hash);
113
113
  }
114
114
  addInput(t, e, s, i) {
115
- return A(
115
+ return p(
116
116
  C(
117
117
  D,
118
118
  b,
119
119
  P(b),
120
120
  P(_)
121
121
  ),
122
- arguments
123
- ), $(s) && (s = o.DEFAULT_SEQUENCE), this.ins.push({
122
+ [t, e, s, i]
123
+ ), Q(s) && (s = o.DEFAULT_SEQUENCE), this.ins.push({
124
124
  hash: t,
125
125
  index: e,
126
- script: i || H,
126
+ script: i || d,
127
127
  sequence: s,
128
- witness: T
128
+ witness: F
129
129
  }) - 1;
130
130
  }
131
131
  addOutput(t, e) {
132
- return A(C(_, W), arguments), this.outs.push({
132
+ return p(C(_, W), [t, e]), this.outs.push({
133
133
  script: t,
134
134
  value: e
135
135
  }) - 1;
@@ -146,7 +146,7 @@ class o {
146
146
  }
147
147
  byteLength(t = !0) {
148
148
  const e = t && this.hasWitnesses();
149
- return (e ? 10 : 8) + R(this.ins.length) + R(this.outs.length) + this.ins.reduce((s, i) => s + 40 + p(i.script), 0) + this.outs.reduce((s, i) => s + 8 + p(i.script), 0) + (e ? this.ins.reduce((s, i) => s + rt(i.witness), 0) : 0);
149
+ return (e ? 10 : 8) + v(this.ins.length) + v(this.outs.length) + this.ins.reduce((s, i) => s + 40 + I(i.script), 0) + this.outs.reduce((s, i) => s + 8 + I(i.script), 0) + (e ? this.ins.reduce((s, i) => s + rt(i.witness), 0) : 0);
150
150
  }
151
151
  clone() {
152
152
  const t = new o();
@@ -170,108 +170,116 @@ class o {
170
170
  * This hash can then be used to sign the provided transaction input.
171
171
  */
172
172
  hashForSignature(t, e, s) {
173
- if (A(
174
- C(
175
- b,
176
- _,
177
- /* types.UInt8 */
178
- V
179
- ),
180
- arguments
181
- ), t >= this.ins.length) return F;
182
- const i = et(
183
- st(e).filter((h) => h !== it.OP_CODESEPARATOR)
184
- ), n = this.clone();
173
+ if (p(C(
174
+ b,
175
+ _,
176
+ /* types.UInt8 */
177
+ V
178
+ ), [
179
+ t,
180
+ e,
181
+ s
182
+ ]), t >= this.ins.length) return T;
183
+ const i = et(e);
184
+ if (!i) throw new Error("Could not decompile prevOutScript");
185
+ const n = st(
186
+ i.filter((u) => u !== it.OP_CODESEPARATOR)
187
+ ), r = this.clone();
185
188
  if ((s & 31) === o.SIGHASH_NONE)
186
- n.outs = [], n.ins.forEach((h, g) => {
187
- g !== t && (h.sequence = 0);
189
+ r.outs = [], r.ins.forEach((u, g) => {
190
+ g !== t && (u.sequence = 0);
188
191
  });
189
192
  else if ((s & 31) === o.SIGHASH_SINGLE) {
190
- if (t >= this.outs.length) return F;
191
- n.outs.length = t + 1;
192
- for (let h = 0; h < t; h++)
193
- n.outs[h] = ot;
194
- n.ins.forEach((h, g) => {
195
- g !== t && (h.sequence = 0);
193
+ if (t >= this.outs.length) return T;
194
+ r.outs.length = t + 1;
195
+ for (let u = 0; u < t; u++)
196
+ r.outs[u] = ot;
197
+ r.ins.forEach((u, g) => {
198
+ g !== t && (u.sequence = 0);
196
199
  });
197
200
  }
198
- s & o.SIGHASH_ANYONECANPAY ? (n.ins = [n.ins[t]], n.ins[0].script = i) : (n.ins.forEach((h) => {
199
- h.script = H;
200
- }), n.ins[t].script = i);
201
- const r = a.allocUnsafe(n.byteLength(!1) + 4);
202
- return r.writeInt32LE(s, r.length - 4), n.__toBuffer(r, 0, !1), I(r);
201
+ s & o.SIGHASH_ANYONECANPAY ? (r.ins = [r.ins[t]], r.ins[0].script = n) : (r.ins.forEach((u) => {
202
+ u.script = d;
203
+ }), r.ins[t].script = n);
204
+ const f = c.allocUnsafe(r.byteLength(!1) + 4);
205
+ return f.writeInt32LE(s, f.length - 4), r.__toBuffer(f, 0, !1), U(f);
203
206
  }
204
207
  hashForWitnessV1(t, e, s, i, n, r) {
205
- if (A(
208
+ if (p(
206
209
  C(
207
210
  b,
208
- A.arrayOf(_),
209
- A.arrayOf(W),
211
+ p.arrayOf(_),
212
+ p.arrayOf(W),
210
213
  b
211
214
  ),
212
- arguments
215
+ [t, e, s, i]
213
216
  ), s.length !== this.ins.length || e.length !== this.ins.length)
214
217
  throw new Error("Must supply prevout script and value for all inputs");
215
- const h = i === o.SIGHASH_DEFAULT ? o.SIGHASH_ALL : i & o.SIGHASH_OUTPUT_MASK, d = (i & o.SIGHASH_INPUT_MASK) === o.SIGHASH_ANYONECANPAY, w = h === o.SIGHASH_NONE, S = h === o.SIGHASH_SINGLE;
216
- let U = H, v = H, L = H, O = H, G = H;
217
- if (!d) {
218
- let c = m.withCapacity(36 * this.ins.length);
219
- this.ins.forEach((l) => {
220
- c.writeSlice(l.hash), c.writeUInt32(l.index);
221
- }), U = N(c.end()), c = m.withCapacity(8 * this.ins.length), s.forEach((l) => c.writeUInt64(l)), v = N(c.end()), c = m.withCapacity(
222
- e.map(p).reduce((l, E) => l + E)
223
- ), e.forEach((l) => c.writeVarSlice(l)), L = N(c.end()), c = m.withCapacity(4 * this.ins.length), this.ins.forEach((l) => c.writeUInt32(l.sequence)), O = N(c.end());
218
+ const f = i === o.SIGHASH_DEFAULT ? o.SIGHASH_ALL : i & o.SIGHASH_OUTPUT_MASK, g = (i & o.SIGHASH_INPUT_MASK) === o.SIGHASH_ANYONECANPAY, S = f === o.SIGHASH_NONE, m = f === o.SIGHASH_SINGLE;
219
+ let E = d, y = d, L = d, O = d, G = d;
220
+ if (!g) {
221
+ let h = A.withCapacity(36 * this.ins.length);
222
+ this.ins.forEach((w) => {
223
+ h.writeSlice(w.hash), h.writeUInt32(w.index);
224
+ }), E = N(h.end()), h = A.withCapacity(8 * this.ins.length), s.forEach((w) => h.writeUInt64(w)), y = N(h.end()), h = A.withCapacity(
225
+ e.map(I).reduce((w, H) => w + H)
226
+ ), e.forEach((w) => h.writeVarSlice(w)), L = N(h.end()), h = A.withCapacity(4 * this.ins.length), this.ins.forEach((w) => h.writeUInt32(w.sequence)), O = N(h.end());
224
227
  }
225
- if (w || S) {
226
- if (S && t < this.outs.length) {
227
- const c = this.outs[t], l = m.withCapacity(8 + p(c.script));
228
- l.writeUInt64(c.value), l.writeVarSlice(c.script), G = N(l.end());
228
+ if (S || m) {
229
+ if (m && t < this.outs.length) {
230
+ const h = this.outs[t], w = A.withCapacity(8 + I(h.script));
231
+ w.writeUInt64(h.value), w.writeVarSlice(h.script), G = N(w.end());
229
232
  }
230
233
  } else {
231
234
  if (!this.outs.length)
232
235
  throw new Error("Add outputs to the transaction before signing.");
233
- const c = this.outs.map((E) => 8 + p(E.script)).reduce((E, X) => E + X), l = m.withCapacity(c);
234
- this.outs.forEach((E) => {
235
- l.writeUInt64(E.value), l.writeVarSlice(E.script);
236
- }), G = N(l.end());
236
+ const h = this.outs.map((H) => 8 + I(H.script)).reduce((H, Z) => H + Z), w = A.withCapacity(h);
237
+ this.outs.forEach((H) => {
238
+ w.writeUInt64(H.value), w.writeVarSlice(H.script);
239
+ }), G = N(w.end());
237
240
  }
238
- const j = (n ? 2 : 0) + (r ? 1 : 0), x = 174 - (d ? 49 : 0) - (w ? 32 : 0) + (r ? 32 : 0) + (n ? 37 : 0), u = m.withCapacity(x);
239
- if (u.writeUInt8(i), u.writeInt32(this.version), u.writeUInt32(this.locktime), u.writeSlice(U), u.writeSlice(v), u.writeSlice(L), u.writeSlice(O), w || S || u.writeSlice(G), u.writeUInt8(j), d) {
240
- const c = this.ins[t];
241
- u.writeSlice(c.hash), u.writeUInt32(c.index), u.writeUInt64(s[t]), u.writeVarSlice(e[t]), u.writeUInt32(c.sequence);
241
+ const j = (n ? 2 : 0) + (r ? 1 : 0), X = 174 - (g ? 49 : 0) - (S ? 32 : 0) + (r ? 32 : 0) + (n ? 37 : 0), a = A.withCapacity(X);
242
+ if (a.writeUInt8(i), a.writeInt32(this.version), a.writeUInt32(this.locktime), a.writeSlice(E), a.writeSlice(y), a.writeSlice(L), a.writeSlice(O), S || m || a.writeSlice(G), a.writeUInt8(j), g) {
243
+ const h = this.ins[t];
244
+ a.writeSlice(h.hash), a.writeUInt32(h.index), a.writeUInt64(s[t]), a.writeVarSlice(e[t]), a.writeUInt32(h.sequence);
242
245
  } else
243
- u.writeUInt32(t);
246
+ a.writeUInt32(t);
244
247
  if (r) {
245
- const c = m.withCapacity(p(r));
246
- c.writeVarSlice(r), u.writeSlice(N(c.end()));
248
+ const h = A.withCapacity(I(r));
249
+ h.writeVarSlice(r), a.writeSlice(N(h.end()));
247
250
  }
248
- return S && u.writeSlice(G), n && (u.writeSlice(n), u.writeUInt8(0), u.writeUInt32(4294967295)), Z(
251
+ return m && a.writeSlice(G), n && (a.writeSlice(n), a.writeUInt8(0), a.writeUInt32(4294967295)), $(
249
252
  "TapSighash",
250
- a.concat([a.from([0]), u.end()])
253
+ c.concat([c.from([0]), a.end()])
251
254
  );
252
255
  }
253
256
  hashForWitnessV0(t, e, s, i) {
254
- A(C(b, _, W, b), arguments);
255
- let n = a.from([]), r, h = k, g = k, d = k;
256
- if (i & o.SIGHASH_ANYONECANPAY || (n = a.allocUnsafe(36 * this.ins.length), r = new m(n, 0), this.ins.forEach((S) => {
257
- r.writeSlice(S.hash), r.writeUInt32(S.index);
258
- }), g = I(n)), !(i & o.SIGHASH_ANYONECANPAY) && (i & 31) !== o.SIGHASH_SINGLE && (i & 31) !== o.SIGHASH_NONE && (n = a.allocUnsafe(4 * this.ins.length), r = new m(n, 0), this.ins.forEach((S) => {
259
- r.writeUInt32(S.sequence);
260
- }), d = I(n)), (i & 31) !== o.SIGHASH_SINGLE && (i & 31) !== o.SIGHASH_NONE) {
261
- const S = this.outs.reduce((U, v) => U + 8 + p(v.script), 0);
262
- n = a.allocUnsafe(S), r = new m(n, 0), this.outs.forEach((U) => {
263
- r.writeUInt64(U.value), r.writeVarSlice(U.script);
264
- }), h = I(n);
257
+ p(C(b, _, W, b), [
258
+ t,
259
+ e,
260
+ s,
261
+ i
262
+ ]);
263
+ let n = c.from([]), r, f = k, u = k, g = k;
264
+ if (i & o.SIGHASH_ANYONECANPAY || (n = c.allocUnsafe(36 * this.ins.length), r = new A(n, 0), this.ins.forEach((m) => {
265
+ r.writeSlice(m.hash), r.writeUInt32(m.index);
266
+ }), u = U(n)), !(i & o.SIGHASH_ANYONECANPAY) && (i & 31) !== o.SIGHASH_SINGLE && (i & 31) !== o.SIGHASH_NONE && (n = c.allocUnsafe(4 * this.ins.length), r = new A(n, 0), this.ins.forEach((m) => {
267
+ r.writeUInt32(m.sequence);
268
+ }), g = U(n)), (i & 31) !== o.SIGHASH_SINGLE && (i & 31) !== o.SIGHASH_NONE) {
269
+ const m = this.outs.reduce((E, y) => E + 8 + I(y.script), 0);
270
+ n = c.allocUnsafe(m), r = new A(n, 0), this.outs.forEach((E) => {
271
+ r.writeUInt64(E.value), r.writeVarSlice(E.script);
272
+ }), f = U(n);
265
273
  } else if ((i & 31) === o.SIGHASH_SINGLE && t < this.outs.length) {
266
- const S = this.outs[t];
267
- n = a.allocUnsafe(8 + p(S.script)), r = new m(n, 0), r.writeUInt64(S.value), r.writeVarSlice(S.script), h = I(n);
274
+ const m = this.outs[t];
275
+ n = c.allocUnsafe(8 + I(m.script)), r = new A(n, 0), r.writeUInt64(m.value), r.writeVarSlice(m.script), f = U(n);
268
276
  }
269
- n = a.allocUnsafe(156 + p(e)), r = new m(n, 0);
270
- const w = this.ins[t];
271
- return r.writeInt32(this.version), r.writeSlice(g), r.writeSlice(d), r.writeSlice(w.hash), r.writeUInt32(w.index), r.writeVarSlice(e), r.writeUInt64(s), r.writeUInt32(w.sequence), r.writeSlice(h), r.writeUInt32(this.locktime), r.writeUInt32(i), I(n);
277
+ n = c.allocUnsafe(156 + I(e)), r = new A(n, 0);
278
+ const S = this.ins[t];
279
+ return r.writeInt32(this.version), r.writeSlice(u), r.writeSlice(g), r.writeSlice(S.hash), r.writeUInt32(S.index), r.writeVarSlice(e), r.writeUInt64(s), r.writeUInt32(S.sequence), r.writeSlice(f), r.writeUInt32(this.locktime), r.writeUInt32(i), U(n);
272
280
  }
273
281
  getHash(t) {
274
- return t && this.isCoinbase() ? a.alloc(32, 0) : I(this.__toBuffer(void 0, void 0, t));
282
+ return t && this.isCoinbase() ? c.alloc(32, 0) : U(this.__toBuffer(void 0, void 0, t));
275
283
  }
276
284
  getId() {
277
285
  return M(this.getHash(!1)).toString("hex");
@@ -283,14 +291,14 @@ class o {
283
291
  return this.toBuffer(void 0, void 0).toString("hex");
284
292
  }
285
293
  setInputScript(t, e) {
286
- A(C(V, _), arguments), this.ins[t].script = e;
294
+ p(C(V, _), [t, e]), this.ins[t].script = e;
287
295
  }
288
296
  setWitness(t, e) {
289
- A(C(V, [_]), arguments), this.ins[t].witness = e;
297
+ p(C(V, [_]), [t, e]), this.ins[t].witness = e;
290
298
  }
291
299
  __toBuffer(t, e, s = !1) {
292
- t || (t = a.allocUnsafe(this.byteLength(s)));
293
- const i = new m(t, e || 0);
300
+ t || (t = c.allocUnsafe(this.byteLength(s)));
301
+ const i = new A(t, e || 0);
294
302
  i.writeInt32(this.version);
295
303
  const n = s && this.hasWitnesses();
296
304
  return n && (i.writeUInt8(o.ADVANCED_TRANSACTION_MARKER), i.writeUInt8(o.ADVANCED_TRANSACTION_FLAG)), i.writeVarInt(this.ins.length), this.ins.forEach((r) => {
@@ -299,57 +307,60 @@ class o {
299
307
  ht(r) ? i.writeUInt64(r.value) : i.writeSlice(r.valueBuffer), i.writeVarSlice(r.script);
300
308
  }), n && this.ins.forEach((r) => {
301
309
  i.writeVector(r.witness);
302
- }), i.writeUInt32(this.locktime), e !== void 0 ? t.slice(e, i.offset) : t;
310
+ }), i.writeUInt32(this.locktime), e !== void 0 ? t.subarray(e, i.offset) : t;
303
311
  }
304
312
  }
305
313
  const wt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
306
314
  __proto__: null,
307
315
  Transaction: o
308
- }, Symbol.toStringTag, { value: "Module" })), { typeforce: ct } = K, B = new TypeError("Cannot compute merkle root for zero transactions"), q = new TypeError("Cannot compute witness commit for non-segwit block");
309
- class y {
316
+ }, Symbol.toStringTag, { value: "Module" })), { typeforce: ct } = K, B = new TypeError("Cannot compute merkle root for zero transactions"), Y = new TypeError("Cannot compute witness commit for non-segwit block");
317
+ class R {
310
318
  constructor() {
311
319
  this.version = 1, this.prevHash = void 0, this.merkleRoot = void 0, this.timestamp = 0, this.witnessCommit = void 0, this.bits = 0, this.nonce = 0, this.transactions = void 0;
312
320
  }
313
321
  static fromBuffer(t) {
314
322
  if (t.length < 80) throw new Error("Buffer too small (< 80 bytes)");
315
- const e = new z(t), s = new y();
323
+ const e = new z(t), s = new R();
316
324
  if (s.version = e.readInt32(), s.prevHash = e.readSlice(32), s.merkleRoot = e.readSlice(32), s.timestamp = e.readUInt32(), s.bits = e.readUInt32(), s.nonce = e.readUInt32(), t.length === 80) return s;
317
325
  const i = () => {
318
- const h = o.fromBuffer(e.buffer.slice(e.offset), !0);
319
- return e.offset += h.byteLength(), h;
326
+ const f = o.fromBuffer(
327
+ e.buffer.subarray(e.offset),
328
+ !0
329
+ );
330
+ return e.offset += f.byteLength(), f;
320
331
  }, n = e.readVarInt();
321
332
  s.transactions = [];
322
- for (let h = 0; h < n; ++h) {
323
- const g = i();
324
- s.transactions.push(g);
333
+ for (let f = 0; f < n; ++f) {
334
+ const u = i();
335
+ s.transactions.push(u);
325
336
  }
326
337
  const r = s.getWitnessCommit();
327
338
  return r && (s.witnessCommit = r), s;
328
339
  }
329
340
  static fromHex(t) {
330
- return y.fromBuffer(a.from(t, "hex"));
341
+ return R.fromBuffer(c.from(t, "hex"));
331
342
  }
332
343
  static calculateTarget(t) {
333
- const e = ((t & 4278190080) >> 24) - 3, s = t & 8388607, i = a.alloc(32, 0);
344
+ const e = ((t & 4278190080) >> 24) - 3, s = t & 8388607, i = c.alloc(32, 0);
334
345
  return i.writeUIntBE(s, 29 - e, 3), i;
335
346
  }
336
347
  static calculateMerkleRoot(t, e) {
337
- if (ct([{ getHash: Q }], t), t.length === 0) throw B;
338
- if (e && !Y(t)) throw q;
339
- const s = t.map((n) => n.getHash(e)), i = J(s, I);
340
- return e ? I(a.concat([i, t[0].ins[0].witness[0]])) : i;
348
+ if (ct([{ getHash: J }], t), t.length === 0) throw B;
349
+ if (e && !q(t)) throw Y;
350
+ const s = t.map((n) => n.getHash(e)), i = x(s, U);
351
+ return e ? U(c.concat([i, t[0].ins[0].witness[0]])) : i;
341
352
  }
342
353
  getWitnessCommit() {
343
- if (!Y(this.transactions)) return null;
354
+ if (!q(this.transactions)) return null;
344
355
  const t = this.transactions[0].outs.filter(
345
- (s) => s.script.slice(0, 6).equals(a.from("6a24aa21a9ed", "hex"))
346
- ).map((s) => s.script.slice(6, 38));
356
+ (s) => s.script.subarray(0, 6).equals(c.from("6a24aa21a9ed", "hex"))
357
+ ).map((s) => s.script.subarray(6, 38));
347
358
  if (t.length === 0) return null;
348
359
  const e = t[t.length - 1];
349
- return e instanceof a && e.length === 32 ? e : null;
360
+ return e instanceof c && e.length === 32 ? e : null;
350
361
  }
351
362
  hasWitnessCommit() {
352
- return this.witnessCommit instanceof a && this.witnessCommit.length === 32 || this.getWitnessCommit() !== null;
363
+ return this.witnessCommit instanceof c && this.witnessCommit.length === 32 || this.getWitnessCommit() !== null;
353
364
  }
354
365
  hasWitness() {
355
366
  return at(this.transactions);
@@ -359,10 +370,10 @@ class y {
359
370
  return t * 3 + e;
360
371
  }
361
372
  byteLength(t, e = !0) {
362
- return t || !this.transactions ? 80 : 80 + R(this.transactions.length) + this.transactions.reduce((s, i) => s + i.byteLength(e), 0);
373
+ return t || !this.transactions ? 80 : 80 + v(this.transactions.length) + this.transactions.reduce((s, i) => s + i.byteLength(e), 0);
363
374
  }
364
375
  getHash() {
365
- return I(this.toBuffer(!0));
376
+ return U(this.toBuffer(!0));
366
377
  }
367
378
  getId() {
368
379
  return M(this.getHash()).toString("hex");
@@ -373,7 +384,7 @@ class y {
373
384
  }
374
385
  // TODO: buffer, offset compatibility
375
386
  toBuffer(t) {
376
- const e = a.allocUnsafe(this.byteLength(t)), s = new m(e);
387
+ const e = c.allocUnsafe(this.byteLength(t)), s = new A(e);
377
388
  if (s.writeInt32(this.version), s.writeSlice(this.prevHash), s.writeSlice(this.merkleRoot), s.writeUInt32(this.timestamp), s.writeUInt32(this.bits), s.writeUInt32(this.nonce), t || !this.transactions) return e;
378
389
  const i = tt(this.transactions.length, e, s.offset);
379
390
  return s.offset += i.bytes, this.transactions.forEach((n) => {
@@ -389,33 +400,33 @@ class y {
389
400
  return !t && this.hasWitness() ? !1 : this.__checkMerkleRoot() && (t ? this.__checkWitnessCommit() : !0);
390
401
  }
391
402
  checkProofOfWork() {
392
- const t = M(this.getHash()), e = y.calculateTarget(this.bits);
403
+ const t = M(this.getHash()), e = R.calculateTarget(this.bits);
393
404
  return t.compare(e) <= 0;
394
405
  }
395
406
  __checkMerkleRoot() {
396
407
  if (!this.transactions) throw B;
397
- const t = y.calculateMerkleRoot(this.transactions);
408
+ const t = R.calculateMerkleRoot(this.transactions);
398
409
  return this.merkleRoot.compare(t) === 0;
399
410
  }
400
411
  __checkWitnessCommit() {
401
412
  if (!this.transactions) throw B;
402
- if (!this.hasWitnessCommit()) throw q;
403
- const t = y.calculateMerkleRoot(this.transactions, !0);
413
+ if (!this.hasWitnessCommit()) throw Y;
414
+ const t = R.calculateMerkleRoot(this.transactions, !0);
404
415
  return this.witnessCommit.compare(t) === 0;
405
416
  }
406
417
  }
407
- function Y(f) {
408
- return f instanceof Array && f[0] && f[0].ins && f[0].ins instanceof Array && f[0].ins[0] && f[0].ins[0].witness && f[0].ins[0].witness instanceof Array && f[0].ins[0].witness.length > 0;
418
+ function q(l) {
419
+ return l instanceof Array && l[0] && l[0].ins && l[0].ins instanceof Array && l[0].ins[0] && l[0].ins[0].witness && l[0].ins[0].witness instanceof Array && l[0].ins[0].witness.length > 0;
409
420
  }
410
- function at(f) {
411
- return f instanceof Array && f.some(
421
+ function at(l) {
422
+ return l instanceof Array && l.some(
412
423
  (t) => typeof t == "object" && t.ins instanceof Array && t.ins.some(
413
424
  (e) => typeof e == "object" && e.witness instanceof Array && e.witness.length > 0
414
425
  )
415
426
  );
416
427
  }
417
428
  export {
418
- y as B,
429
+ R as B,
419
430
  o as T,
420
431
  wt as a
421
432
  };