Core Protocol Reference

EBPTO is a decentralized application orchestrated through smart contracts

Terminology and Deployment

If you understand ENS you will find EBPTO’s architecture familiar.

EBPTO Contracts


EBPTO is deployed on mainnet at these addresses

  • EBPTORegistry
    The core contract of the EBPTO system. Provides methods to set and query the resolver of a name.
  • PublicResolver
    The default resolver for all EBPTO names. Allows users to get and set address records, as well as records for ABIs, content hashes, DNS, names, and text. This contract includes the ability to set multiple records at once and to clear all records in a single transaction. Note: as with ENS, users are permitted to set custom resolvers.
  • BaseRegistrar:
    The contract that allows users to register subdomains of the “.ip” TLD in the EBPTORegistry. When this happens the registrar mints a corresponding NFT. Users interact with the registrar through the IPRegistrarController (see below).
    BaseRegistrar inherits from a brand new ERC721 base contract we created called ERC721PTO.
  • ERC721PTO:
    Enables gas-efficient storage of name expiries, last transfer timestamps, mint counts, and other select tokenomics.
  • IPRegistrarController:
    Manages pricing and validation for registering names. Conducts auctions.
  • ReverseRegistrar:
    Allows owners of a name to register the record “<address>.addr.reverse” which applications can query to find the address's canonical .ip name.
  • Normalize4:
    Encapsulates Unicode normalization logic that allows the IPRegistrarController to validate names on-chain. Written by raffy.eth.
  • ChainlinkPriceConsumer:
    Queries the Chainlink oracle for USD-ETH exchange rates.
  • ExponentialPremiumPriceOracle:
    Prices names in USD (denominated in ETH) according to their length.
  • IPTokenRenderer:
    Renders token images and metadata.