Newton Protocol cross-chain policy verification across Ethereum and destination chains
Newton Protocol supports policy evaluation across multiple chains. The AVS operators run on Ethereum (the source chain), while PolicyClient contracts can be deployed on destination chains like Base Sepolia.
Where Newton AVS operators are registered and BLS keys are managed
Ethereum Sepolia
Destination chain
Where PolicyClient contracts are deployed and transactions execute
Base Sepolia, Ethereum Sepolia
The source chain provides the security foundation (operator registrations, staking, slashing). Destination chains consume attestations via lightweight verifier contracts that use cached operator state.
The operator set from the source chain must be synced to each destination chain:
A Table Syncer service reads operator state from Ethereum (BLS keys, stake weights)
It computes a BN254OperatorSetInfo containing operatorInfoTreeRoot, numOperators, aggregatePubkey, and totalWeights
It calls confirmGlobalTableRoot() and updateOperatorTable() on the destination chain’s ECDSAOperatorTableUpdater
The BN254CertificateVerifier uses this cached state for certificate verification
All operators must be synced in a single atomic update. Sequential calls to updateOperatorTable() overwrite numOperators, aggregatePubkey, and operatorInfoTreeRoot on each call, causing intermediate states where non-signer Merkle proofs fail validation (InvalidOperatorIndex errors). Always batch all operator updates into one transaction.
Cross-chain attestations use BN254 elliptic curve certificates. BN254 (alt_bn128) is the curve used by Ethereum’s pairing precompiled contracts (EIP-196/EIP-197), enabling efficient on-chain verification on any EVM chain.A BN254Certificate contains:
Field
Description
referenceTimestamp
Timestamp binding the certificate to a specific operator set snapshot
messageHash
Hash of the task response being attested
signature
BN254 G1 point — the aggregate BLS signature
apk
BN254 G2 point — the aggregate public key of signing operators
nonSignerWitnesses
Merkle proof-based witnesses for operators who did not sign
The verifier validates certificates by:
Checking referenceTimestamp freshness against maxStalenessPeriod
Loading cached BN254OperatorSetInfo from the synced operator table
Verifying each non-signer’s Merkle proof against operatorInfoTreeRoot
Subtracting non-signer stakes from totals to compute signer stake
If an attestation on a destination chain is disputed, the challenge flows across both chains:
Destination chain: Challenger calls raiseAndResolveChallenge() — the attestation is invalidated, but no slashing occurs (destination chains have no ServiceManager)
Source chain: Challenger relays the same challenge to Ethereum — actual slashing occurs via the source chain’s slashing mechanism