HostDec Logo
HostDec
Decentralized Hosting
...
🇺🇸  English
🇦🇷  Español
Domains Browser Docs Whitepaper Token Community ↗ Open DApp
Technical documentation · v1.0.0 beta

How HostDec Works

HostDec is a decentralized domain protocol based on NFTs on Arbitrum One. You register a .hostdec domain, publish your site on IPFS, and the desktop browser resolves it natively — no extensions or technical configuration required.

⬡ Arbitrum One 📦 NFT ERC-721 🌐 IPFS 💻 Native browser 🔒 Timelock + Multisig
Introduction v1.0.0 beta

What is HostDec?

HostDec combines three layers to create a complete decentralized hosting protocol: a smart contract on the blockchain, a web interface, and a desktop browser with native resolution.

📋
Contract on Arbitrum
Domain registry as ERC-721 NFTs. Each domain is a unique, perpetual, and freely transferable token.
🌍
DApp hostdec.com
Web interface to register domains, manage the IPFS CID, and operate on the buy/sell marketplace.
💻
Desktop browser
Browse .hostdec domains natively. Downloadable as a .exe from GitHub
♾️
No annual renewals Domains are perpetual NFTs. You pay once and the domain is yours forever. No maintenance fees or expiration dates.
Introduction

Full flow

From registration to having your site accessible at yourdomain.hostdec, the process follows four clear steps.

1

Register the domain in the DApp

Connect MetaMask at hostdec.com, type the desired name, and approve the transaction with HDEC tokens. The contract on Arbitrum One mints an ERC-721 NFT directly to your wallet. This token represents exclusive and irrevocable ownership of the domain.

2

Upload your site to IPFS

Use Pinata, Web3.Storage, or any IPFS node to upload your site files. What you need is the root CID of the directory, in the format QmXyz… or bafy….

3

Link the CID to the domain

In "My Domains" on the DApp, paste the CID and sign with your wallet. The contract executes setCIDWeb(tokenId, cid) and stores the association on-chain. From that moment, the server can resolve the domain.

4

Browse with the desktop browser

Download the HostDec browser from GitHub (a single .exe). Type yourdomain.hostdec directly in its address bar: the browser fetches the CID from the blockchain and serves the IPFS content natively.

Contract Arbitrum One

Smart Contract

The smart contract is the core of the protocol. It manages domain ownership, stores IPFS CIDs, and maintains the version history of each token. Administration is protected by a timelock + multisig system.

Network Arbitrum One — Chain ID: 42161 ✓ Verified
Standard ERC-721 — Non-fungible NFT · UUPS upgradeable proxy
Version 1.0.0
Source code View on Arbiscan ↗
Control Safe Gnosis Multisig — 3 of 5 required signers 🔒 Timelock
🔐
Double-layer administrative security No privileged action (upgrade, fee withdrawal, parameter change) can be executed unilaterally. Every operation first passes through the HostdecTimelock, which enforces a mandatory waiting period, and also requires the signature of 3 of 5 signers in the Gnosis Safe wallet.
⛓️
Why Arbitrum One? Arbitrum is a Layer 2 network on Ethereum with minimal fees (cents per transaction) and fast confirmations, while maintaining the security and decentralization of Ethereum.
Contract

Domain NFT

Each registered domain is a unique, indivisible ERC-721 token. Ownership of the NFT equals ownership of the domain: transferring it transfers full control.

Two independent CID types

The contract distinguishes two CID storages with different purposes:

🌐
Web CID — getCIDWeb
The published site CID. This is the one served by the server at domain.hostdec.
🗂️
Metadata CID — getCurrentCID
CID of the NFT tokenURI. Domain information for the Marketplace.

Circular version buffer

The contract maintains a history of the latest NFT metadata versions. You can query previous versions with getRecentHistory(tokenId), which returns an array of {cid, timestamp}, the total historical update count, and the oldest version available in the buffer.

Metadata cooldown

