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

0x60b8…c364revision 1 · current

0x60b8dbf86bf6eff89e94224e8cf9bbb08e17c364 · 4 of 8 policies · Sepolia
REVISION
1 of 1
POLICIES
4 of 8
DISTINCT
4
RESPONSE EXPIRY
50 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 blocks after its reference block — the shortest expireAfter in the set, on slot 0 and 1 and 2 and 3.

Policies — 4

one Rego + WASM pair per slot
  1. 0
    0x0a9c74d82dd04e11c8ce510d758e5f620ac5cc060x0a9c…cc06not in factory registry50 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0x0377e650…
    adapternot in schema0x1E6C07aa0618757411048d6ea74908f82A9ebb6B
    borrow_assetnot in schema0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8
    borrow_recipientnot in schema0x1e6c07aa0618757411048d6ea74908f82a9ebb6b
    max_trade_amountnot in schema25000000000000000000000
    check_trade_limitnot in schematrue
    policyParams — 250 bytes on chain0x7b2261646170746572223a22307831453643303761613036313837353734313130343864366561373439303866383241396562623642222c22626f72726f775f6173736574223a22307839346139643961633861323235333465336661636139663465376632653263663835643565346338222c22626f72726f775f726563697069656e74223a22307831653663303761613036313837353734313130343864366561373439303866383261396562623662222c22636865636b5f74726164655f6c696d6974223a747275652c226d61785f74726164655f616d6f756e74223a223235303030303030303030303030303030303030303030227d
  2. 1
    0xa29560a15aa6dd104fdbe0f9e2a5562ca410f67a0xa295…f67anot in factory registry50 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xe8929456…
    enablednot in schematrue
    whitelist_contractnot in schema0x60b4f754235b1d66099Ac5fb1115777A7e1Eb6F8
    policyParams — 82 bytes on chain0x7b22656e61626c6564223a747275652c2277686974656c6973745f636f6e7472616374223a22307836306234663735343233356231643636303939416335666231313135373737413765314562364638227d
  3. 2
    0x4e3877488aa4dfa98c94f8909bfd490be5df6d5c0x4e38…6d5cnot in factory registry50 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0xf6b467bd…
    deny_on_sanctionednot in schematrue
    risk_categories_blocklistnot in schema[]
    deny_on_high_risk_categorynot in schemafalse
    policyParams — 93 bytes on chain0x7b2264656e795f6f6e5f686967685f7269736b5f63617465676f7279223a66616c73652c2264656e795f6f6e5f73616e6374696f6e6564223a747275652c227269736b5f63617465676f726965735f626c6f636b6c697374223a5b5d7d
  4. 3
    0x54835dd59376c3905dd376b9c6c404dd3b33ba3b0x5483…ba3bnot in factory registry50 blocksbounds set expiry
    wasmnone — pure Regorego
    — rules— denyno WASMspecHash 0x7b1d4b41…
    event_slugnot in schemafed-decision-in-october-20260617190323537
    max_expected_bpsnot in schema15
    max_hike_probabilitynot in schema0.6
    policyParams — 107 bytes on chain0x7b226576656e745f736c7567223a226665642d6465636973696f6e2d696e2d6f63746f6265722d3230323630363137313930333233353337222c226d61785f65787065637465645f627073223a31352c226d61785f68696b655f70726f626162696c697479223a302e367d
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
revision1
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

1 write · newest first
RevPolicy setChangePoliciesConfigured byBlockTasks
1 · current0xd78d922f…9e69first set0x0a9c74d82dd04e11c8ce510d758e5f620ac5cc06 · 0xa29560a15aa6dd104fdbe0f9e2a5562ca410f67a · 0x4e3877488aa4dfa98c94f8909bfd490be5df6d5c · 0x54835dd59376c3905dd376b9c6c404dd3b33ba3b—11,909,2270xd2ff…cdb40
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 1 is the only one whose attestations are still spendable.

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.