@zill-protocol/client 4.1.3 → 4.1.5
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/dist/package.json +5 -5
- package/dist/src/opRequestGas.d.ts.map +1 -1
- package/dist/src/opRequestGas.js +0 -46
- package/dist/src/opRequestGas.js.map +1 -1
- package/dist/src/operationRequest/builder.d.ts.map +1 -1
- package/dist/src/operationRequest/builder.js +50 -0
- package/dist/src/operationRequest/builder.js.map +1 -1
- package/dist/src/prepareOperation.d.ts.map +1 -1
- package/dist/src/prepareOperation.js +0 -4
- package/dist/src/prepareOperation.js.map +1 -1
- package/dist/src/utils/constants.d.ts.map +1 -1
- package/dist/src/utils/constants.js +2 -0
- package/dist/src/utils/constants.js.map +1 -1
- package/package.json +6 -6
- package/src/opRequestGas.ts +0 -24
- package/src/operationRequest/builder.ts +67 -0
- package/src/prepareOperation.ts +0 -8
- package/src/utils/constants.ts +2 -0
- package/CHANGELOG.md +0 -26
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zill-protocol/client",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"test:unit": "mocha --require ts-node/register test/** --timeout 45000 --exit"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@zill-protocol/config": "
|
|
26
|
-
"@zill-protocol/contracts": "^4.0.
|
|
27
|
-
"@zill-protocol/core": "
|
|
28
|
-
"@zill-protocol/crypto": "
|
|
25
|
+
"@zill-protocol/config": "1.7.4",
|
|
26
|
+
"@zill-protocol/contracts": "^4.0.2",
|
|
27
|
+
"@zill-protocol/core": "3.3.2",
|
|
28
|
+
"@zill-protocol/crypto": "0.4.4",
|
|
29
29
|
"async-mutex": "^0.4.0",
|
|
30
30
|
"big-integer": "^1.6.42",
|
|
31
31
|
"bigint-json-serialization": "^1.0.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opRequestGas.d.ts","sourceRoot":"","sources":["../../src/opRequestGas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EACL,KAAK,EAaL,kBAAkB,EAKnB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"opRequestGas.d.ts","sourceRoot":"","sources":["../../src/opRequestGas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EACL,KAAK,EAaL,kBAAkB,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,4BAA4B,EAE5B,gBAAgB,EACjB,MAAM,qCAAqC,CAAC;AAoB7C,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,UAAU,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAwBD,qBAAa,uBAAwB,SAAQ,KAAK;aAE9B,SAAS,EAAE,KAAK,EAAE;aAClB,YAAY,EAAE,MAAM,EAAE;aACtB,gBAAgB,EAAE,MAAM,EAAE;gBAF1B,SAAS,EAAE,KAAK,EAAE,EAClB,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,EAAE;CAK7C;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,sBAAsB,EAC5B,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,4BAA4B,CAAC,CA+CvC"}
|
package/dist/src/opRequestGas.js
CHANGED
|
@@ -1,43 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.NotEnoughGasTokensError = void 0;
|
|
37
4
|
exports.handleGasForOperationRequest = handleGasForOperationRequest;
|
|
38
5
|
const core_1 = require("@zill-protocol/core");
|
|
39
6
|
const crypto_1 = require("@zill-protocol/crypto");
|
|
40
|
-
const JSON = __importStar(require("bigint-json-serialization"));
|
|
41
7
|
const prepareOperation_1 = require("./prepareOperation");
|
|
42
8
|
const utils_1 = require("./utils");
|
|
43
9
|
// If gas asset refund is less than this amount * gasPrice denominated in the gas asset, refund will
|
|
@@ -64,7 +30,6 @@ class NotEnoughGasTokensError extends Error {
|
|
|
64
30
|
exports.NotEnoughGasTokensError = NotEnoughGasTokensError;
|
|
65
31
|
async function handleGasForOperationRequest(deps, opRequest, gasMultiplier) {
|
|
66
32
|
// estimate gas params for opRequest
|
|
67
|
-
console.log("estimating gas for op request");
|
|
68
33
|
const { totalGasLimit, executionGasLimit, gasPrice, usedNotes } = await getOperationRequestTrace(deps, opRequest, gasMultiplier);
|
|
69
34
|
const gasEstimatedOpRequest = {
|
|
70
35
|
...opRequest,
|
|
@@ -73,7 +38,6 @@ async function handleGasForOperationRequest(deps, opRequest, gasMultiplier) {
|
|
|
73
38
|
};
|
|
74
39
|
if (opRequest?.gasPrice == 0n) {
|
|
75
40
|
// If gasPrice = 0, override dummy gas asset and don't further modify opRequest
|
|
76
|
-
console.log("returning dummy gas asset");
|
|
77
41
|
return {
|
|
78
42
|
...gasEstimatedOpRequest,
|
|
79
43
|
gasPrice: 0n,
|
|
@@ -83,7 +47,6 @@ async function handleGasForOperationRequest(deps, opRequest, gasMultiplier) {
|
|
|
83
47
|
};
|
|
84
48
|
}
|
|
85
49
|
else {
|
|
86
|
-
console.log(`total gas limit pre gas update: ${totalGasLimit}`);
|
|
87
50
|
// attempt to update the joinSplitRequests with gas compensation
|
|
88
51
|
// gasAsset will be `undefined` if the user's too broke to pay for gas
|
|
89
52
|
const [joinSplitRequests, gasAssetAndTicker] = await tryUpdateJoinSplitRequestsForGasEstimate(deps.gasAssets, deps.db, gasEstimatedOpRequest.joinSplitRequests, totalGasLimit, gasPrice, deps.tokenConverter, usedNotes);
|
|
@@ -138,8 +101,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(gasAssets, db, joinSplit
|
|
|
138
101
|
if (remainingValueNeededInNewJoinSplits > 0n) {
|
|
139
102
|
// Add enough to cover gas needed for existing joinsplits + gas for an extra joinsplits
|
|
140
103
|
const extraNotes = await (0, prepareOperation_1.gatherNotes)(db, remainingValueNeededInNewJoinSplits, gasAsset, usedMerkleIndicesForGasAsset);
|
|
141
|
-
console.log(`usedNotes: ${JSON.stringify(usedNotes)}`);
|
|
142
|
-
console.log(`need ${extraNotes.length} extra notes for gas comp`);
|
|
143
104
|
numExtraJoinSplits =
|
|
144
105
|
Math.ceil((usedNotesForGasAsset.length + extraNotes.length) / 2) -
|
|
145
106
|
Math.ceil(usedNotesForGasAsset.length / 2);
|
|
@@ -161,11 +122,9 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(gasAssets, db, joinSplit
|
|
|
161
122
|
extraJoinSplitsGas = 0n;
|
|
162
123
|
numExtraJoinSplits = 0;
|
|
163
124
|
}
|
|
164
|
-
console.log(`adding ${extraJoinSplitsGas} tokens for ${numExtraJoinSplits} extra joinsplits for gas compensation`);
|
|
165
125
|
matchingJoinSplitRequests[0].unwrapValue +=
|
|
166
126
|
estimateInGasAsset + extraJoinSplitsGas;
|
|
167
127
|
joinSplitRequestsByAsset.set(gasAsset.assetAddr, matchingJoinSplitRequests);
|
|
168
|
-
console.log(`amount to add for gas asset by modifying existing joinsplit for gas asset with ticker ${ticker}: ${estimateInGasAsset}}`, { gasAssetTicker: ticker, gasAsset, estimateInGasAsset });
|
|
169
128
|
return [
|
|
170
129
|
Array.from(joinSplitRequestsByAsset.values()).flat(),
|
|
171
130
|
{ asset: gasAsset, ticker },
|
|
@@ -202,11 +161,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(gasAssets, db, joinSplit
|
|
|
202
161
|
asset: gasAsset,
|
|
203
162
|
unwrapValue: estimateInGasAssetIncludingNewJoinSplits,
|
|
204
163
|
});
|
|
205
|
-
console.log(`amount to add for gas asset by adding a new joinsplit for gas asset with ticker ${ticker}: ${estimateInGasAssetIncludingNewJoinSplits}`, {
|
|
206
|
-
gasAssetTicker: ticker,
|
|
207
|
-
gasAsset,
|
|
208
|
-
estimateInGasAssetIncludingNewJoinSplits,
|
|
209
|
-
});
|
|
210
164
|
return [modifiedJoinSplitRequests, { asset: gasAsset, ticker }];
|
|
211
165
|
}
|
|
212
166
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opRequestGas.js","sourceRoot":"","sources":["../../src/opRequestGas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opRequestGas.js","sourceRoot":"","sources":["../../src/opRequestGas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/operationRequest/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,EAC5B,gBAAgB,EAChB,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,OAAO,EACP,KAAK,EAGN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAqB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpE,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/operationRequest/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,EAC5B,gBAAgB,EAChB,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,OAAO,EACP,KAAK,EAGN,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAqB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpE,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAuCzE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,oBAAoB,EAAE,0BAA0B,EAAE,CAAC;IACnD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAGD,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,oBAAoB,IAAI,CAAC,GAAG;IAEpE,GAAG,CAAC,EAAE,SAAS,CAAC,EACd,MAAM,EAAE,sBAAsB,CAAC,CAAC,EAAE,EAAE,CAAC,GACpC,mBAAmB,CAAC,EAAE,CAAC,CAAC;CAC5B,CAAC;AAGF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;IAC3C,MAAM,EAAE,cAAc,CAAC;IAEvB,GAAG,EAAE,gBAAgB,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;IAExD,KAAK,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAI/C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;IAK7D,QAAQ,CAAC,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAOlE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAIlD,mBAAmB,CACjB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACrB,IAAI,CAAC;IAIR,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAKtC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAIvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAMjC,GAAG,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAMD,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,oBAAoB,EAC9B,EAAE,SAAS,CAAC,IACV,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAI/D,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC,CAAC;AAIF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,EAC1C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,GACtB,mBAAmB,CAAC,oBAAoB,CAAC,CA4Q3C"}
|
|
@@ -5,6 +5,39 @@ const config_1 = require("@zill-protocol/config");
|
|
|
5
5
|
const core_1 = require("@zill-protocol/core");
|
|
6
6
|
const ethers_1 = require("ethers");
|
|
7
7
|
const constants_1 = require("../utils/constants");
|
|
8
|
+
const BPS_DENOM = 10000n;
|
|
9
|
+
function computeFeeForBps(amount, bps) {
|
|
10
|
+
return (amount * bps) / BPS_DENOM;
|
|
11
|
+
}
|
|
12
|
+
// Returns the smallest `gross` such that: gross - floor(gross*bps/BPS_DENOM) >= net
|
|
13
|
+
function grossUpNetAmountForBps(net, bps) {
|
|
14
|
+
if (net === 0n || bps === 0n)
|
|
15
|
+
return net;
|
|
16
|
+
if (bps >= BPS_DENOM) {
|
|
17
|
+
throw new Error(`Invalid fee bps: ${bps.toString()}`);
|
|
18
|
+
}
|
|
19
|
+
const denom = BPS_DENOM - bps;
|
|
20
|
+
// Initial guess using ceiling division
|
|
21
|
+
let gross = (net * BPS_DENOM + (denom - 1n)) / denom;
|
|
22
|
+
// Adjust up if rounding caused undercoverage
|
|
23
|
+
for (let i = 0; i < 3; i++) {
|
|
24
|
+
if (gross - computeFeeForBps(gross, bps) >= net)
|
|
25
|
+
break;
|
|
26
|
+
gross += 1n;
|
|
27
|
+
}
|
|
28
|
+
// Adjust down to minimal (usually at most 1 step)
|
|
29
|
+
for (let i = 0; i < 3; i++) {
|
|
30
|
+
if (gross === 0n)
|
|
31
|
+
break;
|
|
32
|
+
const candidate = gross - 1n;
|
|
33
|
+
if (candidate - computeFeeForBps(candidate, bps) >= net) {
|
|
34
|
+
gross = candidate;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
return gross;
|
|
40
|
+
}
|
|
8
41
|
// the base OpRequestBuilder. This is the only thing users should explicitly construct.
|
|
9
42
|
// to add functionality (erc20s, protocol integrations, etc), user should call `.use(plugin)` with the relevant plugin
|
|
10
43
|
function newOpRequestBuilder(provider, chainId, config // use override config instead of defaulting to builtin for chainid (for testing purposes)
|
|
@@ -150,6 +183,23 @@ function newOpRequestBuilder(provider, chainId, config // use override config in
|
|
|
150
183
|
metadata.items.push(metadataItem);
|
|
151
184
|
}
|
|
152
185
|
}
|
|
186
|
+
// Gross-up unwraps to cover protocol-level unshield fee (if enabled).
|
|
187
|
+
//
|
|
188
|
+
// The Handler escrows an unshield fee before executing actions. Without grossing up,
|
|
189
|
+
// actions that spend public balances could fail due to insufficient funds.
|
|
190
|
+
//
|
|
191
|
+
// This is intentionally NOT applied to confidential (in-pool) payments, which are
|
|
192
|
+
// represented as joinSplitRequests with unwrapValue = 0.
|
|
193
|
+
if (this._op.actions.length > 0 &&
|
|
194
|
+
unwrapAmountsByAsset.size() > 0) {
|
|
195
|
+
const handler = new ethers_1.ethers.Contract(config.handlerAddress, ["function _unshieldFeeBps() view returns (uint16)"], provider);
|
|
196
|
+
const unshieldFeeBps = BigInt((await handler._unshieldFeeBps()).toString());
|
|
197
|
+
if (unshieldFeeBps > 0n) {
|
|
198
|
+
for (const [asset, unwrapAmount] of unwrapAmountsByAsset.entries()) {
|
|
199
|
+
unwrapAmountsByAsset.set(asset, grossUpNetAmountForBps(unwrapAmount, unshieldFeeBps));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
153
203
|
// Turn unwraps into joinsplit requests and attach payments
|
|
154
204
|
for (const [asset, unwrapAmount] of unwrapAmountsByAsset.entries()) {
|
|
155
205
|
this._op.joinSplitRequests.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/operationRequest/builder.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/operationRequest/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareOperation.d.ts","sourceRoot":"","sources":["../../src/prepareOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAEL,4BAA4B,EAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,cAAc,EAKf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,YAAY,EACZ,KAAK,EAEL,gBAAgB,EAKhB,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,SAAS;;CAErB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,SAAS,EAAE,4BAA4B,GACtC,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"prepareOperation.d.ts","sourceRoot":"","sources":["../../src/prepareOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAEL,4BAA4B,EAC7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,cAAc,EAKf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,YAAY,EACZ,KAAK,EAEL,gBAAgB,EAKhB,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,SAAS;;CAErB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,SAAS,EAAE,4BAA4B,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAuD3B;AAmDD,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,eAAe,EAAE,MAAM;aACvB,WAAW,EAAE,MAAM;aACnB,KAAK,EAAE,KAAK;gBAFZ,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,KAAK;CAO/B;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,UAAU,EACd,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,KAAK,EACZ,yBAAyB,GAAE,GAAG,CAAC,MAAM,CAAa,GACjD,OAAO,CAAC,YAAY,EAAE,CAAC,CAuEzB"}
|
|
@@ -18,7 +18,6 @@ async function prepareOperation(deps, opRequest) {
|
|
|
18
18
|
let joinSplits = [];
|
|
19
19
|
const usedMerkleIndices = new Set();
|
|
20
20
|
for (const joinSplitRequest of joinSplitRequests) {
|
|
21
|
-
console.log("preparing joinSplits for request: ", joinSplitRequest);
|
|
22
21
|
const newJoinSplits = await prepareJoinSplits(deps, joinSplitRequest, refundAddr, usedMerkleIndices);
|
|
23
22
|
newJoinSplits.forEach((js) => {
|
|
24
23
|
// If note value == 0, its just a dummy and we don't want to count in used merkle indices
|
|
@@ -70,7 +69,6 @@ async function prepareJoinSplits({ db, viewer, merkle }, joinSplitRequest, refun
|
|
|
70
69
|
const totalNotesValue = notes.reduce((acc, note) => acc + note.value, 0n);
|
|
71
70
|
const amountToReturn = totalNotesValue - unwrapAmount - paymentAmount;
|
|
72
71
|
const receiver = joinSplitRequest.payment?.receiver;
|
|
73
|
-
console.log(`getting joinsplits from notes. Num notes: ${notes.length}`);
|
|
74
72
|
return getJoinSplitsFromNotes(viewer, merkle, notes, paymentAmount, amountToReturn, refundAddr, receiver);
|
|
75
73
|
}
|
|
76
74
|
class NotEnoughFundsError extends Error {
|
|
@@ -84,7 +82,6 @@ class NotEnoughFundsError extends Error {
|
|
|
84
82
|
}
|
|
85
83
|
exports.NotEnoughFundsError = NotEnoughFundsError;
|
|
86
84
|
async function gatherNotes(db, requestedAmount, asset, noteMerkleIndicesToIgnore = new Set()) {
|
|
87
|
-
console.log("indices to ignore", noteMerkleIndicesToIgnore);
|
|
88
85
|
// check that the user has enough notes to cover the request
|
|
89
86
|
const notes = (await db.getNotesForAsset(asset)).filter((n) => !noteMerkleIndicesToIgnore.has(n.merkleIndex));
|
|
90
87
|
const balance = notes.reduce((acc, note) => acc + note.value, 0n);
|
|
@@ -140,7 +137,6 @@ async function gatherNotes(db, requestedAmount, asset, noteMerkleIndicesToIgnore
|
|
|
140
137
|
notesToUse.push(smallestUnusedNote);
|
|
141
138
|
}
|
|
142
139
|
}
|
|
143
|
-
console.log(`gathered notes to satisfy request for ${requestedAmount} of assest ${asset.assetAddr}`, { notesToUse, requestedAmount, asset });
|
|
144
140
|
return notesToUse;
|
|
145
141
|
}
|
|
146
142
|
async function getJoinSplitsFromNotes(viewer, merkle, notes, paymentAmount, amountLeftOver, refundAddr, receiver) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareOperation.js","sourceRoot":"","sources":["../../src/prepareOperation.ts"],"names":[],"mappings":";;;AAyCA,
|
|
1
|
+
{"version":3,"file":"prepareOperation.js","sourceRoot":"","sources":["../../src/prepareOperation.ts"],"names":[],"mappings":";;;AAyCA,4CA0DC;AAgED,kCA4EC;AA1OD,kDAM+B;AAC/B,8CAgB6B;AAC7B,mCAA0E;AAE7D,QAAA,SAAS,GAAG;IACvB,WAAW;CACZ,CAAC;AAQK,KAAK,UAAU,gBAAgB,CACpC,IAA0B,EAC1B,SAAuC;IAEvC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GACrE,SAAS,CAAC;IACZ,MAAM,eAAe,GAAG,iBAAU,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE9D,kDAAkD;IAClD,MAAM,UAAU,GAAG,4BAAmB,CAAC,QAAQ,CAC7C,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CACnE,CAAC;IAEF,qBAAqB;IACrB,IAAI,UAAU,GAAuB,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,IAAI,EACJ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3B,yFAAyF;YACzF,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IACpC,CAAC;IAED,UAAU,GAAG,IAAA,iBAAU,EAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAChD,iBAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,CACxD,CAAC,IAAI,EAAE,CAAC;IAET,eAAe;IACf,MAAM,EAAE,GAAqB;QAC3B,WAAW,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;QACxC,UAAU;QACV,UAAU;QACV,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO;QACP,eAAe;QACf,uBAAuB,EAAE,SAAS,CAAC,uBAAuB;QAC1D,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;QAC9C,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,QAAQ;QACR,aAAa,EAAE,IAAI,EAAE,uDAAuD;QAE5E,cAAc,EAAE,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ;KAC7D,CAAC;IAEF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAwB,EAC5C,gBAAkC,EAClC,UAAoC,EACpC,+BAA4C,IAAI,GAAG,EAAE;IAErD,IAAI,KAAqB,CAAC;IAC1B,IAAI,gBAAgB,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAC/B,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CACtE,CAAC;QACF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACrC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CACnD,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,WAAW,CACvB,EAAE,EACF,IAAA,qCAA6B,EAAC,gBAAgB,CAAC,EAC/C,gBAAgB,CAAC,KAAK,EACtB,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAClD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IAE5D,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;IAEtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAEpD,OAAO,sBAAsB,CAC3B,MAAM,EACN,MAAM,EACN,KAAK,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YACkB,eAAuB,EACvB,WAAmB,EACnB,KAAY;QAE5B,KAAK,CACH,sDAAsD,KAAK,CAAC,SAAS,gBAAgB,eAAe,YAAY,WAAW,GAAG,CAC/H,CAAC;QANc,oBAAe,GAAf,eAAe,CAAQ;QACvB,gBAAW,GAAX,WAAW,CAAQ;QACnB,UAAK,GAAL,KAAK,CAAO;QAK5B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAXD,kDAWC;AAEM,KAAK,UAAU,WAAW,CAC/B,EAAc,EACd,eAAuB,EACvB,KAAY,EACZ,4BAAyC,IAAI,GAAG,EAAE;IAElD,4DAA4D;IAC5D,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CACrD,CAAC;IACF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,IAAI,OAAO,GAAG,eAAe,EAAE,CAAC;QAC9B,yDAAyD;QACzD,uDAAuD;QACvD,yDAAyD;QACzD,yEAAyE;QACzE,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,2DAA2D;IAC3D,8FAA8F;IAC9F,sEAAsE;IACtE,oCAAoC;IACpC,4EAA4E;IAC5E,sDAAsD;IACtD,+FAA+F;IAC/F,uFAAuF;IACvF,6EAA6E;IAC7E,2IAA2I;IAE3I,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;IAE5C,kCAAkC;IAClC,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QACnB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,wCAAwC;IACxC,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,MAAM,eAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC/C,IAAI,eAAe,GAAG,eAAe,CAAC;IACtC,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,OAAO,eAAe,GAAG,EAAE,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,iDAAiD;QACjD,OACE,WAAW,GAAG,CAAC;YACf,eAAe,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,eAAe,EACnD,CAAC;YACD,WAAW,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC;QAE9B,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,oBAAoB;QACpB,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,2IAA2I;IAC3I,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACnE,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CACzC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CACrC,CAAC;QACF,IAAI,kBAAkB,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAAsB,EACtB,MAA0B,EAC1B,KAAqB,EACrB,aAAqB,EACrB,cAAsB,EACtB,UAAoC,EACpC,QAAuB;IAEvB,wDAAwD;IACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,4BAA4B,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,IAAA,iBAAQ,GAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,OAAO;YACd,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;YACrB,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IACtF,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,IAAI,gBAAgB,GAAG,aAAa,CAAC;IACrC,IAAI,uBAAuB,GAAG,cAAc,CAAC;IAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAA,iBAAU,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACjD,MAAM,cAAc,GAAG,IAAA,UAAG,EAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;QACpE,uBAAuB,IAAI,cAAc,CAAC;QAE1C,MAAM,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAA,UAAG,EAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAChE,gBAAgB,IAAI,aAAa,CAAC;QAElC,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,MAAsB,EACtB,MAA0B,EAC1B,QAAsB,EACtB,QAAsB,EACtB,aAAqB,EACrB,cAAsB,EACtB,UAAoC,EACpC,QAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACzC,4DAA4D;IAC5D,QAAQ,GAAG,QAAQ,IAAI,MAAM,CAAC;IAE9B,MAAM,YAAY,GAAG,iBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEvD,+HAA+H;IAC/H,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,CAAC;IAEhE,MAAM,UAAU,GAAG,gBAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,gBAAS,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE/D,uDAAuD;IACvD,MAAM,QAAQ,GAAS;QACrB,KAAK,EAAE,4BAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACnD,KAAK,EAAE,gBAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;QACrD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC;IAEF,oDAAoD;IACpD,MAAM,QAAQ,GAAS;QACrB,KAAK,EAAE,4BAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACrD,KAAK,EAAE,gBAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;QACrD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,aAAa;KACrB,CAAC;IAEF,MAAM,kBAAkB,GAAG,gBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,kBAAkB,GAAG,gBAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,iBAAiB,GAAG,IAAA,kBAAW,EAAC,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,MAAM,iBAAiB,GAAG,IAAA,kBAAW,EAAC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzE,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC;IAChD,MAAM,YAAY,GAAqB;QACrC,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,QAAQ,EAAE,eAAe,CAAC,QAAQ;KACnC,CAAC;IAEF,+FAA+F;IAC/F,4EAA4E;IAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;IAC3C,IAAI,YAA8B,CAAC;IACnC,IAAI,YAAY,EAAE,CAAC;QACjB,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC5C,YAAY,GAAG,YAAY,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE9D,sGAAsG;QACtG,mEAAmE;QACnE,IAAI,eAAe,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAChD,MAAM,KAAK,CACT,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,YAAY,GAAG;YACb,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,QAAQ,EAAE,eAAe,CAAC,QAAQ;SACnC,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAClD,MAAM,gBAAgB,GAAG,IAAA,8BAAuB,EAC9C,eAAe,EACf,QAAQ,CAAC,KAAK,CACf,CAAC;IAEF,oCAAoC;IACpC,MAAM,uBAAuB,GAAG,IAAA,qCAA8B,EAC5D,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,CACT,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,YAAY;QACZ,WAAW;QAEX,UAAU;QACV,UAAU;QACV,QAAQ;QACR,QAAQ;QAER,QAAQ;QACR,QAAQ;QACR,iBAAiB;QACjB,iBAAiB;QAEjB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,YAAY;QACZ,YAAY;QAEZ,gBAAgB;QAChB,uBAAuB;QACvB,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA,oDAeC;AAfD,SAAgB,oBAAoB,CAAC,OAAe;IAClD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE;YACL,OAAO,SAAS,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAEY,QAAA,qBAAqB,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zill-protocol/client",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"test:unit": "mocha --require ts-node/register test/** --timeout 45000 --exit"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@zill-protocol/config": "
|
|
26
|
-
"@zill-protocol/contracts": "^4.0.
|
|
27
|
-
"@zill-protocol/core": "
|
|
28
|
-
"@zill-protocol/crypto": "
|
|
25
|
+
"@zill-protocol/config": "1.7.4",
|
|
26
|
+
"@zill-protocol/contracts": "^4.0.2",
|
|
27
|
+
"@zill-protocol/core": "3.3.2",
|
|
28
|
+
"@zill-protocol/crypto": "0.4.4",
|
|
29
29
|
"async-mutex": "^0.4.0",
|
|
30
30
|
"big-integer": "^1.6.42",
|
|
31
31
|
"bigint-json-serialization": "^1.0.1",
|
|
@@ -55,4 +55,4 @@
|
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=18"
|
|
57
57
|
}
|
|
58
|
-
}
|
|
58
|
+
}
|
package/src/opRequestGas.ts
CHANGED
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
partition,
|
|
21
21
|
} from "@zill-protocol/core";
|
|
22
22
|
import { NocturneViewer, StealthAddress } from "@zill-protocol/crypto";
|
|
23
|
-
import * as JSON from "bigint-json-serialization";
|
|
24
23
|
import { NocturneDB } from "./NocturneDB";
|
|
25
24
|
import { EthToTokenConverter } from "./conversion";
|
|
26
25
|
import {
|
|
@@ -94,7 +93,6 @@ export async function handleGasForOperationRequest(
|
|
|
94
93
|
gasMultiplier: number
|
|
95
94
|
): Promise<GasAccountedOperationRequest> {
|
|
96
95
|
// estimate gas params for opRequest
|
|
97
|
-
console.log("estimating gas for op request");
|
|
98
96
|
const { totalGasLimit, executionGasLimit, gasPrice, usedNotes } =
|
|
99
97
|
await getOperationRequestTrace(deps, opRequest, gasMultiplier);
|
|
100
98
|
|
|
@@ -106,7 +104,6 @@ export async function handleGasForOperationRequest(
|
|
|
106
104
|
|
|
107
105
|
if (opRequest?.gasPrice == 0n) {
|
|
108
106
|
// If gasPrice = 0, override dummy gas asset and don't further modify opRequest
|
|
109
|
-
console.log("returning dummy gas asset");
|
|
110
107
|
return {
|
|
111
108
|
...gasEstimatedOpRequest,
|
|
112
109
|
gasPrice: 0n,
|
|
@@ -115,8 +112,6 @@ export async function handleGasForOperationRequest(
|
|
|
115
112
|
totalGasLimit,
|
|
116
113
|
};
|
|
117
114
|
} else {
|
|
118
|
-
console.log(`total gas limit pre gas update: ${totalGasLimit}`);
|
|
119
|
-
|
|
120
115
|
// attempt to update the joinSplitRequests with gas compensation
|
|
121
116
|
// gasAsset will be `undefined` if the user's too broke to pay for gas
|
|
122
117
|
const [joinSplitRequests, gasAssetAndTicker] =
|
|
@@ -235,8 +230,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(
|
|
|
235
230
|
usedMerkleIndicesForGasAsset
|
|
236
231
|
);
|
|
237
232
|
|
|
238
|
-
console.log(`usedNotes: ${JSON.stringify(usedNotes)}`);
|
|
239
|
-
console.log(`need ${extraNotes.length} extra notes for gas comp`);
|
|
240
233
|
numExtraJoinSplits =
|
|
241
234
|
Math.ceil((usedNotesForGasAsset.length + extraNotes.length) / 2) -
|
|
242
235
|
Math.ceil(usedNotesForGasAsset.length / 2);
|
|
@@ -260,9 +253,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(
|
|
|
260
253
|
numExtraJoinSplits = 0;
|
|
261
254
|
}
|
|
262
255
|
|
|
263
|
-
console.log(
|
|
264
|
-
`adding ${extraJoinSplitsGas} tokens for ${numExtraJoinSplits} extra joinsplits for gas compensation`
|
|
265
|
-
);
|
|
266
256
|
matchingJoinSplitRequests[0].unwrapValue +=
|
|
267
257
|
estimateInGasAsset + extraJoinSplitsGas;
|
|
268
258
|
joinSplitRequestsByAsset.set(
|
|
@@ -270,11 +260,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(
|
|
|
270
260
|
matchingJoinSplitRequests
|
|
271
261
|
);
|
|
272
262
|
|
|
273
|
-
console.log(
|
|
274
|
-
`amount to add for gas asset by modifying existing joinsplit for gas asset with ticker ${ticker}: ${estimateInGasAsset}}`,
|
|
275
|
-
{ gasAssetTicker: ticker, gasAsset, estimateInGasAsset }
|
|
276
|
-
);
|
|
277
|
-
|
|
278
263
|
return [
|
|
279
264
|
Array.from(joinSplitRequestsByAsset.values()).flat(),
|
|
280
265
|
{ asset: gasAsset, ticker },
|
|
@@ -317,15 +302,6 @@ async function tryUpdateJoinSplitRequestsForGasEstimate(
|
|
|
317
302
|
unwrapValue: estimateInGasAssetIncludingNewJoinSplits,
|
|
318
303
|
});
|
|
319
304
|
|
|
320
|
-
console.log(
|
|
321
|
-
`amount to add for gas asset by adding a new joinsplit for gas asset with ticker ${ticker}: ${estimateInGasAssetIncludingNewJoinSplits}`,
|
|
322
|
-
{
|
|
323
|
-
gasAssetTicker: ticker,
|
|
324
|
-
gasAsset,
|
|
325
|
-
estimateInGasAssetIncludingNewJoinSplits,
|
|
326
|
-
}
|
|
327
|
-
);
|
|
328
|
-
|
|
329
305
|
return [modifiedJoinSplitRequests, { asset: gasAsset, ticker }];
|
|
330
306
|
} else {
|
|
331
307
|
failedGasAssets.push(gasAsset);
|
|
@@ -25,6 +25,43 @@ import { chainIdToNetworkName } from "../utils/constants";
|
|
|
25
25
|
|
|
26
26
|
export type OpRequestBuilder = OpRequestBuilderExt<BaseOpRequestBuilder>;
|
|
27
27
|
|
|
28
|
+
const BPS_DENOM = 10_000n;
|
|
29
|
+
|
|
30
|
+
function computeFeeForBps(amount: bigint, bps: bigint): bigint {
|
|
31
|
+
return (amount * bps) / BPS_DENOM;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Returns the smallest `gross` such that: gross - floor(gross*bps/BPS_DENOM) >= net
|
|
35
|
+
function grossUpNetAmountForBps(net: bigint, bps: bigint): bigint {
|
|
36
|
+
if (net === 0n || bps === 0n) return net;
|
|
37
|
+
if (bps >= BPS_DENOM) {
|
|
38
|
+
throw new Error(`Invalid fee bps: ${bps.toString()}`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const denom = BPS_DENOM - bps;
|
|
42
|
+
// Initial guess using ceiling division
|
|
43
|
+
let gross = (net * BPS_DENOM + (denom - 1n)) / denom;
|
|
44
|
+
|
|
45
|
+
// Adjust up if rounding caused undercoverage
|
|
46
|
+
for (let i = 0; i < 3; i++) {
|
|
47
|
+
if (gross - computeFeeForBps(gross, bps) >= net) break;
|
|
48
|
+
gross += 1n;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Adjust down to minimal (usually at most 1 step)
|
|
52
|
+
for (let i = 0; i < 3; i++) {
|
|
53
|
+
if (gross === 0n) break;
|
|
54
|
+
const candidate = gross - 1n;
|
|
55
|
+
if (candidate - computeFeeForBps(candidate, bps) >= net) {
|
|
56
|
+
gross = candidate;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return gross;
|
|
63
|
+
}
|
|
64
|
+
|
|
28
65
|
export interface BuilderItemToProcess {
|
|
29
66
|
unwraps: UnwrapRequest[];
|
|
30
67
|
confidentialPayments: ConfidentialPaymentRequest[];
|
|
@@ -314,6 +351,36 @@ export function newOpRequestBuilder(
|
|
|
314
351
|
}
|
|
315
352
|
}
|
|
316
353
|
|
|
354
|
+
// Gross-up unwraps to cover protocol-level unshield fee (if enabled).
|
|
355
|
+
//
|
|
356
|
+
// The Handler escrows an unshield fee before executing actions. Without grossing up,
|
|
357
|
+
// actions that spend public balances could fail due to insufficient funds.
|
|
358
|
+
//
|
|
359
|
+
// This is intentionally NOT applied to confidential (in-pool) payments, which are
|
|
360
|
+
// represented as joinSplitRequests with unwrapValue = 0.
|
|
361
|
+
if (
|
|
362
|
+
this._op.actions.length > 0 &&
|
|
363
|
+
unwrapAmountsByAsset.size() > 0
|
|
364
|
+
) {
|
|
365
|
+
const handler = new ethers.Contract(
|
|
366
|
+
config.handlerAddress,
|
|
367
|
+
["function _unshieldFeeBps() view returns (uint16)"],
|
|
368
|
+
provider
|
|
369
|
+
) as any;
|
|
370
|
+
const unshieldFeeBps = BigInt(
|
|
371
|
+
(await handler._unshieldFeeBps()).toString()
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
if (unshieldFeeBps > 0n) {
|
|
375
|
+
for (const [asset, unwrapAmount] of unwrapAmountsByAsset.entries()) {
|
|
376
|
+
unwrapAmountsByAsset.set(
|
|
377
|
+
asset,
|
|
378
|
+
grossUpNetAmountForBps(unwrapAmount, unshieldFeeBps)
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
317
384
|
// Turn unwraps into joinsplit requests and attach payments
|
|
318
385
|
for (const [asset, unwrapAmount] of unwrapAmountsByAsset.entries()) {
|
|
319
386
|
this._op.joinSplitRequests.push({
|
package/src/prepareOperation.ts
CHANGED
|
@@ -56,7 +56,6 @@ export async function prepareOperation(
|
|
|
56
56
|
let joinSplits: PreSignJoinSplit[] = [];
|
|
57
57
|
const usedMerkleIndices = new Set<number>();
|
|
58
58
|
for (const joinSplitRequest of joinSplitRequests) {
|
|
59
|
-
console.log("preparing joinSplits for request: ", joinSplitRequest);
|
|
60
59
|
const newJoinSplits = await prepareJoinSplits(
|
|
61
60
|
deps,
|
|
62
61
|
joinSplitRequest,
|
|
@@ -138,7 +137,6 @@ async function prepareJoinSplits(
|
|
|
138
137
|
|
|
139
138
|
const receiver = joinSplitRequest.payment?.receiver;
|
|
140
139
|
|
|
141
|
-
console.log(`getting joinsplits from notes. Num notes: ${notes.length}`);
|
|
142
140
|
return getJoinSplitsFromNotes(
|
|
143
141
|
viewer,
|
|
144
142
|
merkle,
|
|
@@ -169,8 +167,6 @@ export async function gatherNotes(
|
|
|
169
167
|
asset: Asset,
|
|
170
168
|
noteMerkleIndicesToIgnore: Set<number> = new Set()
|
|
171
169
|
): Promise<IncludedNote[]> {
|
|
172
|
-
console.log("indices to ignore", noteMerkleIndicesToIgnore);
|
|
173
|
-
|
|
174
170
|
// check that the user has enough notes to cover the request
|
|
175
171
|
const notes = (await db.getNotesForAsset(asset)).filter(
|
|
176
172
|
(n) => !noteMerkleIndicesToIgnore.has(n.merkleIndex)
|
|
@@ -240,10 +236,6 @@ export async function gatherNotes(
|
|
|
240
236
|
}
|
|
241
237
|
}
|
|
242
238
|
|
|
243
|
-
console.log(
|
|
244
|
-
`gathered notes to satisfy request for ${requestedAmount} of assest ${asset.assetAddr}`,
|
|
245
|
-
{ notesToUse, requestedAmount, asset }
|
|
246
|
-
);
|
|
247
239
|
return notesToUse;
|
|
248
240
|
}
|
|
249
241
|
|
package/src/utils/constants.ts
CHANGED
package/CHANGELOG.md
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 4.1.3
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Align contracts dependency to @zill-protocol/contracts@4.x and use scoped circomlibjs/crypto-utils.
|
|
8
|
-
- Updated dependencies
|
|
9
|
-
- @zill-protocol/core@3.3.2
|
|
10
|
-
- @zill-protocol/crypto@0.4.4
|
|
11
|
-
|
|
12
|
-
## 4.1.2
|
|
13
|
-
|
|
14
|
-
### Patch Changes
|
|
15
|
-
|
|
16
|
-
- Initial publish under the @zill-protocol scope.
|
|
17
|
-
- Updated dependencies
|
|
18
|
-
- @zill-protocol/config@1.7.4
|
|
19
|
-
- @zill-protocol/core@3.3.1
|
|
20
|
-
- @zill-protocol/crypto@0.4.3
|
|
21
|
-
|
|
22
|
-
All notable changes to this package are documented in this file.
|
|
23
|
-
|
|
24
|
-
## Unreleased
|
|
25
|
-
|
|
26
|
-
- Initial changelog reset.
|