Development of Blockchain Digital Certificates System
Blockchain certificates solve main problem of traditional digital documents: verification. PDF diploma can be faked. Blockchain certificate is verified in seconds — anyone can check authenticity without contacting issuer.
System Architecture
Issuer (university, platform, company) issues certificate, signs and records hash on-chain.
Recipient gets certificate (PDF + JSON) and verification link.
Verifier (employer, another university) checks authenticity — document hash matches on-chain record.
On-Chain Storage: Hashes, Not Data
Storing full data on-chain is expensive and violates privacy. Correct approach: store only hash of certificate.
contract CertificateRegistry {
mapping(bytes32 => CertificateRecord) public certificates;
struct CertificateRecord {
address issuer;
uint256 issuedAt;
bool revoked;
string metadataURI; // IPFS CID with metadata
}
event CertificateIssued(bytes32 indexed certHash, address indexed recipient, address indexed issuer);
event CertificateRevoked(bytes32 indexed certHash);
function issueCertificate(
bytes32 certHash,
address recipient,
string calldata metadataURI
) external onlyAuthorizedIssuer {
require(certificates[certHash].issuedAt == 0, "Already issued");
certificates[certHash] = CertificateRecord({
issuer: msg.sender,
issuedAt: block.timestamp,
revoked: false,
metadataURI: metadataURI
});
emit CertificateIssued(certHash, recipient, msg.sender);
}
function verifyCertificate(bytes32 certHash) external view
returns (bool valid, address issuer, uint256 issuedAt) {
CertificateRecord memory record = certificates[certHash];
valid = record.issuedAt > 0 && !record.revoked;
issuer = record.issuer;
issuedAt = record.issuedAt;
}
}
Blockcerts Standard
Blockcerts — open standard for blockchain certificates (MIT + Learning Machine). Describes JSON-LD format and verification process.
{
"@context": ["https://www.w3.org/2018/credentials/v1", "https://w3id.org/blockcerts/v3"],
"type": ["VerifiableCredential", "BlockcertsCredential"],
"issuer": "did:ethr:0xIssuerAddress",
"issuanceDate": "2024-01-15T00:00:00Z",
"credentialSubject": {
"id": "did:ethr:0xRecipientAddress",
"achievement": {
"name": "Bachelor of Computer Science"
}
},
"proof": {
"type": "MerkleProof2019",
"merkleRoot": "0xabc123",
"txId": "0xTransactionHash",
"targetHash": "0xCertificateHash"
}
}
Batch Issuance via Merkle Tree
Issue 1000 diplomas in one transaction:
Merkle tree from hashes of all certificates. Only merkle root stored on-chain. Each certificate contains merkle proof — path from leaf to root. Verification: compute certificate hash → check merkle proof → compare with on-chain root.
Savings: 1 transaction instead of 1000. Verification cost — local computations.
Development of digital certificates system — 3-6 weeks for basic system with web UI for issuance and verification.







