Skip to content

Commit 0699448

Browse files
authored
Sidequest link field and ENS guide linked to ENS sidequests (#321)
1 parent e3a6738 commit 0699448

File tree

8 files changed

+212
-3
lines changed

8 files changed

+212
-3
lines changed

packages/nextjs/app/builders/[address]/_components/SideQuests.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ type SideQuest = {
88
id: string;
99
name: string;
1010
completed: boolean;
11+
link?: string;
1112
};
1213

1314
type CollapseSectionProps = {
@@ -38,7 +39,19 @@ const CollapseSection = ({ title, quests, defaultExpanded = false, className = "
3839
readOnly
3940
className="checkbox checkbox-primary checkbox-sm cursor-default"
4041
/>
41-
<label className="text-base flex-1">{quest.name}</label>
42+
{quest.link ? (
43+
<a
44+
href={quest.link}
45+
className="text-base flex-1 link link-primary text-left tooltip tooltip-top"
46+
data-tip="Read guide"
47+
target="_blank"
48+
rel="noreferrer"
49+
>
50+
{quest.name}
51+
</a>
52+
) : (
53+
<label className="text-base flex-1">{quest.name}</label>
54+
)}
4255
</div>
4356
))}
4457
</div>
@@ -64,13 +77,15 @@ export const SideQuests = ({ snapshot }: { snapshot: SideQuestsSnapshot | null }
6477
id: sideQuest.id,
6578
name: sideQuest.name,
6679
completed: Boolean(snapshot?.[sideQuest.id]?.completedAt),
80+
link: sideQuest.link,
6781
})),
6882
];
6983

7084
const devQuests = QUEST_CATEGORIES.ETHEREUM_FIRST_STEPS.map(sideQuest => ({
7185
id: sideQuest.id,
7286
name: sideQuest.name,
7387
completed: Boolean(snapshot?.[sideQuest.id]?.completedAt),
88+
link: sideQuest.link,
7489
}));
7590

