Frostfire.eth Proposal

Project Overview

Frostfire.eth is an ENS publishing service. It hosts websites on IPFS and republishes IPNS documents. Users link their ENS names to self-managed IPNS keys. Updates are off-chain and cheap, and users keep full control of their publisher keys.

The goal is to drive adoption of ENS, IPNS, and IPFS as a publishing stack. Frostfire.eth makes them practical, easy, and cost-effective for dapp developers and site publishers.

The project will be published under the AGPL-3.0-only license.

Technical Design

Components

registry.frostfire.eth: Ethereum contract. Access list (ENS name => expiry). Yearly flat fee (~$50 USD in ETH).

treasury.frostfire.eth: Ethereum contract. Owner of registry.frostfire.eth. Withdraws balance from registry.frostfire.eth. Disperses part of revenue to helia and js-libp2p.

service.frostfire.eth: ENS name. Contains a field used to resolve the libp2p peerId of the js-frostfire peer.

js-frostfire: NodeJs instance. Ethereum client + Helia + libp2p. Receives website uploads, pins CAR roots, and republishes IPNS documents.

frostfire.eth: Progressive web app. Facilitates user flow. Stores Ed25519 keys as a non-extractable WebCrypto CryptoKey using libp2p libraries.

Flow

  1. Buy access for the ENS name using registry.frostfire.eth contract.

  2. Set ENS name contenthash to IPNS public key.

  3. Discover host via service.frostfire.eth → peerId → Amino DHT → dial protocol /frostfire.eth.upload/1.0.0.

  4. Upload IPFS/IPNS content via /frostfire.eth/upload/1.0.0 protocol.

  5. Host verifies and pins.

  6. Website content is now resolvable through ENS, IPNS, and IPFS.

Protocol /frostfire.eth/upload/1.0.0

dialer = frostfire.eth visitor \ listener = js-frostfire instance

dialer: HELLO{ensName} → listener: check registry; else ERR/NO_ACCESS.

dialer: IPNS_DOC{bytes} → listener: ENS contenthash must equal IPNS pubkey; else ERR/CONTENTHASH_MISMATCH. Seq must increase; else ERR/STALE_SEQ.

dialer: CAR_STREAM{≤5 MB} → listener: root CID must equal IPNS value; else ERR/CAR_ROOT_MISMATCH.

listener: OK{rootCid} → dialer.

User Feedback and Adoption Plan

First adopters are dapp teams that update ENS contenthash often or link to custodial IPNS. Frostfire.eth is core infra that fixes this with a non-custodial model.

Users can give feedback through Twitter, email, and GitHub issues. New features will be announced on Twitter. The changelog will be maintained on GitHub and mirrored on the website.

The frostfire.eth web app is the primary interface. If hardware wallet support is possible, a CLI tool may be added. CI features like GitHub Actions will only be considered if demanded, since they require custodial key storage.

Feedback will guide whether to continue with a yearly fee or move toward metered billing using Ethereum payment channels.

Schedule and Budget

The project will be completed in 2.5 months with a flat budget of 20,000 USD payable in ETH or USDC.

Smart contract development is already complete, and the web interface is ~80% complete.

Milestones

Weeks 1–3: Complete js-frostfire host development and testing.

Weeks 4–5: Finalize web interface. Integrate with frostfire.eth/upload protocol.

Week 6: Deploy a js-frostfire instance on a cloud host and the access registry to Ethereum. Production test.

Week 7: Pricing analysis and public launch.

Week 8: Publish analysis of project and next-version design, including:

Qualifications of Team

tabcat has a deep understanding of ENS, IPFS, IPNS, and libp2p, with relevant work visible on GitHub going back to 2018.




I plan to build everything here regardless. But if this proposal is accepted, I'll travel to Devconnect in November and hand out comfy, ice-dyed frostfire.eth hoodie swag. :)