@chainvue/verus-sdk 0.14.1 → 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.
- package/LICENSE +1 -1
- package/README.md +15 -0
- package/dist/VerusSDK.d.ts +7 -0
- package/dist/VerusSDK.d.ts.map +1 -1
- package/dist/VerusSDK.js +11 -0
- package/dist/VerusSDK.js.map +1 -1
- package/dist/assemble/assembler.d.ts +2 -8
- package/dist/assemble/assembler.d.ts.map +1 -1
- package/dist/assemble/assembler.js +30 -20
- package/dist/assemble/assembler.js.map +1 -1
- package/dist/assemble/fundedIdentityUpdate.d.ts +0 -3
- package/dist/assemble/fundedIdentityUpdate.d.ts.map +1 -1
- package/dist/assemble/fundedIdentityUpdate.js +22 -14
- package/dist/assemble/fundedIdentityUpdate.js.map +1 -1
- package/dist/bundle.js +232 -159
- package/dist/constants/index.d.ts +8 -2
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +9 -3
- package/dist/constants/index.js.map +1 -1
- package/dist/currency/index.d.ts.map +1 -1
- package/dist/currency/index.js +0 -3
- package/dist/currency/index.js.map +1 -1
- package/dist/currency/launch.d.ts.map +1 -1
- package/dist/currency/launch.js +0 -2
- package/dist/currency/launch.js.map +1 -1
- package/dist/errors.d.ts +4 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -1
- package/dist/errors.js.map +1 -1
- package/dist/fee/index.d.ts +116 -0
- package/dist/fee/index.d.ts.map +1 -0
- package/dist/fee/index.js +228 -0
- package/dist/fee/index.js.map +1 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +2 -16
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/multisig.d.ts.map +1 -1
- package/dist/identity/multisig.js +23 -18
- package/dist/identity/multisig.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -33
- package/dist/index.js.map +1 -1
- package/dist/keys/index.d.ts +22 -0
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +91 -0
- package/dist/keys/index.js.map +1 -1
- package/dist/offers/identity.d.ts.map +1 -1
- package/dist/offers/identity.js +40 -32
- package/dist/offers/identity.js.map +1 -1
- package/dist/offers/reclaim.d.ts.map +1 -1
- package/dist/offers/reclaim.js +29 -21
- package/dist/offers/reclaim.js.map +1 -1
- package/dist/offers/taker.d.ts.map +1 -1
- package/dist/offers/taker.js +22 -17
- package/dist/offers/taker.js.map +1 -1
- package/dist/transfer/index.d.ts.map +1 -1
- package/dist/transfer/index.js +0 -2
- package/dist/transfer/index.js.map +1 -1
- package/dist/utxo/index.d.ts +11 -8
- package/dist/utxo/index.d.ts.map +1 -1
- package/dist/utxo/index.js +20 -37
- package/dist/utxo/index.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
same "printed page" as the copyright notice for easier
|
|
188
188
|
identification within third-party archives.
|
|
189
189
|
|
|
190
|
-
Copyright
|
|
190
|
+
Copyright 2026 Robert Lech
|
|
191
191
|
|
|
192
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
193
|
you may not use this file except in compliance with the License.
|
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# @chainvue/verus-sdk
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@chainvue/verus-sdk)
|
|
4
|
+
[](https://github.com/chainvue/verus-sdk/actions/workflows/ci.yml)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
|
|
3
8
|
Offline Verus transaction signing. Bring UTXOs and a WIF; get back signed
|
|
4
9
|
transaction hex — no daemon, no network. Native transfers, token/currency
|
|
5
10
|
transfers, conversions, currency creation (token / basket / NFT), and the full
|
|
@@ -62,6 +67,14 @@ Every built transfer is re-validated against its intent — per-currency value
|
|
|
62
67
|
conservation, change to the declared address — before the hex is returned. A
|
|
63
68
|
selection or change bug throws; it never hands you a bad transaction.
|
|
64
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
|
+
|
|
65
78
|
## Good to know
|
|
66
79
|
|
|
67
80
|
- **Self-contained bundle**: the VerusCoin forks (utxo-lib, primitives,
|
|
@@ -80,6 +93,7 @@ Per-area guides, plus runnable offline examples in [`examples/`](./examples):
|
|
|
80
93
|
|
|
81
94
|
| Guide | What's in it |
|
|
82
95
|
|---|---|
|
|
96
|
+
| [seed phrases](./docs/seeds.md) | using a Verus Mobile / Verus Desktop seed phrase — the exact derivation, why Verus is not HD, and the security caveat |
|
|
83
97
|
| [amounts](./docs/amounts.md) | the money model — `bigint` satoshis, `parseSats`/`toCoins`, the one float64 boundary |
|
|
84
98
|
| [transfers](./docs/transfers.md) | `transfer` / `transferToken` / `convert` / `sendCurrency`, conversions, pre-convert, mint / burn, UTXOs, change, re-validation |
|
|
85
99
|
| [VerusID lifecycle](./docs/identity.md) | commit → register, update, lock/unlock, revoke/recover, sign/verify messages |
|
|
@@ -87,6 +101,7 @@ Per-area guides, plus runnable offline examples in [`examples/`](./examples):
|
|
|
87
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 |
|
|
88
102
|
| [signing & wire format](./docs/signing-and-wire.md) | why the bytes are the daemon's, the self-contained bundle, the proof rings |
|
|
89
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 |
|
|
90
105
|
| [testing](./docs/testing.md) | the gate, the plain-`node` rule, the live-proof ring model |
|
|
91
106
|
|
|
92
107
|
## Contributing
|
package/dist/VerusSDK.d.ts
CHANGED
|
@@ -124,6 +124,13 @@ export declare class VerusSDK {
|
|
|
124
124
|
static deriveIdentityAddress(name: string, parentIAddress?: string): string;
|
|
125
125
|
/** Generate a new random WIF private key */
|
|
126
126
|
static generateWif(): string;
|
|
127
|
+
/**
|
|
128
|
+
* Derive the WIF a Verus Mobile / Verus Desktop seed phrase maps to.
|
|
129
|
+
* One seed = one key: Verus wallets are not HD. See docs/seeds.md.
|
|
130
|
+
*/
|
|
131
|
+
static seedToWif(seed: string): string;
|
|
132
|
+
/** Derive the R-address a Verus Mobile / Verus Desktop seed phrase maps to */
|
|
133
|
+
static deriveAddressFromSeed(seed: string): Promise<string>;
|
|
127
134
|
/** Validate a Verus R-address */
|
|
128
135
|
static validateAddress(address: string): {
|
|
129
136
|
valid: boolean;
|
package/dist/VerusSDK.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerusSDK.d.ts","sourceRoot":"","sources":["../src/VerusSDK.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VerusSDK.d.ts","sourceRoot":"","sources":["../src/VerusSDK.ts"],"names":[],"mappings":"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"}
|
package/dist/VerusSDK.js
CHANGED
|
@@ -266,6 +266,17 @@ class VerusSDK {
|
|
|
266
266
|
static generateWif() {
|
|
267
267
|
return keysModule.generateWif();
|
|
268
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Derive the WIF a Verus Mobile / Verus Desktop seed phrase maps to.
|
|
271
|
+
* One seed = one key: Verus wallets are not HD. See docs/seeds.md.
|
|
272
|
+
*/
|
|
273
|
+
static seedToWif(seed) {
|
|
274
|
+
return keysModule.seedToWif(seed);
|
|
275
|
+
}
|
|
276
|
+
/** Derive the R-address a Verus Mobile / Verus Desktop seed phrase maps to */
|
|
277
|
+
static async deriveAddressFromSeed(seed) {
|
|
278
|
+
return keysModule.seedToAddress(seed);
|
|
279
|
+
}
|
|
269
280
|
/** Validate a Verus R-address */
|
|
270
281
|
static validateAddress(address) {
|
|
271
282
|
return keysModule.validateAddress(address);
|
package/dist/VerusSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerusSDK.js","sourceRoot":"","sources":["../src/VerusSDK.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDH,oEAAsD;AACtD,oEAAsD;AACtD,kEAAoD;AACpD,oEAAsD;AAEtD,4DAA8C;AAC9C,iEAAmD;AACnD,uEAAyD;AAQzD,MAAa,QAAQ;IAGnB,YAAY,MAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,sDAAsD;IAEtD,kDAAkD;IAClD,QAAQ,CAAC,MAAsB;QAC7B,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,8BAA8B;IAC9B,aAAa,CAAC,MAA2B;QACvC,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,MAAqB;QAC3B,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,iEAAiE;IACjE,YAAY,CAAC,MAA0B;QACrC,OAAO,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,gDAAgD;IAChD,YAAY,CAAC,MAA0B;QACrC,OAAO,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,sDAAsD;IAEtD,4DAA4D;IAC5D,gBAAgB,CAAC,MAA8B;QAC7C,OAAO,cAAc,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,yDAAyD;IACzD,gBAAgB,CAAC,MAA8B;QAC7C,OAAO,cAAc,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,mFAAmF;IACnF,cAAc,CAAC,MAA4B;QACzC,OAAO,cAAc,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAA0B;QACrC,OAAO,cAAc,CAAC,0BAA0B,CAC9C;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,EACD,IAAI,CAAC,OAAO,EACZ,MAAM,EACN,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,KAAK,EAAE,CAChG,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,cAAc,CAAC,MAA4B;QACzC,OAAO,cAAc,CAAC,0BAA0B,CAC9C;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,EACD,IAAI,CAAC,OAAO,EACZ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,cAAc,CAAC,MAA4B;QACzC,OAAO,cAAc,CAAC,0BAA0B,CAC9C;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,EACD,IAAI,CAAC,OAAO,EACZ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,2BAA2B,CAAC,MAAoC;QAC9D,OAAO,cAAc,CAAC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,mGAAmG;IACnG,oBAAoB,CAAC,MAAkC;QACrD,OAAO,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,4DAA4D;IAC5D,eAAe,CAAC,MAA6B;QAC3C,OAAO,cAAc,CAAC,0BAA0B,CAC9C;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClG,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,EACD,IAAI,CAAC,OAAO,EACZ,SAAS,CACV,CAAC;IACJ,CAAC;IAED,sDAAsD;IAEtD;;;;;;;OAOG;IACH,cAAc,CAAC,MAA4B;QACzC,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACH,6BAA6B,CAAC,KAA8B;QAC1D,OAAO,cAAc,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;OAQG;IACH,0BAA0B,CACxB,KAA8B,EAC9B,OAA6C;QAE7C,OAAO,cAAc,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACH,8BAA8B,CAC5B,MAA6C;QAE7C,OAAO,cAAc,CAAC,8BAA8B,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED,sDAAsD;IAEtD,uDAAuD;IACvD,WAAW,CAAC,MAAyB;QACnC,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,yCAAyC;IACzC,aAAa,CAAC,MAA2B;QACvC,OAAO,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,sDAAsD;IAEtD;;;OAGG;IACH,iBAAiB,CAAC,MAA+B;QAC/C,OAAO,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,MAAwB;QACjC,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,MAA2B;QACvC,OAAO,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,MAA0B;QAC1C,OAAO,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,qFAAqF;IACrF,sBAAsB,CAAC,MAAoC;QACzD,OAAO,YAAY,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,sFAAsF;IACtF,yBAAyB,CAAC,MAAuC;QAC/D,OAAO,YAAY,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,oFAAoF;IACpF,qBAAqB,CAAC,MAAmC;QACvD,OAAO,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,uGAAuG;IACvG,wBAAwB,CAAC,MAAsC;QAC7D,OAAO,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,sEAAsE;IACtE,sBAAsB,CAAC,MAAoC;QACzD,OAAO,YAAY,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,8FAA8F;IAC9F,yBAAyB,CAAC,MAAuC;QAC/D,OAAO,YAAY,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,qDAAqD;IAErD,4CAA4C;IAC5C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAW;QACpC,OAAO,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,qBAAqB,CAAC,IAAY,EAAE,cAAuB;QAChE,OAAO,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,WAAW;QAChB,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,eAAe,CAAC,OAAe;QACpC,OAAO,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"VerusSDK.js","sourceRoot":"","sources":["../src/VerusSDK.ts"],"names":[],"mappings":"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"}
|
|
@@ -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`
|
|
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":"
|
|
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.
|
|
15
|
-
* (registration's implicit burn
|
|
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("../
|
|
22
|
-
const index_js_3 = require("../
|
|
23
|
-
const index_js_4 = require("../
|
|
24
|
-
const index_js_5 = require("../
|
|
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,
|
|
29
|
-
const systemId =
|
|
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
|
-
|
|
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,
|
|
81
|
-
txb.setVersionGroupId(
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
108
|
-
txb.addOutput(tokenChange.script, (0,
|
|
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,
|
|
117
|
-
txb.addOutput(tokenChange.script, (0,
|
|
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,
|
|
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,
|
|
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":";;
|
|
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":"
|
|
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("../
|
|
28
|
-
const index_js_3 = require("../
|
|
29
|
-
const index_js_4 = require("../
|
|
30
|
-
const index_js_5 = require("../
|
|
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,
|
|
36
|
-
const systemId =
|
|
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
|
-
|
|
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,
|
|
46
|
-
txb.setVersionGroupId(
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
104
|
-
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"fundedIdentityUpdate.js","sourceRoot":"","sources":["../../src/assemble/fundedIdentityUpdate.ts"],"names":[],"mappings":"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"}
|