LIVE
TASKS 24H065 policiesCOMPLIANT0.0%0 attestedOPERATORS32 signingRESTAKED4e-15 NEWT—MEDIAN RESPONSE36sp99 48.0sRE-VERIFIED 24H—0 invalidatedBLOCK11,958,300Sepolia
NEWTON PROTOCOL · POLICY CLIENT

0x12e8…13b6revision 4 · current

0x12e8e484270477431781fef27470b38551d113b6 · 2 of 8 policies · Sepolia
REVISION
4 of 4
POLICIES
2 of 8
DISTINCT
2
RESPONSE EXPIRY
50,000 blocks
CHAIN
Sepolia
TASKS · 24H
0
ALLOW RATE
—
Every policy must allowFail-closed, and no short-circuit: every policy is evaluated even after one has denied, and a single denial denies the intent. The response expires 50,000 blocks after its reference block — the shortest expireAfter in the set, on slot 0 and 1.

Policies — 2

one Rego + WASM pair per slot
  1. 0
    0xfaa90272072e0865dc995a3beacf2d0358abe2b50xfaa9…e2b5not in factory registry50,000 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xc834c184…
    apy_z_maxnot in schema4
    risk_score_floornot in schema60
    deny_on_corruptednot in schematrue
    deny_on_critical_flagnot in schematrue
    tvl_drawdown_7d_max_pctnot in schema50
    tvl_drawdown_24h_max_pctnot in schema25
    deny_on_allocation_changenot in schematrue
    policyParams — 183 bytes on chain0x7b226170795f7a5f6d6178223a342c2264656e795f6f6e5f616c6c6f636174696f6e5f6368616e6765223a747275652c2264656e795f6f6e5f636f72727570746564223a747275652c2264656e795f6f6e5f637269746963616c5f666c6167223a747275652c227269736b5f73636f72655f666c6f6f72223a36302c2274766c5f64726177646f776e5f3234685f6d61785f706374223a32352c2274766c5f64726177646f776e5f37645f6d61785f706374223a35307d
  2. 1
    0x7033c93416f1832c66631483ef5cb20ce44aa68c0x7033…a68cnot in factory registry50,000 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xc2b0b441…
    max_abs_dev_pctnot in schema0.005
    deny_on_collapsednot in schematrue
    deny_on_stale_datanot in schematrue
    max_recent_depeg_eventsnot in schema2
    max_consecutive_days_below_pegnot in schema3
    policyParams — 139 bytes on chain0x7b2264656e795f6f6e5f636f6c6c6170736564223a747275652c2264656e795f6f6e5f7374616c655f64617461223a747275652c226d61785f6162735f6465765f706374223a302e3030352c226d61785f636f6e73656375746976655f646179735f62656c6f775f706567223a332c226d61785f726563656e745f64657065675f6576656e7473223a327d
Each module is evaluated against its own input — {"params": <this slot’s policyParams>, "wasm": <this slot’s WASM output>}. There is no shared data.wasm object and no cross-slot namespace, so slot 1 cannot read slot 0’s WASM output and a policy cannot be written to depend on its neighbours.
SET IDENTITY
POLICY_SET_DOMAINkeccak256("newton.policy.set")
chainId11155111
revision4
policies0xfaa9…e2b5@50000, 0x7033…a68c@50000
Task managerreads getPolicies() at task creation, then never again
policyId = keccak256(abi.encode(POLICY_SET_DOMAIN, chainId, client, revision, policies)), where policies is the complete ordered array with each entry’s parameters and expiry. Order is part of it, so a reorder alone is a new id.
WHAT A TASK FREEZES
A task carries this exact ordered set as its own snapshot, plus one WASM input per slot. Response validation reads that snapshot and never re-reads the client, so reconfiguring mid-flight cannot change what an in-flight task means — and replay proves it by recomputing the policyId over the snapshot and comparing against the task’s own.
The bound is MAX_POLICIES = 8, enforced on chain and mirrored in the operator, the enclave and the proof guest. An oversize set is rejected, never truncated, and an empty one is rejected too — there is no vacuous allow.

Configuration history

4 writes · newest first
RevPolicy setChangePoliciesConfigured byBlockTasks
4 · current0xc2d17e57…ff98identical re-apply0xfaa90272072e0865dc995a3beacf2d0358abe2b5 · 0x7033c93416f1832c66631483ef5cb20ce44aa68c—11,767,2620x801e…123c0
30xcf6b6fb6…fe71identical re-apply0xfaa90272072e0865dc995a3beacf2d0358abe2b5 · 0x70b9e9cd537c8f76b2bdfb70015e7dd090821599—11,767,2180x8159…37c70
20xbdbaa20c…7a92identical re-apply0x542f13b88deb8cefd60a09ea038476de72713f97 · 0x70b9e9cd537c8f76b2bdfb70015e7dd090821599—11,767,1990x96a5…0d5f0
10x9610b3f2…5d78first set0xb239ddc8ab6fbe07aa5f034f2f430bccb889ce98 · 0xc4c38871acc32a0b2fd688082332897a5e1ded74—11,767,1810xe58d…4a460
Every write mints a new policyId and revokes every attestation bound to the previous one, because the id commits the client, the chain, the revision counter and the exact ordered list — keccak256(POLICY_SET_DOMAIN, chainId, client, revision, policies). Revision 4 is the only one whose attestations are still spendable. One write here re-applied a byte-identical list. PoliciesUpdated fires anyway and the revision advances anyway, so that write changed nothing about the policies and still killed every outstanding authorization.

Task history — every revision

no tasksExport CSVJSON
No tasks match this scope yet.
The export carries one row per task with the frozen policy set in slot order, and it is the complete filtered history rather than this page. It has no per-policy verdict column: TaskResponse.allowed is a single boolean for the whole set, so which policy denied a task is in no record.