Identity Proofs (EVM)
How we represent KYC/AML eligibility on EVM networks using attestation-led identity proofs with EAS + PolicyEngine, separating long-term KYC verification timestamps from short-term sanctions epochs.
Background
On EVM chains, Fairway doesnβt mint identity tokens. Instead, compliance status is expressed through EAS attestations that encode:
When the user last passed KYC (
kyc_verified_at).Current sanctions/risk freshness (
sanctions_epoch).Optional compliance claims (jurisdiction, accreditation, risk score).
Commitment root linking to Midnight proofs.
These attestations are:
Issued off-chain by the Fairway Cloud Agent (Witness) after reading KYC data from decentralized storage.
Anchored on-chain in the EAS registry.
Referenced in dApps through the Fairway PolicyEngine:
(bool ok, uint32 reason) = policyEngine.isEligible(user, ruleBytes);
Components
EAS (Ethereum Attestation Service) β canonical registry of typed attestations.
Fairway Verifier β contract that validates attestations, issuer trust, timestamp, and sanctions epoch.
PolicyEngine β single-call YES/NO eligibility check for dApps.
IdentityRegistry β governance-controlled list of trusted issuers and rules.
Optional faΓ§ade tokens β ERC-5484 / ERC-5192 for UX or whitelist compatibility.
Flow
Example Attestation Schema
Rule Encoding
Policies are defined once in the IdentityRegistry.
dApps pack rules as ruleBytes:
Validator Checks
Attestation validity β issuer signature + schema match.
KYC freshness β
block.timestamp - kyc_verified_at <= maxKycAge.Sanctions freshness β
sanctions_epoch == latestEpochRoot.Other claims β jurisdiction, accreditation, or risk score thresholds.
Benefits
PII-free β no sensitive docs stored on-chain.
Separation of duties β KYC timestamp (long-lived) + sanctions epoch (short-lived).
Compliant β FATF/AMLD rules enforced per jurisdiction by dApp-defined max age.
Interoperable β compatible with ERC-3643 TransferManager, EAS tooling, and SBT faΓ§ades.
Simple DX β dApps use a single
isEligible()call.Auditable β
commitmentRootlinks attestations back to Midnight ZK proofs.
Next Steps
See the ERC-3643 Adapter for RWA integration.
Last updated
Was this helpful?

