Разработка репутационной системы на блокчейне: EAS, SBT и ZK

Репутация в Web3 — одна из нерешённых задач. В Web2 репутация централизована: рейтинг Uber хранится у Uber, отзывы Amazon принадлежат Amazon. При смене платформы история обнуляется. Блокчейн-репутация решает это: данные верифицируемы, портативны и устойчивы к цензуре. Однако реализовать её правильно

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

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

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

  • 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

Репутация в Web3 — одна из нерешённых задач. В Web2 репутация централизована: рейтинг Uber хранится у Uber, отзывы Amazon принадлежат Amazon. При смене платформы история обнуляется. Блокчейн-репутация решает это: данные верифицируемы, портативны и устойчивы к цензуре. Однако реализовать её правильно — задача значительно сложнее, чем кажется: требуется продуманная архитектура, устойчивость к Sybil-атакам, приватность и масштабируемость.

Мы занимаемся разработкой репутационных систем на блокчейне более 5 лет — реализовали более 30 проектов в DeFi, DAO и социальных сетях. В этой статье разберём ключевые технические подходы: аттестации через EAS, Soulbound токены, агрегацию скора, Sybil-устойчивость и приватность.

Системы репутации критичны для доверия в децентрализованных приложениях: без них невозможно отличить добросовестного участника от злоумышленника. On-chain репутация позволяет агрегировать данные из разных протоколов и предоставлять верифицируемые credentials. Экономия на газе может быть существенной для активной системы.

Модели репутационных систем

Attestation-based репутация

Наиболее распространённый подход — репутация как набор attestations (подтверждений) от других участников или протоколов. EAS (Ethereum Attestation Service) — стандартная инфраструктура для этого.

Attestation в EAS — это подписанная запись: "аттестатор X утверждает, что субъект Y имеет свойство Z". Свойство Z определяется схемой — структурированными данными, зарегистрированными on-chain.

// Схема для репутации разработчика // "address developer, uint8 skill_level, bool verified_audit, string project_ref" // Аттестация выглядит так: { schemaUID: bytes32("..."), recipient: address("разработчик"), attester: address("протокол или DAo"), data: abi.encode(developer, skill_level, verified_audit, project_ref), time: block.timestamp, revocable: true } 

On-chain attestation — публична и верифицируема. Off-chain attestation (через EAS off-chain) — дешевле, но требует хранения вне сети (IPFS, Arweave).

Сore vs derived репутация

Важная архитектурная концепция: core signals (первичные данные) vs derived scores (производные оценки).

Core signals — конкретные измеримые факты:

  • Количество successful транзакций за N месяцев
  • TVL под управлением (для DeFi позиций)
  • Возраст кошелька
  • Attestations от верифицированных источников
  • Gitcoin Passport score
  • Lens Protocol follower count

Derived scores — агрегация core signals в числовой рейтинг. Проблема: формула агрегации — политическое решение, и её централизованное изменение меняет репутацию задним числом. Решение: хранить core signals on-chain, агрегацию делать off-chain (upgradeable) или through governance.

Что такое Soulbound Token и зачем он нужен?

Soulbound Tokens (EIP-5192, EIP-4973) — non-transferable токены, привязанные к адресу. Нельзя купить, продать, передать — только заработать.

interface IERC5192 { event Locked(uint256 tokenId); event Unlocked(uint256 tokenId); function locked(uint256 tokenId) external view returns (bool); } contract ReputationSBT is ERC721, IERC5192 { mapping(uint256 => bool) private _locked; function _beforeTokenTransfer( address from, address to, uint256 tokenId, uint256 batchSize ) internal override { // Разрешаем только mint (from == 0) и burn (to == 0) require(from == address(0) || to == address(0), "Soulbound: non-transferable"); } function locked(uint256 tokenId) external view override returns (bool) { return _locked[tokenId]; } } 

SBT хорошо работает для дискретных credential (завершил аудит, участвовал в governance). Плохо — для непрерывных метрик (рейтинг постоянно меняется).

Ключевые технические проблемы

Как обеспечить Sybil-устойчивость?

Главная атака на репутационные системы — создание множества адресов для накручивания репутации. Защита требует привязки к чему-то scarce: биометрия (WorldCoin), социальный граф (Proof of Humanity), PoW-подобная работа (BrightID).

Для большинства проектов: комбинация минимального on-chain age (кошелёк старше 6 месяцев), минимального activity threshold, и опционального social verification (ENS домен, Twitter/X верификация).

Как защитить приватность в on-chain репутации?

Полностью публичная on-chain репутация — проблема. Зная адрес, можно видеть всю историю действий. Для business-критических данных это неприемлемо.

Решения:

  • ZK attestations: доказываешь что репутация > threshold, не раскрывая точный score. Circom/snarkjs схема, Noir — современный DSL.
  • Pseudonymous attestations: attestation привязан к pseudonymous identifier, не к основному кошельку. Связь между pseudonym и реальным кошельком знает только пользователь.
  • Selective disclosure: Verifiable Credentials с ZK proof — раскрываешь только нужное утверждение.

Кросчейн репутация

Репутация на Ethereum не видна контракту на Polygon без bridge. Решения:

