Разработка системы soul-bound credentials

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка системы soul-bound credentials
Средний
~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

Разработка системы soul-bound credentials

Soul-bound credentials — это verifiable credentials реализованные через non-transferable токены (SBT). Сочетают криптографическую верифицируемость VC с on-chain перманентностью и composability. Разработчики протоколов могут проверять credentials on-chain в смарт-контрактах — то что обычные VC не поддерживают напрямую.

Отличие от обычных SBT

Обычный SBT: NFT с metadata. Metadata содержит claims, но их верификация требует trust к issuer и знания их signing key.

Soul-bound credential: SBT где on-chain доступно не только факт наличия, но и верифицируемые claims. Смарт-контракт может проверить что SBT выдан конкретным trusted issuer и содержит определённые атрибуты.

Реализация

contract SoulBoundCredentialSystem {
    // Trusted issuers с их публичными ключами
    mapping(address => bool) public trustedIssuers;
    
    struct Credential {
        address issuer;
        uint256 issuedAt;
        uint256 expiresAt;
        bytes32 credentialType;
        bytes encodedClaims;  // ABI-encoded claims
        bool revoked;
    }
    
    mapping(uint256 => Credential) public credentials;
    mapping(address => uint256[]) public holderCredentials;
    
    uint256 private _tokenIdCounter;
    
    function issueCredential(
        address recipient,
        bytes32 credentialType,
        bytes calldata claims,
        uint256 validityPeriod
    ) external onlyTrustedIssuer returns (uint256) {
        uint256 tokenId = ++_tokenIdCounter;
        
        credentials[tokenId] = Credential({
            issuer: msg.sender,
            issuedAt: block.timestamp,
            expiresAt: block.timestamp + validityPeriod,
            credentialType: credentialType,
            encodedClaims: claims,
            revoked: false
        });
        
        holderCredentials[recipient].push(tokenId);
        // mint SBT (non-transferable)
        _mintSoulBound(recipient, tokenId);
        
        return tokenId;
    }
    
    // Другие смарт-контракты вызывают это для on-chain проверки
    function verifyCredential(
        address holder,
        bytes32 credentialType,
        bytes32 requiredClaim,
        bytes32 requiredValue
    ) external view returns (bool) {
        uint256[] memory tokenIds = holderCredentials[holder];
        
        for (uint i = 0; i < tokenIds.length; i++) {
            Credential memory cred = credentials[tokenIds[i]];
            
            if (cred.credentialType == credentialType &&
                !cred.revoked &&
                block.timestamp < cred.expiresAt &&
                trustedIssuers[cred.issuer]) {
                
                // Проверить конкретный claim в encoded данных
                if (_checkClaim(cred.encodedClaims, requiredClaim, requiredValue)) {
                    return true;
                }
            }
        }
        return false;
    }
}

ZK Soul-bound Credentials

Публичные on-chain claims нарушают приватность. ZK подход:

Sismo Protocol: пользователь генерирует ZK proof на основе своих SBT/on-chain данных. Proof доказывает факт без раскрытия конкретных токенов. Zkdrop — claim governance power или rewards на основе ZK proof.

Анонимные attestations: доказать «у меня есть SBT от Trusted Issuer X с claim level >= 2» без указания tokenId или других данных.

Soul-bound credentials становятся инфраструктурным слоем для compliant DeFi, DAO governance и web3 репутационных систем. Разработка: 4-8 недель.