LIVE
TASKS 24H6,48165 policiesCOMPLIANT0.0%0 attestedOPERATORS32 signingRESTAKED4e-15 NEWT—MEDIAN RESPONSE36sp99 48.0sRE-VERIFIED 24H—0 invalidatedBLOCK11,957,699Sepolia
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
60.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 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…e0c8162
50xd7ac151e…89d4identical re-apply0x9ea65507248bf0f6d37dad6162df64cc632b9d6c—11,919,8370x99dd…261655
40x19ef800b…f9fbidentical re-apply0xe3c043a6039ac44c69f23e2db5ad09e96f220c50—11,913,1490xe69a…79b064
30x0563ca75…e933identical re-apply0xab86e652ce9d52cb22d6efc44bf32ffebd47d61a—11,912,4290xfbec…006e8
20x8275947b…aed5identical re-apply0x019703795cbd6974bb5e6800082e258b84361eba—11,907,2890xd9f3…75241
10x314e0caf…6eb0first set0x1df484220ad43701cab499a03aff0e5721c34fe6—11,898,4130x29dc…962d49
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

50 of 343 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.