LIVE
TASKS 24H08 policiesCOMPLIANT0.0%0 attestedOPERATORS22 signingRESTAKED2k NEWT—MEDIAN RESPONSE——RE-VERIFIED 24H—0 invalidatedBLOCK26,236,226Ethereum
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
0.3%
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…a2546
10xb3e7b69f…7232first set0x1bb3b7c84cf1e2168a1041687019043fecea28fb—26,056,8300x579b…fe3510
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

50 of 1,730 matchingExport CSVJSON
TaskSenderPolicyFunctionSignersResultAge
← Newer50 per page · newest firstOlder →
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.