Разработка системы аттестации (EAS — Ethereum Attestation Service)

Допустим, вам нужно построить систему верификации KYC для DeFi-платформы. On-chain хранение каждой анкеты — дорого, а IPFS без подтверждения не вызывает доверия. Решение — [Ethereum Attestation Service (EAS)](https://github.com/ethereum-attestation-service/eas-contracts): off-chain данные с on-chain

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

Часто задаваемые вопросы

Последние работы

  • 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

Допустим, вам нужно построить систему верификации KYC для DeFi-платформы. On-chain хранение каждой анкеты — дорого, а IPFS без подтверждения не вызывает доверия. Решение — Ethereum Attestation Service (EAS): off-chain данные с on-chain подписью. Мы разрабатываем системы аттестации на EAS под ключ: от проектирования схемы до deployment resolver-контракта и интеграции фронтенда через EAS SDK. Согласно спецификации, EAS обеспечивает верифицируемость и экономию газа до 90% по сравнению с прямым хранением данных в блокчейне. EAS контракты — открытая кодовая база, которую мы адаптируем под ваш сценарий.

Проблемы, которые решаем

Gas-затраты

Хранение полных данных on-chain при массовом выпуске аттестаций (например, тысячи пользователей) ведёт к неоправданным расходам. EAS позволяет хранить только UID в цепочке, а сами данные — off-chain (IPFS, Arweave). Экономия газа — до 90%.

Доверие к off-chain

Без on-chain привязки данные легко подделать. EAS решает это через неизменяемый UID, верифицируемый в смарт-контракте. Любой может проверить, что аттестация создана конкретным адресом и не отозвана.

Управление отзывом

Часто нужно аннулировать аттестацию (пользователь вышел из DAO, истёк KYC). Resolver-контракт EAS позволяет гибко управлять revocable-флагом и выполнять дополнительную логику при отзыве.

Как мы это делаем

В процессе разработки системы EAS мы регистрируем схему, создаём resolver и интегрируем SDK. Рассмотрим типовую реализацию.

Регистрация схемы

Схема определяет структуру данных аттестации. Регистрируется один раз в SchemaRegistry и может переиспользоваться.

import { ISchemaRegistry, SchemaRecord } from "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol"; ISchemaRegistry schemaRegistry = ISchemaRegistry(EAS_SCHEMA_REGISTRY); // Регистрация схемы bytes32 schemaUID = schemaRegistry.register( "bool isKYCVerified, uint8 verificationLevel, string jurisdiction", ISchemaResolver(resolverAddress), // опциональный resolver контракт true // revocable ); 

Создание Attestation

import { IEAS, AttestationRequest, AttestationRequestData } from "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol"; IEAS eas = IEAS(EAS_ADDRESS); bytes32 attestationUID = eas.attest( AttestationRequest({ schema: schemaUID, data: AttestationRequestData({ recipient: recipientAddress, expirationTime: block.timestamp + 365 days, revocable: true, refUID: bytes32(0), data: abi.encode(true, 2, "EU"), // isKYCVerified, level, jurisdiction value: 0 }) }) ); 

Schema Resolver — безопасность и гибкость

Resolver-контракт вызывается при создании/отзыве аттестации. В нём можно проверять права аттестора, корректность данных, обновлять внешние хранилища. Без resolver контракт принимает любые данные — риск для системы.

import { SchemaResolver } from "@ethereum-attestation-service/eas-contracts/contracts/resolver/SchemaResolver.sol"; contract KYCAttestationResolver is SchemaResolver { mapping(address => bool) public verifiedAddresses; function onAttest(Attestation calldata attestation, uint256) internal override returns (bool) { require(authorizedAttesters[attestation.attester], "Not authorized"); (, uint8 level,) = abi.decode(attestation.data, (bool, uint8, string)); require(level >= 1 && level <= 3, "Invalid level"); verifiedAddresses[attestation.recipient] = true; return true; } function onRevoke(Attestation calldata attestation, uint256) internal override returns (bool) { verifiedAddresses[attestation.recipient] = false; return true; } } 

Интеграция через EAS SDK (TypeScript)

import { EAS, SchemaEncoder } from "@ethereum-attestation-service/eas-sdk"; const eas = new EAS(EAS_ADDRESS); eas.connect(signer); const schemaEncoder = new SchemaEncoder("bool isKYCVerified,uint8 verificationLevel,string jurisdiction"); const encodedData = schemaEncoder.encodeData([ { name: "isKYCVerified", value: true, type: "bool" }, { name: "verificationLevel", value: 2, type: "uint8" }, { name: "jurisdiction", value: "EU", type: "string" } ]); const tx = await eas.attest({ schema: schemaUID, data: { recipient: recipientAddress, expirationTime: BigInt(Math.floor(Date.now() / 1000) + 365 * 24 * 3600), revocable: true, data: encodedData } }); const uid = await tx.wait(); 

Как выбрать между on-chain и off-chain аттестациями?

On-chain аттестации хранят все данные в блокчейне — высокая стоимость, но постоянная доступность. Off-chain аттестации хранят данные в IPFS/Arweave, а в блокчейне только UID. Off-chain вариант в 10 раз дешевле при массовом выпуске, что критично для KYC или репутационных порталов. Сравнение:

Параметр On-chain Off-chain
Стоимость газа Высокая (запись 200+ байт) Низкая (только 32 байта UID)
Скорость Зависит от сети Почти бесплатно
Доступность данных Всегда в цепочке Через IPFS (возможна задержка)
Верификация Прямая по цепочке Через UID и подпись

Для массовых сценариев (KYC, репутация) off-chain оптимальна. Для редких, но ценных аттестаций (дипломы, лицензии) можно выбрать on-chain.

Почему Resolver-контракт критичен для безопасности?

Без resolver любой адрес может зааттестовать произвольные данные по вашей схеме — система теряет смысл. Resolver-контракт выступает шлюзом: проверяет, что аттестор авторизован, данные валидны, не превышен лимит. Также можно реализовать автоматическое создание встречных аттестаций (например, «подтверждение KYC» от проверяющего в ответ на запрос). Мы всегда включаем resolver в архитектуру для ответственных схем.

Процесс работы

  1. Аналитика — изучаем сценарий, определяем поля схемы, revocability, срок действия.
  2. Проектирование — создаём схему (JSON/ABI), проектируем resolver с логикой.
  3. Разработка — пишем смарт-контракты (Solidity), покрываем тестами (Foundry).
  4. Интеграция — настраиваем EAS SDK фронтенда: создание, просмотр, отзыв аттестаций.
  5. Тестирование — деплоим на тестовой сети, проводим интеграционное тестирование.
  6. Деплой — регистрируем схему в мейннете, деплоим resolver, запускаем в production.

Что входит в работу

Deliverable Описание
Схема EAS AB-описание и JSON-схема, зарегистрированная в SchemaRegistry
Resolver-контракт Аудированный смарт-контракт с бизнес-логикой
SDK-модуль TypeScript/ethers.js функции для фронтенда
Документация Описание схемы, примеры использования, инструкция по отзыву
Обучение Рабочая сессия для команды по работе с EAS
Поддержка 1 месяц после запуска: консультации и баг-фикс

Наш опыт и гарантии

Мы — команда блокчейн-инженеров с более чем 5-летним опытом в Ethereum-разработке. Реализовали более 15 проектов на EAS: от KYC-систем для DeFi до репутационных порталов для DAO. Каждый resolver-контракт проходит статический анализ Slither и fuzz-тестирование Echidna. Гарантируем отсутствие reentrancy и переполнения — эти уязвимости встречаются даже в EAS-решениях новичков.

Сроки и стоимость

Разработка системы на EAS занимает от 2 до 4 недель в зависимости от сложности. Стоимость рассчитывается индивидуально под ваш сценарий. Для предварительной оценки — свяжитесь с нами: мы проанализируем проект за 1 рабочий день и подготовим коммерческое предложение. Закажите разработку системы EAS — мы составим смету и сроки под вашу задачу. Получите консультацию уже сегодня.

Примеры использования

EAS применяется в: Gitcoin Passport (аттестации об on-chain активности), Optimism Retro Funding (подтверждение вклада), Safe (доверенные адреса). Мы можем адаптировать любой из этих сценариев под вашу задачу.