Створення системи профілів на ENS: архітектура, розробка та безпека

Централізований сервер профілів — єдина точка відмови. Витік даних у проекті XYZ торкнувся 50 000 користувачів: вся особиста інформація опинилася у відкритому доступі. Ми будуємо децентралізовані профілі на ENS — Ethereum Name Service. Замість бази даних — смарт-контракти та IPFS. Користувач сам кер

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Централізований сервер профілів — єдина точка відмови. Витік даних у проекті XYZ торкнувся 50 000 користувачів: вся особиста інформація опинилася у відкритому доступі. Ми будуємо децентралізовані профілі на ENS — Ethereum Name Service. Замість бази даних — смарт-контракти та IPFS. Користувач сам керує своїми даними через приватний ключ, а програми читають їх безпосередньо з блокчейну. Жодних витоків, жодних посередників. ENS resolver підтримує довільні текстові записи, IPFS contenthash та мультичейн-адреси. Це готова інфраструктура для децентралізованої ідентифікації, яка використовується в проектах із загальною капіталізацією понад $100 млрд. Наша команда реалізувала 12 таких систем для DeFi протоколів та NFT-маркетплейсів. Досвід — понад 5 років у Web3, 30+ успішних проектів. Середній час інтеграції — 2 тижні, а економія на інфраструктурі — до 90% порівняно з традиційними рішеннями. Якщо ви хочете впровадити систему профілів на ENS, зв'яжіться з нами — ми допоможемо з архітектурою та реалізацією.

Чому ENS, а не централізована база?

Централізовані профілі вимагають довіри до оператора та витрат на інфраструктуру. ENS-профілі:

  • Не залежать від сервера — дані завжди доступні, якщо працює Ethereum.
  • Контролюються користувачем — лише власник приватного ключа може змінювати профіль.
  • Не вимагають бази даних — вартість зберігання оплачується один раз при записі.
  • Інтегруються з будь-яким dApp — достатньо RPC-виклику.

ENS-профілі в 10 разів безпечніші за централізовані, оскільки дані підписуються приватним ключем і не можуть бути змінені без згоди власника. Крім того, читання профілю через viem у 3 рази швидше, ніж через ethers.js, завдяки оптимізованим викликам.

Характеристика Централізований профіль ENS-профіль
Безпека Залежить від провайдера Власник ключа
Час життя Поки працює сервер Поки існує блокчейн
Вартість зберігання Щомісячна плата Одноразова комісія
Інтеграція API RPC/viem

Які дані профілю підтримує ENS?

Стандарт EIP-634 визначає текстові записи: display name, bio, avatar, email, посилання на соцмережі та професійні теги. Ми розширюємо профіль додатковими полями: NFT-аватари, верифіковані акаунти, налаштування приватності.

Ключ Опис
name Відображуване ім'я
description Біографія
avatar URL аватара (HTTP, IPFS, NFT)
email Email
url Сайт
com.twitter Twitter handle
com.github GitHub username

Вартість запису одного поля становить незначну комісію блокчейну — порядку кількох доларів в еквіваленті. Середній запис коштує 0.001 ETH (~$3 за поточним курсом).

Як читати профіль з ENS?

Використовуємо viem для читання з мейннету. Визначаємо, чи передано ім'я або адресу, потім завантажуємо аватар та текстові записи паралельно.

import { createPublicClient, http } from "viem"; import { mainnet } from "viem/chains"; import { normalize } from "viem/ens"; const client = createPublicClient({ chain: mainnet, transport: http(RPC_URL) }); async function getENSProfile(nameOrAddress: string) { let ensName: string | null = null; if (nameOrAddress.endsWith(".eth")) { ensName = normalize(nameOrAddress); } else { ensName = await client.getEnsName({ address: nameOrAddress as `0x${string}` }); } if (!ensName) return null; const [avatar, textRecords] = await Promise.all([ client.getEnsAvatar({ name: ensName }), Promise.all([ client.getEnsText({ name: ensName, key: "description" }), client.getEnsText({ name: ensName, key: "com.twitter" }), client.getEnsText({ name: ensName, key: "com.github" }), client.getEnsText({ name: ensName, key: "url" }), ]), ]); return { name: ensName, avatar, description: textRecords[0], twitter: textRecords[1], github: textRecords[2], website: textRecords[3], }; } 

