@invisi-labs/sdk 1.1.1 → 1.1.3
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/{chunk-7TFLU2Z6.js → chunk-FSQYZO66.js} +962 -214
- package/dist/chunk-FSQYZO66.js.map +1 -0
- package/dist/ethers.d.cts +1 -1
- package/dist/ethers.d.ts +1 -1
- package/dist/{gas-estimation-CUZXjsO7.d.ts → gas-estimation-BU3or4AH.d.ts} +32 -0
- package/dist/{gas-estimation-Byi278aa.d.cts → gas-estimation-C1OEgFFJ.d.cts} +32 -0
- package/dist/index.cjs +1032 -282
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -8
- package/dist/index.d.ts +10 -8
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/indexeddb.cjs +1007 -263
- package/dist/indexeddb.cjs.map +1 -1
- package/dist/indexeddb.js +1 -1
- package/dist/memory.cjs +1007 -263
- package/dist/memory.cjs.map +1 -1
- package/dist/memory.js +1 -1
- package/dist/sqlite.cjs +1007 -263
- package/dist/sqlite.cjs.map +1 -1
- package/dist/sqlite.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-7TFLU2Z6.js.map +0 -1
package/dist/sqlite.cjs
CHANGED
|
@@ -466,25 +466,27 @@ function extractDeliveryCandidates(logs, context, confirmedThrough) {
|
|
|
466
466
|
const tokens = array(a.tokens);
|
|
467
467
|
const cs = array(a.commitments), tree = integer(a.treeId), start = index(a.startLeafIndex), packed = a.packedDeliveries;
|
|
468
468
|
check2(
|
|
469
|
-
typeof packed === "string" && /^0x(?:[0-9a-fA-F]{2})*$/.test(packed)
|
|
469
|
+
typeof packed === "string" && /^0x(?:[0-9a-fA-F]{2})*$/.test(packed),
|
|
470
470
|
"invalid packed deliveries"
|
|
471
471
|
);
|
|
472
472
|
check2(tokens.length === cs.length, "batch token count mismatch");
|
|
473
|
+
check2(start + cs.length <= 65536, "batch exceeds tree capacity");
|
|
474
|
+
let offset = 2;
|
|
473
475
|
cs.forEach((c, i) => {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
"funds",
|
|
481
|
-
{
|
|
482
|
-
ciphertext: `0x${segment.slice(0, 316)}`,
|
|
483
|
-
clue: `0x${segment.slice(316)}`
|
|
484
|
-
},
|
|
485
|
-
tokens[i]
|
|
476
|
+
check2(offset + 4 <= packed.length, "truncated delivery length prefix");
|
|
477
|
+
const length = Number.parseInt(packed.slice(offset, offset + 4), 16);
|
|
478
|
+
offset += 4;
|
|
479
|
+
check2(
|
|
480
|
+
length >= 160 && length <= 416 && offset + length * 2 + 136 <= packed.length,
|
|
481
|
+
"invalid packed delivery length"
|
|
486
482
|
);
|
|
483
|
+
const ciphertext = `0x${packed.slice(offset, offset + length * 2)}`;
|
|
484
|
+
offset += length * 2;
|
|
485
|
+
const clue = `0x${packed.slice(offset, offset + 136)}`;
|
|
486
|
+
offset += 136;
|
|
487
|
+
add(log, tree, start + i, c, "funds", { ciphertext, clue }, tokens[i]);
|
|
487
488
|
});
|
|
489
|
+
check2(offset === packed.length, "trailing packed delivery bytes");
|
|
488
490
|
} else if (log.eventName === "CreditCreated") creation(log, a, a);
|
|
489
491
|
else if (log.eventName === "CreditToppedUp")
|
|
490
492
|
creation(log, a, object(object(a.params).creation));
|
|
@@ -971,6 +973,7 @@ var TransactionalWalletStore = class {
|
|
|
971
973
|
};
|
|
972
974
|
|
|
973
975
|
// src/session/operation-protocol.ts
|
|
976
|
+
var import_core3 = require("@invisi-labs/core");
|
|
974
977
|
var import_protocol2 = require("@invisi-labs/protocol");
|
|
975
978
|
function requiresAuthorization(plan) {
|
|
976
979
|
if (plan.kind === "sweep") {
|
|
@@ -1108,6 +1111,7 @@ async function witnessFor(protocol, plan, authorization) {
|
|
|
1108
1111
|
}
|
|
1109
1112
|
if (credit.draw) {
|
|
1110
1113
|
return builder.drawCredit({
|
|
1114
|
+
timestamp: plan.preparedAt.timestamp,
|
|
1111
1115
|
params: credit.draw,
|
|
1112
1116
|
deliveries: credit.deliveries,
|
|
1113
1117
|
inputs: credit.inputs,
|
|
@@ -1238,12 +1242,836 @@ function operationExpired(plan, now) {
|
|
|
1238
1242
|
const credit = plan.credit;
|
|
1239
1243
|
if (credit?.topUp && now >= credit.topUp.previousExpiry) return true;
|
|
1240
1244
|
if (credit?.creation && now >= credit.creation.expiry) return true;
|
|
1241
|
-
if (credit?.draw
|
|
1245
|
+
if (credit?.draw) {
|
|
1246
|
+
if (credit.draw.expiries.some((expiry) => now >= expiry)) return true;
|
|
1247
|
+
const prepared = (0, import_core3.creditPeriods)(plan.preparedAt.timestamp), current2 = (0, import_core3.creditPeriods)(now);
|
|
1248
|
+
if (prepared.currentDay !== current2.currentDay || prepared.currentMonth !== current2.currentMonth)
|
|
1249
|
+
return true;
|
|
1250
|
+
}
|
|
1242
1251
|
return false;
|
|
1243
1252
|
}
|
|
1244
1253
|
|
|
1245
1254
|
// src/data/gas-benchmarks.json
|
|
1246
1255
|
var gas_benchmarks_default = [
|
|
1256
|
+
{
|
|
1257
|
+
formatVersion: 1,
|
|
1258
|
+
id: "protocol-42f2546-621cbef5f84a-prague-credit-real",
|
|
1259
|
+
deployment: {
|
|
1260
|
+
chainId: "31337",
|
|
1261
|
+
protocolAddress: "0xEeD9be753bccbCB21463C49f0c56cC0E48bEcf3c",
|
|
1262
|
+
runtimeCodeHash: "0x80228a2080d224b4481fc5df24fe8ce080d4536c663b13ec7829ecf0ef46abbd",
|
|
1263
|
+
tokenAddress: "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf"
|
|
1264
|
+
},
|
|
1265
|
+
source: {
|
|
1266
|
+
protocolCommit: "42f2546b62312e4c11e21b8e6b2ff6f72187d6a6",
|
|
1267
|
+
measuredAt: "2026-10-29T10:56:24.758Z",
|
|
1268
|
+
chain: "Anvil 31337",
|
|
1269
|
+
hardfork: "prague",
|
|
1270
|
+
token: "MockERC20",
|
|
1271
|
+
verifier: "real",
|
|
1272
|
+
fingerprints: {
|
|
1273
|
+
protocolSourceSha256: "621cbef5f84a133ca96674a2dba39b21b5f9fbc022977d4d2ab296d9d6e685e0",
|
|
1274
|
+
dirtyDiffSha256: "eb2c41cca3802a47196181648397ec6f47fb2ba0efa8aa3800508d8d255fae3f",
|
|
1275
|
+
compiledArtifactsSha256: "c0e658d74fe49caeebf5ef9deadc1751d9e48add690f7e9ab478de7a00dab7e4",
|
|
1276
|
+
creditManifestSha256: "da819378af60471905cc902a43e464b58159e0c75bd46fb804ea9d34d8aa7ef6",
|
|
1277
|
+
userManifestSha256: "067b6c50e4bc4d9c19dd29f25352db88d189a5f49aed0ed603daa70760e699df",
|
|
1278
|
+
sdkSourceSha256: "37e1f82a447db741f46e1490b866ddf85718eab42c33d369cf5f5d2ec3a25c78"
|
|
1279
|
+
},
|
|
1280
|
+
toolchain: {
|
|
1281
|
+
solidity: "0.8.38",
|
|
1282
|
+
barretenberg: "6.0.0",
|
|
1283
|
+
noir: "1.0.0-rc.6",
|
|
1284
|
+
evmVersion: "prague",
|
|
1285
|
+
optimizerRuns: 200,
|
|
1286
|
+
anvil: "anvil Version: 1.8.6"
|
|
1287
|
+
},
|
|
1288
|
+
blockGasLimit: "500000000",
|
|
1289
|
+
runtimeContracts: {
|
|
1290
|
+
transact_user_slots14_direct_Verifier: {
|
|
1291
|
+
address: "0x5FbDB2315678afecb367f032d93F642f64180aa3",
|
|
1292
|
+
runtimeCodeHash: "0xedab185b2b9fc7d98660db2cdc99fe30b9d1341dfe568172a1626e322d208f7e"
|
|
1293
|
+
},
|
|
1294
|
+
"transact_user_slots14-adapter": {
|
|
1295
|
+
address: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
|
|
1296
|
+
runtimeCodeHash: "0xe222cd9c142bc2b13e083e6fe66ea76c0e1e9a194715bfa57082b625c55d867f"
|
|
1297
|
+
},
|
|
1298
|
+
transact_user_slots56_direct_Verifier: {
|
|
1299
|
+
address: "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",
|
|
1300
|
+
runtimeCodeHash: "0x8913eb7060f38234aca199c4a1007892f68e703de48b588c436b24faaeb23a53"
|
|
1301
|
+
},
|
|
1302
|
+
"transact_user_slots56-adapter": {
|
|
1303
|
+
address: "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
|
|
1304
|
+
runtimeCodeHash: "0x97c416d190da0b9b8111a5ee17367e8a702ba7884019bf724155ae629a783477"
|
|
1305
|
+
},
|
|
1306
|
+
transact_user_slots112_direct_Verifier: {
|
|
1307
|
+
address: "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",
|
|
1308
|
+
runtimeCodeHash: "0x501a4791ff0c0a96465ab5e0d42d0ce763bbbb7fd8aebe21929de4d460e1b42c"
|
|
1309
|
+
},
|
|
1310
|
+
"transact_user_slots112-adapter": {
|
|
1311
|
+
address: "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707",
|
|
1312
|
+
runtimeCodeHash: "0xf22ed8ea34a4011650a41c1b9f664b5259ea5a8d66a82d706dab9611a38c109f"
|
|
1313
|
+
},
|
|
1314
|
+
transact_user_slots168_direct_Verifier: {
|
|
1315
|
+
address: "0x0165878A594ca255338adfa4d48449f69242Eb8F",
|
|
1316
|
+
runtimeCodeHash: "0xc22acdfa6f3e278ae46d194a1c50b905e4815fd7b61e39edb52334570670fdce"
|
|
1317
|
+
},
|
|
1318
|
+
"transact_user_slots168-adapter": {
|
|
1319
|
+
address: "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853",
|
|
1320
|
+
runtimeCodeHash: "0x05a318f54d93440a501b6fc6be88e4e76e89d72f1be8333553cb4a61f4f9a0d7"
|
|
1321
|
+
},
|
|
1322
|
+
transact_aggregate_14_4_Verifier: {
|
|
1323
|
+
address: "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",
|
|
1324
|
+
runtimeCodeHash: "0x7a6f2bafe4c61a72a99a195e188f2f4a32900c0cc63cc132e33881d8199fd446"
|
|
1325
|
+
},
|
|
1326
|
+
"transact_aggregate_14_4-adapter": {
|
|
1327
|
+
address: "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",
|
|
1328
|
+
runtimeCodeHash: "0x15877da9940d5b8dd4868ffa92ded3b93d6092c3963ba9e18b50f1ea15d89898"
|
|
1329
|
+
},
|
|
1330
|
+
transact_aggregate_14_8_Verifier: {
|
|
1331
|
+
address: "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
|
|
1332
|
+
runtimeCodeHash: "0x5667d16b39973813a499375f6885a3082d7bfcd6e3c0f3548d7de3131cd285f3"
|
|
1333
|
+
},
|
|
1334
|
+
"transact_aggregate_14_8-adapter": {
|
|
1335
|
+
address: "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e",
|
|
1336
|
+
runtimeCodeHash: "0x9d1a93c78edf7e81b4b6da10ab209b3fb009ed8355594f670559a67842d88cfc"
|
|
1337
|
+
},
|
|
1338
|
+
transact_aggregate_14_12_Verifier: {
|
|
1339
|
+
address: "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",
|
|
1340
|
+
runtimeCodeHash: "0xa4e67840a47182d4011d577981c2477bb4ab2bc36845bb136375f19f12c0800b"
|
|
1341
|
+
},
|
|
1342
|
+
"transact_aggregate_14_12-adapter": {
|
|
1343
|
+
address: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",
|
|
1344
|
+
runtimeCodeHash: "0x96a6e170aafc0af9d46232ba00206d950bba85e65962d43501bafb6d7f9fe61d"
|
|
1345
|
+
},
|
|
1346
|
+
create_credit_direct_Verifier: {
|
|
1347
|
+
address: "0x9A676e781A523b5d0C0e43731313A708CB607508",
|
|
1348
|
+
runtimeCodeHash: "0xbdc6450bf9ba01001082f345b8bd21006a4f75274f32d026cf6e14270e6d56e6"
|
|
1349
|
+
},
|
|
1350
|
+
"create_credit-adapter": {
|
|
1351
|
+
address: "0x0B306BF915C4d645ff596e518fAf3F9669b97016",
|
|
1352
|
+
runtimeCodeHash: "0x3a95a22b32aef18ce053a7110056bbfbf13bb0b07932a49765ebb136528a4707"
|
|
1353
|
+
},
|
|
1354
|
+
credit_draw_slots1_direct_Verifier: {
|
|
1355
|
+
address: "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1",
|
|
1356
|
+
runtimeCodeHash: "0x47be80e72c3a22ea044638f6004de8c3a0264d5a0d17189c01153cdabfd7bab6"
|
|
1357
|
+
},
|
|
1358
|
+
"credit_draw_slots1-adapter": {
|
|
1359
|
+
address: "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
|
|
1360
|
+
runtimeCodeHash: "0x28f25aeb97659fb9253ae67f2ff284789710bc59e1ed077ffc7a07b800cbfcc1"
|
|
1361
|
+
},
|
|
1362
|
+
credit_draw_slots12_direct_Verifier: {
|
|
1363
|
+
address: "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
|
|
1364
|
+
runtimeCodeHash: "0x244d9ba22f5c736c2a5c42c466701e2a8ba7ae8108665133541026ea45d56e04"
|
|
1365
|
+
},
|
|
1366
|
+
"credit_draw_slots12-adapter": {
|
|
1367
|
+
address: "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
|
|
1368
|
+
runtimeCodeHash: "0x60d48a35279d318a0621e5f59b293f44074463b8002ce180b7e6a31b995ac195"
|
|
1369
|
+
},
|
|
1370
|
+
credit_draw_slots50_direct_Verifier: {
|
|
1371
|
+
address: "0xc6e7DF5E7b4f2A278906862b61205850344D4e7d",
|
|
1372
|
+
runtimeCodeHash: "0x2ad5eb64bcfae34ef04111dd8f9c1ffc5fc8aa6c1ad3a65d8da78233f3390660"
|
|
1373
|
+
},
|
|
1374
|
+
"credit_draw_slots50-adapter": {
|
|
1375
|
+
address: "0x59b670e9fA9D0A427751Af201D676719a970857b",
|
|
1376
|
+
runtimeCodeHash: "0x468966de20e5c71cf7b6f3cda7fa7a76b5d80dc5ddf82119f441ea6a7c6c1e70"
|
|
1377
|
+
},
|
|
1378
|
+
credit_draw_slots120_direct_Verifier: {
|
|
1379
|
+
address: "0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1",
|
|
1380
|
+
runtimeCodeHash: "0x523b6d211618bbd33d708f8198b9f3daafc10e2fa7a6a857db5795ed748a24e4"
|
|
1381
|
+
},
|
|
1382
|
+
"credit_draw_slots120-adapter": {
|
|
1383
|
+
address: "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44",
|
|
1384
|
+
runtimeCodeHash: "0xa91d585ce6037e703efb914205bf193881fde4f470d2fc63b615699b56175239"
|
|
1385
|
+
},
|
|
1386
|
+
credit_cancel_direct_Verifier: {
|
|
1387
|
+
address: "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f",
|
|
1388
|
+
runtimeCodeHash: "0x182e86861a73f712071e40a6b8497b80c58c383eaa799182e7a50e39196399fd"
|
|
1389
|
+
},
|
|
1390
|
+
"credit_cancel-adapter": {
|
|
1391
|
+
address: "0x4A679253410272dd5232B3Ff7cF5dbB88f295319",
|
|
1392
|
+
runtimeCodeHash: "0xea1f0f22445eed5a92c8d6990219059b7e241ad66c55a6d9ddef22a94a0f015f"
|
|
1393
|
+
},
|
|
1394
|
+
credit_top_up_direct_Verifier: {
|
|
1395
|
+
address: "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F",
|
|
1396
|
+
runtimeCodeHash: "0xeeb42a2b6377ab305b713d1caf4ca96edb302c6d1e1007239e5c70091819c266"
|
|
1397
|
+
},
|
|
1398
|
+
"credit_top_up-adapter": {
|
|
1399
|
+
address: "0x09635F643e140090A9A8Dcd712eD6285858ceBef",
|
|
1400
|
+
runtimeCodeHash: "0xbcf35a1d0e6c16dd01b09f944889aa5917d358d986fe399a0343d06bbdedaa61"
|
|
1401
|
+
},
|
|
1402
|
+
PrivateTransferVerifierRegistry: {
|
|
1403
|
+
address: "0xc5a5C42992dECbae36851359345FE25997F5C42d",
|
|
1404
|
+
runtimeCodeHash: "0x678684af147cb42c872184b6e22c8439748139ae0c5885032941ab8832fcb142"
|
|
1405
|
+
},
|
|
1406
|
+
CrossTreeVerifierRegistry: {
|
|
1407
|
+
address: "0x67d269191c92Caf3cD7723F116c85e6E9bf55933",
|
|
1408
|
+
runtimeCodeHash: "0xa5ee16fc7ed9f982450e42a48365a93bfca784fa884adcb8695b557e921cb93b"
|
|
1409
|
+
},
|
|
1410
|
+
DualVerifierRouter: {
|
|
1411
|
+
address: "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E",
|
|
1412
|
+
runtimeCodeHash: "0xcc094ed6f1bcc9270c597f62b817e4fc0a54770f373320133c2836e5b07ef2cc"
|
|
1413
|
+
},
|
|
1414
|
+
AtomicBatchOutputLib: {
|
|
1415
|
+
address: "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690",
|
|
1416
|
+
runtimeCodeHash: "0x7c138c13e40b3ad0fee3b319d6c1580a21855cb5ecdda92571d530509d9b7316"
|
|
1417
|
+
},
|
|
1418
|
+
FundingLib: {
|
|
1419
|
+
address: "0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB",
|
|
1420
|
+
runtimeCodeHash: "0x898d13d6ec4123df85f21ee0f98678dcd9f9b9a60134f88e35c1ef1aaa0a45f9"
|
|
1421
|
+
},
|
|
1422
|
+
PrivateTransferLib: {
|
|
1423
|
+
address: "0x9E545E3C0baAB3E08CdfD552C960A1050f373042",
|
|
1424
|
+
runtimeCodeHash: "0xfb18f2dd0a39af1b99ae35c25e2746cb5bc85c205e041db5f440671d84c82e5e"
|
|
1425
|
+
},
|
|
1426
|
+
CrossTreeTransferLib: {
|
|
1427
|
+
address: "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9",
|
|
1428
|
+
runtimeCodeHash: "0x7b33a08f2feb9da462b951c95482cb2909796a85c0fde7cc9a6b65ff8b7ff253"
|
|
1429
|
+
},
|
|
1430
|
+
AggregateTransferLib: {
|
|
1431
|
+
address: "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8",
|
|
1432
|
+
runtimeCodeHash: "0xb3b4bd3a428f5c35712a57180f07b2249774d399ca87d4494929148ea26c5b99"
|
|
1433
|
+
},
|
|
1434
|
+
CreateCreditLib: {
|
|
1435
|
+
address: "0x851356ae760d987E095750cCeb3bC6014560891C",
|
|
1436
|
+
runtimeCodeHash: "0xe37a4b7c129c4fba5615d25ed8b7e898e64a306c68f7e599ade911db98fe881c"
|
|
1437
|
+
},
|
|
1438
|
+
CreditLifecycleLib: {
|
|
1439
|
+
address: "0xf5059a5D33d5853360D16C683c16e67980206f36",
|
|
1440
|
+
runtimeCodeHash: "0xf87a2227680efa7070071516587793e2e847c172b83261b8983c826f8a8c79bb"
|
|
1441
|
+
},
|
|
1442
|
+
ShieldLib: {
|
|
1443
|
+
address: "0x95401dc811bb5740090279Ba06cfA8fcF6113778",
|
|
1444
|
+
runtimeCodeHash: "0x371e57d8d324e44445a4ec30303b89a8bc98bbdbd03aeaa80faf0f821a65451d"
|
|
1445
|
+
},
|
|
1446
|
+
InvisiFactory: {
|
|
1447
|
+
address: "0x998abeb3E57409262aE5b751f60747921B33613E",
|
|
1448
|
+
runtimeCodeHash: "0xc56e5a0b71f4a1f63576a6663efb62b17c0d7520b6885a8d3483a356e12edf9b"
|
|
1449
|
+
},
|
|
1450
|
+
InvisiAddressRegistry: {
|
|
1451
|
+
address: "0x70e0bA845a1A0F2DA3359C97E0285013525FFC49",
|
|
1452
|
+
runtimeCodeHash: "0x007da3f4e888366ba0eed52cd511c4a369359291387ad19ca37e89eb395fce30"
|
|
1453
|
+
},
|
|
1454
|
+
InvisiProtocol: {
|
|
1455
|
+
address: "0xEeD9be753bccbCB21463C49f0c56cC0E48bEcf3c",
|
|
1456
|
+
runtimeCodeHash: "0x80228a2080d224b4481fc5df24fe8ce080d4536c663b13ec7829ecf0ef46abbd"
|
|
1457
|
+
},
|
|
1458
|
+
MockERC20: {
|
|
1459
|
+
address: "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf",
|
|
1460
|
+
runtimeCodeHash: "0xf7f676b5c54f6e94f82f0de65a0117468a0d915e8a79d150e74f76bd6d7f708b"
|
|
1461
|
+
}
|
|
1462
|
+
},
|
|
1463
|
+
assumptions: [
|
|
1464
|
+
"normal CREATE/Factory deployment and fresh registry; EIP170/EIP3860 unchanged; no code/storage injection",
|
|
1465
|
+
"Solidity0.8.38 optimizer200 Prague; pinned BB6.0.0 real verifiers; every native proof independently verified",
|
|
1466
|
+
"one physical source tree and 123 existing leaves shared by every sample; top-up has two authenticated source groups; no rollover or screener",
|
|
1467
|
+
"funding/approvals/121 genuine Credit seeds/usage-seed draw/payout reset excluded from business gas",
|
|
1468
|
+
"each round restores identical token balances, exact caller allowance100, note cursor, nullifiers and baseline; spender payout starts zero",
|
|
1469
|
+
"complete receipt.gasUsed is measured, including verifier/calldata/logging/output insertion; memo0",
|
|
1470
|
+
"Prague local block gas limit500000000; measured transactions may be unmineable under lower network transaction/block limits",
|
|
1471
|
+
"observed three-sample ranges are neither a confidence interval nor a recommended transaction gas limit"
|
|
1472
|
+
]
|
|
1473
|
+
},
|
|
1474
|
+
measurements: [
|
|
1475
|
+
{
|
|
1476
|
+
id: "create-credit-caller-0x0",
|
|
1477
|
+
shape: {
|
|
1478
|
+
kind: "create-credit",
|
|
1479
|
+
target: "evm",
|
|
1480
|
+
capacity: 10,
|
|
1481
|
+
noteInputs: 0,
|
|
1482
|
+
noteOutputs: 0,
|
|
1483
|
+
sourceTrees: 0,
|
|
1484
|
+
creditInputs: 0,
|
|
1485
|
+
creditOutputs: 1,
|
|
1486
|
+
creditRemainders: 0,
|
|
1487
|
+
funding: "caller",
|
|
1488
|
+
permit: false,
|
|
1489
|
+
deliveryBytes: 1132
|
|
1490
|
+
},
|
|
1491
|
+
circuit: {
|
|
1492
|
+
circuitName: "create_credit",
|
|
1493
|
+
target: "evm",
|
|
1494
|
+
artifactSha256: "3ed6cfdee4f5fd840f023580f76c208768777fea79737f2511377e5c55be0230",
|
|
1495
|
+
vkSha256: "56f663c6053be0d158a271022d200c732597efd3a2e0be48fe94549d0b1795e0"
|
|
1496
|
+
},
|
|
1497
|
+
samples: [
|
|
1498
|
+
{
|
|
1499
|
+
gasUsed: "1574696",
|
|
1500
|
+
transactionHash: "0x76112c532a1b5f24ad84fb83f91789ba4acd15ed9473ec9a0267cd5fe605448d",
|
|
1501
|
+
blockNumber: "172",
|
|
1502
|
+
blockHash: "0x0d91421e94947132a19f38ffdd76932c2d85add201de3d9189325ed3568125a7",
|
|
1503
|
+
calldataBytes: 11780
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
gasUsed: "1574576",
|
|
1507
|
+
transactionHash: "0x545f72d9d207329bfc69ef0d1e96470c614924d5e463d974cc001712bf619fd8",
|
|
1508
|
+
blockNumber: "172",
|
|
1509
|
+
blockHash: "0x2053f97a2b2f3cf66e14da0ab9c1d7bd462d2d4f3ef2b13021aefcddedb71cf8",
|
|
1510
|
+
calldataBytes: 11780
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
gasUsed: "1574612",
|
|
1514
|
+
transactionHash: "0x880ec0c666068d0756fba39947dc5b211aeebb31f41bd1e1e54856b090f65d34",
|
|
1515
|
+
blockNumber: "172",
|
|
1516
|
+
blockHash: "0xbb86ed21379a917e9688a3c90364ae8fbe1ba633ac068360e0a82bf4d3113b6d",
|
|
1517
|
+
calldataBytes: 11780
|
|
1518
|
+
}
|
|
1519
|
+
]
|
|
1520
|
+
},
|
|
1521
|
+
{
|
|
1522
|
+
id: "create-credit-1x1",
|
|
1523
|
+
shape: {
|
|
1524
|
+
kind: "create-credit",
|
|
1525
|
+
target: "evm",
|
|
1526
|
+
capacity: 10,
|
|
1527
|
+
noteInputs: 1,
|
|
1528
|
+
noteOutputs: 1,
|
|
1529
|
+
sourceTrees: 1,
|
|
1530
|
+
creditInputs: 0,
|
|
1531
|
+
creditOutputs: 1,
|
|
1532
|
+
creditRemainders: 0,
|
|
1533
|
+
funding: "none",
|
|
1534
|
+
permit: false,
|
|
1535
|
+
deliveryBytes: 1360
|
|
1536
|
+
},
|
|
1537
|
+
circuit: {
|
|
1538
|
+
circuitName: "create_credit",
|
|
1539
|
+
target: "evm",
|
|
1540
|
+
artifactSha256: "3ed6cfdee4f5fd840f023580f76c208768777fea79737f2511377e5c55be0230",
|
|
1541
|
+
vkSha256: "56f663c6053be0d158a271022d200c732597efd3a2e0be48fe94549d0b1795e0"
|
|
1542
|
+
},
|
|
1543
|
+
samples: [
|
|
1544
|
+
{
|
|
1545
|
+
gasUsed: "1671641",
|
|
1546
|
+
transactionHash: "0x24ca3f03681aeb188b48989d5eaf7dd264a8c32e828acd34ff1b44be74f17ea6",
|
|
1547
|
+
blockNumber: "172",
|
|
1548
|
+
blockHash: "0xcdac07aa5d3ec187874dc1fc9be65503235289c7036ebe455feaf5161db42bb5",
|
|
1549
|
+
calldataBytes: 12132
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
gasUsed: "1671509",
|
|
1553
|
+
transactionHash: "0x31a7f69ab02effa5fdd2e02bd02fb7e715a54786813261113fd7c07a0d3ef549",
|
|
1554
|
+
blockNumber: "172",
|
|
1555
|
+
blockHash: "0xc78ca874aa22cc6b8ea19e12a2806ba448a0f844345450d3fedc9841ea71c3a8",
|
|
1556
|
+
calldataBytes: 12132
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
gasUsed: "1671485",
|
|
1560
|
+
transactionHash: "0xc5a30116885dcac8b3631c15847544cfeb91c46bde44c3765ac0ce42e3259157",
|
|
1561
|
+
blockNumber: "172",
|
|
1562
|
+
blockHash: "0x4a2c90ff972da4d37408567062779762efbb5790d4784d03842ee2c926c8c894",
|
|
1563
|
+
calldataBytes: 12132
|
|
1564
|
+
}
|
|
1565
|
+
]
|
|
1566
|
+
},
|
|
1567
|
+
{
|
|
1568
|
+
id: "draw-credit-1-partial",
|
|
1569
|
+
shape: {
|
|
1570
|
+
kind: "draw-credit",
|
|
1571
|
+
target: "evm",
|
|
1572
|
+
capacity: 1,
|
|
1573
|
+
noteInputs: 0,
|
|
1574
|
+
noteOutputs: 0,
|
|
1575
|
+
sourceTrees: 1,
|
|
1576
|
+
creditInputs: 1,
|
|
1577
|
+
creditOutputs: 1,
|
|
1578
|
+
creditRemainders: 1,
|
|
1579
|
+
funding: "none",
|
|
1580
|
+
permit: false,
|
|
1581
|
+
deliveryBytes: 1132
|
|
1582
|
+
},
|
|
1583
|
+
circuit: {
|
|
1584
|
+
circuitName: "credit_draw_slots1",
|
|
1585
|
+
target: "evm",
|
|
1586
|
+
artifactSha256: "4542b227e0552b45c302f1dace21cadeba4962c96244e021472f1f7531cff8d1",
|
|
1587
|
+
vkSha256: "43c051a2bedf9454c12e70b10156361e414944823ba23e80662c16c7ced0a2ce"
|
|
1588
|
+
},
|
|
1589
|
+
samples: [
|
|
1590
|
+
{
|
|
1591
|
+
gasUsed: "1588303",
|
|
1592
|
+
transactionHash: "0x85c5180692470aa952aa13eb29ca0404d4f5b5192cb31475f90d03d78864895e",
|
|
1593
|
+
blockNumber: "172",
|
|
1594
|
+
blockHash: "0xfe4876c0a2ebf05385a46562bca693b6df80da731fd9651117593916015dc38c",
|
|
1595
|
+
calldataBytes: 11588
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
gasUsed: "1588303",
|
|
1599
|
+
transactionHash: "0x61684313840623187ca1205b4b07b43a08038448524ee1a028c7e14050032682",
|
|
1600
|
+
blockNumber: "172",
|
|
1601
|
+
blockHash: "0x9726d31c10e6516e38e3f63c84fc4b9a8a161486d35e0d8d07e6829261a88fe7",
|
|
1602
|
+
calldataBytes: 11588
|
|
1603
|
+
},
|
|
1604
|
+
{
|
|
1605
|
+
gasUsed: "1588255",
|
|
1606
|
+
transactionHash: "0x0aa052fb8e356cc81dd73bcdae72f760937cd2e56bd4a3e8eb5878208b4f7596",
|
|
1607
|
+
blockNumber: "172",
|
|
1608
|
+
blockHash: "0x2c958cfba0627e18cd5cb47001b278628c305071929596e3335d770b92c1dc16",
|
|
1609
|
+
calldataBytes: 11588
|
|
1610
|
+
}
|
|
1611
|
+
]
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
id: "draw-credit-1-full",
|
|
1615
|
+
shape: {
|
|
1616
|
+
kind: "draw-credit",
|
|
1617
|
+
target: "evm",
|
|
1618
|
+
capacity: 1,
|
|
1619
|
+
noteInputs: 0,
|
|
1620
|
+
noteOutputs: 0,
|
|
1621
|
+
sourceTrees: 1,
|
|
1622
|
+
creditInputs: 1,
|
|
1623
|
+
creditOutputs: 0,
|
|
1624
|
+
creditRemainders: 0,
|
|
1625
|
+
funding: "none",
|
|
1626
|
+
permit: false,
|
|
1627
|
+
deliveryBytes: 0
|
|
1628
|
+
},
|
|
1629
|
+
circuit: {
|
|
1630
|
+
circuitName: "credit_draw_slots1",
|
|
1631
|
+
target: "evm",
|
|
1632
|
+
artifactSha256: "4542b227e0552b45c302f1dace21cadeba4962c96244e021472f1f7531cff8d1",
|
|
1633
|
+
vkSha256: "43c051a2bedf9454c12e70b10156361e414944823ba23e80662c16c7ced0a2ce"
|
|
1634
|
+
},
|
|
1635
|
+
samples: [
|
|
1636
|
+
{
|
|
1637
|
+
gasUsed: "1042812",
|
|
1638
|
+
transactionHash: "0xb5d55729d975abdc92ca44c0b72e44a0d5841da8b23dc11b5bd31f46d88a341a",
|
|
1639
|
+
blockNumber: "172",
|
|
1640
|
+
blockHash: "0x8a6ddbe2f1630e1956485cac7984fb9cdc4fbb26b10522e158b38e2970ee4f3b",
|
|
1641
|
+
calldataBytes: 10372
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
gasUsed: "1042824",
|
|
1645
|
+
transactionHash: "0xf64f3186fbf94fcbd9fb12426c714b4a8425599e1a7e5677866fae3d6873b7ae",
|
|
1646
|
+
blockNumber: "172",
|
|
1647
|
+
blockHash: "0xd630c44d8ce96234ec836dd2178caac2a6d0bc2df5cf37df1534eb8896be48d3",
|
|
1648
|
+
calldataBytes: 10372
|
|
1649
|
+
},
|
|
1650
|
+
{
|
|
1651
|
+
gasUsed: "1042884",
|
|
1652
|
+
transactionHash: "0xdf634e809b87603a62292ef046fa5e84715561fa76ef121c768303dd779568f1",
|
|
1653
|
+
blockNumber: "172",
|
|
1654
|
+
blockHash: "0x09cad4a799360bdf825c3ad70fe374b7fe2df802f8ee37ccb7f26ffc49aa2a3a",
|
|
1655
|
+
calldataBytes: 10372
|
|
1656
|
+
}
|
|
1657
|
+
]
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
id: "draw-credit-12-partial",
|
|
1661
|
+
shape: {
|
|
1662
|
+
kind: "draw-credit",
|
|
1663
|
+
target: "evm",
|
|
1664
|
+
capacity: 12,
|
|
1665
|
+
noteInputs: 0,
|
|
1666
|
+
noteOutputs: 0,
|
|
1667
|
+
sourceTrees: 1,
|
|
1668
|
+
creditInputs: 12,
|
|
1669
|
+
creditOutputs: 12,
|
|
1670
|
+
creditRemainders: 12,
|
|
1671
|
+
funding: "none",
|
|
1672
|
+
permit: false,
|
|
1673
|
+
deliveryBytes: 13584
|
|
1674
|
+
},
|
|
1675
|
+
circuit: {
|
|
1676
|
+
circuitName: "credit_draw_slots12",
|
|
1677
|
+
target: "evm",
|
|
1678
|
+
artifactSha256: "dd72b0867fc3be7cd90de263bd2d0892075cb18eb4f6dd671b13111710f10369",
|
|
1679
|
+
vkSha256: "5e31d771e6294993736078596d9c69f21fe7595eda50e3cce6d7406b65cf1443"
|
|
1680
|
+
},
|
|
1681
|
+
samples: [
|
|
1682
|
+
{
|
|
1683
|
+
gasUsed: "3102895",
|
|
1684
|
+
transactionHash: "0x699ba81f296f4af397a8dfaf96adf14d00d0f7dd69c0b09608641fc9b99fc28f",
|
|
1685
|
+
blockNumber: "172",
|
|
1686
|
+
blockHash: "0x8d318f563f5563fa5c213617481089f75aab3a6e9d14818db107ac20a8c20ffb",
|
|
1687
|
+
calldataBytes: 30276
|
|
1688
|
+
},
|
|
1689
|
+
{
|
|
1690
|
+
gasUsed: "3102871",
|
|
1691
|
+
transactionHash: "0xddfc1c6c505f6c54f4d9aabc96a02eb6b606182e8ad708a578eacd274d885dee",
|
|
1692
|
+
blockNumber: "172",
|
|
1693
|
+
blockHash: "0xcc7738fe329a608241615dc43b7d16e075eb62be202ea8aaf4ae27a5278bf438",
|
|
1694
|
+
calldataBytes: 30276
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
gasUsed: "3103171",
|
|
1698
|
+
transactionHash: "0x6efab6408d927e1877f1f6c33ecd285a128382f7d1dfe6e123927b035781c8aa",
|
|
1699
|
+
blockNumber: "172",
|
|
1700
|
+
blockHash: "0xcb4588df9ecdca0d353ccbd226e1d5d07f21e6dc93875e41cdd5f64568859f4d",
|
|
1701
|
+
calldataBytes: 30276
|
|
1702
|
+
}
|
|
1703
|
+
]
|
|
1704
|
+
},
|
|
1705
|
+
{
|
|
1706
|
+
id: "draw-credit-12-full",
|
|
1707
|
+
shape: {
|
|
1708
|
+
kind: "draw-credit",
|
|
1709
|
+
target: "evm",
|
|
1710
|
+
capacity: 12,
|
|
1711
|
+
noteInputs: 0,
|
|
1712
|
+
noteOutputs: 0,
|
|
1713
|
+
sourceTrees: 1,
|
|
1714
|
+
creditInputs: 12,
|
|
1715
|
+
creditOutputs: 0,
|
|
1716
|
+
creditRemainders: 0,
|
|
1717
|
+
funding: "none",
|
|
1718
|
+
permit: false,
|
|
1719
|
+
deliveryBytes: 0
|
|
1720
|
+
},
|
|
1721
|
+
circuit: {
|
|
1722
|
+
circuitName: "credit_draw_slots12",
|
|
1723
|
+
target: "evm",
|
|
1724
|
+
artifactSha256: "dd72b0867fc3be7cd90de263bd2d0892075cb18eb4f6dd671b13111710f10369",
|
|
1725
|
+
vkSha256: "5e31d771e6294993736078596d9c69f21fe7595eda50e3cce6d7406b65cf1443"
|
|
1726
|
+
},
|
|
1727
|
+
samples: [
|
|
1728
|
+
{
|
|
1729
|
+
gasUsed: "1536675",
|
|
1730
|
+
transactionHash: "0xc0d3eef8e6b0e90984d776a5e41bcdce1e0ca0bc6dc3a71616e4768e80c01546",
|
|
1731
|
+
blockNumber: "172",
|
|
1732
|
+
blockHash: "0x22dfac3d8e9913a6a1f2ff84faaece4ed59bfe1cb74e06a60131ff28cc6c2f9d",
|
|
1733
|
+
calldataBytes: 15684
|
|
1734
|
+
},
|
|
1735
|
+
{
|
|
1736
|
+
gasUsed: "1536675",
|
|
1737
|
+
transactionHash: "0x9879d86a1eaa550a6a6afaeeb0f5f07745d5dcd9caa07b660d7fb512911dc67e",
|
|
1738
|
+
blockNumber: "172",
|
|
1739
|
+
blockHash: "0xf88ba9f1b7a0c627338a61bbabe1c650bdfcd7fa1c56433d6853f492135b753d",
|
|
1740
|
+
calldataBytes: 15684
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
gasUsed: "1536711",
|
|
1744
|
+
transactionHash: "0xbd8f75a021a8ce8dc1900bd2d84d723acc6a64018844050a5aa2f8712cf7fd6b",
|
|
1745
|
+
blockNumber: "172",
|
|
1746
|
+
blockHash: "0xa55b539c2ea4e10ce9a9ee8e6de9cf1daa97263b51f32cfef8342c100b663b0f",
|
|
1747
|
+
calldataBytes: 15684
|
|
1748
|
+
}
|
|
1749
|
+
]
|
|
1750
|
+
},
|
|
1751
|
+
{
|
|
1752
|
+
id: "draw-credit-50-partial",
|
|
1753
|
+
shape: {
|
|
1754
|
+
kind: "draw-credit",
|
|
1755
|
+
target: "evm",
|
|
1756
|
+
capacity: 50,
|
|
1757
|
+
noteInputs: 0,
|
|
1758
|
+
noteOutputs: 0,
|
|
1759
|
+
sourceTrees: 1,
|
|
1760
|
+
creditInputs: 50,
|
|
1761
|
+
creditOutputs: 50,
|
|
1762
|
+
creditRemainders: 50,
|
|
1763
|
+
funding: "none",
|
|
1764
|
+
permit: false,
|
|
1765
|
+
deliveryBytes: 56600
|
|
1766
|
+
},
|
|
1767
|
+
circuit: {
|
|
1768
|
+
circuitName: "credit_draw_slots50",
|
|
1769
|
+
target: "evm",
|
|
1770
|
+
artifactSha256: "09c7469866748b4c0c4bbf2b040844771948a170999f6dc7a38fe5c0ecda4054",
|
|
1771
|
+
vkSha256: "7b613225b6f32a077011d4196c356e836d22dcd116efe687fde53144fbd8db9f"
|
|
1772
|
+
},
|
|
1773
|
+
samples: [
|
|
1774
|
+
{
|
|
1775
|
+
gasUsed: "8015473",
|
|
1776
|
+
transactionHash: "0x5dcc0fa08abaf5212424ac6f3e2f3bb8a0bd333f90ef6e421f8d3fe370ca1acf",
|
|
1777
|
+
blockNumber: "172",
|
|
1778
|
+
blockHash: "0x3197c523dece3492226c5021f974e7c02db2e686265943d03a5550c6cb96a12e",
|
|
1779
|
+
calldataBytes: 94276
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
gasUsed: "8015449",
|
|
1783
|
+
transactionHash: "0x6a55f88551a45b3e118cde0607cfff1ef0b6ab15ad9472e838412d9ce714b42a",
|
|
1784
|
+
blockNumber: "172",
|
|
1785
|
+
blockHash: "0xea82c8962d45db8361bd67ed326806f21c511bd51550adc453d0c3e5cab3a7ae",
|
|
1786
|
+
calldataBytes: 94276
|
|
1787
|
+
},
|
|
1788
|
+
{
|
|
1789
|
+
gasUsed: "8015149",
|
|
1790
|
+
transactionHash: "0x2cc8d474a92abe91f8025109a70cf1f9f081dbec43aa4a475ab9f33222cfc76b",
|
|
1791
|
+
blockNumber: "172",
|
|
1792
|
+
blockHash: "0x4398f419da699ccca33867852d4975b5c461a40bb01cd5241a0e6dcacaeb78b3",
|
|
1793
|
+
calldataBytes: 94276
|
|
1794
|
+
}
|
|
1795
|
+
]
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
id: "draw-credit-50-full",
|
|
1799
|
+
shape: {
|
|
1800
|
+
kind: "draw-credit",
|
|
1801
|
+
target: "evm",
|
|
1802
|
+
capacity: 50,
|
|
1803
|
+
noteInputs: 0,
|
|
1804
|
+
noteOutputs: 0,
|
|
1805
|
+
sourceTrees: 1,
|
|
1806
|
+
creditInputs: 50,
|
|
1807
|
+
creditOutputs: 0,
|
|
1808
|
+
creditRemainders: 0,
|
|
1809
|
+
funding: "none",
|
|
1810
|
+
permit: false,
|
|
1811
|
+
deliveryBytes: 0
|
|
1812
|
+
},
|
|
1813
|
+
circuit: {
|
|
1814
|
+
circuitName: "credit_draw_slots50",
|
|
1815
|
+
target: "evm",
|
|
1816
|
+
artifactSha256: "09c7469866748b4c0c4bbf2b040844771948a170999f6dc7a38fe5c0ecda4054",
|
|
1817
|
+
vkSha256: "7b613225b6f32a077011d4196c356e836d22dcd116efe687fde53144fbd8db9f"
|
|
1818
|
+
},
|
|
1819
|
+
samples: [
|
|
1820
|
+
{
|
|
1821
|
+
gasUsed: "3216708",
|
|
1822
|
+
transactionHash: "0x16933368d26ea1d7fbe69027c700671df832ad308944eeff42e7c2da40297b06",
|
|
1823
|
+
blockNumber: "172",
|
|
1824
|
+
blockHash: "0x0739a6f4188b8bdeae7bd5460960086d04adfea993d07d65b2b3630ad01b8cab",
|
|
1825
|
+
calldataBytes: 33476
|
|
1826
|
+
},
|
|
1827
|
+
{
|
|
1828
|
+
gasUsed: "3216840",
|
|
1829
|
+
transactionHash: "0x45dc15a62b1661f54e167cf13b9693770370c926a8a7af959da7354e9bb4aa6e",
|
|
1830
|
+
blockNumber: "172",
|
|
1831
|
+
blockHash: "0xf2e294db9af3b11814fed1dec358b8370ea28a99189211f883c9b0012349d677",
|
|
1832
|
+
calldataBytes: 33476
|
|
1833
|
+
},
|
|
1834
|
+
{
|
|
1835
|
+
gasUsed: "3216744",
|
|
1836
|
+
transactionHash: "0x2c827753026ea421497534a01bcc2adaca866a7612f570dad3fcf18c660f8590",
|
|
1837
|
+
blockNumber: "172",
|
|
1838
|
+
blockHash: "0x3ccd465528ff22e6d1955670220df3565899a16dd683f71c83c9810f2df420b4",
|
|
1839
|
+
calldataBytes: 33476
|
|
1840
|
+
}
|
|
1841
|
+
]
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
id: "draw-credit-120-partial",
|
|
1845
|
+
shape: {
|
|
1846
|
+
kind: "draw-credit",
|
|
1847
|
+
target: "evm",
|
|
1848
|
+
capacity: 120,
|
|
1849
|
+
noteInputs: 0,
|
|
1850
|
+
noteOutputs: 0,
|
|
1851
|
+
sourceTrees: 1,
|
|
1852
|
+
creditInputs: 120,
|
|
1853
|
+
creditOutputs: 120,
|
|
1854
|
+
creditRemainders: 120,
|
|
1855
|
+
funding: "none",
|
|
1856
|
+
permit: false,
|
|
1857
|
+
deliveryBytes: 135840
|
|
1858
|
+
},
|
|
1859
|
+
circuit: {
|
|
1860
|
+
circuitName: "credit_draw_slots120",
|
|
1861
|
+
target: "evm",
|
|
1862
|
+
artifactSha256: "6ccd0366a669c50fd5da875c3eae194fe8aa4c36d35a5f9ebfd64636ea599b48",
|
|
1863
|
+
vkSha256: "d715848afc5c1ecdfcef5ed5026865abef5040a3bc232fd65330a5ffee8475fb"
|
|
1864
|
+
},
|
|
1865
|
+
samples: [
|
|
1866
|
+
{
|
|
1867
|
+
gasUsed: "17458512",
|
|
1868
|
+
transactionHash: "0x84dd6bda5f3172a53e899051fd226dc5869edb796bd513a33e7f224bed13f4ae",
|
|
1869
|
+
blockNumber: "172",
|
|
1870
|
+
blockHash: "0xfca82de1e112b92319185d8c3f0115e0aa339d0247ea65970eb0d37ba958b08e",
|
|
1871
|
+
calldataBytes: 211140
|
|
1872
|
+
},
|
|
1873
|
+
{
|
|
1874
|
+
gasUsed: "17458224",
|
|
1875
|
+
transactionHash: "0xae26838942cf8b5499d43cb5e74681ae87aec77890a8eabddd692ff83830e013",
|
|
1876
|
+
blockNumber: "172",
|
|
1877
|
+
blockHash: "0x3e513447e0cfdbb682a95b7a719b0d300ec46b0ee22b518eaae7fb082f6436e7",
|
|
1878
|
+
calldataBytes: 211140
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
gasUsed: "17458524",
|
|
1882
|
+
transactionHash: "0xeaa07e77fe958f4317e71b07ddb876482ae9c5172fd6d6cefaacc551dbbda7d5",
|
|
1883
|
+
blockNumber: "172",
|
|
1884
|
+
blockHash: "0x12b34c1fd2e15480276052842157c2a6355acdd43d7bd01ae7511c3f39e0ecfc",
|
|
1885
|
+
calldataBytes: 211140
|
|
1886
|
+
}
|
|
1887
|
+
]
|
|
1888
|
+
},
|
|
1889
|
+
{
|
|
1890
|
+
id: "draw-credit-120-full",
|
|
1891
|
+
shape: {
|
|
1892
|
+
kind: "draw-credit",
|
|
1893
|
+
target: "evm",
|
|
1894
|
+
capacity: 120,
|
|
1895
|
+
noteInputs: 0,
|
|
1896
|
+
noteOutputs: 0,
|
|
1897
|
+
sourceTrees: 1,
|
|
1898
|
+
creditInputs: 120,
|
|
1899
|
+
creditOutputs: 0,
|
|
1900
|
+
creditRemainders: 0,
|
|
1901
|
+
funding: "none",
|
|
1902
|
+
permit: false,
|
|
1903
|
+
deliveryBytes: 0
|
|
1904
|
+
},
|
|
1905
|
+
circuit: {
|
|
1906
|
+
circuitName: "credit_draw_slots120",
|
|
1907
|
+
target: "evm",
|
|
1908
|
+
artifactSha256: "6ccd0366a669c50fd5da875c3eae194fe8aa4c36d35a5f9ebfd64636ea599b48",
|
|
1909
|
+
vkSha256: "d715848afc5c1ecdfcef5ed5026865abef5040a3bc232fd65330a5ffee8475fb"
|
|
1910
|
+
},
|
|
1911
|
+
samples: [
|
|
1912
|
+
{
|
|
1913
|
+
gasUsed: "6289576",
|
|
1914
|
+
transactionHash: "0xbf11743f7edc5ed5ff334efc5e35634f45e48e4940d33ddd9c87d8fe444dafc5",
|
|
1915
|
+
blockNumber: "172",
|
|
1916
|
+
blockHash: "0x774de17971107b73cab2cd20f26b60665f55a37b0cc1147166babf16743e34d5",
|
|
1917
|
+
calldataBytes: 65220
|
|
1918
|
+
},
|
|
1919
|
+
{
|
|
1920
|
+
gasUsed: "6289768",
|
|
1921
|
+
transactionHash: "0x651bb13e0645ee8a08657db627f1072f5e964ddaff44f70f829440ed68488dea",
|
|
1922
|
+
blockNumber: "172",
|
|
1923
|
+
blockHash: "0xa9795828565fb0ce65bda295073106b8bbdc110bb8317d269839d3db3e312d5b",
|
|
1924
|
+
calldataBytes: 65220
|
|
1925
|
+
},
|
|
1926
|
+
{
|
|
1927
|
+
gasUsed: "6289720",
|
|
1928
|
+
transactionHash: "0x2a859d381cb4b50830971b1ffc9789b11569fc96147e130dae6fecd141f5ceb0",
|
|
1929
|
+
blockNumber: "172",
|
|
1930
|
+
blockHash: "0x7d990830157bfeff8e5cbe580e9effe97faa7676c9957ce32891b76c83961430",
|
|
1931
|
+
calldataBytes: 65220
|
|
1932
|
+
}
|
|
1933
|
+
]
|
|
1934
|
+
},
|
|
1935
|
+
{
|
|
1936
|
+
id: "top-up-credit-1x1-unchanged-limits",
|
|
1937
|
+
shape: {
|
|
1938
|
+
kind: "top-up-credit",
|
|
1939
|
+
target: "evm",
|
|
1940
|
+
capacity: 10,
|
|
1941
|
+
noteInputs: 1,
|
|
1942
|
+
noteOutputs: 1,
|
|
1943
|
+
sourceTrees: 2,
|
|
1944
|
+
creditInputs: 1,
|
|
1945
|
+
creditOutputs: 1,
|
|
1946
|
+
creditRemainders: 0,
|
|
1947
|
+
funding: "none",
|
|
1948
|
+
permit: false,
|
|
1949
|
+
deliveryBytes: 1360
|
|
1950
|
+
},
|
|
1951
|
+
circuit: {
|
|
1952
|
+
circuitName: "credit_top_up",
|
|
1953
|
+
target: "evm",
|
|
1954
|
+
artifactSha256: "2ffebd5753ec1b0c050204d4f97498765fe61ea01a793a9b2466c2f97536345c",
|
|
1955
|
+
vkSha256: "40b02a9d2e7eb7b49daaac4b7760328537b7982fd5a225cc065bb74cd5ef44b3"
|
|
1956
|
+
},
|
|
1957
|
+
samples: [
|
|
1958
|
+
{
|
|
1959
|
+
gasUsed: "1711282",
|
|
1960
|
+
transactionHash: "0x74d45084bb07bacabbced09ee6ef69d8632a22a4493be783c326c47e929ba0ed",
|
|
1961
|
+
blockNumber: "172",
|
|
1962
|
+
blockHash: "0x3503643f7081b52ae20d4754a0e9b11f52034ae48059f5b5298546c2570fa091",
|
|
1963
|
+
calldataBytes: 12292
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
gasUsed: "1711282",
|
|
1967
|
+
transactionHash: "0x4b5e2432d5571f6b56507b3ab995a8120560ba608959ff100f03b87873e72be6",
|
|
1968
|
+
blockNumber: "172",
|
|
1969
|
+
blockHash: "0xca15dc309371a5aa9c7bc5bf1d65c5b325c71528ce7856ba68a118114124fccc",
|
|
1970
|
+
calldataBytes: 12292
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
gasUsed: "1711390",
|
|
1974
|
+
transactionHash: "0x304f3740b64c80dcc5c894fb30af59080d96a11e08371096ae695cbc46ef2c8b",
|
|
1975
|
+
blockNumber: "172",
|
|
1976
|
+
blockHash: "0x9671ed76d6b8e49a36ba229d3609289fcf70756f31277ac5fc0e3f08cd52304f",
|
|
1977
|
+
calldataBytes: 12292
|
|
1978
|
+
}
|
|
1979
|
+
]
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
id: "top-up-credit-1x1-changed-limits",
|
|
1983
|
+
shape: {
|
|
1984
|
+
kind: "top-up-credit",
|
|
1985
|
+
target: "evm",
|
|
1986
|
+
capacity: 10,
|
|
1987
|
+
noteInputs: 1,
|
|
1988
|
+
noteOutputs: 1,
|
|
1989
|
+
sourceTrees: 2,
|
|
1990
|
+
creditInputs: 1,
|
|
1991
|
+
creditOutputs: 1,
|
|
1992
|
+
creditRemainders: 0,
|
|
1993
|
+
funding: "none",
|
|
1994
|
+
permit: false,
|
|
1995
|
+
deliveryBytes: 1360
|
|
1996
|
+
},
|
|
1997
|
+
circuit: {
|
|
1998
|
+
circuitName: "credit_top_up",
|
|
1999
|
+
target: "evm",
|
|
2000
|
+
artifactSha256: "2ffebd5753ec1b0c050204d4f97498765fe61ea01a793a9b2466c2f97536345c",
|
|
2001
|
+
vkSha256: "40b02a9d2e7eb7b49daaac4b7760328537b7982fd5a225cc065bb74cd5ef44b3"
|
|
2002
|
+
},
|
|
2003
|
+
samples: [
|
|
2004
|
+
{
|
|
2005
|
+
gasUsed: "1711318",
|
|
2006
|
+
transactionHash: "0x65284df534b42631f8a592fb2a6efc16361a4cc122f1a8dd41418e7b950f48f1",
|
|
2007
|
+
blockNumber: "172",
|
|
2008
|
+
blockHash: "0xf198242a1edf5b133961568c9165648c829729e7bfbbf57a1e148551c971b87c",
|
|
2009
|
+
calldataBytes: 12292
|
|
2010
|
+
},
|
|
2011
|
+
{
|
|
2012
|
+
gasUsed: "1711438",
|
|
2013
|
+
transactionHash: "0xcee89a81e598974798365c4ebada806fb51196ee602334b0fffdbb25da0afe25",
|
|
2014
|
+
blockNumber: "172",
|
|
2015
|
+
blockHash: "0xb506a6fb54cc2f91b803211ed955aac0203fba93e2428f8f52ec0d413c90af09",
|
|
2016
|
+
calldataBytes: 12292
|
|
2017
|
+
},
|
|
2018
|
+
{
|
|
2019
|
+
gasUsed: "1711342",
|
|
2020
|
+
transactionHash: "0x957de5c79f365c9b0510b9e125a662317494aad50cb446edceef6f678d561cc7",
|
|
2021
|
+
blockNumber: "172",
|
|
2022
|
+
blockHash: "0xb1d5cffd6d6db58ade9d5e16d48b060b9ab2152415966dc809e7e70785472ab8",
|
|
2023
|
+
calldataBytes: 12292
|
|
2024
|
+
}
|
|
2025
|
+
]
|
|
2026
|
+
},
|
|
2027
|
+
{
|
|
2028
|
+
id: "cancel-credit-1",
|
|
2029
|
+
shape: {
|
|
2030
|
+
kind: "cancel-credit",
|
|
2031
|
+
target: "evm",
|
|
2032
|
+
capacity: 1,
|
|
2033
|
+
noteInputs: 0,
|
|
2034
|
+
noteOutputs: 0,
|
|
2035
|
+
sourceTrees: 1,
|
|
2036
|
+
creditInputs: 1,
|
|
2037
|
+
creditOutputs: 0,
|
|
2038
|
+
creditRemainders: 0,
|
|
2039
|
+
funding: "none",
|
|
2040
|
+
permit: false,
|
|
2041
|
+
deliveryBytes: 0
|
|
2042
|
+
},
|
|
2043
|
+
circuit: {
|
|
2044
|
+
circuitName: "credit_cancel",
|
|
2045
|
+
target: "evm",
|
|
2046
|
+
artifactSha256: "b4459c2cf756d096e37291cf4d7cd129866b6d420b6d03c928f383b057112ccb",
|
|
2047
|
+
vkSha256: "fc8ad196ef15f3328afcc8f01d867a3ebefd15451c2813948442fab1923b73b2"
|
|
2048
|
+
},
|
|
2049
|
+
samples: [
|
|
2050
|
+
{
|
|
2051
|
+
gasUsed: "985543",
|
|
2052
|
+
transactionHash: "0x29ca63fbefcc5e92dbc86f67d6280993e567a5dd02ff3defd7f3251ce711865e",
|
|
2053
|
+
blockNumber: "172",
|
|
2054
|
+
blockHash: "0xecd7808fe9f7467af917069bd7a82ab0324e3cbab8dcad622b089d6e3eee9a58",
|
|
2055
|
+
calldataBytes: 9540
|
|
2056
|
+
},
|
|
2057
|
+
{
|
|
2058
|
+
gasUsed: "985795",
|
|
2059
|
+
transactionHash: "0xaf8bca0769330f89b647363f99b752dbbe6fdbb8b1aae912224f6a3a59f40faa",
|
|
2060
|
+
blockNumber: "172",
|
|
2061
|
+
blockHash: "0x58e1358e02f189d57628fa7c504b87fb000fe60eb9f0a0c3c0e58dae876e64da",
|
|
2062
|
+
calldataBytes: 9540
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
gasUsed: "985711",
|
|
2066
|
+
transactionHash: "0x2c911fd5a422f6f72f2a00b16872b7e46e182d39b8f5bfa9e3b2bf99d3155da7",
|
|
2067
|
+
blockNumber: "172",
|
|
2068
|
+
blockHash: "0x9da571cbe63f52232261ee1527d5ed97a9e90e374b4fcda97d04feb25114d18e",
|
|
2069
|
+
calldataBytes: 9540
|
|
2070
|
+
}
|
|
2071
|
+
]
|
|
2072
|
+
}
|
|
2073
|
+
]
|
|
2074
|
+
},
|
|
1247
2075
|
{
|
|
1248
2076
|
formatVersion: 1,
|
|
1249
2077
|
id: "protocol-92ef274-osaka-real",
|
|
@@ -1668,190 +2496,6 @@ var gas_benchmarks_default = [
|
|
|
1668
2496
|
calldataBytes: 10116
|
|
1669
2497
|
}
|
|
1670
2498
|
]
|
|
1671
|
-
},
|
|
1672
|
-
{
|
|
1673
|
-
id: "create-credit-1x1",
|
|
1674
|
-
shape: {
|
|
1675
|
-
kind: "create-credit",
|
|
1676
|
-
target: "evm",
|
|
1677
|
-
capacity: 10,
|
|
1678
|
-
noteInputs: 1,
|
|
1679
|
-
noteOutputs: 1,
|
|
1680
|
-
sourceTrees: 1,
|
|
1681
|
-
creditInputs: 0,
|
|
1682
|
-
creditOutputs: 1,
|
|
1683
|
-
creditRemainders: 0,
|
|
1684
|
-
funding: "none",
|
|
1685
|
-
permit: false,
|
|
1686
|
-
deliveryBytes: 1162
|
|
1687
|
-
},
|
|
1688
|
-
circuit: {
|
|
1689
|
-
circuitName: "create_credit",
|
|
1690
|
-
target: "evm",
|
|
1691
|
-
artifactSha256: "ab97cd5a036851a9748a5cfd8e6f9834e23090c8e95db4531aabfc37d3abb353",
|
|
1692
|
-
vkSha256: "fac0e65b768a28750323cca851990598af936611125b6cfa3f5c16b04c7d084f"
|
|
1693
|
-
},
|
|
1694
|
-
samples: [
|
|
1695
|
-
{
|
|
1696
|
-
gasUsed: "1627325",
|
|
1697
|
-
transactionHash: "0x7763d93a5b1e8797b5f4af2e1e5b1bb029a8b0f9f7b90bcc04f581947d826803",
|
|
1698
|
-
blockNumber: "49",
|
|
1699
|
-
blockHash: "0x93e51ae5e99c68dc642693d478e444330d8e26255ff5bb9aafc4a3f4e70d3a45",
|
|
1700
|
-
calldataBytes: 11940
|
|
1701
|
-
},
|
|
1702
|
-
{
|
|
1703
|
-
gasUsed: "1627385",
|
|
1704
|
-
transactionHash: "0xe246d59cafa2a26dddf21c8385dd843be4d4596388ebe23e936df84e7f906635",
|
|
1705
|
-
blockNumber: "49",
|
|
1706
|
-
blockHash: "0x3c24b2d6ed2a998562d34b49e0517515742a9b39d59aec38a9ac6b22be1b694b",
|
|
1707
|
-
calldataBytes: 11940
|
|
1708
|
-
},
|
|
1709
|
-
{
|
|
1710
|
-
gasUsed: "1627157",
|
|
1711
|
-
transactionHash: "0x2f7ed0b75435cc6a820d0cd90fd82d362f74787057413722b6eb3c6e37db87d3",
|
|
1712
|
-
blockNumber: "49",
|
|
1713
|
-
blockHash: "0x0a0301670b46017da772800c68bb941245ac1941c79fde9c85717632154e15ee",
|
|
1714
|
-
calldataBytes: 11940
|
|
1715
|
-
}
|
|
1716
|
-
]
|
|
1717
|
-
},
|
|
1718
|
-
{
|
|
1719
|
-
id: "draw-credit-1-partial",
|
|
1720
|
-
shape: {
|
|
1721
|
-
kind: "draw-credit",
|
|
1722
|
-
target: "evm",
|
|
1723
|
-
capacity: 1,
|
|
1724
|
-
noteInputs: 0,
|
|
1725
|
-
noteOutputs: 0,
|
|
1726
|
-
sourceTrees: 1,
|
|
1727
|
-
creditInputs: 1,
|
|
1728
|
-
creditOutputs: 1,
|
|
1729
|
-
creditRemainders: 1,
|
|
1730
|
-
funding: "none",
|
|
1731
|
-
permit: false,
|
|
1732
|
-
deliveryBytes: 936
|
|
1733
|
-
},
|
|
1734
|
-
circuit: {
|
|
1735
|
-
circuitName: "credit_draw_slots1",
|
|
1736
|
-
target: "evm",
|
|
1737
|
-
artifactSha256: "f5e458790948f37a61a833fad52cf2cc3b26a59515d271de32e0caaa4e229eb5",
|
|
1738
|
-
vkSha256: "613699a440f50a0937e4c57e5152b5fdea42c31b10157d6b93226fef313df553"
|
|
1739
|
-
},
|
|
1740
|
-
samples: [
|
|
1741
|
-
{
|
|
1742
|
-
gasUsed: "1581294",
|
|
1743
|
-
transactionHash: "0xd438e22b0fa07a657279f182537e4996f1936f0881d5b7d637845f8ca2808aab",
|
|
1744
|
-
blockNumber: "49",
|
|
1745
|
-
blockHash: "0x9e384a3054530b1ff237a639bca1a559afb2b73b30e21c262aac85ebf480fc9b",
|
|
1746
|
-
calldataBytes: 11396
|
|
1747
|
-
},
|
|
1748
|
-
{
|
|
1749
|
-
gasUsed: "1581402",
|
|
1750
|
-
transactionHash: "0xa70ac3e7284b6e98f8591a6ba88e4ddfb23ecbd05343641d0532f34920e10b56",
|
|
1751
|
-
blockNumber: "49",
|
|
1752
|
-
blockHash: "0x37c5eb34ce96a841e96c36103a7ab65c1a3e08603dc9843efb0c0752c069f1d4",
|
|
1753
|
-
calldataBytes: 11396
|
|
1754
|
-
},
|
|
1755
|
-
{
|
|
1756
|
-
gasUsed: "1581174",
|
|
1757
|
-
transactionHash: "0xd062494979d0bc0e284ccb070f87b48f3e8e5befb6001f15a006dd2a4a72ca24",
|
|
1758
|
-
blockNumber: "49",
|
|
1759
|
-
blockHash: "0x12840d920f14163b2d29491f28cee616e1bb9fd9514a4debe10ae35256345fc1",
|
|
1760
|
-
calldataBytes: 11396
|
|
1761
|
-
}
|
|
1762
|
-
]
|
|
1763
|
-
},
|
|
1764
|
-
{
|
|
1765
|
-
id: "top-up-credit-1x1",
|
|
1766
|
-
shape: {
|
|
1767
|
-
kind: "top-up-credit",
|
|
1768
|
-
target: "evm",
|
|
1769
|
-
capacity: 10,
|
|
1770
|
-
noteInputs: 1,
|
|
1771
|
-
noteOutputs: 1,
|
|
1772
|
-
sourceTrees: 2,
|
|
1773
|
-
creditInputs: 1,
|
|
1774
|
-
creditOutputs: 1,
|
|
1775
|
-
creditRemainders: 0,
|
|
1776
|
-
funding: "none",
|
|
1777
|
-
permit: false,
|
|
1778
|
-
deliveryBytes: 1162
|
|
1779
|
-
},
|
|
1780
|
-
circuit: {
|
|
1781
|
-
circuitName: "credit_top_up",
|
|
1782
|
-
target: "evm",
|
|
1783
|
-
artifactSha256: "ee9dbcf8be6f6c09478190996e90b1d39d4a10a00245950f69fc1d2c329c6e9b",
|
|
1784
|
-
vkSha256: "0c369fec0469b60baebb3be650bad42f3ccae6f0ff139cce6ad9a3f451ed7513"
|
|
1785
|
-
},
|
|
1786
|
-
samples: [
|
|
1787
|
-
{
|
|
1788
|
-
gasUsed: "1666948",
|
|
1789
|
-
transactionHash: "0x1403da01167962a4349d2655ea217bfcfc1a2390138bea0279792c44b4381dd2",
|
|
1790
|
-
blockNumber: "49",
|
|
1791
|
-
blockHash: "0xcb554ffcdb4afe5f6458e5d23ffbdd1fdbef9c23f982343065772c0b3e3dd633",
|
|
1792
|
-
calldataBytes: 12100
|
|
1793
|
-
},
|
|
1794
|
-
{
|
|
1795
|
-
gasUsed: "1666900",
|
|
1796
|
-
transactionHash: "0x3b5e54f29e3f888a443526cf23ab9255b3f0c7adf1d0d127c16b85f4c6a324d9",
|
|
1797
|
-
blockNumber: "49",
|
|
1798
|
-
blockHash: "0xeb304df6bdd24b249cac3197b543b0eaa6381ed75ad812dff248f914864105ed",
|
|
1799
|
-
calldataBytes: 12100
|
|
1800
|
-
},
|
|
1801
|
-
{
|
|
1802
|
-
gasUsed: "1666780",
|
|
1803
|
-
transactionHash: "0x81c5ef25268a719275cb3b80618c2af291e1f7b3f91d7e82cc26bc894a8c332a",
|
|
1804
|
-
blockNumber: "49",
|
|
1805
|
-
blockHash: "0xfa42070d6349fc8d559b8bd4ad0ee6b79089107540c4472b9e492b8f5a6bd3e4",
|
|
1806
|
-
calldataBytes: 12100
|
|
1807
|
-
}
|
|
1808
|
-
]
|
|
1809
|
-
},
|
|
1810
|
-
{
|
|
1811
|
-
id: "cancel-credit-1",
|
|
1812
|
-
shape: {
|
|
1813
|
-
kind: "cancel-credit",
|
|
1814
|
-
target: "evm",
|
|
1815
|
-
capacity: 1,
|
|
1816
|
-
noteInputs: 0,
|
|
1817
|
-
noteOutputs: 0,
|
|
1818
|
-
sourceTrees: 1,
|
|
1819
|
-
creditInputs: 1,
|
|
1820
|
-
creditOutputs: 0,
|
|
1821
|
-
creditRemainders: 0,
|
|
1822
|
-
funding: "none",
|
|
1823
|
-
permit: false,
|
|
1824
|
-
deliveryBytes: 0
|
|
1825
|
-
},
|
|
1826
|
-
circuit: {
|
|
1827
|
-
circuitName: "credit_cancel",
|
|
1828
|
-
target: "evm",
|
|
1829
|
-
artifactSha256: "d332453a2b8c2c544747ac8d5f01912c9757f48d986226fd6a9b0e24d8321474",
|
|
1830
|
-
vkSha256: "1f8a3c20cb081d6a90962556da3124919cc4e5675e59ad31562af39299da02fb"
|
|
1831
|
-
},
|
|
1832
|
-
samples: [
|
|
1833
|
-
{
|
|
1834
|
-
gasUsed: "998146",
|
|
1835
|
-
transactionHash: "0x97bc72692d241e2c344b912804f9939061db5ef59cf4bb23922d93812e382160",
|
|
1836
|
-
blockNumber: "49",
|
|
1837
|
-
blockHash: "0x2e09df4df84a1c25961386febe8404531bb5da274836d50cc15a26c91b433a98",
|
|
1838
|
-
calldataBytes: 9540
|
|
1839
|
-
},
|
|
1840
|
-
{
|
|
1841
|
-
gasUsed: "998134",
|
|
1842
|
-
transactionHash: "0x26c5067b12c2bc4b694070784e6b19d4855efa6e77c2422f0c6b1567f061570a",
|
|
1843
|
-
blockNumber: "49",
|
|
1844
|
-
blockHash: "0xdd3f20520c09e001374cab58387e52c82446db053539e30dad28b0de679a333c",
|
|
1845
|
-
calldataBytes: 9540
|
|
1846
|
-
},
|
|
1847
|
-
{
|
|
1848
|
-
gasUsed: "998230",
|
|
1849
|
-
transactionHash: "0x5dc09445a405150da1445c22f50d6dd10d8d428a6a3f41ee90db7d3574657e31",
|
|
1850
|
-
blockNumber: "49",
|
|
1851
|
-
blockHash: "0x5c8f8223a50d2c8d48188a2db28ffa33c1b150a2fb465e99db4430949db3664b",
|
|
1852
|
-
calldataBytes: 9540
|
|
1853
|
-
}
|
|
1854
|
-
]
|
|
1855
2499
|
}
|
|
1856
2500
|
]
|
|
1857
2501
|
}
|
|
@@ -1880,6 +2524,29 @@ function copyGasBenchmarks(profiles) {
|
|
|
1880
2524
|
for (const p of copy) {
|
|
1881
2525
|
if (p.formatVersion !== 1 || !p.id || !decimal.test(p.deployment.chainId) || !address.test(p.deployment.protocolAddress) || !address.test(p.deployment.tokenAddress) || !p.deployment.runtimeCodeHash || !word2.test(p.deployment.runtimeCodeHash) || p.source.verifier !== "real" || !/^[0-9a-f]{40}$/i.test(p.source.protocolCommit) || !p.source.measuredAt || !Array.isArray(p.source.assumptions) || !p.source.assumptions.every((assumption) => typeof assumption === "string") || !p.measurements.length)
|
|
1882
2526
|
throw new Error("invalid gas benchmark profile");
|
|
2527
|
+
if (p.source.fingerprints && ![
|
|
2528
|
+
"protocolSourceSha256",
|
|
2529
|
+
"dirtyDiffSha256",
|
|
2530
|
+
"compiledArtifactsSha256",
|
|
2531
|
+
"creditManifestSha256",
|
|
2532
|
+
"userManifestSha256",
|
|
2533
|
+
"sdkSourceSha256"
|
|
2534
|
+
].every((key) => {
|
|
2535
|
+
const v = p.source.fingerprints[key];
|
|
2536
|
+
return typeof v === "string" && /^[a-f0-9]{64}$/i.test(v);
|
|
2537
|
+
}))
|
|
2538
|
+
throw new Error("invalid benchmark source fingerprint");
|
|
2539
|
+
if (p.source.blockGasLimit !== void 0 && (!decimal.test(p.source.blockGasLimit) || BigInt(p.source.blockGasLimit) <= 0n))
|
|
2540
|
+
throw new Error("invalid benchmark block gas limit");
|
|
2541
|
+
if (p.source.runtimeContracts && !Object.values(p.source.runtimeContracts).every(
|
|
2542
|
+
(v) => address.test(v.address) && word2.test(v.runtimeCodeHash)
|
|
2543
|
+
))
|
|
2544
|
+
throw new Error("invalid benchmark runtime identity");
|
|
2545
|
+
if (p.source.toolchain && (!["solidity", "barretenberg", "noir", "evmVersion", "anvil"].every((key) => {
|
|
2546
|
+
const v = p.source.toolchain[key];
|
|
2547
|
+
return typeof v === "string" && v.length > 0;
|
|
2548
|
+
}) || !Number.isSafeInteger(p.source.toolchain.optimizerRuns) || p.source.toolchain.optimizerRuns < 0))
|
|
2549
|
+
throw new Error("invalid benchmark toolchain");
|
|
1883
2550
|
for (const m of p.measurements) {
|
|
1884
2551
|
if (!m.id || !m.samples.length || !["none", "caller", "signature"].includes(m.shape.funding) || typeof m.shape.permit !== "boolean")
|
|
1885
2552
|
throw new Error("invalid gas benchmark measurement");
|
|
@@ -1959,11 +2626,20 @@ function estimateBenchmarkGas(plan, protocol, profiles) {
|
|
|
1959
2626
|
);
|
|
1960
2627
|
if (!request.deployment.runtimeCodeHash || !candidates.length)
|
|
1961
2628
|
return { ...base, available: false, reason: "deployment-not-covered" };
|
|
1962
|
-
|
|
1963
|
-
|
|
2629
|
+
const exact = candidates.flatMap(
|
|
2630
|
+
(profile) => profile.measurements.filter(
|
|
1964
2631
|
(m) => shapeKeys.every((key) => m.shape[key] === request.shape[key]) && sameCircuit(m.circuit, request.circuit)
|
|
1965
|
-
)
|
|
1966
|
-
|
|
2632
|
+
).map((measurement) => ({ profile, measurement }))
|
|
2633
|
+
);
|
|
2634
|
+
const mean = (measurement) => {
|
|
2635
|
+
const count = BigInt(measurement.samples.length);
|
|
2636
|
+
return (measurement.samples.reduce((sum, s) => sum + BigInt(s.gasUsed), 0n) + count - 1n) / count;
|
|
2637
|
+
};
|
|
2638
|
+
exact.sort(
|
|
2639
|
+
(a, b) => mean(a.measurement) > mean(b.measurement) ? -1 : mean(a.measurement) < mean(b.measurement) ? 1 : a.measurement.id.localeCompare(b.measurement.id)
|
|
2640
|
+
);
|
|
2641
|
+
if (exact.length) {
|
|
2642
|
+
const { profile, measurement } = exact[0];
|
|
1967
2643
|
const gas = measurement.samples.map((sample) => BigInt(sample.gasUsed));
|
|
1968
2644
|
const count = BigInt(gas.length);
|
|
1969
2645
|
return {
|
|
@@ -1993,14 +2669,20 @@ function estimateShapeGas(request, profiles = defaultProfiles) {
|
|
|
1993
2669
|
const matching = measurements.filter(
|
|
1994
2670
|
(measurement) => measurement.shape.kind === request.shape.kind && measurement.shape.target === request.shape.target && sameCircuit(measurement.circuit, request.circuit)
|
|
1995
2671
|
);
|
|
1996
|
-
const exact = matching.
|
|
2672
|
+
const exact = matching.filter(
|
|
1997
2673
|
(measurement) => shapeKeys.every((key) => measurement.shape[key] === request.shape[key])
|
|
1998
2674
|
);
|
|
1999
|
-
if (exact) {
|
|
2000
|
-
const
|
|
2001
|
-
|
|
2002
|
-
|
|
2675
|
+
if (exact.length) {
|
|
2676
|
+
const means = exact.map((m) => {
|
|
2677
|
+
const count = BigInt(m.samples.length);
|
|
2678
|
+
return (m.samples.reduce((sum, s) => sum + BigInt(s.gasUsed), 0n) + count - 1n) / count;
|
|
2679
|
+
});
|
|
2680
|
+
return { gasUnits: means.reduce((max, v) => v > max ? v : max) };
|
|
2003
2681
|
}
|
|
2682
|
+
if (["create-credit", "draw-credit", "top-up-credit", "cancel-credit"].includes(
|
|
2683
|
+
request.shape.kind
|
|
2684
|
+
) && !matching.length)
|
|
2685
|
+
throw new Error("No current Credit gas reference for this artifact and verification key");
|
|
2004
2686
|
const candidates = matching.length ? matching : measurements.filter(
|
|
2005
2687
|
(measurement) => measurement.shape.kind === request.shape.kind && measurement.shape.target === request.shape.target
|
|
2006
2688
|
);
|
|
@@ -2015,7 +2697,22 @@ function estimateShapeGas(request, profiles = defaultProfiles) {
|
|
|
2015
2697
|
"deliveryBytes",
|
|
2016
2698
|
...!matching.length ? ["capacity"] : []
|
|
2017
2699
|
];
|
|
2018
|
-
const
|
|
2700
|
+
const groups = /* @__PURE__ */ new Map();
|
|
2701
|
+
for (const candidate of candidates) {
|
|
2702
|
+
const key = JSON.stringify([
|
|
2703
|
+
shapeKeys.map((k) => candidate.shape[k]),
|
|
2704
|
+
candidate.circuit?.circuitName,
|
|
2705
|
+
candidate.circuit?.target,
|
|
2706
|
+
candidate.circuit?.artifactSha256.toLowerCase(),
|
|
2707
|
+
candidate.circuit?.vkSha256.toLowerCase()
|
|
2708
|
+
]);
|
|
2709
|
+
const previous = groups.get(key);
|
|
2710
|
+
groups.set(
|
|
2711
|
+
key,
|
|
2712
|
+
previous ? { ...candidate, samples: [...previous.samples, ...candidate.samples] } : candidate
|
|
2713
|
+
);
|
|
2714
|
+
}
|
|
2715
|
+
const estimates = [...groups.values()].map((measurement) => {
|
|
2019
2716
|
let numerator = 1n;
|
|
2020
2717
|
let denominator = 1n;
|
|
2021
2718
|
for (const key of dimensions) {
|
|
@@ -2046,7 +2743,7 @@ function estimateGasReference(plan, protocol, profiles) {
|
|
|
2046
2743
|
|
|
2047
2744
|
// src/session/operation-execution.ts
|
|
2048
2745
|
var import_ethers6 = require("ethers");
|
|
2049
|
-
var
|
|
2746
|
+
var import_core4 = require("@invisi-labs/core");
|
|
2050
2747
|
|
|
2051
2748
|
// src/session/proof-integrity.ts
|
|
2052
2749
|
var import_ethers5 = require("ethers");
|
|
@@ -2075,7 +2772,7 @@ async function authorizeOperation(plan, provider) {
|
|
|
2075
2772
|
if (provider.walletIdentity !== plan.scope.walletIdentity)
|
|
2076
2773
|
throw new Error("wallet authorization capability mismatch");
|
|
2077
2774
|
const request = authorizationRequest(plan);
|
|
2078
|
-
const digest = (0,
|
|
2775
|
+
const digest = (0, import_core4.computeWalletAuthorizationDigest)(request);
|
|
2079
2776
|
const signed = await provider.authorize(structuredClone(request));
|
|
2080
2777
|
if (signed.walletIdentity !== plan.scope.walletIdentity || signed.digest !== digest)
|
|
2081
2778
|
throw new Error("wallet authorization statement mismatch");
|
|
@@ -2159,11 +2856,11 @@ function operationPreview(plan, status) {
|
|
|
2159
2856
|
}
|
|
2160
2857
|
|
|
2161
2858
|
// src/session/Operation.ts
|
|
2162
|
-
var
|
|
2859
|
+
var import_core8 = require("@invisi-labs/core");
|
|
2163
2860
|
var import_protocol4 = require("@invisi-labs/protocol");
|
|
2164
2861
|
|
|
2165
2862
|
// src/session/operation-confirmation.ts
|
|
2166
|
-
var
|
|
2863
|
+
var import_core7 = require("@invisi-labs/core");
|
|
2167
2864
|
|
|
2168
2865
|
// src/session/aggregate-receipt.ts
|
|
2169
2866
|
var import_ethers7 = require("ethers");
|
|
@@ -2219,10 +2916,10 @@ function matchesAggregateTransaction(saved, transaction) {
|
|
|
2219
2916
|
}
|
|
2220
2917
|
|
|
2221
2918
|
// src/session/credit-values.ts
|
|
2222
|
-
var
|
|
2919
|
+
var import_core5 = require("@invisi-labs/core");
|
|
2223
2920
|
async function creditLeaf(state) {
|
|
2224
2921
|
const n = state.note;
|
|
2225
|
-
return (0,
|
|
2922
|
+
return (0, import_core5.computeCreditCommitment)(
|
|
2226
2923
|
n.chainId,
|
|
2227
2924
|
n.spenderWalletIdentity,
|
|
2228
2925
|
n.ownerWalletIdentity,
|
|
@@ -2232,22 +2929,23 @@ async function creditLeaf(state) {
|
|
|
2232
2929
|
n.amount,
|
|
2233
2930
|
n.nonce,
|
|
2234
2931
|
n.expiry,
|
|
2235
|
-
await (0,
|
|
2932
|
+
await (0, import_core5.computeCreditSharedKeyHash)(n.creditSharedKey),
|
|
2933
|
+
n
|
|
2236
2934
|
);
|
|
2237
2935
|
}
|
|
2238
2936
|
|
|
2239
2937
|
// src/session/membership.ts
|
|
2240
|
-
var
|
|
2938
|
+
var import_core6 = require("@invisi-labs/core");
|
|
2241
2939
|
async function verifyMembership(reader, context, block, input, proof) {
|
|
2242
2940
|
if (proof.block.hash !== block.hash || proof.block.number !== block.number || proof.leaf !== input.commitment || proof.treeId !== input.treeId || proof.leafIndex !== input.leafIndex || proof.path.length !== 16 || !Number.isInteger(input.leafIndex) || input.leafIndex < 0 || input.leafIndex >= 65536 || !await reader.isKnownRoot(context, input.treeId, proof.root, block))
|
|
2243
2941
|
throw new Error("membership context/root mismatch");
|
|
2244
2942
|
let root = BigInt(input.commitment);
|
|
2245
2943
|
for (let i = 0; i < 16; i++) {
|
|
2246
2944
|
const sibling = proof.path[i];
|
|
2247
|
-
if (typeof sibling !== "bigint" || sibling < 0n || sibling >=
|
|
2945
|
+
if (typeof sibling !== "bigint" || sibling < 0n || sibling >= import_core6.FIELD_MODULUS)
|
|
2248
2946
|
throw new Error("noncanonical membership path");
|
|
2249
2947
|
root = BigInt(
|
|
2250
|
-
await (0,
|
|
2948
|
+
await (0, import_core6.poseidonHash)(input.leafIndex >> i & 1 ? [sibling, root] : [root, sibling])
|
|
2251
2949
|
);
|
|
2252
2950
|
}
|
|
2253
2951
|
if (root !== BigInt(proof.root))
|
|
@@ -2419,7 +3117,7 @@ async function confirmOperation(runtime, id, generation, hash2, signal) {
|
|
|
2419
3117
|
if (credits.length) {
|
|
2420
3118
|
const nullifiers = await Promise.all(
|
|
2421
3119
|
credits.map(
|
|
2422
|
-
async (record) => (0,
|
|
3120
|
+
async (record) => (0, import_core7.computeCreditNullifier)(
|
|
2423
3121
|
plan.context.chainId,
|
|
2424
3122
|
record.state.note.creditSharedKey,
|
|
2425
3123
|
await creditLeaf(record.state)
|
|
@@ -2751,7 +3449,7 @@ var Operation = class _Operation {
|
|
|
2751
3449
|
}
|
|
2752
3450
|
const prover = this.#runtime.options.prover;
|
|
2753
3451
|
if (!prover) {
|
|
2754
|
-
throw new
|
|
3452
|
+
throw new import_core8.MissingCapabilityError("prover");
|
|
2755
3453
|
}
|
|
2756
3454
|
return this.stage(
|
|
2757
3455
|
"proof",
|
|
@@ -2785,7 +3483,7 @@ var Operation = class _Operation {
|
|
|
2785
3483
|
check6(p.kind === "shield" || this.#saved.proof, "proof must precede funding authorization");
|
|
2786
3484
|
const signer = this.#runtime.options.fundingSigner;
|
|
2787
3485
|
if (!signer) {
|
|
2788
|
-
throw new
|
|
3486
|
+
throw new import_core8.MissingCapabilityError("EVM funding signer");
|
|
2789
3487
|
}
|
|
2790
3488
|
check6(
|
|
2791
3489
|
signer.address.toLowerCase() === p.funding.payer.toLowerCase(),
|
|
@@ -2976,7 +3674,7 @@ var Operation = class _Operation {
|
|
|
2976
3674
|
|
|
2977
3675
|
// src/session/WalletSession.ts
|
|
2978
3676
|
var import_ethers11 = require("ethers");
|
|
2979
|
-
var
|
|
3677
|
+
var import_core13 = require("@invisi-labs/core");
|
|
2980
3678
|
|
|
2981
3679
|
// src/session/transaction-preparation.ts
|
|
2982
3680
|
var import_ethers10 = require("ethers");
|
|
@@ -2984,7 +3682,7 @@ var import_protocol7 = require("@invisi-labs/protocol");
|
|
|
2984
3682
|
|
|
2985
3683
|
// src/session/prepare-common.ts
|
|
2986
3684
|
var import_ethers8 = require("ethers");
|
|
2987
|
-
var
|
|
3685
|
+
var import_core9 = require("@invisi-labs/core");
|
|
2988
3686
|
var import_protocol5 = require("@invisi-labs/protocol");
|
|
2989
3687
|
|
|
2990
3688
|
// src/session/selection.ts
|
|
@@ -3040,7 +3738,15 @@ var Preparation = class {
|
|
|
3040
3738
|
throw new Error("canonical wallet checkpoint changed; resync required");
|
|
3041
3739
|
}
|
|
3042
3740
|
}
|
|
3043
|
-
return {
|
|
3741
|
+
return {
|
|
3742
|
+
context: {
|
|
3743
|
+
...options.protocol.context,
|
|
3744
|
+
now: block.timestamp,
|
|
3745
|
+
timestamp: block.timestamp
|
|
3746
|
+
},
|
|
3747
|
+
block,
|
|
3748
|
+
deadline
|
|
3749
|
+
};
|
|
3044
3750
|
}
|
|
3045
3751
|
async assertBlock(frame) {
|
|
3046
3752
|
if ((await this.runtime.reader.getBlock(frame.block.number)).hash !== frame.block.hash) {
|
|
@@ -3081,11 +3787,12 @@ var Preparation = class {
|
|
|
3081
3787
|
}
|
|
3082
3788
|
async output(payment, context, change = false) {
|
|
3083
3789
|
positiveAmount(payment.amount);
|
|
3084
|
-
const recipient = await
|
|
3790
|
+
const recipient = await import_core9.ReceivingAddress.parse(payment.to).resolve(
|
|
3085
3791
|
this.runtime.options.addressResolver
|
|
3086
3792
|
);
|
|
3087
|
-
const
|
|
3088
|
-
const
|
|
3793
|
+
const memo = (0, import_core9.encodeMemo)(payment.memo);
|
|
3794
|
+
const nonce = (0, import_core9.generateNonce)();
|
|
3795
|
+
const identity = await (0, import_core9.computeNoteIdentity)(BigInt(recipient.walletIdentity), nonce);
|
|
3089
3796
|
const keys = recipient.getReceivingKeys();
|
|
3090
3797
|
const note = {
|
|
3091
3798
|
chainId: context.chainId,
|
|
@@ -3093,9 +3800,10 @@ var Preparation = class {
|
|
|
3093
3800
|
tokenAddress: BigInt(context.tokenAddress),
|
|
3094
3801
|
walletIdentity: recipient.walletIdentity,
|
|
3095
3802
|
amount: payment.amount,
|
|
3803
|
+
...memo.length === 0 ? {} : { memo },
|
|
3096
3804
|
nonce
|
|
3097
3805
|
};
|
|
3098
|
-
const commitment = await (0,
|
|
3806
|
+
const commitment = await (0, import_core9.computeNoteCommitment)(
|
|
3099
3807
|
context.chainId,
|
|
3100
3808
|
identity,
|
|
3101
3809
|
note.tokenAddress,
|
|
@@ -3109,20 +3817,20 @@ var Preparation = class {
|
|
|
3109
3817
|
change,
|
|
3110
3818
|
delivery: {
|
|
3111
3819
|
ciphertext: (0, import_ethers8.hexlify)(
|
|
3112
|
-
await (0,
|
|
3820
|
+
await (0, import_core9.encryptPrivateTransferNote)(keys.viewingPublicKey, note, {
|
|
3113
3821
|
chainId: context.chainId,
|
|
3114
3822
|
protocolAddress: note.protocolAddress,
|
|
3115
3823
|
outputCommitment: commitment
|
|
3116
3824
|
})
|
|
3117
3825
|
),
|
|
3118
|
-
clue: (0, import_ethers8.hexlify)((0,
|
|
3826
|
+
clue: (0, import_ethers8.hexlify)((0, import_core9.createClue)(keys.clueKey))
|
|
3119
3827
|
}
|
|
3120
3828
|
};
|
|
3121
3829
|
}
|
|
3122
3830
|
async membership(input, frame) {
|
|
3123
3831
|
const { options, reader } = this.runtime;
|
|
3124
3832
|
if (!options.protocolRpc)
|
|
3125
|
-
throw new
|
|
3833
|
+
throw new import_core9.MissingCapabilityError("Protocol RPC membership provider");
|
|
3126
3834
|
const root = this.#roots.get(input.treeId);
|
|
3127
3835
|
const proof = await options.protocolRpc.getMembership(
|
|
3128
3836
|
frame.context,
|
|
@@ -3169,9 +3877,9 @@ var Preparation = class {
|
|
|
3169
3877
|
for (const input of selected) {
|
|
3170
3878
|
const note = input.note;
|
|
3171
3879
|
const c = frame.context;
|
|
3172
|
-
if (note.walletIdentity !== scope.walletIdentity || note.chainId !== c.chainId || note.protocolAddress !== BigInt(c.protocolAddress) || note.tokenAddress !== BigInt(c.tokenAddress) || await (0,
|
|
3880
|
+
if (note.walletIdentity !== scope.walletIdentity || note.chainId !== c.chainId || note.protocolAddress !== BigInt(c.protocolAddress) || note.tokenAddress !== BigInt(c.tokenAddress) || await (0, import_core9.computeNoteCommitment)(
|
|
3173
3881
|
c.chainId,
|
|
3174
|
-
await (0,
|
|
3882
|
+
await (0, import_core9.computeNoteIdentity)(BigInt(note.walletIdentity), note.nonce),
|
|
3175
3883
|
note.tokenAddress,
|
|
3176
3884
|
note.amount
|
|
3177
3885
|
) !== input.commitment) {
|
|
@@ -3223,7 +3931,7 @@ function storedCandidates(inputs) {
|
|
|
3223
3931
|
|
|
3224
3932
|
// src/session/prepare-credit.ts
|
|
3225
3933
|
var import_ethers9 = require("ethers");
|
|
3226
|
-
var
|
|
3934
|
+
var import_core10 = require("@invisi-labs/core");
|
|
3227
3935
|
var import_protocol6 = require("@invisi-labs/protocol");
|
|
3228
3936
|
var EMPTY = { ciphertext: "0x", clue: "0x" };
|
|
3229
3937
|
var CreditPreparation = class {
|
|
@@ -3239,7 +3947,7 @@ var CreditPreparation = class {
|
|
|
3239
3947
|
return value;
|
|
3240
3948
|
}
|
|
3241
3949
|
async seal(input, frame) {
|
|
3242
|
-
const state = (0,
|
|
3950
|
+
const state = (0, import_core10.normalizeCreditDeliveryState)(input);
|
|
3243
3951
|
const commitment = await creditLeaf(state);
|
|
3244
3952
|
const context = {
|
|
3245
3953
|
chainId: frame.context.chainId,
|
|
@@ -3251,9 +3959,9 @@ var CreditPreparation = class {
|
|
|
3251
3959
|
const keys = role === "owner" ? state.ownerReceivingKeys : state.spenderReceivingKeys;
|
|
3252
3960
|
return {
|
|
3253
3961
|
ciphertext: (0, import_ethers9.hexlify)(
|
|
3254
|
-
await (0,
|
|
3962
|
+
await (0, import_core10.encryptCreditNote)(keys.viewingPublicKey, state, { ...context, role })
|
|
3255
3963
|
),
|
|
3256
|
-
clue: (0, import_ethers9.hexlify)((0,
|
|
3964
|
+
clue: (0, import_ethers9.hexlify)((0, import_core10.createClue)(keys.clueKey))
|
|
3257
3965
|
};
|
|
3258
3966
|
})
|
|
3259
3967
|
);
|
|
@@ -3264,14 +3972,14 @@ var CreditPreparation = class {
|
|
|
3264
3972
|
if (!stored || stored.spent !== "unspent" || stored.role !== role) {
|
|
3265
3973
|
throw new Error(`confirmed unspent ${role} Credit is unavailable`);
|
|
3266
3974
|
}
|
|
3267
|
-
const state = (0,
|
|
3975
|
+
const state = (0, import_core10.normalizeCreditDeliveryState)(stored.state);
|
|
3268
3976
|
const n = state.note;
|
|
3269
3977
|
if ((role === "owner" ? n.ownerWalletIdentity : n.spenderWalletIdentity) !== this.runtime.scope.walletIdentity || n.chainId !== frame.context.chainId || n.protocolAddress !== BigInt(frame.context.protocolAddress) || n.tokenAddress !== BigInt(frame.context.tokenAddress) || await creditLeaf(state) !== commitment) {
|
|
3270
3978
|
throw new Error("Credit role, commitment or deployment mismatch");
|
|
3271
3979
|
}
|
|
3272
3980
|
const proof = await this.#prepare.membership(stored, frame);
|
|
3273
3981
|
const path = [...proof.path];
|
|
3274
|
-
const nullifier = await (0,
|
|
3982
|
+
const nullifier = await (0, import_core10.computeCreditNullifier)(n.chainId, n.creditSharedKey, commitment);
|
|
3275
3983
|
await this.#prepare.assertUnspent([nullifier], frame);
|
|
3276
3984
|
return {
|
|
3277
3985
|
input: {
|
|
@@ -3308,7 +4016,7 @@ var CreditPreparation = class {
|
|
|
3308
4016
|
positiveAmount(options.amount, 126);
|
|
3309
4017
|
const frame = await this.#prepare.frame(options.deadline);
|
|
3310
4018
|
const expiry = this.expiry(options.expiry, frame);
|
|
3311
|
-
const spender = await
|
|
4019
|
+
const spender = await import_core10.ReceivingAddress.parse(options.spender).resolve(
|
|
3312
4020
|
this.runtime.options.addressResolver
|
|
3313
4021
|
);
|
|
3314
4022
|
const owner = await this.runtime.options.wallet.getReceivingAddress().resolve(this.runtime.options.addressResolver);
|
|
@@ -3327,10 +4035,16 @@ var CreditPreparation = class {
|
|
|
3327
4035
|
spenderWalletIdentity: spender.walletIdentity,
|
|
3328
4036
|
ownerPayout: BigInt(ownerPayout),
|
|
3329
4037
|
spenderPayout: BigInt(spenderPayout),
|
|
4038
|
+
...(0, import_core10.normalizeCreditPolicy)({
|
|
4039
|
+
singleLimit: options.singleLimit ?? 0n,
|
|
4040
|
+
dailyLimit: options.dailyLimit ?? 0n,
|
|
4041
|
+
monthlyLimit: options.monthlyLimit ?? 0n
|
|
4042
|
+
}),
|
|
3330
4043
|
amount: options.amount,
|
|
4044
|
+
...options.memo === void 0 ? {} : { memo: options.memo },
|
|
3331
4045
|
expiry,
|
|
3332
|
-
nonce: (0,
|
|
3333
|
-
creditSharedKey: (0,
|
|
4046
|
+
nonce: (0, import_core10.generateNonce)(),
|
|
4047
|
+
creditSharedKey: (0, import_core10.generateCreditSharedKey)()
|
|
3334
4048
|
},
|
|
3335
4049
|
ownerReceivingKeys: owner.getReceivingKeys(),
|
|
3336
4050
|
spenderReceivingKeys: spender.getReceivingKeys()
|
|
@@ -3419,7 +4133,19 @@ var CreditPreparation = class {
|
|
|
3419
4133
|
}
|
|
3420
4134
|
const amount = positiveAmount(old.note.amount + options.additionalAmount, 126);
|
|
3421
4135
|
const output = await this.seal(
|
|
3422
|
-
{
|
|
4136
|
+
{
|
|
4137
|
+
...old,
|
|
4138
|
+
note: {
|
|
4139
|
+
...old.note,
|
|
4140
|
+
singleLimit: options.singleLimit ?? old.note.singleLimit ?? 0n,
|
|
4141
|
+
dailyLimit: options.dailyLimit ?? old.note.dailyLimit ?? 0n,
|
|
4142
|
+
monthlyLimit: options.monthlyLimit ?? old.note.monthlyLimit ?? 0n,
|
|
4143
|
+
amount,
|
|
4144
|
+
expiry,
|
|
4145
|
+
nonce: (0, import_core10.generateNonce)(),
|
|
4146
|
+
...options.memo === void 0 ? {} : { memo: options.memo }
|
|
4147
|
+
}
|
|
4148
|
+
},
|
|
3423
4149
|
frame
|
|
3424
4150
|
);
|
|
3425
4151
|
return this.creation(
|
|
@@ -3465,6 +4191,7 @@ var CreditPreparation = class {
|
|
|
3465
4191
|
}
|
|
3466
4192
|
sources.set(member.source.treeId, member.source.merkleRoot);
|
|
3467
4193
|
amounts.push(amount);
|
|
4194
|
+
const usage = (0, import_core10.applyCreditDrawUsage)(n, amount, frame.block.timestamp);
|
|
3468
4195
|
const remaining = n.amount - amount;
|
|
3469
4196
|
if (remaining === 0n) {
|
|
3470
4197
|
remainders.push((0, import_protocol6.word)(0n));
|
|
@@ -3484,8 +4211,10 @@ var CreditPreparation = class {
|
|
|
3484
4211
|
...state,
|
|
3485
4212
|
note: {
|
|
3486
4213
|
...n,
|
|
4214
|
+
...usage,
|
|
3487
4215
|
amount: remaining,
|
|
3488
|
-
|
|
4216
|
+
...options.credits[i].memo === void 0 ? {} : { memo: options.credits[i].memo },
|
|
4217
|
+
nonce: await (0, import_core10.deriveRemainderNonce)(...args)
|
|
3489
4218
|
}
|
|
3490
4219
|
},
|
|
3491
4220
|
frame
|
|
@@ -3493,7 +4222,7 @@ var CreditPreparation = class {
|
|
|
3493
4222
|
outputs.push(output);
|
|
3494
4223
|
remainders.push(output.commitment);
|
|
3495
4224
|
recoveryAmounts.push(
|
|
3496
|
-
(0, import_protocol6.word)((remaining + await (0,
|
|
4225
|
+
(0, import_protocol6.word)((remaining + await (0, import_core10.computeCreditRecoveryPad)(...args)) % import_core10.FIELD_MODULUS)
|
|
3497
4226
|
);
|
|
3498
4227
|
deliveries.push(...output.deliveries);
|
|
3499
4228
|
}
|
|
@@ -3814,10 +4543,10 @@ async function refreshWallet(runtime, options) {
|
|
|
3814
4543
|
}
|
|
3815
4544
|
|
|
3816
4545
|
// src/session/WalletUpdater.ts
|
|
3817
|
-
var
|
|
4546
|
+
var import_core12 = require("@invisi-labs/core");
|
|
3818
4547
|
|
|
3819
4548
|
// src/session/inventory.ts
|
|
3820
|
-
var
|
|
4549
|
+
var import_core11 = require("@invisi-labs/core");
|
|
3821
4550
|
var CanonicalConflict = class extends Error {
|
|
3822
4551
|
};
|
|
3823
4552
|
var CreditMetadataMismatch = class extends Error {
|
|
@@ -3869,10 +4598,10 @@ var InventoryProcessor = class {
|
|
|
3869
4598
|
}
|
|
3870
4599
|
async creditNullifier(state) {
|
|
3871
4600
|
const n = state.note;
|
|
3872
|
-
return (0,
|
|
4601
|
+
return (0, import_core11.computeCreditNullifier)(
|
|
3873
4602
|
n.chainId,
|
|
3874
4603
|
n.creditSharedKey,
|
|
3875
|
-
await (0,
|
|
4604
|
+
await (0, import_core11.computeCreditCommitment)(
|
|
3876
4605
|
n.chainId,
|
|
3877
4606
|
n.spenderWalletIdentity,
|
|
3878
4607
|
n.ownerWalletIdentity,
|
|
@@ -3882,7 +4611,8 @@ var InventoryProcessor = class {
|
|
|
3882
4611
|
n.amount,
|
|
3883
4612
|
n.nonce,
|
|
3884
4613
|
n.expiry,
|
|
3885
|
-
await (0,
|
|
4614
|
+
await (0, import_core11.computeCreditSharedKeyHash)(n.creditSharedKey),
|
|
4615
|
+
n
|
|
3886
4616
|
)
|
|
3887
4617
|
);
|
|
3888
4618
|
}
|
|
@@ -3929,6 +4659,9 @@ var InventoryProcessor = class {
|
|
|
3929
4659
|
};
|
|
3930
4660
|
for (const event of logs) {
|
|
3931
4661
|
if (event.eventName === "CreditDraw") {
|
|
4662
|
+
const block = await this.#options.reader.getBlock(event.blockNumber);
|
|
4663
|
+
if (block.hash !== event.blockHash)
|
|
4664
|
+
throw new CanonicalConflict("draw block changed during Credit recovery");
|
|
3932
4665
|
const args = event.args;
|
|
3933
4666
|
const params = args.params;
|
|
3934
4667
|
const indices = args.remainderLeafIndices;
|
|
@@ -3942,10 +4675,11 @@ var InventoryProcessor = class {
|
|
|
3942
4675
|
previous.state.note.expiry === params.expiries[index2],
|
|
3943
4676
|
"draw recovery expiry mismatch"
|
|
3944
4677
|
);
|
|
3945
|
-
const remainder = await (0,
|
|
4678
|
+
const remainder = await (0, import_core11.recoverCreditRemainder)(
|
|
3946
4679
|
context,
|
|
3947
4680
|
previous.state.note,
|
|
3948
4681
|
{
|
|
4682
|
+
timestamp: block.timestamp,
|
|
3949
4683
|
creditNullifier: nullifier,
|
|
3950
4684
|
remainderCommitment: params.remainderCommitments[index2],
|
|
3951
4685
|
recoveryAmount: BigInt(params.recoveryAmounts[index2])
|
|
@@ -3954,6 +4688,10 @@ var InventoryProcessor = class {
|
|
|
3954
4688
|
if (!remainder) {
|
|
3955
4689
|
continue;
|
|
3956
4690
|
}
|
|
4691
|
+
const child = foundByKey.get(
|
|
4692
|
+
params.remainderCommitments[index2] + ":" + previous.role
|
|
4693
|
+
);
|
|
4694
|
+
const memo = child?.state.note.memo;
|
|
3957
4695
|
const record = {
|
|
3958
4696
|
commitment: params.remainderCommitments[index2],
|
|
3959
4697
|
treeId: BigInt(args.outputTreeId),
|
|
@@ -3962,7 +4700,13 @@ var InventoryProcessor = class {
|
|
|
3962
4700
|
blockHash: event.blockHash,
|
|
3963
4701
|
transactionHash: event.transactionHash,
|
|
3964
4702
|
role: previous.role,
|
|
3965
|
-
state: {
|
|
4703
|
+
state: {
|
|
4704
|
+
...clone(previous.state),
|
|
4705
|
+
note: {
|
|
4706
|
+
...remainder,
|
|
4707
|
+
...memo === void 0 ? {} : { memo: (0, import_core11.encodeMemo)(memo) }
|
|
4708
|
+
}
|
|
4709
|
+
},
|
|
3966
4710
|
receivingKeySource: { kind: "draw", commitment: previous.commitment },
|
|
3967
4711
|
spent: "unknown"
|
|
3968
4712
|
};
|
|
@@ -4039,7 +4783,7 @@ var WalletUpdater = class extends InventoryProcessor {
|
|
|
4039
4783
|
}
|
|
4040
4784
|
async run(batch, options) {
|
|
4041
4785
|
const { reader, protocol, scope, store, viewing } = this.#options;
|
|
4042
|
-
const nullifier =
|
|
4786
|
+
const nullifier = import_core12.NullifierCapability.fromIdentity(scope.walletIdentity);
|
|
4043
4787
|
const { signal, reset } = options;
|
|
4044
4788
|
signal?.throwIfAborted();
|
|
4045
4789
|
const context = protocol.context;
|
|
@@ -4260,7 +5004,7 @@ var WalletSession = class {
|
|
|
4260
5004
|
/** Delegate sending to ethers; managed operations additionally retain the resulting hash. */
|
|
4261
5005
|
async sendTransaction(input, options = {}) {
|
|
4262
5006
|
const signer = this.#options.signer;
|
|
4263
|
-
if (!signer) throw new
|
|
5007
|
+
if (!signer) throw new import_core13.MissingCapabilityError("ethers signer");
|
|
4264
5008
|
const operation = input instanceof Operation ? input : void 0;
|
|
4265
5009
|
if (operation && this.#sending.has(operation.id))
|
|
4266
5010
|
throw new Error("operation is already being sent by this session");
|
|
@@ -4268,12 +5012,12 @@ var WalletSession = class {
|
|
|
4268
5012
|
const overrides = { ...options };
|
|
4269
5013
|
const plain = operation ? void 0 : { ...input };
|
|
4270
5014
|
try {
|
|
4271
|
-
if (!signer.provider) throw new
|
|
5015
|
+
if (!signer.provider) throw new import_core13.MissingCapabilityError("connected ethers signer");
|
|
4272
5016
|
if ((await signer.provider.getNetwork()).chainId !== this.protocol.context.chainId) {
|
|
4273
5017
|
throw new Error("signer-provider session chain mismatch");
|
|
4274
5018
|
}
|
|
4275
5019
|
if (operation) {
|
|
4276
|
-
if (!this.#options.store) throw new
|
|
5020
|
+
if (!this.#options.store) throw new import_core13.MissingCapabilityError("wallet store");
|
|
4277
5021
|
const state = await this.#options.store.readSnapshot(this.scope);
|
|
4278
5022
|
if (!state.operations[operation.id])
|
|
4279
5023
|
throw new Error("operation does not belong to this wallet session");
|
|
@@ -4304,10 +5048,10 @@ var WalletSession = class {
|
|
|
4304
5048
|
runtime(tokenAddress) {
|
|
4305
5049
|
const options = this.#options;
|
|
4306
5050
|
if (!options.store) {
|
|
4307
|
-
throw new
|
|
5051
|
+
throw new import_core13.MissingCapabilityError("wallet store");
|
|
4308
5052
|
}
|
|
4309
5053
|
if (!options.chainReader) {
|
|
4310
|
-
throw new
|
|
5054
|
+
throw new import_core13.MissingCapabilityError("chain reader");
|
|
4311
5055
|
}
|
|
4312
5056
|
return {
|
|
4313
5057
|
options: { ...options, protocol: options.protocol.forToken(tokenAddress) },
|
|
@@ -4321,7 +5065,7 @@ var WalletSession = class {
|
|
|
4321
5065
|
if (this.#updater) return this.#updater;
|
|
4322
5066
|
const options = this.#options;
|
|
4323
5067
|
if (!options.store || !options.chainReader || !options.protocolRpc)
|
|
4324
|
-
throw new
|
|
5068
|
+
throw new import_core13.MissingCapabilityError("wallet store, chain reader and Protocol RPC");
|
|
4325
5069
|
const viewing = options.viewing ?? options.wallet.getViewer();
|
|
4326
5070
|
const receivingAddress = options.wallet.getReceivingAddress();
|
|
4327
5071
|
const receivingKeys = receivingAddress.kind === "long" ? receivingAddress.getReceivingKeys() : void 0;
|
|
@@ -4339,7 +5083,7 @@ var WalletSession = class {
|
|
|
4339
5083
|
async balance(tokenAddress) {
|
|
4340
5084
|
const store = this.#options.store;
|
|
4341
5085
|
if (!store) {
|
|
4342
|
-
throw new
|
|
5086
|
+
throw new import_core13.MissingCapabilityError("wallet store");
|
|
4343
5087
|
}
|
|
4344
5088
|
return walletBalance(await store.readSnapshot(this.scope), (0, import_ethers11.getAddress)(tokenAddress));
|
|
4345
5089
|
}
|
|
@@ -4347,8 +5091,8 @@ var WalletSession = class {
|
|
|
4347
5091
|
async refresh(options) {
|
|
4348
5092
|
const provider = this.#options.protocolRpc;
|
|
4349
5093
|
const reader = this.#options.chainReader;
|
|
4350
|
-
if (!reader) throw new
|
|
4351
|
-
if (!provider) throw new
|
|
5094
|
+
if (!reader) throw new import_core13.MissingCapabilityError("chain reader");
|
|
5095
|
+
if (!provider) throw new import_core13.MissingCapabilityError("Protocol RPC");
|
|
4352
5096
|
const updater = this.updater();
|
|
4353
5097
|
const request = {
|
|
4354
5098
|
...options,
|
|
@@ -4407,7 +5151,7 @@ var WalletSession = class {
|
|
|
4407
5151
|
}
|
|
4408
5152
|
async resume(operationId) {
|
|
4409
5153
|
const store = this.#options.store;
|
|
4410
|
-
if (!store) throw new
|
|
5154
|
+
if (!store) throw new import_core13.MissingCapabilityError("wallet store");
|
|
4411
5155
|
const state = await store.readSnapshot(this.scope);
|
|
4412
5156
|
const saved = state.operations[operationId]?.payload;
|
|
4413
5157
|
if (!saved?.plan) throw new Error("operation not found");
|