shinjuku-shielded 0.3.63 → 0.3.64
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/manifest.json +4 -4
- package/package.json +3 -3
- package/shinjuku-wallet.mjs +110 -28
package/manifest.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "carbon-shielded-wallet/bundle-manifest/v1",
|
|
3
3
|
"file": "shinjuku-wallet.mjs",
|
|
4
|
-
"sha256": "
|
|
5
|
-
"bytes":
|
|
6
|
-
"sourceCommit": "
|
|
4
|
+
"sha256": "f7b2fe093da4904a611ef95fb52e7888ad1f23b2f41681474d1bd9bef75a71f8",
|
|
5
|
+
"bytes": 12179295,
|
|
6
|
+
"sourceCommit": "98688d76628c9d7aa02f0215b371e30999e852fa",
|
|
7
7
|
"sourceDirty": false,
|
|
8
8
|
"installRecordMatchesLockfile": true,
|
|
9
9
|
"releaseRule": "valid only when two fresh npm ci --ignore-scripts builds on different OSes give the same sha256; installRecordMatchesLockfile true means every entry npm installed equals its package-lock.json entry and every entry not marked optional, devOptional included, is installed: an optional entry (a package for another platform) may be absent",
|
|
@@ -1282,5 +1282,5 @@
|
|
|
1282
1282
|
"version": "1.8.0"
|
|
1283
1283
|
}
|
|
1284
1284
|
],
|
|
1285
|
-
"publishedAt": "2026-10-
|
|
1285
|
+
"publishedAt": "2026-10-22T09:31:31.971Z"
|
|
1286
1286
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shinjuku-shielded",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.64",
|
|
4
4
|
"mcpName": "io.github.ShinjukuStaition/shinjuku-mcp",
|
|
5
5
|
"description": "Shinjuku Shielded, the private x402 facilitator on Solana: the self-custody wallet CLI and its MCP server. Shield, pay, and unshield USDC from any MCP agent, under caps you set.",
|
|
6
|
-
"shinjukuRelease": "
|
|
7
|
-
"shinjukuSha256": "
|
|
6
|
+
"shinjukuRelease": "f7b2fe09",
|
|
7
|
+
"shinjukuSha256": "f7b2fe093da4904a611ef95fb52e7888ad1f23b2f41681474d1bd9bef75a71f8",
|
|
8
8
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
9
9
|
"author": "Shinjuku Shielded",
|
|
10
10
|
"homepage": "https://github.com/ShinjukuStaition/shinjuku-mcp#readme",
|
package/shinjuku-wallet.mjs
CHANGED
|
@@ -53948,6 +53948,24 @@ function parseE1TreeHeader(header) {
|
|
|
53948
53948
|
bufferSize: u642(72)
|
|
53949
53949
|
};
|
|
53950
53950
|
}
|
|
53951
|
+
function programDataAddressOf(program) {
|
|
53952
|
+
const key = b58(program);
|
|
53953
|
+
let address5 = PROGRAMDATA_ADDRESSES.get(key);
|
|
53954
|
+
if (address5 === void 0) {
|
|
53955
|
+
address5 = import_web396.PublicKey.findProgramAddressSync([new import_web396.PublicKey(key).toBuffer()], BPF_LOADER_UPGRADEABLE_PROGRAM_ID)[0];
|
|
53956
|
+
PROGRAMDATA_ADDRESSES.set(key, address5);
|
|
53957
|
+
}
|
|
53958
|
+
return address5;
|
|
53959
|
+
}
|
|
53960
|
+
function reuseOptionRefused(connection) {
|
|
53961
|
+
const endpoint2 = connection.rpcEndpoint;
|
|
53962
|
+
return typeof endpoint2 === "string" ? REUSE_REFUSED_ENDPOINTS.has(endpoint2) : REUSE_REFUSED_CONNECTIONS.has(connection);
|
|
53963
|
+
}
|
|
53964
|
+
function rememberReuseOptionRefused(connection) {
|
|
53965
|
+
const endpoint2 = connection.rpcEndpoint;
|
|
53966
|
+
if (typeof endpoint2 === "string") REUSE_REFUSED_ENDPOINTS.add(endpoint2);
|
|
53967
|
+
else REUSE_REFUSED_CONNECTIONS.add(connection);
|
|
53968
|
+
}
|
|
53951
53969
|
function slicesRefused(connection) {
|
|
53952
53970
|
const endpoint2 = connection.rpcEndpoint;
|
|
53953
53971
|
return typeof endpoint2 === "string" ? SLICES_REFUSED_ENDPOINTS.has(endpoint2) : SLICES_REFUSED_CONNECTIONS.has(connection);
|
|
@@ -53961,20 +53979,41 @@ function slicesMethodMissing(error) {
|
|
|
53961
53979
|
const message = String(error?.message ?? "");
|
|
53962
53980
|
return /^(404|405|501)\b/.test(message) || /-3260[12]\b/.test(message);
|
|
53963
53981
|
}
|
|
53964
|
-
function slicedAccountBytes(value, accountIndex) {
|
|
53982
|
+
function slicedAccountBytes(value, accountIndex, slices = POOL_SLICES) {
|
|
53965
53983
|
if (value === null || typeof value !== "object" || typeof value.owner !== "string" || !Number.isSafeInteger(value.space) || value.space < 0 || !Array.isArray(value.data) || value.data.length !== 2 || value.data[1] !== "base64" || typeof value.data[0] !== "string") {
|
|
53966
53984
|
return void 0;
|
|
53967
53985
|
}
|
|
53968
53986
|
const bytes2 = Buffer.from(value.data[0], "base64");
|
|
53969
53987
|
if (bytes2.toString("base64") !== value.data[0]) return void 0;
|
|
53970
53988
|
let expected = 0;
|
|
53971
|
-
for (const [index, offset, length] of
|
|
53989
|
+
for (const [index, offset, length] of slices) {
|
|
53972
53990
|
if (index === accountIndex) expected += Math.max(0, Math.min(offset + length, value.space) - offset);
|
|
53973
53991
|
}
|
|
53974
53992
|
return bytes2.length === expected ? bytes2 : void 0;
|
|
53975
53993
|
}
|
|
53976
|
-
function slicedSnapshot(result, program, pool2, tree) {
|
|
53977
|
-
if (result === null || typeof result !== "object" || !Array.isArray(result.value) || result.value.length !== 2) return void 0;
|
|
53994
|
+
function slicedSnapshot(result, program, pool2, tree, programData) {
|
|
53995
|
+
if (result === null || typeof result !== "object" || !Array.isArray(result.value) || result.value.length !== (programData === void 0 ? 2 : 3)) return void 0;
|
|
53996
|
+
const snapshot = slicedPoolSnapshot(result, program, pool2, tree);
|
|
53997
|
+
if (snapshot === void 0 || programData === void 0) return snapshot;
|
|
53998
|
+
const value = result.value[2];
|
|
53999
|
+
const data = slicedAccountBytes(value, 2, POOL_SLICES_WITH_PROGRAMDATA);
|
|
54000
|
+
const newest = result.newestSignature;
|
|
54001
|
+
if (data === void 0 || typeof value.executable !== "boolean" || newest === null || typeof newest !== "object" || typeof newest.signature !== "string" || !Number.isSafeInteger(newest.slot)) {
|
|
54002
|
+
return snapshot;
|
|
54003
|
+
}
|
|
54004
|
+
return withPoolStateOf(snapshot, Object.freeze({
|
|
54005
|
+
...snapshot,
|
|
54006
|
+
programDataReuse: Object.freeze({
|
|
54007
|
+
slot: snapshot.slot,
|
|
54008
|
+
address: programData.toBase58(),
|
|
54009
|
+
owner: value.owner,
|
|
54010
|
+
executable: value.executable,
|
|
54011
|
+
data,
|
|
54012
|
+
newestSignature: newest.signature
|
|
54013
|
+
})
|
|
54014
|
+
}));
|
|
54015
|
+
}
|
|
54016
|
+
function slicedPoolSnapshot(result, program, pool2, tree) {
|
|
53978
54017
|
const [poolValue, treeValue] = result.value;
|
|
53979
54018
|
const poolBytes2 = slicedAccountBytes(poolValue, 0);
|
|
53980
54019
|
if (poolBytes2 === void 0 || poolValue.space > REFRESH_READ_BYTES) return void 0;
|
|
@@ -54003,22 +54042,37 @@ function slicedSnapshot(result, program, pool2, tree) {
|
|
|
54003
54042
|
async function readFinalizedPoolSliced(connection, program, pool2) {
|
|
54004
54043
|
if (typeof connection._rpcRequest !== "function" || slicesRefused(connection)) return void 0;
|
|
54005
54044
|
const tree = new import_web396.PublicKey(e1TreeAddress2(b58(pool2), b58(program)));
|
|
54045
|
+
const programData = reuseOptionRefused(connection) ? void 0 : programDataAddressOf(program);
|
|
54046
|
+
const params = programData === void 0 ? [[b58(pool2), tree.toBase58()], { commitment: "finalized", slices: POOL_SLICES }] : [
|
|
54047
|
+
[b58(pool2), tree.toBase58(), programData.toBase58()],
|
|
54048
|
+
{ commitment: "finalized", slices: POOL_SLICES_WITH_PROGRAMDATA, newestSignature: 2 }
|
|
54049
|
+
];
|
|
54006
54050
|
let response;
|
|
54007
54051
|
try {
|
|
54008
|
-
response = await connection._rpcRequest(P03_POOL_SLICES_METHOD,
|
|
54052
|
+
response = await connection._rpcRequest(P03_POOL_SLICES_METHOD, params);
|
|
54009
54053
|
} catch (error) {
|
|
54054
|
+
if (programData !== void 0 && /-32602\b/.test(String(error?.message ?? ""))) {
|
|
54055
|
+
rememberReuseOptionRefused(connection);
|
|
54056
|
+
markPhase("pool-sliced-reuse-refused");
|
|
54057
|
+
return readFinalizedPoolSliced(connection, program, pool2);
|
|
54058
|
+
}
|
|
54010
54059
|
if (slicesMethodMissing(error)) rememberSlicesRefused(connection);
|
|
54011
54060
|
markPhase(`pool-sliced-fallback-${reuseRefusalCause(error)}`);
|
|
54012
54061
|
return void 0;
|
|
54013
54062
|
}
|
|
54014
54063
|
if (response?.error !== void 0) {
|
|
54064
|
+
if (programData !== void 0 && response.error?.code === -32602) {
|
|
54065
|
+
rememberReuseOptionRefused(connection);
|
|
54066
|
+
markPhase("pool-sliced-reuse-refused");
|
|
54067
|
+
return readFinalizedPoolSliced(connection, program, pool2);
|
|
54068
|
+
}
|
|
54015
54069
|
if (response.error?.code === -32601 || response.error?.code === -32602) rememberSlicesRefused(connection);
|
|
54016
54070
|
markPhase("pool-sliced-fallback-refused");
|
|
54017
54071
|
return void 0;
|
|
54018
54072
|
}
|
|
54019
54073
|
let snapshot;
|
|
54020
54074
|
try {
|
|
54021
|
-
snapshot = slicedSnapshot(response?.result, program, pool2, tree);
|
|
54075
|
+
snapshot = slicedSnapshot(response?.result, program, pool2, tree, programData);
|
|
54022
54076
|
} catch {
|
|
54023
54077
|
snapshot = void 0;
|
|
54024
54078
|
}
|
|
@@ -54129,13 +54183,14 @@ async function readProgramDataHeader({ connection, address: address5, snapshotSl
|
|
|
54129
54183
|
minContextSlot: snapshotSlot,
|
|
54130
54184
|
dataSlice: { offset: 0, length: 45 }
|
|
54131
54185
|
}));
|
|
54132
|
-
|
|
54133
|
-
|
|
54186
|
+
assertProgramDataHeader(safeSlot(account2?.context?.slot, "programdata_snapshot_slot"), account2?.value, { snapshotSlot, deployedAtSlot });
|
|
54187
|
+
}
|
|
54188
|
+
function assertProgramDataHeader(observedSlot, value, { snapshotSlot, deployedAtSlot }) {
|
|
54134
54189
|
if (observedSlot < snapshotSlot || !value || !canonicalKey(value.owner, "programdata_owner").equals(BPF_LOADER_UPGRADEABLE_PROGRAM_ID) || value.executable === true) {
|
|
54135
54190
|
throw new Error("p03_history_programdata_account_invalid");
|
|
54136
54191
|
}
|
|
54137
54192
|
const data = Buffer.from(value.data);
|
|
54138
|
-
if (data.length <
|
|
54193
|
+
if (data.length < PROGRAMDATA_HEADER_BYTES || data.readUInt32LE(0) !== 3 || data.readBigUInt64LE(4) !== deployedAtSlot) {
|
|
54139
54194
|
throw new Error("p03_history_programdata_identity_invalid");
|
|
54140
54195
|
}
|
|
54141
54196
|
}
|
|
@@ -54204,7 +54259,11 @@ async function programDataCoverageFor({
|
|
|
54204
54259
|
// so one RPC answers both, at or after snapshotSlot, with no history-source floor below it
|
|
54205
54260
|
// (2026-10-16 c1s: the signature read on the proxy cost a -32016 retry, about 0.2 s).
|
|
54206
54261
|
// The full attestation and its newest signature keep `connection`. Absent: `connection`.
|
|
54207
|
-
reuseConnection = connection
|
|
54262
|
+
reuseConnection = connection,
|
|
54263
|
+
// The pool snapshot's `programDataReuse` (readFinalizedPoolSliced, 2026-10-22): the same two facts
|
|
54264
|
+
// from the same RPC as the pool account, at its slot. Used instead of the two reads only when it
|
|
54265
|
+
// is at `snapshotSlot` and names the cached attestation's address; checked exactly as they are.
|
|
54266
|
+
reuseAnswer
|
|
54208
54267
|
}) {
|
|
54209
54268
|
if (deploymentIdentity === void 0) return { coverage: void 0, attestation: void 0, reused: false };
|
|
54210
54269
|
let priorRefused = false;
|
|
@@ -54212,27 +54271,43 @@ async function programDataCoverageFor({
|
|
|
54212
54271
|
const key = coverageKey({ program, initialization, deploymentIdentity });
|
|
54213
54272
|
if (key !== void 0 && prior?.key === key && typeof prior.newestSignature === "string" && prior.coverage?.throughFinalizedSlot <= BigInt(snapshotSlot)) {
|
|
54214
54273
|
const address5 = new import_web396.PublicKey(prior.coverage.programDataAddress);
|
|
54215
|
-
|
|
54274
|
+
const deployedAtSlot = BigInt(prior.coverage.deployedAtSlot);
|
|
54275
|
+
const reuse = (signature2) => {
|
|
54276
|
+
const coverage2 = Object.freeze({ ...prior.coverage, throughFinalizedSlot: BigInt(snapshotSlot) });
|
|
54277
|
+
return { coverage: coverage2, attestation: { key, newestSignature: signature2, coverage: coverage2 }, reused: true };
|
|
54278
|
+
};
|
|
54279
|
+
const pooled = reuseAnswer !== void 0 && reuseAnswer.slot === snapshotSlot && reuseAnswer.address === address5.toBase58() ? reuseAnswer : void 0;
|
|
54280
|
+
if (pooled !== void 0) {
|
|
54216
54281
|
try {
|
|
54217
|
-
|
|
54218
|
-
|
|
54219
|
-
|
|
54220
|
-
|
|
54221
|
-
snapshotSlot,
|
|
54222
|
-
deployedAtSlot: BigInt(prior.coverage.deployedAtSlot)
|
|
54223
|
-
}),
|
|
54224
|
-
newestSignature(reuseConnection, address5, snapshotSlot)
|
|
54225
|
-
]);
|
|
54226
|
-
if (newest2.signature === prior.newestSignature) {
|
|
54227
|
-
const coverage2 = Object.freeze({ ...prior.coverage, throughFinalizedSlot: BigInt(snapshotSlot) });
|
|
54228
|
-
return { coverage: coverage2, attestation: { key, newestSignature: newest2.signature, coverage: coverage2 }, reused: true };
|
|
54282
|
+
assertProgramDataHeader(pooled.slot, pooled, { snapshotSlot, deployedAtSlot });
|
|
54283
|
+
if (pooled.newestSignature === prior.newestSignature) {
|
|
54284
|
+
markPhase("attest-reuse-in-pool-read");
|
|
54285
|
+
return reuse(pooled.newestSignature);
|
|
54229
54286
|
}
|
|
54230
54287
|
cause = "programdata_newest_signature_changed";
|
|
54231
|
-
break;
|
|
54232
54288
|
} catch (error) {
|
|
54233
54289
|
cause = reuseRefusalCause(error);
|
|
54234
|
-
|
|
54235
|
-
|
|
54290
|
+
}
|
|
54291
|
+
} else {
|
|
54292
|
+
for (let attempt = 1; ; attempt += 1) {
|
|
54293
|
+
try {
|
|
54294
|
+
const [, newest2] = await Promise.all([
|
|
54295
|
+
readProgramDataHeader({
|
|
54296
|
+
connection: reuseConnection,
|
|
54297
|
+
address: address5,
|
|
54298
|
+
snapshotSlot,
|
|
54299
|
+
deployedAtSlot
|
|
54300
|
+
}),
|
|
54301
|
+
newestSignature(reuseConnection, address5, snapshotSlot)
|
|
54302
|
+
]);
|
|
54303
|
+
if (newest2.signature === prior.newestSignature) return reuse(newest2.signature);
|
|
54304
|
+
cause = "programdata_newest_signature_changed";
|
|
54305
|
+
break;
|
|
54306
|
+
} catch (error) {
|
|
54307
|
+
cause = reuseRefusalCause(error);
|
|
54308
|
+
if (attempt >= 2 || typeof onReuseRetry !== "function" || !isTransientRpcError(error)) break;
|
|
54309
|
+
await onReuseRetry({ cause });
|
|
54310
|
+
}
|
|
54236
54311
|
}
|
|
54237
54312
|
}
|
|
54238
54313
|
priorRefused = true;
|
|
@@ -55680,7 +55755,7 @@ function base58Decode(value) {
|
|
|
55680
55755
|
while (zeros < value.length && value[zeros] === "1") zeros += 1;
|
|
55681
55756
|
return Uint8Array.from(Buffer.concat([Buffer.alloc(zeros), body]));
|
|
55682
55757
|
}
|
|
55683
|
-
var import_web396, b58Cache, b58, REPLAY_STORE_INDEXED, CLOSE_REPLAY_TREE_TAG, EXTEND_ANCHOR_RING_TAG, WIDEN_ANCHOR_RING_TAG, WIDE_ANCHOR_RING_POOL_BYTES, LINK_SUCCESSOR_TAG, IMPORT_REPLAY_LEAVES_TAG, SETTLE_MOVE_TAG, SWEEP_PREDECESSOR_VAULT_TAG, RELINK_SUCCESSOR_TAG, ROTATE_PAYMENT_SETTLER_TAG, IMPORT_A_LEAF_BYTES, IMPORT_MEMBERSHIP_BYTES, IMPORT_PRESENT_SHIFT, IMPORT_MAX_ENTRIES, MOVE_HEAD_BYTES, MOVE_INSERTED_VALUES, DEFAULT_KEY, FIELD_BYTES2, PRIMARY_PROOF_BYTES, SUBTREE_LEAVES, PAGE_SIZE, FIELD_MODULUS3, BPF_LOADER_UPGRADEABLE_PROGRAM_ID, SYSTEM_PROGRAM, TEST_EXECUTABLES, derivationMemo, memo, reviewedExecutables, isProgramDataIdentityError, ASSUMED_ORIGINAL_EXECUTABLE, AUTHENTICATED_HISTORY_REPORTS, HISTORY_ATTESTATIONS, SNAPSHOT_POOL_STATES, REPORT_POOL_STATES, hasExecutableEvidence, P03_FINALIZED_HISTORY_SOURCE_MODEL, P03_PROGRAMDATA_COVERAGE_SOURCE_MODEL, P03_RUN_RECOVER_UNAVAILABLE_FROM_CHAIN, PROFILES, P03_SETTLEMENT_TAGS, P03_INLINE_SETTLEMENT_TAGS, P03_PAYMENT_REPLAY_INDICES, NO_CONTEXTS, REFRESH_READ_BYTES, E1_TREE_HEADER_BYTES, E1_TREE_MAGIC, E1_CHANGELOG_BYTES, E1_CHANGELOGS_OFFSET, E1_RIGHTMOST_OFFSET, E1_LEAF_COUNT_OFFSET, E1_CANOPY_OFFSET, E1_CANOPY_NODES, P03_POOL_SLICES_METHOD, POOL_SLICES, SLICED_ROOTS_OFFSET, SLICED_LEAVES_OFFSET, SLICES_REFUSED_ENDPOINTS, SLICES_REFUSED_CONNECTIONS, HISTORY_FETCH_CONCURRENCY, HISTORY_BULK_TRANSACTIONS, HISTORY_BULK_ADDRESSES, TRANSIENT_RPC_ATTEMPTS, TRANSIENT_RPC_BASE_DELAY_MS, LAGGING_NODE_STEP_OF_BASE, LAGGING_NODE_MAX_RETRIES, LAGGING_NODE_FAST_RETRIES, LAGGING_NODE_SLOW_STEP_OF_BASE, LAGGING_NODE_RPC_CODES, lastVerifiedE1Tree, e1ReplayCounts, e1TreeCandidate;
|
|
55758
|
+
var import_web396, b58Cache, b58, REPLAY_STORE_INDEXED, CLOSE_REPLAY_TREE_TAG, EXTEND_ANCHOR_RING_TAG, WIDEN_ANCHOR_RING_TAG, WIDE_ANCHOR_RING_POOL_BYTES, LINK_SUCCESSOR_TAG, IMPORT_REPLAY_LEAVES_TAG, SETTLE_MOVE_TAG, SWEEP_PREDECESSOR_VAULT_TAG, RELINK_SUCCESSOR_TAG, ROTATE_PAYMENT_SETTLER_TAG, IMPORT_A_LEAF_BYTES, IMPORT_MEMBERSHIP_BYTES, IMPORT_PRESENT_SHIFT, IMPORT_MAX_ENTRIES, MOVE_HEAD_BYTES, MOVE_INSERTED_VALUES, DEFAULT_KEY, FIELD_BYTES2, PRIMARY_PROOF_BYTES, SUBTREE_LEAVES, PAGE_SIZE, FIELD_MODULUS3, BPF_LOADER_UPGRADEABLE_PROGRAM_ID, SYSTEM_PROGRAM, TEST_EXECUTABLES, derivationMemo, memo, reviewedExecutables, isProgramDataIdentityError, ASSUMED_ORIGINAL_EXECUTABLE, AUTHENTICATED_HISTORY_REPORTS, HISTORY_ATTESTATIONS, SNAPSHOT_POOL_STATES, REPORT_POOL_STATES, hasExecutableEvidence, P03_FINALIZED_HISTORY_SOURCE_MODEL, P03_PROGRAMDATA_COVERAGE_SOURCE_MODEL, P03_RUN_RECOVER_UNAVAILABLE_FROM_CHAIN, PROFILES, P03_SETTLEMENT_TAGS, P03_INLINE_SETTLEMENT_TAGS, P03_PAYMENT_REPLAY_INDICES, NO_CONTEXTS, REFRESH_READ_BYTES, E1_TREE_HEADER_BYTES, E1_TREE_MAGIC, E1_CHANGELOG_BYTES, E1_CHANGELOGS_OFFSET, E1_RIGHTMOST_OFFSET, E1_LEAF_COUNT_OFFSET, E1_CANOPY_OFFSET, E1_CANOPY_NODES, P03_POOL_SLICES_METHOD, POOL_SLICES, PROGRAMDATA_HEADER_BYTES, POOL_SLICES_WITH_PROGRAMDATA, SLICED_ROOTS_OFFSET, SLICED_LEAVES_OFFSET, SLICES_REFUSED_ENDPOINTS, SLICES_REFUSED_CONNECTIONS, REUSE_REFUSED_ENDPOINTS, REUSE_REFUSED_CONNECTIONS, PROGRAMDATA_ADDRESSES, HISTORY_FETCH_CONCURRENCY, HISTORY_BULK_TRANSACTIONS, HISTORY_BULK_ADDRESSES, TRANSIENT_RPC_ATTEMPTS, TRANSIENT_RPC_BASE_DELAY_MS, LAGGING_NODE_STEP_OF_BASE, LAGGING_NODE_MAX_RETRIES, LAGGING_NODE_FAST_RETRIES, LAGGING_NODE_SLOW_STEP_OF_BASE, LAGGING_NODE_RPC_CODES, lastVerifiedE1Tree, e1ReplayCounts, e1TreeCandidate;
|
|
55684
55759
|
var init_walk = __esm({
|
|
55685
55760
|
"wallet/src/history/walk.mjs"() {
|
|
55686
55761
|
"use strict";
|
|
@@ -55955,10 +56030,15 @@ var init_walk = __esm({
|
|
|
55955
56030
|
...Array.from({ length: E1.bufferSize }, (_, index) => Object.freeze([1, E1_CHANGELOGS_OFFSET + E1_CHANGELOG_BYTES * index, 32])),
|
|
55956
56031
|
Object.freeze([1, E1_LEAF_COUNT_OFFSET, 4])
|
|
55957
56032
|
]);
|
|
56033
|
+
PROGRAMDATA_HEADER_BYTES = 45;
|
|
56034
|
+
POOL_SLICES_WITH_PROGRAMDATA = Object.freeze([...POOL_SLICES, Object.freeze([2, 0, PROGRAMDATA_HEADER_BYTES])]);
|
|
55958
56035
|
SLICED_ROOTS_OFFSET = E1_TREE_HEADER_BYTES;
|
|
55959
56036
|
SLICED_LEAVES_OFFSET = SLICED_ROOTS_OFFSET + 32 * E1.bufferSize;
|
|
55960
56037
|
SLICES_REFUSED_ENDPOINTS = /* @__PURE__ */ new Set();
|
|
55961
56038
|
SLICES_REFUSED_CONNECTIONS = /* @__PURE__ */ new WeakSet();
|
|
56039
|
+
REUSE_REFUSED_ENDPOINTS = /* @__PURE__ */ new Set();
|
|
56040
|
+
REUSE_REFUSED_CONNECTIONS = /* @__PURE__ */ new WeakSet();
|
|
56041
|
+
PROGRAMDATA_ADDRESSES = /* @__PURE__ */ new Map();
|
|
55962
56042
|
HISTORY_FETCH_CONCURRENCY = 4;
|
|
55963
56043
|
HISTORY_BULK_TRANSACTIONS = 256;
|
|
55964
56044
|
HISTORY_BULK_ADDRESSES = 256;
|
|
@@ -57839,6 +57919,8 @@ async function compactP03HistoryReportRun({
|
|
|
57839
57919
|
getAccountInfoAndContext: (...args) => boundedOwnRead(() => own.getAccountInfoAndContext(...args)),
|
|
57840
57920
|
getSignaturesForAddress: (...args) => boundedOwnRead(() => own.getSignaturesForAddress(...args))
|
|
57841
57921
|
}))(connection.historyRpcOwnConnection) },
|
|
57922
|
+
// The same two facts from the pool account's own read, when it carried them (readFinalizedPoolSliced).
|
|
57923
|
+
...snapshot2.programDataReuse === void 0 ? {} : { reuseAnswer: snapshot2.programDataReuse },
|
|
57842
57924
|
program,
|
|
57843
57925
|
initialization: initialization2,
|
|
57844
57926
|
snapshotSlot: snapshot2.slot,
|
|
@@ -97639,7 +97721,7 @@ async function payResourceOnce({
|
|
|
97639
97721
|
mark("challenge");
|
|
97640
97722
|
}
|
|
97641
97723
|
const { requirement, recipient } = validateChallenge(record.paymentRequired, store, url, maximumAtomic, method);
|
|
97642
|
-
const chainTime2 = await (chainTimeRead ?? startFinalizedChainTime(connection))();
|
|
97724
|
+
const chainTime2 = await withPhaseScope(mark, "quote", () => (chainTimeRead ?? startFinalizedChainTime(connection))());
|
|
97643
97725
|
chainTimeRead = void 0;
|
|
97644
97726
|
if (!requoted && Number.isSafeInteger(chainTime2) && Number(requirement.extra.validBefore) - chainTime2 < QUOTE_MARGIN_SECONDS && store.readWal(`resource-proof-${requestKey}`)?.proved === void 0) {
|
|
97645
97727
|
requote();
|