@origintrail-official/dkg-chain 10.0.4 → 10.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi/PublishingConviction.json +132 -0
- package/dist/endpoint-stickiness.d.ts +104 -0
- package/dist/endpoint-stickiness.d.ts.map +1 -0
- package/dist/endpoint-stickiness.js +141 -0
- package/dist/endpoint-stickiness.js.map +1 -0
- package/dist/evm-adapter-base.d.ts +23 -0
- package/dist/evm-adapter-base.d.ts.map +1 -1
- package/dist/evm-adapter-base.js +54 -4
- package/dist/evm-adapter-base.js.map +1 -1
- package/dist/evm-adapter-constants.d.ts +16 -0
- package/dist/evm-adapter-constants.d.ts.map +1 -1
- package/dist/evm-adapter-constants.js +16 -0
- package/dist/evm-adapter-constants.js.map +1 -1
- package/dist/evm-adapter-context-graph.d.ts.map +1 -1
- package/dist/evm-adapter-context-graph.js +10 -1
- package/dist/evm-adapter-context-graph.js.map +1 -1
- package/dist/evm-adapter-conviction.d.ts.map +1 -1
- package/dist/evm-adapter-conviction.js +55 -2
- package/dist/evm-adapter-conviction.js.map +1 -1
- package/dist/evm-adapter-events.d.ts +10 -0
- package/dist/evm-adapter-events.d.ts.map +1 -1
- package/dist/evm-adapter-events.js +11 -1
- package/dist/evm-adapter-events.js.map +1 -1
- package/dist/hub-rotation-poller.d.ts.map +1 -1
- package/dist/hub-rotation-poller.js +11 -3
- package/dist/hub-rotation-poller.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/rpc-failover-client.d.ts +65 -4
- package/dist/rpc-failover-client.d.ts.map +1 -1
- package/dist/rpc-failover-client.js +115 -38
- package/dist/rpc-failover-client.js.map +1 -1
- package/dist/rpc-failover-log.d.ts +11 -0
- package/dist/rpc-failover-log.d.ts.map +1 -1
- package/dist/rpc-failover-log.js +40 -1
- package/dist/rpc-failover-log.js.map +1 -1
- package/package.json +3 -3
|
@@ -73,6 +73,27 @@
|
|
|
73
73
|
"name": "InvalidAmount",
|
|
74
74
|
"type": "error"
|
|
75
75
|
},
|
|
76
|
+
{
|
|
77
|
+
"inputs": [
|
|
78
|
+
{
|
|
79
|
+
"internalType": "uint256",
|
|
80
|
+
"name": "fromEpoch",
|
|
81
|
+
"type": "uint256"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"internalType": "uint256",
|
|
85
|
+
"name": "toEpoch",
|
|
86
|
+
"type": "uint256"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"internalType": "uint256",
|
|
90
|
+
"name": "currentEpoch",
|
|
91
|
+
"type": "uint256"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"name": "InvalidCollectionRange",
|
|
95
|
+
"type": "error"
|
|
96
|
+
},
|
|
76
97
|
{
|
|
77
98
|
"inputs": [
|
|
78
99
|
{
|
|
@@ -181,6 +202,11 @@
|
|
|
181
202
|
"name": "PrimaryNodeUnchanged",
|
|
182
203
|
"type": "error"
|
|
183
204
|
},
|
|
205
|
+
{
|
|
206
|
+
"inputs": [],
|
|
207
|
+
"name": "TreasuryNotSet",
|
|
208
|
+
"type": "error"
|
|
209
|
+
},
|
|
184
210
|
{
|
|
185
211
|
"inputs": [
|
|
186
212
|
{
|
|
@@ -403,6 +429,43 @@
|
|
|
403
429
|
"name": "CostCovered",
|
|
404
430
|
"type": "event"
|
|
405
431
|
},
|
|
432
|
+
{
|
|
433
|
+
"anonymous": false,
|
|
434
|
+
"inputs": [
|
|
435
|
+
{
|
|
436
|
+
"indexed": true,
|
|
437
|
+
"internalType": "uint256",
|
|
438
|
+
"name": "accountId",
|
|
439
|
+
"type": "uint256"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"indexed": false,
|
|
443
|
+
"internalType": "uint40",
|
|
444
|
+
"name": "fromWindow",
|
|
445
|
+
"type": "uint40"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"indexed": false,
|
|
449
|
+
"internalType": "uint40",
|
|
450
|
+
"name": "toWindow",
|
|
451
|
+
"type": "uint40"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"indexed": false,
|
|
455
|
+
"internalType": "uint96",
|
|
456
|
+
"name": "scheduled",
|
|
457
|
+
"type": "uint96"
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"indexed": false,
|
|
461
|
+
"internalType": "uint96",
|
|
462
|
+
"name": "treasuryFee",
|
|
463
|
+
"type": "uint96"
|
|
464
|
+
}
|
|
465
|
+
],
|
|
466
|
+
"name": "EmissionScheduled",
|
|
467
|
+
"type": "event"
|
|
468
|
+
},
|
|
406
469
|
{
|
|
407
470
|
"anonymous": false,
|
|
408
471
|
"inputs": [
|
|
@@ -459,6 +522,31 @@
|
|
|
459
522
|
"name": "ToppedUp",
|
|
460
523
|
"type": "event"
|
|
461
524
|
},
|
|
525
|
+
{
|
|
526
|
+
"anonymous": false,
|
|
527
|
+
"inputs": [
|
|
528
|
+
{
|
|
529
|
+
"indexed": false,
|
|
530
|
+
"internalType": "uint256",
|
|
531
|
+
"name": "fromEpoch",
|
|
532
|
+
"type": "uint256"
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"indexed": false,
|
|
536
|
+
"internalType": "uint256",
|
|
537
|
+
"name": "toEpoch",
|
|
538
|
+
"type": "uint256"
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"indexed": false,
|
|
542
|
+
"internalType": "uint96",
|
|
543
|
+
"name": "amount",
|
|
544
|
+
"type": "uint96"
|
|
545
|
+
}
|
|
546
|
+
],
|
|
547
|
+
"name": "TreasuryEmissionCollected",
|
|
548
|
+
"type": "event"
|
|
549
|
+
},
|
|
462
550
|
{
|
|
463
551
|
"anonymous": false,
|
|
464
552
|
"inputs": [
|
|
@@ -522,6 +610,19 @@
|
|
|
522
610
|
"stateMutability": "view",
|
|
523
611
|
"type": "function"
|
|
524
612
|
},
|
|
613
|
+
{
|
|
614
|
+
"inputs": [],
|
|
615
|
+
"name": "TREASURY_SHARD_ID",
|
|
616
|
+
"outputs": [
|
|
617
|
+
{
|
|
618
|
+
"internalType": "uint256",
|
|
619
|
+
"name": "",
|
|
620
|
+
"type": "uint256"
|
|
621
|
+
}
|
|
622
|
+
],
|
|
623
|
+
"stateMutability": "view",
|
|
624
|
+
"type": "function"
|
|
625
|
+
},
|
|
525
626
|
{
|
|
526
627
|
"inputs": [],
|
|
527
628
|
"name": "chronos",
|
|
@@ -548,6 +649,24 @@
|
|
|
548
649
|
"stateMutability": "nonpayable",
|
|
549
650
|
"type": "function"
|
|
550
651
|
},
|
|
652
|
+
{
|
|
653
|
+
"inputs": [
|
|
654
|
+
{
|
|
655
|
+
"internalType": "uint256",
|
|
656
|
+
"name": "fromEpoch",
|
|
657
|
+
"type": "uint256"
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
"internalType": "uint256",
|
|
661
|
+
"name": "toEpoch",
|
|
662
|
+
"type": "uint256"
|
|
663
|
+
}
|
|
664
|
+
],
|
|
665
|
+
"name": "collectTreasuryEmission",
|
|
666
|
+
"outputs": [],
|
|
667
|
+
"stateMutability": "nonpayable",
|
|
668
|
+
"type": "function"
|
|
669
|
+
},
|
|
551
670
|
{
|
|
552
671
|
"inputs": [],
|
|
553
672
|
"name": "convictionStakingStorage",
|
|
@@ -770,6 +889,19 @@
|
|
|
770
889
|
"stateMutability": "nonpayable",
|
|
771
890
|
"type": "function"
|
|
772
891
|
},
|
|
892
|
+
{
|
|
893
|
+
"inputs": [
|
|
894
|
+
{
|
|
895
|
+
"internalType": "uint256[]",
|
|
896
|
+
"name": "accountIds",
|
|
897
|
+
"type": "uint256[]"
|
|
898
|
+
}
|
|
899
|
+
],
|
|
900
|
+
"name": "migrateEmissionSchedule",
|
|
901
|
+
"outputs": [],
|
|
902
|
+
"stateMutability": "nonpayable",
|
|
903
|
+
"type": "function"
|
|
904
|
+
},
|
|
773
905
|
{
|
|
774
906
|
"inputs": [],
|
|
775
907
|
"name": "name",
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `EndpointStickiness` — the transport-ordering preference state machine extracted
|
|
3
|
+
* from `RpcFailoverClient` (Mechanism B, #1340 retry residual + #1337 policy-read
|
|
4
|
+
* fail-close). It owns the "prefer the last-good backend, re-probe the primary at
|
|
5
|
+
* most once per TTL" decision as a single, typed, testable unit so the four
|
|
6
|
+
* per-endpoint failover loops don't each hand-wire the ordering + outcome
|
|
7
|
+
* bookkeeping.
|
|
8
|
+
*
|
|
9
|
+
* It is PURE TRANSPORT-ORDERING state — it never signs, broadcasts, holds a WAL /
|
|
10
|
+
* serializer / nonce, or gates a return. It only decides which endpoint each loop
|
|
11
|
+
* TRIES FIRST and remembers where the last op succeeded. Callers pass a
|
|
12
|
+
* {@link StickinessIntent} describing the operation; the state machine encodes all
|
|
13
|
+
* the transition rules that were previously scattered boolean parameters:
|
|
14
|
+
*
|
|
15
|
+
* State: `none` | `preferred{ url, source: 'read' | 'write', primaryProbeDueAt }`
|
|
16
|
+
* - `source` distinguishes a preference proven by a READ from one proven by a
|
|
17
|
+
* nonce-critical POPULATE. A read-established backend may lag the signer's
|
|
18
|
+
* pending-nonce state, so a `nonceWrite` (populate) MUST NOT start there —
|
|
19
|
+
* it re-derives nonce from canonical (primary-first = authoritative) until a
|
|
20
|
+
* populate proves the backend.
|
|
21
|
+
*
|
|
22
|
+
* Intents:
|
|
23
|
+
* - `stickyRead` — a normal read: prefer the last-good backend (either source).
|
|
24
|
+
* - `transparentRead` — a TIP-sensitive read (current head / latest block):
|
|
25
|
+
* canonical order AND no state mutation (a lagging preferred would make the
|
|
26
|
+
* tip non-monotonic; and it must not clear a preference the heavy paths rely on).
|
|
27
|
+
* - `nonceWrite` — `populateAndSign`: prefer ONLY a WRITE-proven backend.
|
|
28
|
+
* - `write` — `broadcast` / `getReceipt`: nonce-free, prefer the
|
|
29
|
+
* last-good backend; BUT if the primary takes over a write as a fallback
|
|
30
|
+
* (the preferred backend failed the write op), the preferred backend's nonce
|
|
31
|
+
* view is now stale, so downgrade `source` write→read.
|
|
32
|
+
*
|
|
33
|
+
* All methods are synchronous, so concurrent ops on one instance can only observe
|
|
34
|
+
* a slightly stale order, never torn state.
|
|
35
|
+
*/
|
|
36
|
+
/** Minimal endpoint shape the ordering needs — keyed on `rpcUrl` (survives a live
|
|
37
|
+
* provider-pool rebind, unlike a positional index). */
|
|
38
|
+
export interface StickyEndpoint {
|
|
39
|
+
rpcUrl: string;
|
|
40
|
+
}
|
|
41
|
+
export type StickinessIntent = 'stickyRead' | 'transparentRead' | 'nonceWrite' | 'write';
|
|
42
|
+
export interface StickinessConfig {
|
|
43
|
+
/** Monotonic-ish clock (ms). Injected for deterministic cadence tests. */
|
|
44
|
+
now: () => number;
|
|
45
|
+
/** Primary re-probe cadence (ms). */
|
|
46
|
+
ttlMs: number;
|
|
47
|
+
/** LIVE kill-switch predicate — resolved at the CONFIG boundary (e.g. the
|
|
48
|
+
* adapter reads `DKG_DISABLE_RPC_STICKINESS`), so the transport core has no
|
|
49
|
+
* process-global dependency. */
|
|
50
|
+
isEnabled: () => boolean;
|
|
51
|
+
/** Optional host-only observability hook fired once per establishment edge. */
|
|
52
|
+
onEstablished?: (rpcUrl: string) => void;
|
|
53
|
+
}
|
|
54
|
+
export declare class EndpointStickiness {
|
|
55
|
+
private readonly cfg;
|
|
56
|
+
private state;
|
|
57
|
+
constructor(cfg: StickinessConfig);
|
|
58
|
+
/** Whether a preference is currently active (test/introspection helper). */
|
|
59
|
+
hasPreference(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Decide the per-op iteration order over `canonical` (the live configured order,
|
|
62
|
+
* index 0 = primary). Returns canonical unless a compatible preference is active
|
|
63
|
+
* and inside the current re-probe window, in which case the preferred endpoint is
|
|
64
|
+
* MOVED to the front (spliced out + unshifted — never duplicated, so fall-through
|
|
65
|
+
* still visits every endpoint exactly once). A `transparentRead` always uses
|
|
66
|
+
* canonical; a `nonceWrite` uses canonical unless the preference is WRITE-proven.
|
|
67
|
+
* When the re-probe deadline has passed this op probes the primary first AND
|
|
68
|
+
* re-arms the deadline `+ttlMs` (at most one primary re-stall per TTL).
|
|
69
|
+
*/
|
|
70
|
+
order<T extends StickyEndpoint>(canonical: T[], intent: StickinessIntent): T[];
|
|
71
|
+
/**
|
|
72
|
+
* Record that `endpoint` served the op (intent) successfully, `triedFirst` = it
|
|
73
|
+
* was the first endpoint attempted (loop index 0). No-op for `transparentRead`
|
|
74
|
+
* or when disabled. Encodes every transition:
|
|
75
|
+
* - primary succeeded, tried FIRST → CLEAR (a genuine canonical/TTL re-probe
|
|
76
|
+
* proved the primary healthy again).
|
|
77
|
+
* - primary succeeded as a WRITE fallback → the preferred backend failed the
|
|
78
|
+
* write op and the tx moved to the primary, so the backend's nonce view is
|
|
79
|
+
* stale → downgrade `source` write→read (keeps the read-preference, but the
|
|
80
|
+
* next `nonceWrite` re-derives nonce from canonical). NOT for reads (a read
|
|
81
|
+
* reaching the primary as a fallback doesn't advance the nonce, and
|
|
82
|
+
* downgrading could break a legitimate read-your-write allowance re-read).
|
|
83
|
+
* - a backend succeeded → establish (arm the deadline + fire `onEstablished`)
|
|
84
|
+
* or silently re-point; `source` = 'write' for a populate, else 'read'. A
|
|
85
|
+
* later populate on the SAME preferred upgrades 'read'→'write'.
|
|
86
|
+
*/
|
|
87
|
+
recordSuccess<T extends StickyEndpoint>(endpoint: T, canonical: T[], intent: StickinessIntent, triedFirst: boolean): void;
|
|
88
|
+
/**
|
|
89
|
+
* Record that `endpoint` FAILED the op (errored → triggered failover), so the
|
|
90
|
+
* failover loop is moving on to the next endpoint. If the failed endpoint is the
|
|
91
|
+
* current preferred, DE-PREFER it (drop to `none`): a degraded/hanging preferred
|
|
92
|
+
* backup must not keep being tried first, or every subsequent op re-stalls on it
|
|
93
|
+
* until the TTL re-probe — reintroducing the very fail-close this cadence exists
|
|
94
|
+
* to prevent, just with the backup as the staller. A later success re-establishes
|
|
95
|
+
* the new last-good backend. No-op for `transparentRead` (non-mutating) or when
|
|
96
|
+
* the failed endpoint isn't the preferred (e.g. a re-probe where the PRIMARY
|
|
97
|
+
* fails is expected and must not disturb the preference). This is called ONLY on
|
|
98
|
+
* a real error/failover, NOT on a benign `null` (e.g. getReceipt's not-yet-mined
|
|
99
|
+
* null continues the loop without a failover), so a healthy-but-empty backup
|
|
100
|
+
* stays preferred.
|
|
101
|
+
*/
|
|
102
|
+
recordFailure<T extends StickyEndpoint>(endpoint: T, intent: StickinessIntent): void;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=endpoint-stickiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-stickiness.d.ts","sourceRoot":"","sources":["../src/endpoint-stickiness.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;wDACwD;AACxD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,GAAG,YAAY,GAAG,OAAO,CAAC;AAMzF,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd;;qCAEiC;IACjC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,KAAK,CAAiC;gBAEjB,GAAG,EAAE,gBAAgB;IAElD,4EAA4E;IAC5E,aAAa,IAAI,OAAO;IAIxB;;;;;;;;;OASG;IACH,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAG,CAAC,EAAE;IAoC9E;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,CAAC,SAAS,cAAc,EACpC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,CAAC,EAAE,EACd,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,OAAO,GAClB,IAAI;IAyCP;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;CAMrF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
export class EndpointStickiness {
|
|
3
|
+
cfg;
|
|
4
|
+
state = { kind: 'none' };
|
|
5
|
+
constructor(cfg) {
|
|
6
|
+
this.cfg = cfg;
|
|
7
|
+
}
|
|
8
|
+
/** Whether a preference is currently active (test/introspection helper). */
|
|
9
|
+
hasPreference() {
|
|
10
|
+
return this.state.kind === 'preferred';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Decide the per-op iteration order over `canonical` (the live configured order,
|
|
14
|
+
* index 0 = primary). Returns canonical unless a compatible preference is active
|
|
15
|
+
* and inside the current re-probe window, in which case the preferred endpoint is
|
|
16
|
+
* MOVED to the front (spliced out + unshifted — never duplicated, so fall-through
|
|
17
|
+
* still visits every endpoint exactly once). A `transparentRead` always uses
|
|
18
|
+
* canonical; a `nonceWrite` uses canonical unless the preference is WRITE-proven.
|
|
19
|
+
* When the re-probe deadline has passed this op probes the primary first AND
|
|
20
|
+
* re-arms the deadline `+ttlMs` (at most one primary re-stall per TTL).
|
|
21
|
+
*/
|
|
22
|
+
order(canonical, intent) {
|
|
23
|
+
if (intent === 'transparentRead' || !this.cfg.isEnabled() || this.state.kind !== 'preferred') {
|
|
24
|
+
return canonical;
|
|
25
|
+
}
|
|
26
|
+
const pref = this.state; // narrowed to the 'preferred' variant
|
|
27
|
+
// A nonce-critical populate must not START on a backend proven only by a READ
|
|
28
|
+
// (it may lag the signer's pending nonce → a stale-nonce sign → phantom
|
|
29
|
+
// `nonce too low` success). Fall back to canonical (authoritative nonce).
|
|
30
|
+
if (intent === 'nonceWrite' && pref.source !== 'write')
|
|
31
|
+
return canonical;
|
|
32
|
+
const idx = canonical.findIndex((e) => e.rpcUrl === pref.url);
|
|
33
|
+
// idx < 0: preferred no longer configured (pool rebind dropped it).
|
|
34
|
+
// idx === 0: preferred IS the primary — canonical already tries it first.
|
|
35
|
+
if (idx <= 0)
|
|
36
|
+
return canonical;
|
|
37
|
+
// The TTL re-probe is a READ-recovery mechanism (only `stickyRead`): it
|
|
38
|
+
// periodically re-tries the configured primary so a recovered primary resumes
|
|
39
|
+
// serving reads. It must NOT redirect ANY write — a primary can be
|
|
40
|
+
// transport-healthy while still behind the block/txpool state that advanced the
|
|
41
|
+
// signer nonce, so (a) a `nonceWrite` populate there would sign a stale/duplicate
|
|
42
|
+
// nonce, and (b) a `write` broadcast/receipt there would split a backup-signed tx
|
|
43
|
+
// across endpoints and a lagging primary could reject the backup's nonce
|
|
44
|
+
// terminally before the loop reaches the backup. Writes therefore keep the
|
|
45
|
+
// write-proven backend past the TTL; they return to the primary only once a READ
|
|
46
|
+
// re-probe CLEARS the preference on primary recovery (or the backend fails, see
|
|
47
|
+
// recordFailure).
|
|
48
|
+
if (intent === 'stickyRead' && this.cfg.now() >= pref.primaryProbeDueAt) {
|
|
49
|
+
// Re-probe the configured primary this op; schedule the next re-probe one TTL
|
|
50
|
+
// out so we don't re-stall on it again until then.
|
|
51
|
+
this.state = { ...pref, primaryProbeDueAt: this.cfg.now() + this.cfg.ttlMs };
|
|
52
|
+
return canonical;
|
|
53
|
+
}
|
|
54
|
+
const reordered = canonical.slice();
|
|
55
|
+
const [preferred] = reordered.splice(idx, 1);
|
|
56
|
+
reordered.unshift(preferred);
|
|
57
|
+
return reordered;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Record that `endpoint` served the op (intent) successfully, `triedFirst` = it
|
|
61
|
+
* was the first endpoint attempted (loop index 0). No-op for `transparentRead`
|
|
62
|
+
* or when disabled. Encodes every transition:
|
|
63
|
+
* - primary succeeded, tried FIRST → CLEAR (a genuine canonical/TTL re-probe
|
|
64
|
+
* proved the primary healthy again).
|
|
65
|
+
* - primary succeeded as a WRITE fallback → the preferred backend failed the
|
|
66
|
+
* write op and the tx moved to the primary, so the backend's nonce view is
|
|
67
|
+
* stale → downgrade `source` write→read (keeps the read-preference, but the
|
|
68
|
+
* next `nonceWrite` re-derives nonce from canonical). NOT for reads (a read
|
|
69
|
+
* reaching the primary as a fallback doesn't advance the nonce, and
|
|
70
|
+
* downgrading could break a legitimate read-your-write allowance re-read).
|
|
71
|
+
* - a backend succeeded → establish (arm the deadline + fire `onEstablished`)
|
|
72
|
+
* or silently re-point; `source` = 'write' for a populate, else 'read'. A
|
|
73
|
+
* later populate on the SAME preferred upgrades 'read'→'write'.
|
|
74
|
+
*/
|
|
75
|
+
recordSuccess(endpoint, canonical, intent, triedFirst) {
|
|
76
|
+
if (intent === 'transparentRead' || !this.cfg.isEnabled())
|
|
77
|
+
return;
|
|
78
|
+
const primaryUrl = canonical[0]?.rpcUrl;
|
|
79
|
+
const isPopulate = intent === 'nonceWrite';
|
|
80
|
+
const isWriteOp = intent === 'nonceWrite' || intent === 'write';
|
|
81
|
+
if (endpoint.rpcUrl === primaryUrl) {
|
|
82
|
+
if (triedFirst) {
|
|
83
|
+
this.state = { kind: 'none' };
|
|
84
|
+
}
|
|
85
|
+
else if (isWriteOp && this.state.kind === 'preferred' && this.state.source === 'write') {
|
|
86
|
+
this.state = { ...this.state, source: 'read' };
|
|
87
|
+
}
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (this.state.kind !== 'preferred') {
|
|
91
|
+
this.state = {
|
|
92
|
+
kind: 'preferred',
|
|
93
|
+
url: endpoint.rpcUrl,
|
|
94
|
+
source: isPopulate ? 'write' : 'read',
|
|
95
|
+
primaryProbeDueAt: this.cfg.now() + this.cfg.ttlMs,
|
|
96
|
+
};
|
|
97
|
+
this.cfg.onEstablished?.(endpoint.rpcUrl);
|
|
98
|
+
}
|
|
99
|
+
else if (this.state.url !== endpoint.rpcUrl) {
|
|
100
|
+
// Re-point to a different backup (the old one also degraded, or was dropped
|
|
101
|
+
// by a live pool rebind). Keep an in-window deadline (a hop within an ongoing
|
|
102
|
+
// degradation episode, already counted at establishment — no new
|
|
103
|
+
// `onEstablished`), BUT if the carried-over deadline has already EXPIRED, arm
|
|
104
|
+
// a fresh one: otherwise a rebind that swaps in a new backup while the old
|
|
105
|
+
// deadline is stale would re-probe the primary on EVERY subsequent op (the
|
|
106
|
+
// collapse-to-index-0 this cadence exists to prevent).
|
|
107
|
+
const primaryProbeDueAt = this.cfg.now() >= this.state.primaryProbeDueAt
|
|
108
|
+
? this.cfg.now() + this.cfg.ttlMs
|
|
109
|
+
: this.state.primaryProbeDueAt;
|
|
110
|
+
this.state = { ...this.state, url: endpoint.rpcUrl, source: isPopulate ? 'write' : 'read', primaryProbeDueAt };
|
|
111
|
+
}
|
|
112
|
+
else if (isPopulate && this.state.source !== 'write') {
|
|
113
|
+
// Same preferred backend, now PROVEN nonce-safe by a populate → upgrade.
|
|
114
|
+
// Never DOWNGRADE on a read (a read hitting the write-proven backend doesn't
|
|
115
|
+
// un-prove its nonce view).
|
|
116
|
+
this.state = { ...this.state, source: 'write' };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Record that `endpoint` FAILED the op (errored → triggered failover), so the
|
|
121
|
+
* failover loop is moving on to the next endpoint. If the failed endpoint is the
|
|
122
|
+
* current preferred, DE-PREFER it (drop to `none`): a degraded/hanging preferred
|
|
123
|
+
* backup must not keep being tried first, or every subsequent op re-stalls on it
|
|
124
|
+
* until the TTL re-probe — reintroducing the very fail-close this cadence exists
|
|
125
|
+
* to prevent, just with the backup as the staller. A later success re-establishes
|
|
126
|
+
* the new last-good backend. No-op for `transparentRead` (non-mutating) or when
|
|
127
|
+
* the failed endpoint isn't the preferred (e.g. a re-probe where the PRIMARY
|
|
128
|
+
* fails is expected and must not disturb the preference). This is called ONLY on
|
|
129
|
+
* a real error/failover, NOT on a benign `null` (e.g. getReceipt's not-yet-mined
|
|
130
|
+
* null continues the loop without a failover), so a healthy-but-empty backup
|
|
131
|
+
* stays preferred.
|
|
132
|
+
*/
|
|
133
|
+
recordFailure(endpoint, intent) {
|
|
134
|
+
if (intent === 'transparentRead' || !this.cfg.isEnabled())
|
|
135
|
+
return;
|
|
136
|
+
if (this.state.kind === 'preferred' && this.state.url === endpoint.rpcUrl) {
|
|
137
|
+
this.state = { kind: 'none' };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=endpoint-stickiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-stickiness.js","sourceRoot":"","sources":["../src/endpoint-stickiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -470,6 +470,29 @@ export declare class EVMChainAdapterBase {
|
|
|
470
470
|
* the policy/classifier via `opts`.
|
|
471
471
|
*/
|
|
472
472
|
protected readProvider<T>(label: string, fn: (provider: JsonRpcProvider) => Promise<T>, opts?: ReadOpts): Promise<T>;
|
|
473
|
+
/**
|
|
474
|
+
* Raw PROVIDER read for a TIP-SENSITIVE value — the current head / `latest`
|
|
475
|
+
* block / any read that must stay canonical-fresh and preference-transparent
|
|
476
|
+
* (a lagging endpoint-stickiness backend would make the tip non-monotonic
|
|
477
|
+
* across calls). This is the POSITIVE freshness intent at the call site, so
|
|
478
|
+
* callers pick `readTipProvider` by meaning instead of remembering the
|
|
479
|
+
* transport-internal `skipPreferred` opt-out on a plain `readProvider`.
|
|
480
|
+
*/
|
|
481
|
+
protected readTipProvider<T>(label: string, fn: (provider: JsonRpcProvider) => Promise<T>, opts?: ReadOpts): Promise<T>;
|
|
482
|
+
/**
|
|
483
|
+
* Raw PROVIDER read whose `null` is a "not on this endpoint (yet)" signal, not a
|
|
484
|
+
* definitive answer. A `null` FAILS OVER to the other endpoints (a lagging
|
|
485
|
+
* endpoint must not hide an object a healthy one has) WITHOUT de-preferring that
|
|
486
|
+
* endpoint or emitting failover/exhaustion telemetry — because an empty result is
|
|
487
|
+
* not a transport failure. Returns the first NON-null result, or `null` only when
|
|
488
|
+
* EVERY endpoint returned `null` and none had a real transport error. A
|
|
489
|
+
* non-retryable provider error (e.g. `INVALID_ARGUMENT`) or a genuine transport
|
|
490
|
+
* exhaustion PROPAGATES — never masked as `null`. The empty-vs-error distinction
|
|
491
|
+
* (and thus the order-independent all-null decision) is handled by the transport
|
|
492
|
+
* loop via `ReadOpts.isEmptyResult`, so no sentinel exception is tunnelled
|
|
493
|
+
* through the generic failover/telemetry path.
|
|
494
|
+
*/
|
|
495
|
+
protected readProviderRetryingNull<T>(label: string, fn: (provider: JsonRpcProvider) => Promise<T>, opts?: ReadOpts): Promise<T | null>;
|
|
473
496
|
/**
|
|
474
497
|
* Rebind a CONTRACT to a `provider` for one per-endpoint VIEW read, leaving the
|
|
475
498
|
* boot-bound `this.contracts.*` handle untouched. The sole remaining base caller
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-adapter-base.d.ts","sourceRoot":"","sources":["../src/evm-adapter-base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evm-adapter-base.d.ts","sourceRoot":"","sources":["../src/evm-adapter-base.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAgO,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAIpS,OAAO,EAAE,iBAAiB,EAAE,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAiC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG9E,KAAK,mBAAmB,GAAG,CACzB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,KAClC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAExC,KAAK,4BAA4B,GAAG;IAClC,uBAAuB,EAAE,mBAAmB,CAAC;CAC9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,KAAK,0BAA0B,GAAG;KAC/B,CAAC,IAAI,MAAM,aAAa,GAAG,SAAS,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CAC3E,CAAC,MAAM,aAAa,CAAC,CAAC;AAEvB,KAAK,mBAAmB,GAAG,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;AAE1E,KAAK,4BAA4B,GAC7B;IAAE,WAAW,EAAE,mBAAmB,CAAC;IAAC,oBAAoB,CAAC,EAAE,KAAK,CAAA;CAAE,GAClE;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,oBAAoB,EAAE,IAAI,CAAA;CAAE,CAAC;AAiC/D,cAAM,eAAe;IAMjB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAPlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;gBAGgB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM;IAGpC,SAAS,CACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GACjD,OAAO,CAAC,MAAM,CAAC;IAWlB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK/C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC,aAAa,IAAI,IAAI;IAIrB,OAAO,CAAC,KAAK;CAQd;AA0BD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AAEF,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAgBlD,KAAK,YAAY,GAAG;IAAE,QAAQ,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACnE,oBAAoB,CAAC,uBAAuB,CAAC,CAkB/C;AAgND;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC/C;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEN,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAClF,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAErF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gBAAgB,GACxB;IACE,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,wBAAwB,CAAC;IAClC,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACD;IACE,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,wBAAwB,CAAC;IAClC,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACD;IACE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEN,qBAAa,mBAAmB;IAC9B,uCAAuC;IACvC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,QAAQ,CAAC,SAAS,EAAG,KAAK,CAAU;IAEpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAE7C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAEpD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;IAEhD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAErC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IAE3C;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAClD,iFAAiF;IACjF,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAE7C,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEpD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,oFAAoF;IACpF,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAExC,sEAAsE;IACtE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAExC,SAAS,CAAC,WAAW,SAAK;IAE1B,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAqB;IAElE;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,kBAAyB;IAE9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,QAAQ,CAAC,8BAA8B,cAAqB;IAEtE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEjD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAE/C;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC;IAE1D;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAEvD;;;;;OAKG;IAKH,SAAS,CAAC,QAAQ,CAAC,YAAY;gBAA6B,MAAM,GAAG,IAAI;kBAAY,MAAM;cAAQ,MAAM,GAAG,IAAI;gBAAU,MAAM;OAAM;IAEtI,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAEtC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEzC;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAElD,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC;IAEnC,SAAS,CAAC,WAAW,UAAS;IAE9B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;QAAE,EAAE,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;IAEhG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,SAAiB;IAEtE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,SAAa;IAErE;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,EAAG,eAAe,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,YAAY,eAAsB;IAErD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAEzE,SAAS,CAAC,6BAA6B,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE9D,SAAS,CAAC,8BAA8B,SAAK;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAkB;IAE5D,SAAS,CAAC,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAEzE,SAAS,CAAC,QAAQ,CAAC,kCAAkC;eAE1C,MAAM;kBAAY,MAAM;OAC/B;IAEJ,SAAS,CAAC,QAAQ,CAAC,4CAA4C,wCAG3D;IAEJ,SAAS,CAAC,kBAAkB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAE9E,SAAS,CAAC,2BAA2B,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAEvF;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAE/E,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE,8BAA8B,CAAC;IAElF;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAElD;;;;;;OAMG;IACH,+BAA+B,IAAI,IAAI;IAUvC,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1D,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAI7E,SAAS,CAAC,gCAAgC,IAAI,IAAI;cAKlC,6BAA6B,CAC3C,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,OAAO,CAAC;cAUH,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAgB3D,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAI1D,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS7E,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAClC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EACvC,GAAG,EAAE,MAAM,GACV,OAAO;gBAKE,MAAM,EAAE,gBAAgB;IAgPpC,wDAAwD;IACxD,SAAS,CAAC,UAAU,IAAI,MAAM;IAM9B,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKlE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;OAIG;IACH,SAAS,CAAC,sCAAsC,CAC9C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAIhB;;;OAGG;IACH,SAAS,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAItG;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,CAAC,GAAG,GAAG,EAC5B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,CAAC,CAAC;IAMb;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/B,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,CAAC,CAAC;IAOb;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,CAAC,EACtB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,CAAC,CAAC;IAOb;;;;;;;OAOG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAClC,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIpB;;;;;;;OAOG;IACH,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,GAAG,QAAQ;cAIxE,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;cAuBrB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,CAAC,kBAAkB,GACnC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAOhD;;;;;;;OAOG;cACa,uCAAuC,CACrD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,EAC5B,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,cAAc,GAAE,mBAA6D,GAC5E,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;cA6ChC,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAyBrC;;;;;;;;;;;;;;;;;;OAkBG;cACa,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,EAC7E,aAAa,EAAE,CAAC,GAAG,EAAE,4BAA4B,KAAK,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EACnG,aAAa,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,KAAK,GACnD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;cAqBrB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,CAAC,kBAAkB,EACpC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAKrC;;;;;;;OAOG;cACa,8BAA8B,CAC5C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhD;;;;;OAKG;cACa,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACpC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;IAMrC;;;OAGG;cACa,yBAAyB,CAAC,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,GAAG,EAAE,4BAA4B,KAAK,OAAO,CAAC,CAAC,CAAC,GACpD,OAAO,CAAC,CAAC,CAAC;YAeC,+BAA+B;IAuC7C;;;;;;;;;;;;;;;;;OAiBG;cACa,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAKf,KAAK,UAAQ,EACb,cAAc,GAAE,mBAA6D,GAC5E,OAAO,CAAC,IAAI,CAAC;IAqEhB;;;;;;;;OAQG;cACa,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA4BhB;;;;;;;;;;;;;OAaG;cACa,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8DrE;;;;;;OAMG;cACa,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAe3G;;;;;;;;;;OAUG;cACa,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAyC3D;;;;;;;;;OASG;cACa,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC;IAyClB;;;;;;;;;;;OAWG;cACa,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EACjD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;OAIG;cACa,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EACjD,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;;;;;;;;;OAaG;cACa,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBnG;;;;;;;;;;;;OAYG;cACa,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAA;KAAE,GACzE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;YAyB5C,iBAAiB;YAcjB,eAAe;IAa7B;gEAC4D;cAC5C,+BAA+B,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IASpF;;;;;OAKG;cACa,qCAAqC,CACnD,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,eAAe,GAAE,MAAW,GAC3B,OAAO,CAAC,OAAO,CAAC;IAkCnB;;;;;;;;OAQG;cACa,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBxG;;;;;;;OAOG;IACH,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAQrD,gEAAgE;IAChE,kBAAkB,IAAI,MAAM,EAAE;IAI9B,mEAAmE;IACnE,wBAAwB,IAAI,MAAM;IAIlC,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;cAIhC,kBAAkB,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;cAO1E,2BAA2B,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;cASvD,iBAAiB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;cAS7C,eAAe,CAC7B,eAAe,EAAE,QAAQ,EACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;cAOH,qBAAqB,CACnC,eAAe,EAAE,QAAQ,EACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IAOb,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;cAM1E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;cAqBlE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBtF;;;;;;;OAOG;IACH,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;cAOxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;cAyBrB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA+G9C,SAAS,CAAC,SAAS,IAAI,IAAI;cASX,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBjE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAQhC,4BAA4B,IAAI,OAAO,CAAC,MAAM,CAAC;IAOrD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyH9D;;;;;;;;;;;;;OAaG;YACW,kBAAkB;cAqBhB,kBAAkB,CAChC,YAAY,EAAE,QAAQ,EACtB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,EAC1C,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,EACzC,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,QAAQ,EAAE,eAAe,CAAA;KAAE,CAAC;IAqE5F;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;cACa,2BAA2B,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KAC5C,CAAC;cAQc,kBAAkB,CAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KAC5C,CAAC;cA4Bc,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC3C,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;IAiHF;;;;;;;;;OASG;YACW,sBAAsB;IAoC9B,kCAAkC,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBrD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;cAoBtB,sCAAsC,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAkClG;;;;;;;;;OASG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASlD,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA4TpF,gBAAgB,IAAI,MAAM;IAI1B,UAAU,IAAI,OAAO;IAIrB,qBAAqB,IAAI,OAAO;IAI1B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvC,WAAW,IAAI,eAAe;IAI9B;;;;;;;;OAQG;IACH,eAAe,IAAI,eAAe;IAIlC,UAAU,IAAI,MAAM,EAAE;IAItB;;;;;;OAMG;IACH,aAAa,IAAI,cAAc;IAIzB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IASlD;;;;;;;;;;;;;;;OAeG;cACa,iBAAiB,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC;IAgB7E;;;;;;;;;;;;OAYG;cACa,kCAAkC,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC;IAU9F;;;;;;;;OAQG;cACa,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IActE;;;;;;;;;;;;;;;;;;;;OAoBG;cACa,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAezE;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAS9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAczD,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWvD,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;IAIpF,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI;IAQ1E,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAS1C;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAS7C,SAAS,CAAC,0BAA0B,IAAI,QAAQ;IAWhD;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
package/dist/evm-adapter-base.js
CHANGED
|
@@ -786,7 +786,13 @@ export class EVMChainAdapterBase {
|
|
|
786
786
|
// `this.chainId` is assigned later in this constructor (after the client is
|
|
787
787
|
// built), so pass a LIVE thunk — resolved at metric-record time — rather
|
|
788
788
|
// than capturing the still-undefined field value here.
|
|
789
|
-
() => this.chainId,
|
|
789
|
+
() => this.chainId, {
|
|
790
|
+
validateEndpoint: async (endpoint) => { await this.ensureConfiguredStaticChainIdValidated(endpoint.provider); },
|
|
791
|
+
// Endpoint-stickiness config. The kill-switch is resolved HERE at the config
|
|
792
|
+
// boundary (LIVE per-check so flipping the env + restart disables it) so the
|
|
793
|
+
// transport core stays free of any process-global dependency.
|
|
794
|
+
stickiness: { isEnabled: () => process.env.DKG_DISABLE_RPC_STICKINESS !== '1' },
|
|
795
|
+
});
|
|
790
796
|
this.hubRotationPoller = new HubRotationPoller({
|
|
791
797
|
readProvider: (label, fn, opts) => this.readProvider(label, fn, opts),
|
|
792
798
|
intervalMs: HUB_ROTATION_POLL_INTERVAL_MS,
|
|
@@ -963,6 +969,33 @@ export class EVMChainAdapterBase {
|
|
|
963
969
|
rpcUsageConsumer: opts?.rpcUsageConsumer ?? label,
|
|
964
970
|
});
|
|
965
971
|
}
|
|
972
|
+
/**
|
|
973
|
+
* Raw PROVIDER read for a TIP-SENSITIVE value — the current head / `latest`
|
|
974
|
+
* block / any read that must stay canonical-fresh and preference-transparent
|
|
975
|
+
* (a lagging endpoint-stickiness backend would make the tip non-monotonic
|
|
976
|
+
* across calls). This is the POSITIVE freshness intent at the call site, so
|
|
977
|
+
* callers pick `readTipProvider` by meaning instead of remembering the
|
|
978
|
+
* transport-internal `skipPreferred` opt-out on a plain `readProvider`.
|
|
979
|
+
*/
|
|
980
|
+
readTipProvider(label, fn, opts) {
|
|
981
|
+
return this.readProvider(label, fn, { ...opts, skipPreferred: true });
|
|
982
|
+
}
|
|
983
|
+
/**
|
|
984
|
+
* Raw PROVIDER read whose `null` is a "not on this endpoint (yet)" signal, not a
|
|
985
|
+
* definitive answer. A `null` FAILS OVER to the other endpoints (a lagging
|
|
986
|
+
* endpoint must not hide an object a healthy one has) WITHOUT de-preferring that
|
|
987
|
+
* endpoint or emitting failover/exhaustion telemetry — because an empty result is
|
|
988
|
+
* not a transport failure. Returns the first NON-null result, or `null` only when
|
|
989
|
+
* EVERY endpoint returned `null` and none had a real transport error. A
|
|
990
|
+
* non-retryable provider error (e.g. `INVALID_ARGUMENT`) or a genuine transport
|
|
991
|
+
* exhaustion PROPAGATES — never masked as `null`. The empty-vs-error distinction
|
|
992
|
+
* (and thus the order-independent all-null decision) is handled by the transport
|
|
993
|
+
* loop via `ReadOpts.isEmptyResult`, so no sentinel exception is tunnelled
|
|
994
|
+
* through the generic failover/telemetry path.
|
|
995
|
+
*/
|
|
996
|
+
readProviderRetryingNull(label, fn, opts) {
|
|
997
|
+
return this.readProvider(label, fn, { ...opts, isEmptyResult: (v) => v == null });
|
|
998
|
+
}
|
|
966
999
|
/**
|
|
967
1000
|
* Rebind a CONTRACT to a `provider` for one per-endpoint VIEW read, leaving the
|
|
968
1001
|
* boot-bound `this.contracts.*` handle untouched. The sole remaining base caller
|
|
@@ -1892,8 +1925,21 @@ export class EVMChainAdapterBase {
|
|
|
1892
1925
|
}
|
|
1893
1926
|
}
|
|
1894
1927
|
async getBlockTimestamp(blockNumber) {
|
|
1895
|
-
|
|
1896
|
-
|
|
1928
|
+
// A CONCRETE (already-mined receipt) block — NOT the tip, so it uses normal
|
|
1929
|
+
// endpoint stickiness (the endpoint that produced the receipt is the one most
|
|
1930
|
+
// likely to already have the block). It is NOT a `skipPreferred` tip read:
|
|
1931
|
+
// forcing canonical/primary-first here would instead risk querying a lagging
|
|
1932
|
+
// primary that returns `null` for a block a healthy backup already has, and
|
|
1933
|
+
// `null` isn't a retryable transport error, so it would surface as a bogus
|
|
1934
|
+
// `blockTimestamp: 0`. Treat a `null` block as a FAILOVER condition so another
|
|
1935
|
+
// endpoint that has the block can serve it; only if EVERY endpoint lacks it (or
|
|
1936
|
+
// transport is down) do we fall back to the best-effort `0` callers tolerate.
|
|
1937
|
+
// A `null` block (this endpoint hasn't imported it yet) fails over to another
|
|
1938
|
+
// endpoint that has it; best-effort `0` only when EVERY endpoint lacks it and
|
|
1939
|
+
// no transport error occurred. Non-retryable / transport-exhaustion errors
|
|
1940
|
+
// propagate (never masked as a bogus `0`). Order-independent — see the helper.
|
|
1941
|
+
const block = await this.readProviderRetryingNull('getBlock', (p) => p.getBlock(blockNumber));
|
|
1942
|
+
return block?.timestamp != null ? Number(block.timestamp) : 0;
|
|
1897
1943
|
}
|
|
1898
1944
|
// =====================================================================
|
|
1899
1945
|
// Identity
|
|
@@ -2638,7 +2684,11 @@ export class EVMChainAdapterBase {
|
|
|
2638
2684
|
return !!this.contracts.randomSampling && !!this.contracts.randomSamplingStorage;
|
|
2639
2685
|
}
|
|
2640
2686
|
async getBlockNumber() {
|
|
2641
|
-
|
|
2687
|
+
// TIP-SENSITIVE: the current head drives the event-lane cursor, proof-
|
|
2688
|
+
// challenge block, and finalization reads. A lagging sticky backend would
|
|
2689
|
+
// make the head non-monotonic across calls (poller moving backwards / re-
|
|
2690
|
+
// scanning), so read canonical-order + preference-transparent.
|
|
2691
|
+
return this.readTipProvider('getBlockNumber', (p) => p.getBlockNumber());
|
|
2642
2692
|
}
|
|
2643
2693
|
getProvider() {
|
|
2644
2694
|
return this.primaryProvider;
|