Розробка системи верифікації дипломів і сертифікатів на блокчейні

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка системи верифікації дипломів і сертифікатів на блокчейні
Середній
~3-5 днів
Часті запитання

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

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Розробка системи верифікації дипломів і сертифікатів на блокчейні

Верифікація диплома — конкретна бізнес-задача: роботодавець або навчальна установа повинна перевірити подлинність документу за хвилини без довгого листування з університетом. Блокчейн тут працює як immutable нотаріус: факт видання диплома зафіксований і доступний для перевірки кожному.

Мінімально необхідна архітектура

Верифікація диплома не вимагає складних VC або DID систем. Достатньо простої схеми: університет зберігає хеш диплома у блокчейні, при верифікації порівнюємо хеш представленого документу з on-chain записом.

contract DiplomaVerification {
    struct DiplomaRecord {
        bytes32 documentHash;   // SHA-256 хеш PDF документу
        address institution;
        string recipientName;   // ім'я — НЕ адреса, студенти часто без гаманців
        string degree;
        uint256 issuedAt;
        bool revoked;
    }
    
    // documentHash => DiplomaRecord
    mapping(bytes32 => DiplomaRecord) public diplomas;
    
    // Авторизовані навчальні установи
    mapping(address => bool) public authorizedInstitutions;
    mapping(address => string) public institutionNames;
    
    event DiplomaIssued(bytes32 indexed documentHash, address indexed institution, string recipientName);
    event DiplomaRevoked(bytes32 indexed documentHash, string reason);
    
    function issueDiploma(
        bytes32 documentHash,
        string calldata recipientName,
        string calldata degree
    ) external onlyAuthorized {
        require(diplomas[documentHash].issuedAt == 0, "Already issued");
        
        diplomas[documentHash] = DiplomaRecord({
            documentHash: documentHash,
            institution: msg.sender,
            recipientName: recipientName,
            degree: degree,
            issuedAt: block.timestamp,
            revoked: false
        });
        
        emit DiplomaIssued(documentHash, msg.sender, recipientName);
    }
    
    function verifyDiploma(bytes32 documentHash) external view returns (
        bool isValid,
        string memory institution,
        string memory recipientName,
        string memory degree,
        uint256 issuedAt
    ) {
        DiplomaRecord memory record = diplomas[documentHash];
        return (
            record.issuedAt != 0 && !record.revoked,
            institutionNames[record.institution],
            record.recipientName,
            record.degree,
            record.issuedAt
        );
    }
}

QR-код верифікація

Зручний UX для роботодавців: диплом містить QR-код, при сканування відкривається сторінка верифікації.

// Генерація QR-кода при видачі диплома
function generateDiplomaQR(documentHash: string, chainId: number): string {
  const verificationUrl = `https://verify.university.edu/diploma?hash=${documentHash}&chain=${chainId}`;
  return QRCode.toDataURL(verificationUrl);
}

// Сторінка верифікації
async function verifyDiploma(documentHash: string): Promise<VerificationResult> {
  const provider = new ethers.JsonRpcProvider(RPC_URL);
  const contract = new ethers.Contract(DIPLOMA_CONTRACT, ABI, provider);
  
  const [isValid, institution, recipientName, degree, issuedAt] = 
    await contract.verifyDiploma(documentHash);
  
  return { isValid, institution, recipientName, degree, issuedAt: new Date(issuedAt * 1000) };
}

Batch видача

Для університетів — видача сотень дипломів після випуску:

function issueDiplomaBatch(
    bytes32[] calldata documentHashes,
    string[] calldata recipientNames,
    string[] calldata degrees
) external onlyAuthorized {
    require(documentHashes.length == recipientNames.length, "Length mismatch");
    
    for (uint i = 0; i < documentHashes.length; i++) {
        diplomas[documentHashes[i]] = DiplomaRecord({
            documentHash: documentHashes[i],
            institution: msg.sender,
            recipientName: recipientNames[i],
            degree: degrees[i],
            issuedAt: block.timestamp,
            revoked: false
        });
    }
    
    emit BatchDiplomasIssued(msg.sender, documentHashes.length, block.timestamp);
}

Або більш економічний варіант — Merkle tree: зберігати тільки root хеш batch, верифікація через Merkle proof.

Розгортання на мережах

Для максимальної надійності і довголіття — розгортання на кількох мережах або використання L2 з calldata опублікованим на Ethereum.

Мережа Переваги Недоліки
Ethereum mainnet Максимальна надійність Високий gas
Polygon Дешево, швидко Менше децентралізовано
Arbitrum L2 надійність, дешево Вимагає знайомства з L2

Рекомендація: Polygon для MVP, Arbitrum для production надійності.

Розробка системи верифікації дипломів (контракт + портал адміна університету + сторінка верифікації) — 3-5 тиж.