Registry EVVM Contract Overview
The Registry EVVM Contract is the central registry for EVVM deployments across testnets, implementing a dual-tier registration system with time-delayed governance.
Registration System
Public Registration (IDs 1000+)
- Open Access: Anyone can register EVVM instances
- Auto-Incrementing IDs: Sequential assignment starting from 1000
- Chain Whitelisting: Only whitelisted testnet chain IDs allowed
- Duplicate Prevention: Same address can't register twice on same chain
Whitelisted Registration (IDs 1-999)
- SuperUser Only: Reserved for official EVVM deployments
- Custom ID Assignment: Specific IDs within reserved range
- Enhanced Control: Additional validation for official instances
Governance
- 7-Day Time Delays: Critical operations require proposal and acceptance periods
- SuperUser Changes: Changing superUser requires time-delayed proposal
- Contract Upgrades: Implementation upgrades require proposals
- Security Layer: Prevents immediate changes, allows community review
Key Features
Registration
registerEvvm(): Public registration with auto-incrementing IDssudoRegisterEvvm(): SuperUser registration with custom IDsregisterChainId(): Chain ID whitelisting management
Governance
proposeSuperUser(): Propose new superUseracceptSuperUser(): Accept pending proposalproposeUpgrade(): Propose contract upgradeacceptProposalUpgrade(): Accept upgrade proposal
Query Functions
getEvvmIdMetadata(): Retrieve EVVM registration metadatagetWhiteListedEvvmIdActive(): List all active whitelisted registrationsgetPublicEvvmIdActive(): List all active public registrationsisChainIdRegistered(): Check if chain ID is whitelistedisAddressRegistered(): Check if address is already registered
Security Model
Access Control
- SuperUser Privileges: Reserved functions for administrative control
- Public Access: Open registration within defined parameters
- Time Delays: 7-day waiting period for critical changes
Input Validation
- Address Validation: Prevents zero addresses in registrations
- Chain ID Validation: Ensures only valid chain IDs are used
- Duplicate Prevention: Prevents multiple registrations of same address
Upgrade Safety
- UUPS Pattern: Implements OpenZeppelin's upgradeable proxy pattern
- Initialization Protection: Prevents direct initialization of implementation
- Governance Controls: Time-delayed upgrades with proposal system
Data Structure
Metadata Structure
struct Metadata {
uint256 chainId; // Chain ID where EVVM is deployed
address evvmAddress; // Contract address of the EVVM
}
Governance Proposal Structure
struct AddressTypeProposal {
address current; // Currently active address
address proposal; // Proposed new address
uint256 timeToAccept; // Timestamp when proposal can be accepted
}
Use Cases
For dApp Developers
- Discover available EVVM instances across different testnets
- Verify official vs community EVVM deployments
- Query metadata for specific EVVM instances
For EVVM Operators
- Register new EVVM deployments for community use
- Track and manage multiple EVVM instances
- Participate in decentralized EVVM ecosystem
For Ecosystem Governance
- Manage official EVVM deployments through reserved IDs
- Control testnet access through chain ID whitelisting
- Implement secure governance changes with time delays
This registry system enables a decentralized yet controlled approach to EVVM deployment management, balancing open access with security and quality control.