Як розпізнавати аватари?

ENS avatar підтримує три формати: HTTP URL, IPFS та NFT посилання (eip155:1/erc721:0x.../tokenId). Viem автоматично обробляє всі варіанти та повертає кінцевий URL. Для NFT аватарів важлива перевірка: власник імені повинен бути власником токена.

// viem getEnsAvatar автоматично обробляє всі формати const avatarUrl = await client.getEnsAvatar({ name: "vitalik.eth" }); 

Як записати профіль в ENS?

Для запису використовуємо walletClient та simulateContract. Адреса публічного resolver на мейннеті — 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63.

Покроковий процес:

  1. Підключіть гаманець (MetaMask, WalletConnect) через viem walletClient.
  2. Отримайте адресу публічного resolver для вашої мережі (наприклад, для mainnet 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63).
  3. Створіть транзакцію виклику setText з namehash, ключем та значенням.
  4. Підпишіть та відправте транзакцію.
  5. Дочекайтесь підтвердження — дані з'являться в блокчейні.
import { createWalletClient, custom } from "viem"; const walletClient = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }); const RESOLVER = "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63"; const ENS_ABI = [...] // ABI resolver const { request } = await client.simulateContract({ address: RESOLVER, abi: ENS_ABI, functionName: "setText", args: [namehash("alice.eth"), "description", "DeFi developer"], account: walletClient.account, }); await walletClient.writeContract(request); 

Як кешувати дані профілю для продуктивності?

ENS-дані змінюються рідко — агресивне кешування виправдане. Ми використовуємо Redis з TTL для різних типів записів. Кешування знижує навантаження на RPC у 50 разів, а середній час відповіді resolver'а становить 200 мс.

Поле TTL кешу
Адреса (forward resolution) 10 хвилин
Reverse resolution 10 хвилин
Avatar 1 година
Текстові записи 30 хвилин

Розмір кешу мінімальний (кілька KB на профіль), можна зберігати тисячі профілів без навантаження на RPC.

Деталі реалізації кешування

Використовуємо Redis cluster з реплікацією для відмовостійкості. Ключ кешу — namehash імені. При промаху — запит до resolver'а, запис у кеш з TTL. Для популярних ENS-імен (понад 1000 запитів на день) встановлюємо TTL на 5 хвилин менше, щоб дані оновлювалися частіше. Моніторинг через Prometheus + Grafana.

Як верифікувати пов'язані акаунти?

Простий текстовий запис не доводить володіння — будь-хто може написати чужий handle. Для верифікації використовуємо EAS (Ethereum Attestation Service). Довірений верифікатор випускає атестацію: "адреса X володіє Twitter @Y". Програма читає не текст, а атестацію. Альтернатива — Keybase або Lens Protocol з криптографічним підписом.

Що входить у розробку системи ENS-профілів?

Ми надаємо:

  • Архітектуру та смарт-контракти (кастомізований resolver, EAS інтеграція)
  • API для читання/запису з кешуванням (viem/ethers.js)
  • UI-компоненти (віджет профілю, редагування)
  • Документацію та доступ до репозиторію
  • Розгортання на обраній мережі (Ethereum, Polygon, Arbitrum)
  • Навчання команди та підтримку на 30 днів після запуску

Досвід та гарантії

Наша команда — Web3-інженери з 5+ роками досвіду. Ми провели 10+ аудитів смарт-контрактів, розробили 30+ dApp. Обробили понад 1 млн запитів до resolver'ів. Гарантуємо безпеку: всі контракти проходять статичний аналіз (Slither, Mythril) та фаззинг (Echidna). Надаємо сертифікат аудиту для публічних проектів.

Зв'яжіться з нами для оцінки вашого проекту — отримайте консультацію щодо термінів та архітектури. Замовте розробку системи профілів на ENS та отримайте аудит безпеки в подарунок.