The updateMetadata function has a waiting period between updates to prevent on-chain spam. If you try to update before it expires, the contract reverts with the UpdateTooSoon error indicating exactly how much time is left. The web CID (setCIDWeb) has no such restriction.

Contract

HDEC Token

Domains are registered by paying with the protocol's native token: HDEC. The price varies by name length: shorter names are scarcer and have higher value.

Length Example Price Rarity
3 characters btc.hostdec 10,000 HDEC ● Premium
4 characters defi.hostdec 1,000 HDEC ● Rare
5–6 characters pablo.hostdec 500 HDEC ● Standard
7+ characters miblog.hostdec 100 HDEC ● Common
⚠️
Prior approval required Before registering, the contract must be approved to spend your HDEC. The DApp handles this automatically: it executes approve() with the exact amount if your current allowance is insufficient, then proceeds with registerDomain().
Contract

Contract functions

Reference of the main ABI functions for integrating with or directly interacting with the protocol.

READ
getCIDWeb(uint256 tokenId) → string

Returns the CID of the published website. This is the one the server resolves and serves at domain.hostdec.

READ
getCurrentCID(uint256 tokenId) → string

Returns the current CID from the NFT metadata buffer (tokenURI). Independent from the web CID.

READ
getRecentHistory(uint256 tokenId) → (versions[], totalCount, oldestAvailable)

History from the circular metadata buffer: array of {cid, timestamp}, total update count, and the oldest version available.

READ
hasCIDWeb(uint256 tokenId) → bool

Indicates whether the domain has a web CID configured. Allows checking if the domain has published content.

WRITE
setCIDWeb(uint256 tokenId, string cid)

Links an IPFS CID to the domain as a website. Can only be called by the NFT owner. No cooldown.

WRITE
updateMetadata(uint256 tokenId, string cid)

Updates the NFT tokenURI CID with a cooldown between calls. Records the new version in the circular buffer.

EVENT
DomainRegistered(address owner, string name, uint256 tokenId, uint256 price, uint256 timestamp)

Emitted when a new domain is registered. Contains owner, name, tokenId, price paid in HDEC, and timestamp.

EVENT
CIDWebUpdated(uint256 tokenId, string cid, address updatedBy, uint256 timestamp)

Emitted every time the domain's web CID is updated. Allows indexing the publication history.

DApp hostdec.com

The Web DApp

hostdec.com is the main interface of the protocol. From there you register domains, manage IPFS content, operate the marketplace, and monitor on-chain stats.

✍️
Registration
Check availability in real time, approve HDEC, and mint your NFT in a single guided flow.
🔧
Management
Update your site's CID, check the on-chain version history, and manage all your domains.
🏪
Marketplace
List your domains for sale in ETH or buy from other users with transparent transactions.
🔍
Explorer
Real-time stats from the contract: total registered domains, unique owners, and averages.
🦊
Requirements You need MetaMask (or another EVM-compatible wallet) configured on the Arbitrum One network, and a balance of HDEC tokens to register. Marketplace operations are paid in native ETH.
DApp

Register a domain

The registration process is guided step by step in the DApp. Here is what happens technically at each stage.

1

Availability check

The DApp calls getTokenId(name) on the contract. If it returns 0, the name is available. Simultaneously it calculates the price based on length and displays it before continuing.

2

HDEC approval (if needed)

If your current allowance is less than the required price, the DApp automatically executes tokenContract.approve(CONTRACT_ADDRESS, price). This transaction only costs gas, not HDEC.

3

NFT minting

With approval confirmed, the DApp executes registerDomain(name). The contract transfers the HDEC, mints the ERC-721 NFT to your wallet, and emits the DomainRegistered event. The operation is irreversible and permanent on the blockchain.

Naming rules

Names must have a minimum of 3 characters and can only contain lowercase letters a-z, numbers 0-9, and hyphens -. They cannot start or end with a hyphen.

DApp

Publish content on IPFS

IPFS is the decentralized storage network where your site's content lives. The contract only stores the CID; the actual content lives on IPFS.

