Resolver Contract

The dotHYPEResolver brings your .hype name to life across Web3. It makes your name functionally usable as an identity layer readable by dApps, wallets, bots, and dashboards.

Fully ENS-compatible, the Resolver contract supports multiple record types, reverse resolution, and metadata customization. It follows the standard ENS interface structure but is tightly integrated with the dotHYPE Registry to enforce domain status and expiration.

This contract does not handle ownershipβ€”it simply reflects what the Registry allows, and enables you to associate rich identity data with your name.

πŸ” What It Does

The Resolver supports:

  • Address resolution (EVM and multi-chain)

  • Text records (socials, avatar, website, etc.)

  • Content hash linking (IPFS, Swarm)

  • Reverse resolution (address β†’ name)

  • Record versioning and batch updates

If your name is expired or inactive, all resolution queries return blank results. The Resolver only returns records for active .hype names.

πŸ”— Address Resolution

You can link your .hype name to wallet addresses using either:

  • A simple EVM address (default Ethereum-style resolution)

  • A multi-coin address using SLIP-0044 standards

function addr(bytes32 node) external view returns (address);
function addr(bytes32 node, uint256 coinType) external view returns (bytes memory);

Set via:

function setAddr(bytes32 node, address addr) external;
function setAddr(bytes32 node, uint256 coinType, bytes calldata addr) external;

If no address is set, most systems default to the current domain owner.

πŸ“ Text Records

Text records allow you to embed human-readable metadata into your .hype name.

Common uses include:

  • Socials: com.twitter, com.github

  • Profile: avatar, description

  • Contact: email, url, website

function text(bytes32 node, string calldata key) external view returns (string memory);
function setText(bytes32 node, string calldata key, string calldata value) external;

Text records power UI display, social graphing, and indexing.

🧬 Content Hash

Use a .hype name to link to decentralized content like:

  • IPFS files or websites

  • Swarm hashes

  • Other content-addressed systems

function contenthash(bytes32 node) external view returns (bytes memory);
function setContenthash(bytes32 node, bytes calldata hash) external;

This is ideal for user profiles, dApp frontends, or media hubs.

πŸ”„ Versioning System

Rather than deleting records one by one, dotHYPE enables full record resets via versioning.

function recordVersions(bytes32 node) external view returns (uint256);
function clearRecords(bytes32 node) external;

Each record is linked to a version counter:

  • clearRecords() bumps the version

  • All previous records become invalid

Useful for refreshing a stale or incorrect profile in one transaction.

πŸ” Reverse Resolution

Reverse records map wallet addresses back to .hype names. This is what makes UIs (wallets, explorers, dApps) show your name instead of a 0x address.

Key functions:

function setReverseRecord(string calldata name) external returns (bytes32);
function clearReverseRecord() external;
function reverseLookup(address addr) external view returns (string memory);
function getName(address addr) external view returns (string memory);

You can also:

  • Query a text record via reverse: getValue(address, key)

  • Check if an address has a reverse record: hasRecord(address)

🚫 Domain Expiration Enforcement

The Resolver enforces expiration checks. If a domain is expired:

  • All resolution returns are blank

  • Records cannot be set or updated

function isAuthorized(bytes32 node) internal view returns (bool);

This ensures that only active .hype names can display metadata or resolve onchain.

🧩 Multi-call Support

To keep things gas-efficient, the resolver supports batch operations:

  • Set multiple records in a single call

  • Commonly used when updating profiles or migrating data

This feature inherits from the Multicallable interface standard.

πŸ” Access & Authorization

Only the current name owner can set or update records.

  • Ownership is checked against the Registry

  • If your name is expired, you temporarily lose write access

All write functions include internal isAuthorized() checks.

πŸ“‘ Interface Discovery

Applications can check whether this resolver supports a given record type using:

function supportsInterface(bytes4 interfaceID) public view override returns (bool);

dotHYPE Resolver supports:

  • IAddrResolver

  • IAddressResolver

  • ITextResolver

  • IContentHashResolver

  • IReverseResolver

This ensures compatibility with ENS-resolving dApps and multi-chain interfaces.

🧠 For Developers

If you're building with .hype names:

  • Use addr() to resolve to a wallet or contract

  • Use text() to display social or profile metadata

  • Use reverseLookup() to show names for addresses

The Resolver does not store ownershipβ€”it’s a read/write utility that enhances what the Registry tracks.

Last updated