Skip to Content

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.

ContractObjective
OIPAppRegistry.solA global registry managing the unique identifiers, versions and messaging standards for apps built on OIP.
OIPIdRegistry.solA global registry managing OIP identities and their associated data.
OIPNameRegistry.solA global registry managing human-readable names linked to OIP identities.
OIPAccessRegistry.solA global registry managing delegation and access control policies for OIP identities.
OIPNodeRegistry.solA 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.

ContractObjective
OIPSigValidator.solLibrary for validating signatures on OIP messages.
UniversalSigValidator.solValidates account abstraction signatures, forked from the EIP-6492 standard.

Deployments

All contracts have been deployed on the Base Sepolia testnet.

ContractAddress
OIPAppRegistry.solQ2 2025
OIPIdRegistry.sol0x3cDc03BEb79ba3b9FD3b687C67BFDE70AFf46eBF
OIPNameRegistry.sol0xc788716466009AD7219c78d8e547819f6092ec8F
OIPAccessRegistry.sol0xa837e9C834f23b04061b901814Af872291883ee7
OIPNodeRegistry.sol0x935f45e99eA6EeFE4C86845C996e27630b31C5Bb
ContractAddress
OIPSigValidator.sol0xD2407EBde1B1ffE19da02710446f1449C0669Df2
UniversalSigValidator.sol0xEE5542f87475A5F08d1450941c6a4470FbE7949E

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.