  • Off-chain indexer + Merkle proof
  • LayerZero message
  • Self Protocol / Lens Protocol

Агрегация и веса

Репутационный score — взвешенная сумма сигналов. Пример модели:

Сигнал Максимальный вес Логика
Wallet age > 1 year 20 log(days / 365) * 20
Transaction volume 25 log10(volume_usd) * 5, cap 25
Governance participation 15 votes_cast / eligible * 15
Attestations from trusted 30 sum(attester_weight)
SBT count 10 min(sbt_count * 2, 10)

Логарифмическое масштабирование предотвращает доминирование крупных holders. Cap на каждый сигнал — нет single point of manipulation.

Decay функция

Репутация должна отражать текущее поведение, не только прошлое. Временной decay:

function getDecayedScore(score: number, lastActivityTimestamp: number): number { const daysSinceActivity = (Date.now() / 1000 - lastActivityTimestamp) / 86400; const decayFactor = Math.exp(-daysSinceActivity / HALF_LIFE_DAYS); // экспоненциальный decay return score * decayFactor; } 

HALF_LIFE_DAYS — параметр системы. 180 дней: через полгода без активности репутация уполовинивается.

Интеграция с существующими протоколами

Gitcoin Passport — агрегатор Web2/Web3 identity signals (GitHub, Twitter, ENS, POAP). Паспорт выдаёт score как Stamp-based репутацию. API для проверки: GET https://api.scorer.gitcoin.co/registry/score/{scorer_id}/{address}.

Lens Protocol — on-chain социальный граф. Followers, publications, mirrors — всё on-chain на Polygon.

POAP — NFT за участие в событиях. Guild.xyz — role-based access через репутационные условия.

Архитектура системы

[Core Signals Layer] On-chain: transaction history, token holdings, SBTs Off-chain: ENS, social graphs, POAP, Gitcoin Passport [Attestation Layer] EAS on-chain attestations (схемы + записи) Off-chain EAS (подписанные, хранятся в IPFS) [Aggregation Layer] Off-chain indexer (The Graph subgraph) Score calculation service (updatable algorithm) ZK proof generation (для privacy-preserving queries) [Consumer Layer] On-chain: smart contract queries (Merkle proof или oracle) Off-chain: REST API, GraphQL Frontend: reputation display components 

Процесс разработки

Фаза 1 — Архитектура (1-2 недели): определение core signals, схемы attestations в EAS, privacy модель, cross-chain требования.

Фаза 2 — Core contracts (2-3 недели): EAS схемы, SBT контракты (если нужны), on-chain aggregation если требуется.

Фаза 3 — Indexer и API (2-3 недели): The Graph subgraph для индексирования событий, score calculation сервис, REST/GraphQL API.

Фаза 4 — ZK layer (2-4 недели, если нужен): Circom схемы для privacy-preserving proof, verifier контракты.

Фаза 5 — Frontend (1-2 недели): reputation dashboard, attestation UI, интеграция с consumer dApps.

Как интегрировать EAS аттестации в проект: пошагово

  1. Определите схему аттестации: какие данные будете подтверждать.
  2. Разверните контракты EAS и зарегистрируйте схемы on-chain.
  3. Разработайте indexer для отслеживания событий аттестации.
  4. Реализуйте REST API для чтения и записи аттестаций.
  5. Подготовьте frontend-компонент для отображения репутации.

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

  • Архитектурная схема и документация
  • Смарт-контракты (Solidity/Rust) с аудитом безопасности
  • The Graph subgraph для индексации
  • REST/GraphQL API с документацией
  • ZK-схемы (если требуется приватность)
  • Frontend-компоненты для отображения репутации
  • Интеграция с Gitcoin Passport, Lens, POAP
  • Обучение команды и техническая поддержка

Бюджет разработки MVP рассчитывается индивидуально в зависимости от сложности.

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

Мы более 5 лет разрабатываем смарт-контракты и инфраструктуру для Web3. В портфеле — более 30 проектов, включая системы репутации для DeFi-протоколов и DAO. Гарантируем отсутствие reentrancy-уязвимостей, следуем best practices безопасности и обеспечиваем миграцию при upgrade.

Получите консультацию по архитектуре вашей репутационной системы — свяжитесь с нами. Закажите разработку MVP уже сегодня. Берём проекты как под ключ, так и на доработку существующих решений.

Компонент Технология Сложность
Attestations EAS Средняя
SBT ERC-5192 + OpenZeppelin Низкая
Indexing The Graph (AssemblyScript) Средняя
ZK proofs Circom + snarkjs или Noir Высокая
Cross-chain LayerZero или Merkle bridge Высокая
API Node.js + TypeScript Низкая

Полная production-ready система с privacy layer и cross-chain поддержкой — 3-4 месяца разработки. MVP с базовыми attestations и API — 4-6 недель.