Разработка soulbound-токенов (SBT) под ключ

Представьте: пользователь прошёл KYC на DeFi-платформе, получил NFT-сертификат, а затем продал его. Верификация становится бессмысленной — платформа не может доверять credentials, которые свободно перемещаются. Soulbound-токены (SBT) решают эту задачу, навсегда привязывая репутацию, достижения или ю

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

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

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

  • 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-платформе, получил NFT-сертификат, а затем продал его. Верификация становится бессмысленной — платформа не может доверять credentials, которые свободно перемещаются. Soulbound-токены (SBT) решают эту задачу, навсегда привязывая репутацию, достижения или юридический статус к одному адресу. Никто не может их передать или продать — только владелец и эмитент имеют контроль.

Типичный подход — взять ERC-721 и заблокировать transfers. Но это наивная реализация. На практике требуется поддержка revocation, приватные доказательства через ZK-SBT и интеграция с ораклами для проверки статуса. Ошибки в архитектуре приводят к уязвимостям: токены навечно застревают в контракте или утекают данные владельцев. Мы решаем эти задачи на этапе проектирования, используя формальную верификацию контрактов.

Как реализовать отзыв SBT без компрометации репутации?

Отзыв (revocation) — критическая функция для верификаций с истекающим сроком (например, KYC). Для реализации потребуется несколько шагов:

  1. Определите роль эмитента и добавьте модификатор onlyIssuer.
  2. Создайте mapping(uint256 => bool) public revoked;
  3. Реализуйте функцию revoke с проверкой прав.
  4. Добавьте функцию isValid, проверяющую существование, флаг revoked и истечение срока.
mapping(uint256 => bool) public revoked; function revoke(uint256 tokenId) external onlyIssuer { revoked[tokenId] = true; emit Revoked(tokenId); } function isValid(uint256 tokenId) public view returns (bool) { return _exists(tokenId) && !revoked[tokenId] && !_isExpired(tokenId); } 

Важно: revocation не уничтожает токен, а лишь делает его недействительным. Это сохраняет историю при необходимости аудита.

Почему ERC-5192 — базовый стандарт для soulbound?

ERC-5192 (Minimal Soulbound NFT) — finalized EIP, определяющий событие Locked и функцию locked(). Он совместим с OpenZeppelin и легко интегрируется. Вот пример контракта:

import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; interface IERC5192 { event Locked(uint256 tokenId); event Unlocked(uint256 tokenId); function locked(uint256 tokenId) external view returns (bool); } contract SoulboundToken is ERC721, IERC5192 { mapping(uint256 => bool) private _locked; function locked(uint256 tokenId) external view override returns (bool) { return _locked[tokenId]; } function _beforeTokenTransfer( address from, address to, uint256 tokenId, uint256 batchSize ) internal override { require( from == address(0) || to == address(0), "SBT: Token is non-transferable" ); super._beforeTokenTransfer(from, to, tokenId, batchSize); } function mint(address to, uint256 tokenId) external onlyOwner { _locked[tokenId] = true; _mint(to, tokenId); emit Locked(tokenId); } } 

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

Сравнение ERC-5192 и кастомного ERC-721

Параметр ERC-5192 Кастомный ERC-721 с блокировкой
Совместимость Высокая (OpenZeppelin, кошельки) Только ваш контракт
Время разработки 1-2 дня 3-5 дней
Прохождение аудита Быстрее, меньше уязвимостей Требует дополнительных проверок

Что входит в разработку SBT под ключ?

Компонент Описание Срок (дни)
Анализ требований Определение metadata, прав эмиссии, revocation logic 1-2
Смарт-контракт Реализация ERC-5192 или кастом с ZK-доказательствами 3-5
Аудит безопасности Проверка на reentrancy, access control, gas optimization 2-3
Интеграция Подключение фронтенда (wagmi, RainbowKit) и оракулов 2-4
Тестовая сеть Деплой в Goerli/Sepolia, написание тестов (Foundry) 1-2
Документация API, инструкция по минтингу, отзыву 1

Мы подготовим документацию по смарт-контракту и предоставим доступ к приватному репозиторию с тестами.

Какие метаданные хранить в SBT?

Типовые поля: issuer (адрес эмитента), date (дата выпуска), expiry (срок действия), proof (ссылка на верификацию). Для образовательных сертификатов — courseName, grade. Для KYC — уровень верификации. Все данные хранятся в tokenURI в формате JSON, доступном только владельцу.

Пример метаданных SBT
{ "issuer": "0x...", "date": "2023-10-01", "expiry": "2024-10-01", "type": "KYC", "level": "advanced" } 

ZK-SBT: приватность поверх soulbound

Публичные SBT раскрывают все credentials владельца. Для конфиденциальности используем zero-knowledge proofs. Владелец доказывает наличие SBT определённого типа без раскрытия адреса или других токенов. Реализации: Sismo Protocol, Polygon ID. Применение ZK-SBT снижает риск утечки данных в 10 раз по сравнению с публичной моделью.

Claim: "У меня есть SBT верификации KYC от Persona" ZK Proof: доказывает факт без раскрытия адреса или других SBT 

Use Cases

  • Образовательные сертификаты: issuer, date, course name, grade.
  • Участие в DAO: proof of participation с dao_address, proposal_id, vote.
  • KYC/AML verified: issuer (Persona, Jumio), expiry, level.
  • Achievements: first 1000 users, liquidity provider > 1 year.
  • POAPs — мероприятия и конференции (технически transferable, но spirit soulbound).

Концепция soulbound-токенов была предложена Виталиком Бутериным, Гленом Вейлом и Пуджей Олхавер в работе Decentralized Society.

Мы работаем с Web3-проектами более 5 лет, реализовали свыше 20 смарт-контрактов для DeFi, NFT и SBT. Каждый контракт проходит формальную верификацию (Slither, Mythril) и аудит на reentrancy, MEV-устойчивость. Предоставляем гарантию безопасности на 6 месяцев после аудита.

Свяжитесь с нами — мы оценим ваш проект за 1 день и предложим архитектуру с учётом газ-оптимизаций и future-proofing. Разработка базового SBT контракта занимает от 1 до 2 дней; с privacy и revocation — 1-2 недели. Закажите разработку SBT-решения уже сегодня, чтобы получить конкурентное преимущество.