@chainvue/verus-sdk 0.15.0 → 0.16.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.
Files changed (51) hide show
  1. package/README.md +9 -0
  2. package/dist/assemble/assembler.d.ts +2 -8
  3. package/dist/assemble/assembler.d.ts.map +1 -1
  4. package/dist/assemble/assembler.js +30 -20
  5. package/dist/assemble/assembler.js.map +1 -1
  6. package/dist/assemble/fundedIdentityUpdate.d.ts +0 -3
  7. package/dist/assemble/fundedIdentityUpdate.d.ts.map +1 -1
  8. package/dist/assemble/fundedIdentityUpdate.js +22 -14
  9. package/dist/assemble/fundedIdentityUpdate.js.map +1 -1
  10. package/dist/bundle.js +173 -159
  11. package/dist/constants/index.d.ts +8 -2
  12. package/dist/constants/index.d.ts.map +1 -1
  13. package/dist/constants/index.js +9 -3
  14. package/dist/constants/index.js.map +1 -1
  15. package/dist/currency/index.d.ts.map +1 -1
  16. package/dist/currency/index.js +0 -3
  17. package/dist/currency/index.js.map +1 -1
  18. package/dist/currency/launch.d.ts.map +1 -1
  19. package/dist/currency/launch.js +0 -2
  20. package/dist/currency/launch.js.map +1 -1
  21. package/dist/fee/index.d.ts +116 -0
  22. package/dist/fee/index.d.ts.map +1 -0
  23. package/dist/fee/index.js +228 -0
  24. package/dist/fee/index.js.map +1 -0
  25. package/dist/identity/index.d.ts.map +1 -1
  26. package/dist/identity/index.js +2 -16
  27. package/dist/identity/index.js.map +1 -1
  28. package/dist/identity/multisig.d.ts.map +1 -1
  29. package/dist/identity/multisig.js +23 -18
  30. package/dist/identity/multisig.js.map +1 -1
  31. package/dist/index.d.ts +3 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +41 -33
  34. package/dist/index.js.map +1 -1
  35. package/dist/offers/identity.d.ts.map +1 -1
  36. package/dist/offers/identity.js +40 -32
  37. package/dist/offers/identity.js.map +1 -1
  38. package/dist/offers/reclaim.d.ts.map +1 -1
  39. package/dist/offers/reclaim.js +29 -21
  40. package/dist/offers/reclaim.js.map +1 -1
  41. package/dist/offers/taker.d.ts.map +1 -1
  42. package/dist/offers/taker.js +22 -17
  43. package/dist/offers/taker.js.map +1 -1
  44. package/dist/transfer/index.d.ts.map +1 -1
  45. package/dist/transfer/index.js +0 -2
  46. package/dist/transfer/index.js.map +1 -1
  47. package/dist/utxo/index.d.ts +11 -8
  48. package/dist/utxo/index.d.ts.map +1 -1
  49. package/dist/utxo/index.js +20 -37
  50. package/dist/utxo/index.js.map +1 -1
  51. package/package.json +1 -1
package/README.md CHANGED
@@ -67,6 +67,14 @@ Every built transfer is re-validated against its intent — per-currency value
67
67
  conservation, change to the declared address — before the hex is returned. A
68
68
  selection or change bug throws; it never hands you a bad transaction.
69
69
 
70
+ **Fees follow the daemon's rule, not a byte estimate.** Verus charges **10,000
71
+ satoshis per non-change output** — plus 10,000 for each output script over 2,000
72
+ bytes, and 10,000 per 128 serialized bytes of an identity's `contentMultiMap`.
73
+ Transaction size and input count cost nothing. So a one-recipient send pays
74
+ 10,000 and a three-recipient send pays 30,000, whatever their byte counts.
75
+ `estimateMinerFee(outputScripts)` quotes it before you build, and every builder
76
+ asserts offline that the fee it chose clears the daemon's acceptance floor.
77
+
70
78
  ## Good to know
71
79
 
