Skip to main content
Newton Protocol is a policy engine for onchain transaction authorization, built as an EigenLayer Actively Validated Service (AVS). Before building with Newton, it helps to understand how the core pieces fit together.

How Newton Works

You write rules (policies) that define when a transaction should be allowed. When a user submits a transaction (intent), Newton’s decentralized operator network evaluates it against your policy, and returns a cryptographic proof (attestation) that your smart contract verifies before executing.

Key Concepts

Policy

A Policy is a Rego program that defines the conditions an Intent must meet to be approved. Policies are stored on IPFS (referenced by CID) and are reusable across multiple PolicyClients. Policies can reference two data sources:
  • data.params — configuration parameters set by the PolicyClient owner (e.g., spend limits, allowlists)
  • data.data — runtime data fetched by PolicyData WASM oracles (e.g., token prices, KYC status)

Intent

An Intent is a proposed transaction submitted for policy evaluation. It contains standard EVM fields:
FieldDescription
fromTransaction sender address
toTransaction recipient address
valueWei value to transfer
dataTransaction calldata
chain_idTarget chain ID
function_signatureABI-encoded function signature

Task

A Task pairs an Intent with its Policy for evaluation. Tasks are the atomic unit of evaluation in Newton — each Task is either compliant or non-compliant.

Attestation

An Attestation is a cryptographic proof (BLS aggregate signature) that Newton operators evaluated a policy and approved or rejected the Intent. Attestations contain the taskId, policyId, evaluation result, and expiration block.

PolicyClient

A PolicyClient is a smart contract that validates attestations before executing transactions. You integrate Newton into your contract by inheriting NewtonPolicyClient and calling _validateAttestation() or _validateAttestationDirect() in your function modifiers.

PolicyData

A PolicyData oracle is a WASM component that fetches or computes external data at evaluation time. The output is fed to the Rego policy as data.data. Examples include fetching token prices, checking sanctions lists, or verifying KYC status.

Operator

An Operator is an EigenLayer node registered with the Newton AVS. Operators independently evaluate tasks, and their individual BLS signatures are aggregated into a single consensus proof once quorum is reached.

Gateway

The Gateway is the JSON-RPC 2.0 endpoint that receives tasks and coordinates operator evaluation. All SDK and CLI interactions go through the Gateway.

Evaluation Lifecycle

1

Developer deploys a Policy

Publish a reusable policy to the Newton registry with Rego logic, schema, and optional PolicyData dependencies. The policy is stored on IPFS and referenced by CID.
2

User configures a PolicyClient

Deploy a PolicyClient smart contract with a chosen policy, configuration parameters (thresholds, allowlists), and expiration settings.
3

Caller submits a Task

An Intent is paired with the PolicyClient and sent to the Newton Gateway via the SDK or RPC API.
4

Operators evaluate

AVS operators independently fetch PolicyData, evaluate the Rego policy, and produce individual BLS signatures. The Aggregator collects signatures into a single consensus proof once quorum is reached.
5

Attestation returned

The aggregated attestation is returned to the caller, who submits it on-chain. The contract validates the proof and executes or blocks the transaction.

Architecture Layers

LayerPurposeComponents
Policy LayerDefines policies, schemas, rules, thresholds, offchain inputsPolicy Registry, Policy Library
Compute & Consensus LayerOffchain policy evaluation by AVS operators, outputs verifiable proofsAVS Operators, Aggregator, Consensus Proofs
Verification & Execution LayerOnchain proof verification and outcome enforcementNewtonVerifier, PolicyClient, SDKs

Validation Methods

When your smart contract receives an attestation, you validate it using one of two methods:
MethodFunctionTrade-off
Standard_validateAttestation(attestation, proof)Uses PolicyClientRegistry lookup — more gas but automatically resolves contract configuration
Direct_validateAttestationDirect(attestation, proof)Bypasses registry — less gas but requires the contract to manage its own policy reference

Supported Chains

ChainChain IDStatus
Ethereum Sepolia11155111Active
Base Sepolia84532Active
Ethereum Mainnet1Forthcoming
Mainnet support is not yet available. All examples and deployments in these docs target Sepolia testnets.

Next Steps

Quickstart

Simulate your first policy evaluation in 5 minutes

Integration Guide

End-to-end walkthrough from policy to production

SDK Reference

Full TypeScript SDK documentation