Интеграция с WorldCoin (Proof of Personhood)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Интеграция с WorldCoin (Proof of Personhood)
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1309
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1222
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    922
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1151
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    614
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    887

Интеграция с WorldCoin (Proof of Personhood)

WorldCoin решает одну из фундаментальных проблем Web3: как доказать, что за адресом стоит уникальный живой человек, не раскрывая его личность. Стандартные KYC-системы требуют паспорт и привязывают адрес к реальной личности. WorldCoin использует iris-scanning и zero-knowledge proof для подтверждения человечности без деанонимизации.

Как работает World ID

Iris-based biometry и ZK-proof

Пользователь проходит сканирование радужной оболочки через устройство Orb. Из скана формируется IrisCode — 2048-битный хеш биометрических данных. Сам IrisCode не хранится в открытом виде: в Semaphore-дерево (Merkle tree) добавляется leaf с commitment пользователя.

Когда пользователь доказывает свою уникальность приложению, он генерирует ZK-SNARK proof, который доказывает:

  • Его commitment присутствует в дереве (он прошёл Orb верификацию)
  • Он ещё не использовал World ID для данного action (nullifier уникален)

Proof не раскрывает ни адрес, ни IrisCode, ни связь между разными приложениями. Это selective disclosure в чистом виде.

Nullifier и защита от double-spend

Ключевая криптографическая примитив: nullifier_hash = hash(identity_secret, app_id, action_id). Один человек для одного action в одном приложении всегда генерирует одинаковый nullifier. Хранить нужно только уже использованные nullifiers — проверяем что такого ещё нет, добавляем, больше использовать нельзя.

Это аналог serial number в physical cash — при погашении купюры её номер записывается как "использован". Без раскрытия кто именно её погасил.

Техническая интеграция

On-chain верификация через WorldID контракт

import { IWorldID } from "@worldcoin/world-id-contracts/src/interfaces/IWorldID.sol";

contract MyApp {
    IWorldID internal immutable worldId;
    uint256 internal immutable groupId = 1; // Orb-verified
    uint256 internal immutable externalNullifier;
    
    mapping(uint256 => bool) internal nullifierHashes;

    constructor(IWorldID _worldId, string memory appId, string memory actionId) {
        worldId = _worldId;
        externalNullifier = abi.encodePacked(
            abi.encodePacked(appId).hashToField(),
            abi.encodePacked(actionId).hashToField()
        ).hashToField();
    }

    function verifyAndExecute(
        address signal,
        uint256 root,
        uint256 nullifierHash,
        uint256[8] calldata proof
    ) public {
        require(!nullifierHashes[nullifierHash], "Already used");
        
        worldId.verifyProof(
            root,
            groupId,
            abi.encodePacked(signal).hashToField(),
            nullifierHash,
            externalNullifier,
            proof
        );
        
        nullifierHashes[nullifierHash] = true;
        // дальнейшая логика
    }
}

Off-chain верификация через Developer Portal

Для Web2 бэкенда — облегчённый вариант без on-chain транзакции:

import { verifyCloudProof } from "@worldcoin/idkit";

const result = await verifyCloudProof(
  proof,          // из IDKit виджета
  app_id,
  action,
  signal          // опциональный
);

if (result.success) {
  // пользователь верифицирован, nullifier уже отмечен
}

Облачная верификация проще, но централизована — Developer Portal Worldcoin видит все верификации вашего приложения. Для privacy-critical use cases — только on-chain.

IDKit React виджет

import { IDKitWidget, VerificationLevel } from "@worldcoin/idkit";

<IDKitWidget
  app_id="app_staging_..."
  action="vote_proposal_123"
  verification_level={VerificationLevel.Orb}
  onSuccess={(proof) => sendToContract(proof)}
>
  {({ open }) => <button onClick={open}>Verify with World ID</button>}
</IDKitWidget>

VerificationLevel.Device — более низкий уровень (без Orb, только phone verification), подходит для менее critical actions. VerificationLevel.Orb — полная биометрическая верификация.

Use cases и ограничения

Где применимо

Airdrop защита от sybil: вместо "1 адрес = 1 аллокация" → "1 человек = 1 аллокация". Nullifier привязан к action (например, claim_airdrop_season1) — повторная регистрация другим адресом не поможет.

Governance: "1 человек = 1 голос" в DAO без доверия к токен-взвешенному голосованию.

Rate limiting: ограничение действий (бесплатный trial, faucet) по-человечески, не по-адресно.

Сertificate/credential системы: выдача credential уникальному пользователю с возможностью его предъявить без раскрытия identity.

Ограничения

Географическое покрытие Orb: устройства Orb сети неравномерно распределены. В регионах с низким покрытием пользователи не могут пройти верификацию — это реальное UX ограничение.

World App зависимость: ZK proof генерируется в World App (мобильное приложение). Пользователь без смартфона или нежелающий устанавливать приложение — не может верифицироваться. Для B2B и enterprise сценариев это проблема.

Device verification: менее строгий уровень, но phone uniqueness — слабее чем iris uniqueness.

Процесс интеграции

Этап Содержание Срок
Регистрация в Developer Portal Создание app_id, настройка actions 1 день
Smart contract WorldID верификатор + nullifier хранение 2-3 дня
Frontend IDKit виджет, обработка proof 1-2 дня
Тестирование Staging environment, testnet деплой 1-2 дня

Базовая интеграция с on-chain верификацией — 5-7 рабочих дней. Стоимость рассчитывается индивидуально.