What is a CID?

A CID (Content Identifier) is the unique content identifier on IPFS. It is cryptographically derived from the content itself: the same file always generates the same CID. When you update your site, the CID changes.

How to upload to IPFS

You can use pinning services like Pinata or Web3.Storage. You upload your site folder and get the root CID of the directory. That CID is what you paste in "My Domains" on the DApp.

Resolution in the browser

The HostDec browser fetches the CID registered in the contract, caches it locally, and loads the content by accessing the IPFS network directly via ipfs://{cid}. Internal navigation between pages on the site is resolved dynamically within the same .hostdec domain.

// Resolution logic in the browser
const tokenId = await contract.getTokenId(keyword);
const cid     = await contract.getCIDWeb(tokenId);
// Load content: ipfs://{cid}/{subpath}
📌
Pin your content IPFS does not guarantee permanent availability without active pinning. Use a dedicated service (Pinata, Filebase, etc.) to keep your site always accessible.
DApp

Marketplace

Domain NFTs can be freely bought and sold in the integrated marketplace. Transactions are settled in ETH with real-time pricing.

🏷️
List for sale
Set a price in ETH and sign the order. The domain remains yours until someone buys it or you cancel the listing.
🛒
Buy a domain
Pay the price in ETH and the NFT is automatically transferred to your wallet once the transaction is confirmed.
Cancel listing
You can cancel your listing at any time by signing the cancellation, with no additional costs.
💵
USD price
The marketplace shows the real-time USD equivalent of the ETH price to make valuation easier.

Order protocol

The marketplace uses the OpenSea Seaport protocol to structure orders. This ensures compatibility with the NFT ecosystem and transactions include the standard protocol fee.

🔄
Full control transfer When selling a domain, the buyer inherits all rights: they can update the CID, re-sell it, or transfer it. The complete version history remains permanently recorded on the blockchain.
Desktop browser Native resolution

HostDec Desktop Browser

The HostDec desktop browser is a standalone application that natively resolves .hostdec domains, does not modify OS settings, and works entirely online.

How does it work?

The browser includes a built-in resolution engine. When you type a .hostdec address in its navigation bar, the application directly queries the contract on Arbitrum to get the IPFS CID associated with the domain and loads the content transparently. It does not need local intermediate servers or special OS permissions.

Resolution flow

1

You enter myblog.hostdec in the browser

The browser detects the .hostdec TLD and intercepts navigation to use its own decentralized resolution engine, instead of conventional DNS.

2

Queries the Arbitrum blockchain

The browser calls getTokenId(name) to get the domain's tokenId, then getCIDWeb(tokenId) to retrieve the active IPFS CID. The result is cached locally to speed up subsequent visits.

3

Loads content from IPFS

With the CID in hand, the browser accesses the IPFS network and renders the site directly in its window. The address bar shows myblog.hostdec at all times, preserving the expected browsing experience.

🪟 Windows — available
🍎 macOS — coming soon
🐧 Linux — coming soon
No external dependencies The browser is distributed as a single downloadable .exe from GitHub Releases. Download, run, and browse.
Desktop browser

Download & installation

The HostDec browser is distributed from GitHub Releases as a ready-to-use executable file. No installers, no dependencies.

Steps for Windows

1

Download the executable

Visit the Releases page on the official HostDec GitHub repository and download the .exe file for the latest stable version.

2

Run the browser

Double-click the downloaded .exe. No installation or admin permissions required. The browser opens directly, ready to browse.

3

Browse .hostdec domains

Type any registered domain in the address bar (e.g.: myblog.hostdec) and the browser resolves it automatically by querying the online blockchain.

🔔
macOS and Linux coming soon Versions for macOS and Linux are under development and will be available very soon in the same GitHub repository. You can enable repo notifications to be the first to know.
🌐
Requires internet connection The browser queries the Arbitrum contract and the IPFS network in real time. To browse .hostdec domains you need an active internet connection.