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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка системи атестації (EAS — Ethereum Attestation Service)
Середній
~3-5 днів
Часті запитання

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

Етапи блокчейн-розробки

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

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

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

EAS (Ethereum Attestation Service) — відкритий протокол для створення on-chain та off-chain атестацій на Ethereum та L2. Attestation — це будь-яке твердження однієї адреси про іншу адресу або факт. "Адреса A підтверджує, що адреса B пройшла KYC", "Адреса A підтверджує, що B є учасником DAO".

Ключові концепції EAS

Schema: структура даних атестації. Зареєстрована on-chain в SchemaRegistry. Визначає поля та їхні типи.

Attestation: конкретне підтвердження за схемою. Містить дані, attester (хто підтвердив), recipient (про кого), expiration, revocable прапорець.

On-chain vs Off-chain: атестації можуть зберігатися on-chain (дорого, але постійно) або off-chain (IPFS/Arweave) з on-chain UID для верифікації.

Реєстрація схеми

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

Опціональний смарт-контракт, який викликається при створенні/відкликанні атестації — для додаткової логіки:

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) {
        // Тільки whitelist attesters можуть створювати
        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();

Випадки використання

EAS використовується в: Gitcoin Passport (атестації on-chain активності), Optimism Retro Funding (атестації внеску), Safe (атестації довірених адрес).

Розробка системи на основі EAS — 2-4 тижні для власної схеми + resolver + frontend.