72
80
  - **Self-contained bundle**: the VerusCoin forks (utxo-lib, primitives,
@@ -93,6 +101,7 @@ Per-area guides, plus runnable offline examples in [`examples/`](./examples):
93
101
  | [currencies](./docs/currency.md) | define + launch a currency offline (token / fractional basket / NFT), the full seven-output launch transaction, and pre-converting into a launching currency |
94
102
  | [signing & wire format](./docs/signing-and-wire.md) | why the bytes are the daemon's, the self-contained bundle, the proof rings |
95
103
  | [architecture](./docs/architecture.md) | the fork boundary, the two assemblers, what's unrepresentable vs checked, the differential harness |
104
+ | [fees](./docs/fees.md) | the daemon's output-count fee rule, what it charges for, and what it does not |
96
105
  | [testing](./docs/testing.md) | the gate, the plain-`node` rule, the live-proof ring model |
97
106
 
98
107
  ## Contributing
@@ -22,13 +22,6 @@ export interface TxIntent {
22
22
  /** Declared outputs, emitted in order before change. */
23
23
  outputs: IntentOutput[];
24
24
  changeAddress: string;
25
- /** Whether the outputs are CryptoCondition (smart) outputs — drives fee sizing. */
26
- hasSmartOutputs?: boolean;
27
- /** Extra bytes for fee sizing when a pre-built output dwarfs the fixed estimate. */
28
- extraOutputBytes?: number;
29
- /** Output count fed to the fee estimator; defaults to the declared outputs.
30
- * Override only to reproduce a legacy per-path estimate byte-for-byte. */
31
- feeOutputCount?: number;
32
25
  /** Token funding requirement, when the outputs are pre-built by the fork
33
26
  * (createUnfundedCurrencyTransfer) and their carried token value can't be read
34
27
  * back off the opaque scripts. When set, it REPLACES the per-output `carries`
@@ -39,7 +32,8 @@ export interface TxIntent {
39
32
  * emits the token change with only its structural native value plus a distinct
40
33
  * native-change output (the fork's currency-transfer convention). */
41
34
  changeStrategy?: 'bundled' | 'separate';
42
- /** `estimate` sizes the fee from the tx. `declared` names an intentional
35
+ /** `estimate` prices the miner fee from the declared outputs by the daemon's
36
+ * own per-output rule (src/fee/index.ts). `declared` names an intentional
43
37
  * implicit burn — native that leaves BEYOND the outputs and the miner fee
44
38
  * (e.g. the registration fee): it is added to the funding requirement and
45
39
  * bounds the signing-time fee-rate cap, so it can never be an accident. */
@@ -1 +1 @@
1
- {"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../src/assemble/assembler.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB;oFACgF;IAChF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB;sEACkE;IAClE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;+EAC2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;8EAG0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;0EAGsE;IACtE,cAAc,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACxC;;;gFAG4E;IAC5E,GAAG,EAAE;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,CAsJ7D"}
1
+ {"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../src/assemble/assembler.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB;oFACgF;IAChF,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB;sEACkE;IAClE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB;;;8EAG0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;0EAGsE;IACtE,cAAc,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACxC;;;;gFAI4E;IAC5E,GAAG,EAAE;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,CA4J7D"}
@@ -11,22 +11,24 @@ exports.assembleAndSign = assembleAndSign;
11
11
  * conservation on the assembled transaction BY CONSTRUCTION. A path can no
12
12
  * longer forget a conservation assert, drop token change, or hand-roll a
13
13
  * change-emission block that drifts from the others — those were whole classes
14
- * of bug. Fees are either estimated (selectUtxos) or DECLARED with an intent
15
- * (registration's implicit burn); an unnamed implicit fee is unrepresentable.
14
+ * of bug. The miner fee is priced from the declared outputs by the daemon's own
15
+ * rule (src/fee/index.ts); a registration's implicit burn must instead be DECLARED
16
+ * on the intent, so an unnamed implicit fee is unrepresentable.
16
17
  *
17
18
  * Ported flows must stay byte-identical to the Phase-0 golden snapshots.
18
19
  */
19
20
  const boundary_js_1 = require("../fork/boundary.js");
20
21
  const index_js_1 = require("../utxo/index.js");
21
- const index_js_2 = require("../signing/index.js");
22
- const index_js_3 = require("../utils/index.js");
23
- const index_js_4 = require("../constants/index.js");
24
- const index_js_5 = require("../identity/index.js");
22
+ const index_js_2 = require("../fee/index.js");
23
+ const index_js_3 = require("../signing/index.js");
24
+ const index_js_4 = require("../utils/index.js");
25
+ const index_js_5 = require("../constants/index.js");
26
+ const index_js_6 = require("../identity/index.js");
25
27
  const brands_js_1 = require("../core/brands.js");
26
28
  const errors_js_1 = require("../errors.js");
27
29
  function assembleAndSign(intent) {
28
- const verusNetwork = (0, index_js_2.getNetwork)(intent.network === 'testnet');
29
- const systemId = index_js_4.NETWORK_CONFIG[intent.network].chainId;
30
+ const verusNetwork = (0, index_js_3.getNetwork)(intent.network === 'testnet');
31
+ const systemId = index_js_5.NETWORK_CONFIG[intent.network].chainId;
30
32
  // Leading inputs sit OUTSIDE the token-conservation check below (which only
31
33
  // sees the funding selection), so a leading input carrying token value would be
32
34
  // silently burned. Fail closed. Today the only leading input is the SDK-built
@@ -74,18 +76,22 @@ function assembleAndSign(intent) {
74
76
  requiredCurrencies.set(c, (requiredCurrencies.get(c) ?? 0n) + v);
75
77
  }
76
78
  }
77
- const selection = (0, index_js_1.selectUtxos)(intent.funding, requiredNative, requiredCurrencies, intent.feeOutputCount ?? intent.outputs.length, systemId, undefined, intent.hasSmartOutputs ?? true, intent.extraOutputBytes ?? 0);
79
+ // The miner fee is priced from the DECLARED outputs alone the daemon charges
80
+ // per output, not per byte or per input (src/fee/index.ts). Change is excluded,
81
+ // exactly as the daemon's own builder excludes it (wallet.cpp:6955-6965).
82
+ const minerFee = (0, index_js_2.estimateMinerFee)(intent.outputs.map((o) => o.script));
83
+ const selection = (0, index_js_1.selectUtxos)(intent.funding, requiredNative, requiredCurrencies, minerFee, systemId);
78
84
  const txb = new boundary_js_1.TransactionBuilder(verusNetwork);
79
85
  txb.setVersion(4);
80
- txb.setExpiryHeight((0, index_js_2.resolveExpiryHeight)(intent.expiryHeight));
81
- txb.setVersionGroupId(index_js_4.VERSION_GROUP_ID);
86
+ txb.setExpiryHeight((0, index_js_3.resolveExpiryHeight)(intent.expiryHeight));
87
+ txb.setVersionGroupId(index_js_5.VERSION_GROUP_ID);
82
88
  const leading = intent.leadingInputs ?? [];
83
89
  const allUtxos = [...leading, ...selection.selected];
84
90
  for (const utxo of allUtxos) {
85
91
  txb.addInput(Buffer.from(utxo.txid, 'hex').reverse(), utxo.outputIndex, 0xffffffff, Buffer.from(utxo.script, 'hex'));
86
92
  }
87
93
  for (const o of intent.outputs) {
88
- txb.addOutput(o.script, (0, index_js_3.toSafeNumber)(o.nativeSat));
94
+ txb.addOutput(o.script, (0, index_js_4.toSafeNumber)(o.nativeSat));
89
95
  }
90
96
  // Change, emitted in one place — bundled onto the reserve output or as a
91
97
  // separate native output (per changeStrategy). utxo-lib's addOutput only
@@ -94,18 +100,18 @@ function assembleAndSign(intent) {
94
100
  const hasTokenChange = selection.currencyChanges.size > 0;
95
101
  const emitNativeChange = (value) => {
96
102
  if (intent.changeAddress.startsWith('i')) {
97
- txb.addOutput((0, index_js_5.identityPaymentScript)((0, brands_js_1.parseIAddress)(intent.changeAddress, 'changeAddress')), (0, index_js_3.toSafeNumber)(value));
103
+ txb.addOutput((0, index_js_6.identityPaymentScript)((0, brands_js_1.parseIAddress)(intent.changeAddress, 'changeAddress')), (0, index_js_4.toSafeNumber)(value));
98
104
  }
99
105
  else {
100
- txb.addOutput(intent.changeAddress, (0, index_js_3.toSafeNumber)(value));
106
+ txb.addOutput(intent.changeAddress, (0, index_js_4.toSafeNumber)(value));
101
107
  }
102
108
  };
103
109
  if ((intent.changeStrategy ?? 'bundled') === 'separate') {
104
110
  // Token change carries only its own structural native value; the native change
105
111
  // is a distinct output (the fork's currency-transfer convention).
106
112
  if (hasTokenChange) {
107
- const tokenChange = (0, index_js_5.buildTokenChangeOutput)((0, brands_js_1.parseAddress)(intent.changeAddress, 'changeAddress'), selection.currencyChanges);
108
- txb.addOutput(tokenChange.script, (0, index_js_3.toSafeNumber)(tokenChange.nativeValue));
113
+ const tokenChange = (0, index_js_6.buildTokenChangeOutput)((0, brands_js_1.parseAddress)(intent.changeAddress, 'changeAddress'), selection.currencyChanges);
114
+ txb.addOutput(tokenChange.script, (0, index_js_4.toSafeNumber)(tokenChange.nativeValue));
109
115
  }
110
116
  if (selection.nativeChange > 0n)
111
117
  emitNativeChange(selection.nativeChange);
@@ -113,8 +119,8 @@ function assembleAndSign(intent) {
113
119
  else if (hasTokenChange || selection.nativeChange > 0n) {
114
120
  // Bundled: the native change rides on the token-change reserve output.
115
121
  if (hasTokenChange) {
116
- const tokenChange = (0, index_js_5.buildTokenChangeOutput)((0, brands_js_1.parseAddress)(intent.changeAddress, 'changeAddress'), selection.currencyChanges);
117
- txb.addOutput(tokenChange.script, (0, index_js_3.toSafeNumber)(selection.nativeChange));
122
+ const tokenChange = (0, index_js_6.buildTokenChangeOutput)((0, brands_js_1.parseAddress)(intent.changeAddress, 'changeAddress'), selection.currencyChanges);
123
+ txb.addOutput(tokenChange.script, (0, index_js_4.toSafeNumber)(selection.nativeChange));
118
124
  }
119
125
  else {
120
126
  emitNativeChange(selection.nativeChange);
@@ -137,11 +143,15 @@ function assembleAndSign(intent) {
137
143
  // native above, so their term is 0; it stays explicit as honest accounting.
138
144
  const leadingNative = leading.reduce((sum, u) => sum + u.satoshis, 0n);
139
145
  const expectedFee = selection.fee + burnSat + leadingNative;
140
- (0, index_js_2.assertNativeConservation)(allUtxos, unsignedTx.outs, expectedFee, intent.label);
146
+ (0, index_js_3.assertNativeConservation)(allUtxos, unsignedTx.outs, expectedFee, intent.label);
147
+ // And the fee we chose must clear the daemon's own acceptance floor for the
148
+ // transaction we actually built — change outputs included, since only now are
149
+ // they known. Asserted on the miner fee alone (a declared burn is on top).
150
+ (0, index_js_2.assertFeeMeetsRelayMinimum)(selection.fee, unsignedTx.outs.map((o) => o.script), intent.label);
141
151
  // A declared burn tells the fork's absurd-fee-rate cap the intended absolute
142
152
  // fee, or build() rejects the (legitimately large) registration burn.
143
153
  const maxFeeSats = intent.fee.policy === 'declared' ? expectedFee : undefined;
144
- const { signedTx, txid } = (0, index_js_2.signTransactionSmart)(unsignedTx.toHex(), intent.wif, allUtxos, verusNetwork, maxFeeSats);
154
+ const { signedTx, txid } = (0, index_js_3.signTransactionSmart)(unsignedTx.toHex(), intent.wif, allUtxos, verusNetwork, maxFeeSats);
145
155
  return {
146
156
  signedTx,
147
157
  txid,
@@ -1 +1 @@
1
- {"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../src/assemble/assembler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../src/assemble/assembler.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,6 @@ export interface FundedIdentityUpdateIntent {
17
17
  * definition), emitted before change. Native funding is derived from them. */
18
18
  outputs: FundedUpdateOutput[];
19
19
  changeAddress: string;
20
- /** Extra output bytes for fee sizing — the identity/definition scripts are
21
- * large, so the caller passes their real byte length. */
22
- extraOutputBytes: number;
23
20
  /** Label used in conservation error messages. */
24
21
  label: string;
25
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundedIdentityUpdate.d.ts","sourceRoot":"","sources":["../../src/assemble/fundedIdentityUpdate.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB;sFACkF;IAClF,YAAY,EAAE,IAAI,CAAC;IACnB;mFAC+E;IAC/E,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB;8DAC0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,0BAA0B,GACjC,0BAA0B,CAqH5B"}
1
+ {"version":3,"file":"fundedIdentityUpdate.d.ts","sourceRoot":"","sources":["../../src/assemble/fundedIdentityUpdate.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAI9C,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB;sFACkF;IAClF,YAAY,EAAE,IAAI,CAAC;IACnB;mFAC+E;IAC/E,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,0BAA0B,GACjC,0BAA0B,CA+G5B"}
@@ -24,40 +24,45 @@ exports.assembleFundedIdentityUpdate = assembleFundedIdentityUpdate;
24
24
  */
25
25
  const boundary_js_1 = require("../fork/boundary.js");
26
26
  const index_js_1 = require("../utxo/index.js");
27
- const index_js_2 = require("../signing/index.js");
28
- const index_js_3 = require("../utils/index.js");
29
- const index_js_4 = require("../constants/index.js");
30
- const index_js_5 = require("../identity/index.js");
27
+ const index_js_2 = require("../fee/index.js");
28
+ const index_js_3 = require("../signing/index.js");
29
+ const index_js_4 = require("../utils/index.js");
30
+ const index_js_5 = require("../constants/index.js");
31
+ const index_js_6 = require("../identity/index.js");
31
32
  const brands_js_1 = require("../core/brands.js");
32
33
  const errors_js_1 = require("../errors.js");
33
34
  const { completeFundedIdentityUpdate } = boundary_js_1.smarttxs;
34
35
  function assembleFundedIdentityUpdate(intent) {
35
- const verusNetwork = (0, index_js_2.getNetwork)(intent.network === 'testnet');
36
- const systemId = index_js_4.NETWORK_CONFIG[intent.network].chainId;
36
+ const verusNetwork = (0, index_js_3.getNetwork)(intent.network === 'testnet');
37
+ const systemId = index_js_5.NETWORK_CONFIG[intent.network].chainId;
37
38
  const requiredNative = intent.outputs.reduce((sum, o) => sum + o.nativeSat, 0n);
38
- const selection = (0, index_js_1.selectUtxos)(intent.funding, requiredNative, new Map(), intent.outputs.length, systemId, undefined, true, intent.extraOutputBytes);
39
+ // Priced from the declared outputs by the daemon's rule including the
40
+ // identity output's own identityFeeFactor, which is what a large contentMultiMap
41
+ // actually costs (src/fee/index.ts).
42
+ const minerFee = (0, index_js_2.estimateMinerFee)(intent.outputs.map((o) => o.script));
43
+ const selection = (0, index_js_1.selectUtxos)(intent.funding, requiredNative, new Map(), minerFee, systemId);
39
44
  // These paths emit no token-change output, so a token-bearing funding UTXO
40
45
  // would be silently dropped; fail closed if one entered (both maps empty ⇒
41
46
  // assert no token value is present).
42
47
  (0, index_js_1.assertTokenConservation)(selection.selected, new Map(), new Map(), systemId, intent.label);
43
48
  const txb = new boundary_js_1.TransactionBuilder(verusNetwork);
44
49
  txb.setVersion(4);
45
- txb.setExpiryHeight((0, index_js_2.resolveExpiryHeight)(intent.expiryHeight));
46
- txb.setVersionGroupId(index_js_4.VERSION_GROUP_ID);
50
+ txb.setExpiryHeight((0, index_js_3.resolveExpiryHeight)(intent.expiryHeight));
51
+ txb.setVersionGroupId(index_js_5.VERSION_GROUP_ID);
47
52
  for (const utxo of selection.selected) {
48
53
  txb.addInput(Buffer.from(utxo.txid, 'hex').reverse(), utxo.outputIndex, 0xffffffff, Buffer.from(utxo.script, 'hex'));
49
54
  }
50
55
  for (const o of intent.outputs) {
51
- txb.addOutput(o.script, (0, index_js_3.toSafeNumber)(o.nativeSat));
56
+ txb.addOutput(o.script, (0, index_js_4.toSafeNumber)(o.nativeSat));
52
57
  }
53
58
  if (selection.nativeChange > 0n) {
54
59
  // utxo-lib's addOutput only resolves base58 R-addresses; an i-address
55
60
  // changeAddress needs the explicit P2ID script or it throws "no matching Script".
56
61
  if (intent.changeAddress.startsWith('i')) {
57
- txb.addOutput((0, index_js_5.identityPaymentScript)((0, brands_js_1.parseIAddress)(intent.changeAddress, 'changeAddress')), (0, index_js_3.toSafeNumber)(selection.nativeChange));
62
+ txb.addOutput((0, index_js_6.identityPaymentScript)((0, brands_js_1.parseIAddress)(intent.changeAddress, 'changeAddress')), (0, index_js_4.toSafeNumber)(selection.nativeChange));
58
63
  }
59
64
  else {
60
- txb.addOutput(intent.changeAddress, (0, index_js_3.toSafeNumber)(selection.nativeChange));
65
+ txb.addOutput(intent.changeAddress, (0, index_js_4.toSafeNumber)(selection.nativeChange));
61
66
  }
62
67
  }
63
68
  const fundedHex = txb.buildIncomplete().toHex();
@@ -98,10 +103,13 @@ function assembleFundedIdentityUpdate(intent) {
98
103
  script: Buffer.from(idUtxo.script, 'hex'),
99
104
  });
100
105
  const allUtxos = [...selection.selected, idUtxo];
106
+ const completedOuts = boundary_js_1.Transaction.fromHex(completedHex, verusNetwork).outs;
101
107
  // The identity input and its recreated output are both value 0, so the
102
108
  // assembled native fee must equal selection.fee. Fail loudly on any slip.
103
- (0, index_js_2.assertNativeConservation)(allUtxos, boundary_js_1.Transaction.fromHex(completedHex, verusNetwork).outs, selection.fee, intent.label);
104
- const { signedTx, txid } = (0, index_js_2.signTransactionSmart)(completedHex, intent.wif, allUtxos, verusNetwork);
109
+ (0, index_js_3.assertNativeConservation)(allUtxos, completedOuts, selection.fee, intent.label);
110
+ // …and that fee must clear the daemon's acceptance floor for the final vout set.
111
+ (0, index_js_2.assertFeeMeetsRelayMinimum)(selection.fee, completedOuts.map((o) => o.script), intent.label);
112
+ const { signedTx, txid } = (0, index_js_3.signTransactionSmart)(completedHex, intent.wif, allUtxos, verusNetwork);
105
113
  return {
106
114
  signedTx,
107
115
  txid,
@@ -1 +1 @@
1
- {"version":3,"file":"fundedIdentityUpdate.js","sourceRoot":"","sources":["../../src/assemble/fundedIdentityUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundedIdentityUpdate.js","sourceRoot":"","sources":["../../src/assemble/fundedIdentityUpdate.ts"],"names":[],"mappings":"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"}