x/eas — chain-internal EAS bridge
Internal helper that lets PCL evaluate EAS attestations wherever it checks an EAS_POLICY — before, during, and after execution. dApp callers do not interact with x/eas directly — they read the EAS contract.
x/eas is a chain-internal helper that lets PCL evaluate KYC/KYB attestations wherever it checks an EAS_POLICY: before execution (at RPC submission and again in the chain's pre-execution checks), during execution (in the PCL preCall / postCall hooks and in the policy-aware Privacy precompile), and after execution. It does NOT add a developer-facing surface — dApps that need to read attestations should call the EAS contract preinstall at 0x...007 (or the Indexer at 0x...008 for reverse lookups) directly via JSON-RPC, exactly as on any other EVM chain.
Key Features
In-chain attestation reads
Performs view calls into the EAS / Indexer contracts so PCL's EAS_POLICY evaluator can resolve attestation status inside the chain at every stage where it runs — before, during, and after execution.
No data duplication
Stores no attestation state of its own — every read goes against the EAS / Indexer contracts, so the chain layer always sees the same data dApps see.
Read-only
Cannot create or revoke attestations — issuance is the EAS contract's job, called via standard EVM transactions.
Architecture
graph TD
PCL["PCL<br/>(EAS_POLICY evaluator)"] -->|asks for the most recently indexed UID| IDX["EAS Indexer<br/>0x…008"]
PCL -->|reads that one attestation| EAS["EAS contract<br/>0x…007"]
IDX -->|newest UID| PCL
EAS -->|attestation data| PCL
PCL -->|policy passes / fails| TX["The transaction"]
classDef evm fill:#0096AA,stroke:#0096AA,color:#fff;
classDef precompile fill:#FF8C50,stroke:#FF8C50,color:#fff;
class EAS,IDX,TX evm;
class PCL precompile; Whenever PCL evaluates an EAS_POLICY — before, during or after execution — it asks the EAS Indexer for the subject's most recently indexed attestation under the policy's schema, reads that one attestation from the EAS contract, and the policy fails if it is missing, revoked or expired. An older valid attestation does not count. Whether a failed policy rejects the transaction depends on how it is composed (an OR of policies can still pass). dApps call the same contracts directly.
How dApps interact with EAS on Maroo
- Write (issue, revoke): send EVM transactions to the EAS contract at
0x...007. - Read (single attestation):
eth_callEAS.getAttestation(uid)at0x...007. - Reverse lookup ("what attestations does wallet X have?"): use the Indexer at
0x...008(getReceivedAttestationUIDCount,getReceivedAttestationUIDs).
x/eas is an internal helper for PCL — you do not need to know it exists when building a dApp. See querying-eas-data for the canonical client patterns.