Smart Contracts
The Open Internet Protocol (OIP) utilizes Ethereum-based smart contracts to securely manage essential operations, including user identity management, application definitions, access control, and node interactions. These onchain contracts ensure verifiable interoperability and trust, enabling seamless user experiences across different applications built on OIP.
Motivation
Given the ephemeral nature of offchain data in OIP, OIP’s onchain contracts provide a persistent layer of critical data. This persistence ensures that key identity and authorization states remain reliably accessible and verifiable, even if offchain nodes prune data or experience outages. Authentication and identity control remain fully self-sovereign through Ethereum’s externally owned accounts (EOAs), empowering users with absolute control and autonomy over their digital identities.
OIP smart contracts emphasize modularity and flexibility. They separate identities and node identifiers from users’ wallet addresses, enhancing user experience through features like delegation and background execution of transactions. This design allows applications to offload authentication tasks from the user-facing interface, enabling delegated actions and efficient background execution.
Contracts
- OIPAppRegistry.sol
- OIPIdRegistry.sol
- OIPNameRegistry.sol
- OIPAccessRegistry.sol
- OIPNodeRegistry.sol
- OIPSigValidator.sol
- UniversalSigValidator.sol
Parts of the Portrait Protocol are currently being migrated to the Open Internet Protocol and planned to complete in Q2 2025. Read more about the migration here .
Core Contracts
The core contracts are responsible for managing the core interactions between users and OIP.
Contract | Objective |
---|---|
OIPAppRegistry.sol | A global registry managing the unique identifiers, versions and messaging standards for apps built on OIP. |
OIPIdRegistry.sol | A global registry managing OIP identities and their associated data. |
OIPNameRegistry.sol | A global registry managing human-readable names linked to OIP identities. |
OIPAccessRegistry.sol | A global registry managing delegation and access control policies for OIP identities. |
OIPNodeRegistry.sol | A global registry managing edge node addresses linked to OIP identities. |
Libraries and Utils
The libraries and utils are used by the core contracts to provide additional functionality and security.
Contract | Objective |
---|---|
OIPSigValidator.sol | Library for validating signatures on OIP messages. |
UniversalSigValidator.sol | Validates account abstraction signatures, forked from the EIP-6492 standard. |
Deployments
All contracts have been deployed on the Base Sepolia testnet.
Contract | Address |
---|---|
OIPAppRegistry.sol | Q2 2025 |
OIPIdRegistry.sol | 0x3cDc03BEb79ba3b9FD3b687C67BFDE70AFf46eBF |
OIPNameRegistry.sol | 0xc788716466009AD7219c78d8e547819f6092ec8F |
OIPAccessRegistry.sol | 0xa837e9C834f23b04061b901814Af872291883ee7 |
OIPNodeRegistry.sol | 0x935f45e99eA6EeFE4C86845C996e27630b31C5Bb |
Contract | Address |
---|---|
OIPSigValidator.sol | 0xD2407EBde1B1ffE19da02710446f1449C0669Df2 |
UniversalSigValidator.sol | 0xEE5542f87475A5F08d1450941c6a4470FbE7949E |
Open Source
To ensure transparency and security, the smart contracts are licensed under the MIT License. The contracts are available on GitHub .
Modularity and Upgradability
The contracts are designed to be modular and upgradable. The core contracts follow the UUPS standard, allowing for easy upgrades and maintenance. Furthermore, the contracts are compliant with account abstraction, building on top of the EIP-6492 standard.