LIVE
TASKS 24H08 policiesCOMPLIANT0.0%0 attestedOPERATORS22 signingRESTAKED4e-15 NEWT—MEDIAN RESPONSE——RE-VERIFIED 24H—0 invalidatedBLOCK26,235,941Ethereum
NEWTON PROTOCOL · POLICY CLIENT

0x77ad…5316revision 2 · current

0x77ad58b33bf669829b809b1d4704447551ae5316 · 2 of 8 policies · Ethereum
REVISION
2 of 2
POLICIES
2 of 8
DISTINCT
2
RESPONSE EXPIRY
7,200 blocks
CHAIN
Ethereum
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 7,200 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
    0x3b753ee8eb688dc1d01dd6baa48c181e29823d2e0x3b75…3d2enot in factory registry7,200 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0x58b3ce4f…
    tokennot in schema0xe42e3458283032c669c98e0d8f883a92fc64fe22
    targetnot in schema0xb1ad5f82407bc0f19f42b2614fb9083035a36b69
    chain_idnot in schema1
    max_amountnot in schema100000000000
    max_slippagenot in schema2
    policyParams — 166 bytes on chain0x7b22636861696e5f6964223a2231222c226d61785f616d6f756e74223a3130303030303030303030302c226d61785f736c697070616765223a322c22746172676574223a22307862316164356638323430376263306631396634326232363134666239303833303335613336623639222c22746f6b656e223a22307865343265333435383238333033326336363963393865306438663838336139326663363466653232227d
  2. 1
    0xea71306356d455acfb192f1533c38aacc0e22f850xea71…2f85not in factory registry7,200 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xe65b8682…
    max_scorenot in schema50
    source_versionnot in schemav1
    policyParams — 38 bytes on chain0x7b226d61785f73636f7265223a35302c22736f757263655f76657273696f6e223a227631227d
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")
chainId1
revision2
policies0x3b75…3d2e@7200, 0xea71…2f85@7200
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

2 writes · newest first
RevPolicy setChangePoliciesConfigured byBlockTasks
2 · current0x1bb4b847…6631identical re-apply0x3b753ee8eb688dc1d01dd6baa48c181e29823d2e · 0xea71306356d455acfb192f1533c38aacc0e22f85—26,143,5810xd713…a2540
10xb3e7b69f…7232first set0x1bb3b7c84cf1e2168a1041687019043fecea28fb—26,056,8300x579b…fe350
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 2 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.