@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.
- package/README.md +9 -0
- 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 +173 -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/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 +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -33
- package/dist/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/dist/utxo/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Client-side UTXO selection for Verus transactions
|
|
3
3
|
*
|
|
4
|
-
* Selects UTXOs to cover required native + currency amounts
|
|
5
|
-
*
|
|
4
|
+
* Selects UTXOs to cover required native + currency amounts and the
|
|
5
|
+
* caller-supplied miner fee, and determines change outputs. The fee itself is
|
|
6
|
+
* priced by `src/fee/index.ts` — the daemon derives it from the transaction's
|
|
7
|
+
* OUTPUTS, so it is known before selection and does not depend on it.
|
|
6
8
|
*
|
|
7
9
|
* All amounts are bigint satoshis — exact integer arithmetic only.
|
|
8
10
|
*/
|
|
@@ -38,11 +40,12 @@ export declare function decodeUtxo(utxo: Utxo, systemId: string): DecodedUtxo;
|
|
|
38
40
|
*/
|
|
39
41
|
export declare function assertTokenConservation(selected: ReadonlyArray<Utxo>, spentToOutputs: Map<string, bigint>, currencyChanges: Map<string, bigint>, systemId: string, label: string): void;
|
|
40
42
|
/**
|
|
41
|
-
*
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*
|
|
43
|
+
* Select UTXOs to cover the required amounts plus `fee`.
|
|
44
|
+
*
|
|
45
|
+
* `fee` is the miner fee the caller has already priced from its outputs with
|
|
46
|
+
* {@link estimateMinerFee}. It replaces the old `numOutputs` / `feePerKb` /
|
|
47
|
+
* `hasSmartOutputs` / `extraOutputBytes` parameters, which modelled a
|
|
48
|
+
* byte-size fee VerusCoin does not charge.
|
|
46
49
|
*/
|
|
47
|
-
export declare function selectUtxos(utxos: Utxo[], requiredNative: bigint, requiredCurrencies
|
|
50
|
+
export declare function selectUtxos(utxos: Utxo[], requiredNative: bigint, requiredCurrencies: Map<string, bigint>, fee: bigint, systemId?: string): SelectionResult;
|
|
48
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/utxo/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utxo/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utxo/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAK5E,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUhE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CA2BpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,EAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAwBN;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,IAAI,EAAE,EACb,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAuC,GAChD,eAAe,CAmJjB"}
|
package/dist/utxo/index.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Client-side UTXO selection for Verus transactions
|
|
4
4
|
*
|
|
5
|
-
* Selects UTXOs to cover required native + currency amounts
|
|
6
|
-
*
|
|
5
|
+
* Selects UTXOs to cover required native + currency amounts and the
|
|
6
|
+
* caller-supplied miner fee, and determines change outputs. The fee itself is
|
|
7
|
+
* priced by `src/fee/index.ts` — the daemon derives it from the transaction's
|
|
8
|
+
* OUTPUTS, so it is known before selection and does not depend on it.
|
|
7
9
|
*
|
|
8
10
|
* All amounts are bigint satoshis — exact integer arithmetic only.
|
|
9
11
|
*/
|
|
@@ -11,20 +13,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
13
|
exports.isSmartTransactionScript = isSmartTransactionScript;
|
|
12
14
|
exports.decodeUtxo = decodeUtxo;
|
|
13
15
|
exports.assertTokenConservation = assertTokenConservation;
|
|
14
|
-
exports.estimateFee = estimateFee;
|
|
15
16
|
exports.selectUtxos = selectUtxos;
|
|
16
17
|
const boundary_js_1 = require("../fork/boundary.js");
|
|
17
18
|
const index_js_1 = require("../constants/index.js");
|
|
18
19
|
const errors_js_1 = require("../errors.js");
|
|
19
20
|
const index_js_2 = require("../utils/index.js");
|
|
20
21
|
const { unpackOutput } = boundary_js_1.smarttxs;
|
|
21
|
-
// Transaction size estimation constants
|
|
22
|
-
const INPUT_SIZE = 180;
|
|
23
|
-
const P2PKH_OUTPUT_SIZE = 34;
|
|
24
|
-
const SMART_OUTPUT_SIZE = 200;
|
|
25
|
-
const TX_OVERHEAD = 60;
|
|
26
|
-
/** Absolute fee floor in satoshis */
|
|
27
|
-
const MIN_FEE = 10000n;
|
|
28
22
|
/**
|
|
29
23
|
* True when the script is a Verus smart (CryptoCondition) output. Used to
|
|
30
24
|
* separate "plain script that unpackOutput doesn't model" (fine — native
|
|
@@ -114,22 +108,23 @@ function assertTokenConservation(selected, spentToOutputs, currencyChanges, syst
|
|
|
114
108
|
}
|
|
115
109
|
}
|
|
116
110
|
/**
|
|
117
|
-
*
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// contentMultimap). Without it a large tx is fee-estimated far below the
|
|
124
|
-
// relay minimum and the daemon rejects it.
|
|
125
|
-
const txSize = TX_OVERHEAD + numInputs * INPUT_SIZE + numOutputs * outputSize + extraBytes;
|
|
126
|
-
const fee = (BigInt(txSize) * feePerKb + 999n) / 1000n; // ceil(txSize * feePerKb / 1000)
|
|
127
|
-
return fee > MIN_FEE ? fee : MIN_FEE;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Select UTXOs to cover required amounts
|
|
111
|
+
* Select UTXOs to cover the required amounts plus `fee`.
|
|
112
|
+
*
|
|
113
|
+
* `fee` is the miner fee the caller has already priced from its outputs with
|
|
114
|
+
* {@link estimateMinerFee}. It replaces the old `numOutputs` / `feePerKb` /
|
|
115
|
+
* `hasSmartOutputs` / `extraOutputBytes` parameters, which modelled a
|
|
116
|
+
* byte-size fee VerusCoin does not charge.
|
|
131
117
|
*/
|
|
132
|
-
function selectUtxos(utxos, requiredNative, requiredCurrencies
|
|
118
|
+
function selectUtxos(utxos, requiredNative, requiredCurrencies, fee, systemId = index_js_1.NETWORK_CONFIG.mainnet.chainId) {
|
|
119
|
+
// The fee is an INPUT now, not a fixed point: the daemon prices a transaction
|
|
120
|
+
// by its outputs, which the caller knows before selection runs (see
|
|
121
|
+
// `src/fee/index.ts`). Fail closed on a non-bigint or below-minimum value —
|
|
122
|
+
// a JavaScript consumer still calling the old positional form would otherwise
|
|
123
|
+
// pass the old `numOutputs` (a small number) straight through as the fee.
|
|
124
|
+
if (typeof fee !== 'bigint' || fee < index_js_1.DEFAULT_TRANSACTION_FEE) {
|
|
125
|
+
throw new errors_js_1.TransactionBuildError(`selectUtxos: fee must be a bigint of at least ${index_js_1.DEFAULT_TRANSACTION_FEE} satoshis ` +
|
|
126
|
+
`(compute it with estimateMinerFee), got ${String(fee)}`);
|
|
127
|
+
}
|
|
133
128
|
// Reject duplicate outpoints up front. An outpoint can only be spent once, so
|
|
134
129
|
// the same (txid, outputIndex) twice is always a caller error. Left unchecked
|
|
135
130
|
// its value is double-counted here (corrupting the funds accounting) and the
|
|
@@ -211,16 +206,6 @@ function selectUtxos(utxos, requiredNative, requiredCurrencies = new Map(), numO
|
|
|
211
206
|
return at - bt; // pure-native first
|
|
212
207
|
return b.satoshis > a.satoshis ? 1 : b.satoshis < a.satoshis ? -1 : 0;
|
|
213
208
|
});
|
|
214
|
-
const countCurrencyChanges = () => {
|
|
215
|
-
let n = 0;
|
|
216
|
-
for (const [currency, needed] of remaining) {
|
|
217
|
-
if (currency !== systemId && needed < 0n)
|
|
218
|
-
n++;
|
|
219
|
-
}
|
|
220
|
-
return n;
|
|
221
|
-
};
|
|
222
|
-
let changeOutputCount = countCurrencyChanges();
|
|
223
|
-
let fee = estimateFee(selected.length + 1, numOutputs + 1 + changeOutputCount, feePerKb, hasSmartOutputs, extraOutputBytes);
|
|
224
209
|
while (remainingNative + fee > 0n) {
|
|
225
210
|
const next = nativeOnly.shift();
|
|
226
211
|
if (!next) {
|
|
@@ -236,8 +221,6 @@ function selectUtxos(utxos, requiredNative, requiredCurrencies = new Map(), numO
|
|
|
236
221
|
continue;
|
|
237
222
|
remaining.set(currency, (remaining.get(currency) || 0n) - amount);
|
|
238
223
|
}
|
|
239
|
-
changeOutputCount = countCurrencyChanges();
|
|
240
|
-
fee = estimateFee(selected.length, numOutputs + 1 + changeOutputCount, feePerKb, hasSmartOutputs, extraOutputBytes);
|
|
241
224
|
}
|
|
242
225
|
// Calculate change
|
|
243
226
|
const totalNativeIn = selected.reduce((sum, u) => sum + u.satoshis, 0n);
|
package/dist/utxo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utxo/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utxo/index.ts"],"names":[],"mappings":"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"}
|