LIVE
TASKS 24H265 policiesCOMPLIANT100.0%0 attestedOPERATORS32 signingRESTAKED0.04 NEWT—MEDIAN RESPONSE36sp99 36.0sRE-VERIFIED 24H—0 invalidatedBLOCK11,957,809Sepolia
NEWTON PROTOCOL · POLICY CLIENT

0xfa2b…2880revision 6 · current

0xfa2b8f045eb50cc6f8e13e82e10a41ef45732880 · 1 of 8 policies · Sepolia
REVISION
6 of 6
POLICIES
1 of 8
DISTINCT
1
RESPONSE EXPIRY
300 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 300 blocks after its reference block — the shortest expireAfter in the set, on slot 0.

Policies — 1

one Rego + WASM pair per slot
  1. 0
    0x3768c0483fa52a22af462363677f06c4c8a5f1c80x3768…f1c8not in factory registry300 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xf778a22b…
    hooknot in schema0xfa2b8f045eb50cc6f8e13e82e10a41ef45732880
    sheetnot in schemahttps://docs.google.com/spreadsheets/d/1lT3cmztG7dxTgnNDiVZjbE84UHtKogH07W6XWnbJd2Y/gviz/tq?tqx=out:csv
    max_age_snot in schema600
    swap_selectornot in schema0x9d555cf7
    threshold_hexnot in schema0000000000000000000000000000000000000000000000000000000000000000
    deposit_selectornot in schema0xf08a814e
    policyParams — 327 bytes on chain0x7b22737761705f73656c6563746f72223a2230783964353535636637222c226465706f7369745f73656c6563746f72223a2230786630386138313465222c227468726573686f6c645f686578223a2230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c227368656574223a2268747470733a2f2f646f63732e676f6f676c652e636f6d2f7370726561647368656574732f642f316c5433636d7a744737647854676e4e4469565a6a624538345548744b6f67483037573658576e624a6432592f6776697a2f74713f7471783d6f75743a637376222c22686f6f6b223a22307866613262386630343565623530636336663865313365383265313061343165663435373332383830222c226d61785f6167655f73223a3630307d
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
revision6
policies0x3768…f1c8@300
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

6 writes · newest first
RevPolicy setChangePoliciesConfigured byBlockTasks
6 · current0x0680efe4…958bidentical re-apply0x3768c0483fa52a22af462363677f06c4c8a5f1c8—11,942,2580x842a…e0c80
50xd7ac151e…89d4identical re-apply0x9ea65507248bf0f6d37dad6162df64cc632b9d6c—11,919,8370x99dd…26160
40x19ef800b…f9fbidentical re-apply0xe3c043a6039ac44c69f23e2db5ad09e96f220c50—11,913,1490xe69a…79b00
30x0563ca75…e933identical re-apply0xab86e652ce9d52cb22d6efc44bf32ffebd47d61a—11,912,4290xfbec…006e0
20x8275947b…aed5identical re-apply0x019703795cbd6974bb5e6800082e258b84361eba—11,907,2890xd9f3…75240
10x314e0caf…6eb0first set0x1df484220ad43701cab499a03aff0e5721c34fe6—11,898,4130x29dc…962d0
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 6 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.