Live on Berachain mainnet

Mint & resolve .🐻⛓️ names directly on-chain.

Beranames is a decentralized name service on Berachain — ENS-compatible, NFT-backed, and fully usable without any frontend. This page is everything you need to register and resolve a name straight from the block explorer.

Chain ID 80094 Native token: BERA ENS-compatible No commit-reveal

Contracts

Mint a name

There is no commit-reveal. You call register on the RegistrarController in a single transaction, paying the BERA equivalent of the USD price (priced via Pyth). You can do this entirely from BeraScan.

1

Open RegistrarController on BeraScan

Go to the Write Contract tab and click Connect to Web3 with your wallet on Berachain mainnet.

2

Check the price first

On the Read Contract tab, call rentPrice(name, duration) with your name (no .bera) and a duration in seconds (1 year = 31536000). The returned base is what you pay in wei. Add a small buffer for BERA/USD price drift.

3

Call register

Find the register function on the Write tab. BeraScan accepts the struct as a single tuple. Paste this in (replacing the placeholders), and set payableAmount (BERA) to your quoted price plus a small buffer:

// register(RegisterRequest)
// tuple format on the explorer:
[
  "yourname",                                       // name (no .bera)
  "0xYourAddress",                                  // owner
  31536000,                                          // duration (1 year, in seconds)
  "0xc23e819766cd5c5f5ec0e1b1764afeba1dc2d03c",    // resolver (BeraDefaultResolver)
  [],                                                // data — leave empty, then setAddr in step 4
  true,                                              // reverseRecord — sets primary name
  "0x0000000000000000000000000000000000000000"     // referrer
]

Submit. Your name is now an NFT in your wallet.

4

Set the address record

For viem / wallets to resolve yourname.bera back to your address, the resolver needs an addr record. On BeraDefaultResolver → Write, call setAddr(node, address) where node is the namehash of yourname.bera. You can compute namehash with viem: namehash('yourname.bera').

Tip: you can skip step 4 by encoding the setAddr call into the data array in step 3 — but the explorer makes that fiddly, so doing it as a second tx is usually easier.

Pricing

Prices are denominated in USD and paid in BERA at the Pyth-fed rate. Multi-year discounts apply.

LengthPer year
1 character$420
2 characters$269
3 characters$169
4 characters$69
5+ characters$25
DurationDiscount
1 year
2 years5%
3 years15%
4 years30%
5 years40%

Resolve a name

Beranames is ENS-compatible. Any ENS-aware library that points at Berachain mainnet will work — no custom code, just configure the registry / universal resolver addresses above.

Forward — name → address

import { createPublicClient, http } from 'viem'
import { berachain } from 'viem/chains'
import { normalize } from 'viem/ens'

const client = createPublicClient({
  chain: berachain,
  transport: http(),
  contracts: {
    ensRegistry:          { address: '0x5b22280886a2f5e09a49bea7e320eab0e5320e28' },
    ensUniversalResolver: { address: '0xddfb18888a9466688235887dec2a10c4f5effee9' },
  },
})

const address = await client.getEnsAddress({ name: normalize('yourname.bera') })

Reverse — address → name

const name = await client.getEnsName({ address: '0x...' })
// Names are stored as `.bera` on-chain. Display them as `.🐻⛓️` if you like:
const display = name?.replace('.bera', '.🐻⛓️')

Note: names containing emoji or other unusual unicode may not round-trip cleanly through ENS normalization. For anything routing real funds, prefer plain alphanumeric names.

Good to know