ERC-725¶
ERC-725 — это стандарт токенов на блокчейне Ethereum, предложенный Фабианом Фогельштеллером в 2017 году (Ethereum Improvement Proposal 725). Он предназначен для представления цифровых идентификаторов (Identity) в децентрализованных системах, позволяя привязывать к адресу смарт-контракта набор ключей (управляющих, подписывающих) и информационных записей (claims). Стандарт описывает интерфейс для управления ключами и хранения данных, связанных с идентификацией, без привязки к конкретному токену (ERC-20 или ERC-721).
¶История и контекст
Стандарт ERC-725 был предложен в рамках Ethereum Improvement Proposal (EIP) 725 автором Фабианом Фогельштеллером (известным также как создатель стандарта ERC-20). Основная цель — создать универсальный протокол для децентрализованной идентификации (DID), который мог бы использоваться в различных приложениях: от управления доступом до верификации личности. В отличие от токенов, представляющих активы (ERC-20, ERC-721), ERC-725 фокусируется на представлении субъекта (человека, организации, устройства) в блокчейне.
Стандарт был опубликован в 2017 году, но его реализация и внедрение происходили постепенно, особенно в контексте развития экосистемы децентрализованных финансов (DeFi) и управления цифровыми активами. ERC-725 часто рассматривается как основа для построения систем самоуправляемой идентичности (Self-Sovereign Identity, SSI), где пользователь полностью контролирует свои данные, не полагаясь на централизованные реестры.
¶Технические характеристики
¶Основные компоненты
ERC-725 определяет смарт-контракт, который реализует интерфейс для двух ключевых функций:
- Управление ключами (Key Management) — контракт может хранить список ключей, которые имеют право выполнять определённые действия (например, подписывать транзакции, обновлять записи, делегировать полномочия). Каждый ключ может быть связан с типом (например, MANAGEMENT, ACTION, CLAIM) и метаданными.
- Хранение записей (Claims) — контракт может хранить произвольные данные (claims) в виде пар «ключ-значение», где ключом является идентификатор схемы (например, хеш описания), а значением — закодированные данные (например, подписанное утверждение о возрасте или гражданстве).
¶Интерфейс
Стандарт определяет следующие функции (сигнатуры):
getKey(bytes32 _key)— возвращает информацию о ключе (тип, права, метаданные).getKeysByPurpose(uint256 _purpose)— возвращает список ключей, соответствующих заданной цели (например, все ключи управления).setKey(bytes32 _key, uint256 _purpose, uint256 _keyType, bytes memory _keyData)— устанавливает или обновляет ключ.removeKey(bytes32 _key)— удаляет ключ.getData(bytes32 _key)— возвращает запись по ключу.setData(bytes32 _key, bytes memory _value)— устанавливает запись.execute(uint256 _operation, address _to, uint256 _value, bytes memory _data)— позволяет выполнять произвольные вызовы от имени контракта (например, отправлять ETH или вызывать другие контракты).
¶Связь с ERC-735
Часто ERC-725 рассматривается в паре с ERC-735 (Claim Holder), который описывает интерфейс для хранения и проверки утверждений (claims) от третьих сторон. Вместе они образуют основу для децентрализованной идентификации. ERC-725 фокусируется на управлении ключами и выполнении действий, а ERC-735 — на хранении и верификации данных.
¶Применение
¶Управление цифровыми активами
ERC-725 может использоваться для создания «умных кошельков» (smart wallets), где управление активами делегируется нескольким ключам (например, с использованием мультиподписи). Это повышает безопасность: компрометация одного ключа не приводит к потере контроля над средствами.
¶Децентрализованная идентификация (DID)
Стандарт является основой для построения систем DID на Ethereum. Пользователь может создать контракт ERC-725, который представляет его цифровую личность. К этому контракту привязываются ключи (например, для подписи сообщений) и утверждения (например, от правительства или работодателя). Верификатор может проверить подпись и данные, не обращаясь к централизованному серверу.
¶Управление доступом
ERC-725 может использоваться для управления доступом к ресурсам (например, к файлам, API или физическим устройствам). Владелец контракта может выдавать ключи доступа, которые автоматически проверяются при попытке доступа.
¶Примеры реализаций
- ERC-725 Alliance — сообщество разработчиков, поддерживающее стандарт и создающее эталонные реализации (например, библиотека
erc725.jsдля взаимодействия с контрактами). - LUKSO — блокчейн-платформа, ориентированная на цифровую идентичность и креативную экономику, активно использует ERC-725 (LSP0, LSP1, LSP2) для создания профилей и управления активами.
- uPort — проект децентрализованной идентификации (хотя изначально использовал собственные стандарты, позже интегрировал элементы ERC-725).
¶Преимущества и ограничения
¶Преимущества
- Децентрализация — пользователь полностью контролирует свою идентичность, не полагаясь на централизованные провайдеры.
- Гибкость — можно хранить любые данные и управлять любыми ключами.
- Совместимость — стандарт легко интегрируется с другими протоколами Ethereum (например, с ERC-20 для управления токенами).
¶Ограничения
- Сложность — реализация требует понимания смарт-контрактов и криптографии, что может быть барьером для массового внедрения.
- Газовые затраты — каждая операция с контрактом (установка ключа, запись данных) требует оплаты газа, что может быть дорого при частых обновлениях.
- Масштабируемость — хранение больших объёмов данных в блокчейне неэффективно; обычно данные хранятся вне цепочки (off-chain), а в контракте — только хеши.
¶Критика и альтернативы
Некоторые разработчики критикуют ERC-725 за избыточную сложность и отсутствие чёткой спецификации для некоторых сценариев (например, для управления делегированием). В качестве альтернатив предлагаются:
- ERC-1056 (Ethereum DID) — более лёгкий стандарт для DID, не требующий хранения данных в контракте (использует события).
- ERC-1484 (Digital Identity) — стандарт для агрегации идентификаторов с использованием нескольких смарт-контрактов.
- DID (Decentralized Identifiers) — стандарт W3C, который может быть реализован на разных блокчейнах, включая Ethereum.
Тем не менее, ERC-725 остаётся одним из наиболее известных и широко используемых стандартов для децентрализованной идентификации на Ethereum, особенно в контексте проектов, ориентированных на управление цифровыми активами и самоуправляемую идентичность.
¶Интересные факты
- Стандарт ERC-725 был предложен тем же автором, что и ERC-20 (Фабиан Фогельштеллер), что подчёркивает его важность для экосистемы Ethereum.
- В 2020 году ERC-725 был расширен до стандарта LSP0 (LUKSO Standard Proposal 0), который добавляет метаданные и улучшенное управление ключами.
- Некоторые реализации ERC-725 используют подход «прокси-контрактов» (proxy pattern) для обновления логики без изменения адреса идентификатора.
¶Источники
- Ethereum Improvement Proposal 725 (EIP-725) — официальная спецификация.
- ERC-725 Alliance — документация и примеры реализации.
- LUKSO Technical Documentation — описание LSP0 и LSP2.
- Статья «Decentralized Identity on Ethereum» — обзор подходов к DID.
- Документация OpenZeppelin — реализация ERC-725 в библиотеке смарт-контрактов.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