7691
const totalQuests = ensQuests.length + devQuests.length;
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
title: "How to Register an ENS Address and Set Your ENS Avatar"
3+
description: "Step-by-step guide to register an ENS address (.eth), secure your Web3 identity, and set an ENS avatar. Covers pricing, commit–reveal, reverse resolution, and best practices."
4+
image: "/assets/guides/how-to-register-ens-set-avatar.jpg"
5+
---
6+
7+
## TL;DR:
8+
9+
- **Register your .eth domain** at the [official app](https://app.ens.domains), completing the 2‑tx commit–reveal flow.
10+
- **Pricing:** $5/yr (5+ chars), $160/yr (4 chars), $640/yr (3 chars) + gas.
11+
- **Set Primary Name (reverse record)** to map your wallet address to your ENS name `yourname.eth`.
12+
- **Set your ENS avatar** via ENS Manager App.
13+
- Use a **fresh address** if you want to avoid linking prior on‑chain history.
14+
- Bookmark **renewal reminders**; consider multi‑year registrations (renew anytime). After expiration: 90‑day grace, then a premium decay, then normal price
15+
16+
---
17+
18+
## 1. What Is ENS and Why It Matters
19+
20+
ENS (Ethereum Name Service) lets you replace `0x...` addresses with a **human‑readable name** like `developer.eth`. Your ENS name can also store **profile data** (avatar, links, social handles) and works across wallets and dapps as your **portable Web3 identity**.
21+
22+
---
23+
24+
## 2. Prerequisites
25+
26+
- A non‑custodial wallet (e.g., MetaMask, Rainbow, Coinbase Wallet)
27+
- A small amount of ETH for the annual fee and gas (can be paid with credit and debit card)
28+
- Optional: Use a fresh wallet if you don’t want to publicly link past transactions
29+
30+
---
31+
32+
<span id="3-how-to-register-an-ens-address-eth"></span>
33+
34+
## 3. How to Register an ENS Address (.eth)
35+
36+
You’ll use the official **ENS Manager** at [ENS App](https://app.ens.domains) and complete a secure, two‑step process ([commit -> reveal](/guides/commit-reveal-scheme)) that prevents front‑running.
37+
38+
### 3.1. Search and select your name
39+
40+
- Go to [ENS App](https://app.ens.domains) and search for your desired `.eth` name
41+
- Choose the registration duration, can pick by years or by date. For longer durations the impact of gas fees is lower.
42+
43+
![Search for a .eth name in the ENS App](/assets/guides/search-ens-domain.jpg)
44+
_Figure: Search for a name and see availability._
45+
46+
### 3.2. Request to Register (Commit)
47+
48+
- Click "Begin” and confirm the first transaction (0 ETH + gas)
49+
- This posts a cryptographic commitment (your name + a secret) on‑chain
50+
51+
![Select years and set Primary Name during checkout](/assets/guides/register-ens-domain.jpg)
52+
_Figure: Choose registration duration and optionally set your Primary Name._
53+
54+
### 3.3. Wait ~60 seconds
55+
56+
- ENS requires a short delay so the commitment finalizes on‑chain
57+
58+
### 3.4. Complete Registration (Reveal)
59+
60+
- Click “Register” and confirm the second transaction (registration fee + gas)
61+
- The name is minted as an NFT to your wallet upon confirmation
62+
63+
### 3.5. Pro tips
64+
65+
- The commitment is valid for ~24 hours; finish the reveal in time
66+
- You can register for multiple years to reduce renewal overhead
67+
- Can pay with credit and debit card if you don't have ETH
68+
69+
> **Primary Name not showing in dapps?**
70+
>
71+
> Ensure the reverse record (Primary Name) is set to your ENS and your wallet is connected on the same chain
72+
73+
---
74+
75+
## 4. Pricing and Annual Costs
76+
77+
Annual fee (USD‑pegged, paid in ETH at time of tx):
78+
79+
<table>
80+
<thead>
81+
<tr>
82+
<th>Name Length</th>
83+
<th>Annual Fee (USD)</th>
84+
</tr>
85+
</thead>
86+
<tbody>
87+
<tr>
88+
<td>5+ characters</td>
89+
<td>$5</td>
90+
</tr>
91+
<tr>
92+
<td>4 characters</td>
93+
<td>$160</td>
94+
</tr>
95+
<tr>
96+
<td>3 characters</td>
97+
<td>$640</td>
98+
</tr>
99+
</tbody>
100+
101+
</table>
102+
103+
You’ll also pay gas for the two transactions. Renewals follow the same pricing.
104+
105+
> **Important:** After expiration, there’s a 90‑day grace period. If not renewed, the name enters Temporary Premium. Anyone can register it during this phase by paying the listed premium, which decays back to the normal price.
106+
107+
---
108+
109+
## 5. Set a Primary Name (Reverse Resolution)
110+
111+
Setting a Primary Name maps your wallet back to your ENS name so dapps display `yourname.eth` instead of `0x...`.
112+
113+
Steps
114+
115+
- In [ENS App](https://app.ens.domains), open “My Account” → “Primary Name (reverse record)”
116+
- Select your ENS name from the dropdown and confirm the transaction
117+
118+
---
119+
120+
<span id="6-set-your-ens-avatar"></span>
121+
122+
## 6. Set Your ENS Avatar
123+
124+
### 6.1. Set the avatar picture through the UI
125+
126+
![Set ENS avatar in the ENS profile UI](/assets/guides/ens-profile-set-avatar.jpg)
127+
_Figure: Using the ENS App UI to set your avatar._
128+
129+
- Open your name in [ENS App](https://app.ens.domains)
130+
- Go to your ENS name “Profile” and click on "Edit profile"
131+
- Click on the camera icon and select your avatar from an NFT or uploading an image
132+
- Confirm the first off-chain message and then sign the onchain transaction
133+
134+
![ENS avatar: off-chain signature then on-chain transaction](/assets/guides/offchain-onchain-signatures.jpg)
135+
_Figure: First you sign an off‑chain message, then confirm the on‑chain records update._
136+
137+
### 6.2. Add/edit your text records
138+
139+
ENS stores avatars as a standard text record with key `avatar`. You can point it to an NFT, an IPFS file, or a standard HTTPS URL.
140+
141+
To set your text record, open your name in [ENS App](https://app.ens.domains):
142+
143+
“Records” → Edit Text Records” → Key: `avatar` → Value per method below → Save
144+
145+
Option A) NFT avatar (eip155 URI, verifiable on‑chain)
146+
147+
```text
148+
avatar = eip155:1/erc721:CONTRACT_ADDRESS/TOKEN_ID
149+
```
150+
151+
Option B) IPFS avatar (decentralized hosting)
152+
153+
```text
154+
avatar = ipfs://<CID>
155+
```
156+
157+
Option C) HTTPS avatar (simple, centralized)
158+
159+
```text
160+
avatar = https://yourdomain.com/path/to/avatar.png
161+
```
162+
163+
Notes
164+
165+
- NFT method allows dapps to cryptographically verify ownership
166+
- IPFS is decentralized; pin your content to ensure persistence
167+
- HTTPS is simplest, but centralized
168+
169+
---
170+
171+
## 7. Official ENS Guides
172+
173+
- [How to Register a .eth name](https://support.ens.domains/en/articles/7882582-how-to-register-a-eth-name)
174+
- [How to Set an Avatar](https://support.ens.domains/en/articles/7883271-how-to-set-an-avatar)
175+
176+
---
177+
178+
## 8. Related guides
179+
180+
- [NFT Use Cases](/guides/nft-use-cases)
181+
- [ERC721 vs. ERC1155](/guides/erc721-vs-erc1155)
182+
- [Mastering ERC721](/guides/mastering-erc721)
183+
184+
- New to NFTs? Try the hands‑on challenges: [Simple NFT Example](/challenge/simple-nft-example) and [SVG NFT](/challenge/svg-nft)
51.1 KB
Loading
74 KB
Loading
45.4 KB
Loading
44.8 KB
Loading
102 KB
Loading

packages/nextjs/services/sideQuests/schema.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,18 @@ export const SIDEQUEST_IDS = [
2020
] as const;
2121

2222
export const SIDEQUESTS: Record<SideQuestId, SideQuestMeta> = {
23-
ensRegistered: { id: "ensRegistered", name: "Register an ENS name", check: checkEnsRegistered },
24-
ensAvatarSet: { id: "ensAvatarSet", name: "Set an ENS avatar", check: checkEnsAvatarSet },
23+
ensRegistered: {
24+
id: "ensRegistered",
25+
name: "Register an ENS name",
26+
check: checkEnsRegistered,
27+
link: "/guides/register-ens-domain-set-avatar",
28+
},
29+
ensAvatarSet: {
30+
id: "ensAvatarSet",
31+
name: "Set an ENS avatar",
32+
check: checkEnsAvatarSet,
33+
link: "/guides/register-ens-domain-set-avatar",
34+
},
2535
contractDeployed: { id: "contractDeployed", name: "Deploy a Contract", check: checkContractDeployed },
2636
swappedOnDex: { id: "swappedOnDex", name: "Swap on a DEX", check: checkSwappedOnDex },
2737
usedL2: { id: "usedL2", name: "Use an L2", check: checkUsedL2 },

0 commit comments

Comments
 (0)