Giới thiệu dự án

Tình trạng làm giả bằng cấp, chứng chỉ đào tạo và gian lận hồ sơ học thuật đang là vấn nạn nhức nhối trên quy mô toàn cầu. Theo các báo cáo thống kê trong ngành giáo dục và tuyển dụng, có tới hơn 30% hồ sơ ứng viên chứa các thông tin bằng cấp bị thổi phồng hoặc làm giả tinh vi. Tại Việt Nam, các vụ việc gian lận điểm thi và làm giả chứng chỉ quy mô lớn (điển hình như các sai phạm thi cử tại Hà Giang, Sơn La, Hòa Bình) đã đặt ra hồi chuông cảnh báo về tính toàn vẹn của dữ liệu học thuật.

+-------------------------------------------------------------------------+
|                  VẤN ĐỀ TRỌNG TÂM CỦA CSDL TẬP TRUNG                    |
|                                                                         |
|  [Admin/Attacker] ---> (Chỉnh sửa trực tiếp CSDL) ---> [Sai lệch điểm]  |
|                               |                                         |
|                               v                                         |
|                 KHÔNG TRUY VẾT ĐƯỢC:                                    |
|                 - Ai là người chỉnh sửa? (Who)                          |
|                 - Thời điểm chỉnh sửa là khi nào? (When)                |
|                 - Nội dung bị thay đổi gồm những gì? (What)             |
+-------------------------------------------------------------------------+

Nguyên nhân cốt lõi nằm ở mô hình kiến trúc lưu trữ tập trung (Centralized Database). Khi toàn bộ dữ liệu quản lý nằm trên một máy chủ cơ sở dữ liệu truyền thống, bất kỳ cá nhân nào nắm quyền quản trị hệ thống (Database Administrator) hoặc tin tặc chiếm đoạt được quyền truy cập đều có thể chỉnh sửa bản ghi điểm số, cấp phát chứng chỉ trái phép mà không để lại vết kiểm toán (audit trail) đáng tin cậy.

Đề tài "Ứng dụng Blockchain trong kiểm tra chứng chỉ" được nghiên cứu và phát triển bởi sinh viên Nguyễn Văn Hải dưới sự hướng dẫn của ThS. Lê Đức Trung tại Viện Công nghệ Thông tin và Truyền thông – Đại học Bách Khoa Hà Nội, nhằm giải quyết triệt để bài toán chống gian lận học thuật bằng công nghệ chuỗi khối.

Mục tiêu dự án

  1. Minh bạch hóa quy trình phát hành và xác thực chứng chỉ: Xây dựng cơ chế phát hành văn bằng số được bảo chứng bằng mật mã học, loại bỏ hoàn toàn khả năng làm giả hay sửa đổi dữ liệu hồi tố.
  2. Thiết lập chuỗi truy vết kiểm toán tự động (Audit Trail): Ghi lại đầy đủ lịch sử: Ai là người cập nhật? Thời gian cập nhật khi nào? Nội dung sửa đổi gồm những gì? trên sổ cái phi tập trung.
  3. Hiện thực hóa hệ thống ứng dụng hoàn chỉnh: Xây dựng giải pháp phần mềm đa tầng gồm Smart Contract (Ethereum), Backend Server (Node.js API), Web Client (tra cứu công khai) và Web Admin (quản trị phân quyền).

Giải pháp kỹ thuật và kết quả mong đợi

Dự án đề xuất mô hình lai (Hybrid Architecture) kết hợp giữa lưu trữ dữ liệu nghiệp vụ quan hệ (Off-chain) và lưu trữ bằng chứng xác thực cùng lịch sử sửa đổi trên nền tảng chuỗi khối Ethereum (On-chain).

  • Thời gian xác thực chứng chỉ: Giảm từ 3 - 5 ngày làm việc (xác minh thủ công qua bưu điện/cơ sở đào tạo) xuống dưới 500 mili-giây qua giao diện Web.
  • Tính toàn vẹn dữ liệu: Đạt mức 100% bất biến (immutability) đối với các giao dịch chứng chỉ đã được đào (mined) vào khối.
  • Phạm vi & Giới hạn: Hệ thống tập trung giải quyết bài toán quản lý danh mục chứng chỉ, danh sách sinh viên, lớp học và quy trình phê duyệt phát hành văn bằng trong môi trường cơ sở đào tạo đại học/nghề.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Hệ thống CSDL tập trung truyền thống (MySQL/Oracle) Hệ thống chữ ký số PKI thông thường Giải pháp Blockchain Smart Contracts (Đề tài đề xuất)
Tính bất biến (Immutability) Rất thấp (DBA có thể sửa trực tiếp bảng ghi SQL) Trung bình (Tệp tin ký số có thể bị thay thế/thu hồi âm thầm) Tuyệt đối (Dữ liệu liên kết chuỗi mật mã, không thể sửa đổi)
Tính minh bạch (Transparency) Đóng, chỉ người có quyền xem CSDL mới kiểm tra được Phụ thuộc vào Certificate Authority (CA) tập trung Hoàn toàn công khai, mọi bên liên quan đều tra cứu được
Truy vết lịch sử (Audit Trail) Dễ bị xóa/sửa đổi log hệ thống Không theo dõi được toàn bộ vòng đời sửa đổi trên một sổ cái chung Tự động ghi nhận chi tiết (Who, When, What) qua Event/Transaction
Khả năng sẵn sàng (Availability) Dễ bị gián đoạn đơn điểm (Single Point of Failure) Phụ thuộc máy chủ xác thực OCSP/CRL Phân tán P2P, phân tán trên toàn bộ các node mạng
                +-----------------------------------------------+
                |     PHÂN LOẠI YÊU CẦU THEO MÔ HÌNH MoSCoW     |
                +-----------------------------------------------+
                | [MUST HAVE]                                   |
                | - Lưu trữ hash & state chứng chỉ on-chain     |
                | - Phân quyền phát hành bằng Smart Contract    |
                | - Tra cứu lịch sử cập nhật công khai          |
                +-----------------------------------------------+
                | [SHOULD HAVE]                                 |
                | - Giao diện Web Admin quản lý sinh viên/lớp   |
                | - RESTful API kết nối Node.js với Web3        |
                +-----------------------------------------------+
                | [COULD HAVE]                                  |
                | - Cấp chứng chỉ hàng loạt qua import Excel    |
                | - Tạo mã QR động cho chứng chỉ                |
                +-----------------------------------------------+
                | [WON'T HAVE (Hiện tại)]                       |
                | - Tích hợp ví cá nhân MetaMask cho SV         |
                +-----------------------------------------------+

Thiết kế hệ thống

Kiến trúc tổng thể của hệ thống được tổ chức theo mô hình phân tầng module hóa, đảm bảo khả năng cô lập giữa tầng nghiệp vụ web và tầng lưu trữ phi tập trung.

graph TD
    User([Người tra cứu / Nhà tuyển dụng]) -->|HTTP GET Tra cứu| WebClient[Web Client - AngularJS]
    Admin([Quản trị viên / Người phát hành]) -->|HTTP POST Quản lý| WebAdmin[Web Admin - AngularJS]
    
    WebClient -->|RESTful API| Server[Node.js / Express Server]
    WebAdmin -->|RESTful API| Server
    
    subgraph Backend Services
        Server -->|Sequelize ORM| MySQL[(MySQL Database - Off-chain)]
        Server -->|Web3.js RPC| EthNode[Ethereum Node / JSON-RPC]
    end
    
    subgraph Blockchain Network
        EthNode --> SmartContract[Certificate Smart Contract]
        SmartContract --> Ledger[(Ethereum Distributed Ledger)]
    end

Ngăn xếp công nghệ (Technology Stack)

  • Blockchain Platform: Ethereum Network (Private PoA Testnet / EVM compatible).
  • Smart Contract Language: Solidity version ^0.4.24.
  • Backend Runtime: Node.js v10.15.x kết hợp Express Framework v4.16.x.
  • Blockchain Middleware: Web3.js v1.0.0-beta.37 để giao tiếp JSON-RPC với EVM.
  • Frontend Framework: AngularJS v1.6.x, HTML5, CSS3, Bootstrap v3.3.7.
  • Database (Off-chain metadata): MySQL Server v5.7 kết hợp Sequelize ORM.

Thiết kế Cơ sở dữ liệu Off-chain (MySQL Schema)

Để tối ưu hóa chi phí Gas và tốc độ phản hồi, thông tin chi tiết của người dùng và sinh viên được lưu trữ tại cơ sở dữ liệu quan hệ, trong khi hash và định danh bản ghi được đồng bộ lên Blockchain:

  • account (id, username, password_hash, fullname, email, phone, status)
  • position (id, position_name, description)
  • account_position (id, account_id, position_id)
  • student (id, student_code, fullname, birthday, gender, address)
  • classroom (id, class_code, class_name, major)
  • student_classroom (id, student_id, classroom_id)
  • cetificate_category (id, category_code, category_name, duration)
  • cetificate_list (id, cert_code, student_id, category_id, issue_date, status, blockchain_tx_hash)

Thiết kế RESTful API (Node.js Server)

  • POST /api/v1/auth/login: Xác thực tài khoản quản trị và cấp phát JWT token.
  • GET /api/v1/certificates/verify/:certCode: Truy vấn thông tin chứng chỉ và lịch sử giao dịch trực tiếp từ Smart Contract.
  • POST /api/v1/certificates/issue: Tạo mới chứng chỉ, đồng thời gửi transaction tới Smart Contract trên Ethereum.
  • PUT /api/v1/certificates/revoke: Cập nhật trạng thái thu hồi chứng chỉ và ghi vết sửa đổi on-chain.
  • GET /api/v1/students: Quản lý danh sách sinh viên nội bộ.

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm lặp Agile/Scrum rút gọn với chu kỳ 2 tuần/sprint trong tổng thời gian thực hiện 16 tuần:

  • Tuần 1 - 3: Khảo sát nghiệp vụ đào tạo, phân tích yêu cầu use-case và thiết kế kiến trúc hệ thống.
  • Tuần 4 - 7: Lập trình và kiểm thử Smart Contract trên môi trường Remix IDE & Truffle Suite.
  • Tuần 8 - 11: Xây dựng Node.js Server, thiết kế CSDL MySQL và tích hợp Web3.js.
  • Tuần 12 - 14: Phát triển giao diện Web Client (tra cứu) và Web Admin (quản trị, phân quyền) bằng AngularJS.
  • Tuần 15 - 16: Kiểm thử tích hợp toàn diện, đánh giá hiệu năng giao dịch và đóng gói tài liệu nghiệm thu.

Implementation và kết quả

Quá trình phát triển và Thuật toán cốt lõi

Trọng tâm của hệ thống là Hợp đồng thông minh CertificateRegistry.sol đóng vai trò là cơ quan thẩm quyền tối cao để ghi nhận và xác thực tính hợp lệ của văn bằng.

pragma solidity ^0.4.24;

contract CertificateRegistry {
    address public admin;

    struct Certificate {
        string studentCode;
        string certCategory;
        string certDataHash;   // SHA-256 hash của toàn bộ siêu dữ liệu chứng chỉ
        uint256 issueDate;
        uint8 status;          // 0: Khởi tạo, 1: Hợp lệ (Issued), 2: Thu hồi (Revoked)
        address updatedBy;
    }

    struct UpdateHistory {
        uint256 timestamp;
        address modifiedBy;
        uint8 previousStatus;
        uint8 newStatus;
        string note;
    }

    // Mapping từ mã chứng chỉ (certCode) tới cấu trúc dữ liệu
    mapping(string => Certificate) private certificates;
    mapping(string => UpdateHistory[]) private certHistory;
    mapping(address => bool) public authorizedIssuers;

    event CertificateIssued(string indexed certCode, string studentCode, address indexed issuer);
    event CertificateUpdated(string indexed certCode, uint8 oldStatus, uint8 newStatus, address indexed modifier);

    modifier onlyAdmin() {
        require(msg.sender == admin, "Chi co Admin he thong moi co quyen thuc thi");
        _;
    }

    modifier onlyIssuer() {
        require(authorizedIssuers[msg.sender] || msg.sender == admin, "Khong co quyen phat hanh");
        _;
    }

    constructor() public {
        admin = msg.sender;
        authorizedIssuers[msg.sender] = true;
    }

    function setIssuerPermission(address _issuer, bool _status) public onlyAdmin {
        authorizedIssuers[_issuer] = _status;
    }

    function issueCertificate(
        string _certCode,
        string _studentCode,
        string _certCategory,
        string _certDataHash
    ) public onlyIssuer {
        require(certificates[_certCode].issueDate == 0, "Chung chi da ton tai tren he thong");

        certificates[_certCode] = Certificate({
            studentCode: _studentCode,
            certCategory: _certCategory,
            certDataHash: _certDataHash,
            issueDate: block.timestamp,
            status: 1,
            updatedBy: msg.sender
        });

        certHistory[_certCode].push(UpdateHistory({
            timestamp: block.timestamp,
            modifiedBy: msg.sender,
            previousStatus: 0,
            newStatus: 1,
            note: "Phat hanh chung chi moi"
        }));

        emit CertificateIssued(_certCode, _studentCode, msg.sender);
    }

    function updateCertificateStatus(
        string _certCode,
        uint8 _newStatus,
        string _note
    ) public onlyIssuer {
        require(certificates[_certCode].issueDate > 0, "Chung chi khong ton tai");
        uint8 oldStatus = certificates[_certCode].status;
        certificates[_certCode].status = _newStatus;
        certificates[_certCode].updatedBy = msg.sender;

        certHistory[_certCode].push(UpdateHistory({
            timestamp: block.timestamp,
            modifiedBy: msg.sender,
            previousStatus: oldStatus,
            newStatus: _newStatus,
            note: _note
        }));

        emit CertificateUpdated(_certCode, oldStatus, _newStatus, msg.sender);
    }

    function verifyCertificate(string _certCode) public view returns (
        string studentCode,
        string certCategory,
        string certDataHash,
        uint256 issueDate,
        uint8 status,
        address updatedBy
    ) {
        Certificate memory cert = certificates[_certCode];
        require(cert.issueDate > 0, "Chung chi khong ton tai");
        return (cert.studentCode, cert.certCategory, cert.certDataHash, cert.issueDate, cert.status, cert.updatedBy);
    }

    function getHistoryCount(string _certCode) public view returns (uint256) {
        return certHistory[_certCode].length;
    }

    function getHistoryItem(string _certCode, uint256 _index) public view returns (
        uint256 timestamp,
        address modifiedBy,
        uint8 previousStatus,
        uint8 newStatus,
        string note
    ) {
        UpdateHistory memory item = certHistory[_certCode][_index];
        return (item.timestamp, item.modifiedBy, item.previousStatus, item.newStatus, item.note);
    }
}

Phía Node.js Backend, việc giao tiếp với hợp đồng thông minh được đóng gói thông qua Web3 service:

const Web3 = require('web3');
const contractABI = require('./CertificateRegistryABI.json');
const config = require('./config');

const web3 = new Web3(new Web3.providers.HttpProvider(config.RPC_PROVIDER_URL));
const certificateContract = new web3.eth.Contract(contractABI, config.CONTRACT_ADDRESS);

exports.verifyOnChain = async (certCode) => {
    try {
        const certData = await certificateContract.methods.verifyCertificate(certCode).call();
        const historyCount = await certificateContract.methods.getHistoryCount(certCode).call();
        
        let history = [];
        for (let i = 0; i < historyCount; i++) {
            const histItem = await certificateContract.methods.getHistoryItem(certCode, i).call();
            history.push({
                timestamp: new Date(histItem.timestamp * 1000).toISOString(),
                modifiedBy: histItem.modifiedBy,
                statusTransition: `${histItem.previousStatus} -> ${histItem.newStatus}`,
                note: histItem.note
            });
        }

        return {
            studentCode: certData.studentCode,
            category: certData.certCategory,
            dataHash: certData.certDataHash,
            issueDate: new Date(certData.issueDate * 1000).toISOString(),
            status: certData.status === '1' ? 'Valid' : 'Revoked',
            history: history
        };
    } catch (error) {
        throw new Error(`Loi truy van Blockchain: ${error.message}`);
    }
};

Kiểm thử và Đánh giá hiệu năng

+-------------------------------------------------------------------------+
|                  KẾT QUẢ KIỂM THỬ VÀ BENCHMARK HỆ THỐNG                 |
|                                                                         |
|  [Độ trễ Đọc (Verify API)]   : 142 ms  (Tải đồng thời 100 req/s)        |
|  [Độ trễ Ghi (Issue Tx)]     : 12.4 s  (Thời gian đóng Block PoW/PoA)   |
|  [Test Coverage SmartContract]: 94.6%  (32 Test Cases Mocha/Chai)       |
|  [Tỷ lệ giao dịch lỗi]       : 0.00%   (Trong 500 giao dịch thử nghiệm) |
+-------------------------------------------------------------------------+
  1. Kiểm thử Smart Contract: Sử dụng Truffle framework và thư viện kiểm thử Mocha/Chai. 100% các hàm phân quyền (onlyAdmin, onlyIssuer) và các trường hợp dữ liệu biên (chứng chỉ trùng lặp, truy vấn chứng chỉ không tồn tại) đều vượt qua các ca kiểm thử.
  2. Kiểm thử giao diện & API: Tiến hành kiểm thử 28 kịch bản use-case (Bảng kiểm thử số 27 trong báo cáo), bao gồm: Quản lý tài khoản, cấp phát chứng chỉ, thu hồi chứng chỉ, tra cứu công khai và quản lý quyền người dùng. Kết quả đạt 100% các tiêu chí chấp nhận.

Đổi mới và đóng góp

Các cải tiến kỹ thuật nổi bật

  • Mô hình Dữ liệu Kép (Dual Data Layer): Khắc phục nhược điểm chi phí lưu trữ đắt đỏ của Blockchain bằng cách chỉ đưa chuỗi băm (SHA-256 Hash) cùng lịch sử cập nhật của chứng chỉ lên On-chain. Toàn bộ dữ liệu hồ sơ cồng kềnh (ảnh thẻ, thông tin chi tiết lớp học) được quản lý an toàn tại CSDL Off-chain, giúp giảm 92% chi phí Gas khi phát hành chứng chỉ.
  • Minh bạch hóa lịch sử sửa đổi không thể chối bỏ: Hệ thống cấu trúc hóa mảng UpdateHistory trực tiếp bên trong Smart Contract. Mọi hành động sửa đổi điểm số hay cập nhật thông tin chứng chỉ đều gắn liền với chữ ký số (Address) của người thực hiện và mốc thời gian khối (block.timestamp), loại trừ 100% nguy cơ "sửa điểm ngầm".
  • Kiến trúc mã nguồn mở, dễ dàng tích hợp: Mã nguồn dự án được thiết kế chuẩn module hóa REST API, cho phép bất kỳ hệ thống quản lý đào tạo đại học (như SIS, Edusoft, Moodle) dễ dàng tích hợp dịch vụ xác thực thông qua API Endpoint chuẩn hóa.
+-------------------------------------------------------------------------+
|                SO SÁNH HIỆU QUẢ VỚI HỆ THỐNG TRUYỀN THỐNG               |
|                                                                         |
|  Thời gian xác thực:      [████████████████████] 72 giờ (Truyền thống)  |
|                           [█] 0.14 giây (Đồ án Blockchain)              |
|                                                                         |
|  Rủi ro sửa đổi ngầm:     [████████████████████] Cao (CSDL Tập trung)   |
|                           [] 0% (Smart Contract)                        |
|                                                                         |
|  Chi phí xác minh bên ngoài:                                            |
|                           [████████████████████] Tốn kém nhân sự        |
|                           [█] Gần như 0 đồng (Self-service Web Client)  |
+-------------------------------------------------------------------------+

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế

+--------------------------------------------------------------------------------+
|                          QUY TRÌNH ỨNG DỤNG THỰC TẾ                            |
|                                                                                |
|  [Nhà trường / Cơ sở Đào tạo]                                                  |
|         │                                                                      |
|         ▼                                                                      |
|  1. Nhập điểm & Tạo chứng chỉ                                                  |
|  2. Ký phát hành bằng Private Key ──────> [ Ghi vào Ethereum Smart Contract ]  |
|                                                          │                     |
|  [Sinh viên Tốt nghiệp]                                  │                     |
|         │                                                │                     |
|         ▼                                                │                     |
|  Nhận mã tra cứu / Mã chứng chỉ                          │                     |
|         │                                                │                     |
|         ▼                                                │                     |
|  Gửi CV cho Nhà tuyển dụng                               │                     |
|         │                                                │                     |
|         ▼                                                │                     |
|  [Doanh nghiệp / Nhà tuyển dụng]                         │                     |
|         │                                                │                     |
|         ▼                                                ▼                     |
|  Nhập mã chứng chỉ vào Web Client ──────> [ Tra cứu trạng thái & Lịch sử ]    |
|                                           (Kết quả xác thực tức thì < 150ms)   |
+--------------------------------------------------------------------------------+
  1. Xác thực hồ sơ ứng viên tự động: Nhà tuyển dụng chỉ cần truy cập trang Web Client, nhập mã số chứng chỉ là có thể xem chính xác trạng thái bằng cấp (Hợp lệ, Bị tạm khóa, hoặc Đã thu hồi) kèm theo tên cơ sở đào tạo và ngày cấp mà không cần liên hệ văn thư nhà trường.
  2. Liên kết văn bằng liên trường (Inter-university Mobility): Cho phép công nhận tín chỉ và chứng chỉ chuyển tiếp giữa các trường đại học đối tác một cách minh bạch mà không lo ngại tình trạng làm giả bảng điểm.

Yêu cầu cấu hình triển khai hệ thống

  • Server Node / Backend:
    • Hệ điều hành: Ubuntu 18.04 LTS / CentOS 7 hoặc Windows Server.
    • Phần cứng tối thiểu: 2 vCPU, 4GB RAM, 50GB SSD Storage.
    • Môi trường: Node.js v10+, NPM v6+, MySQL v5.7+.
  • Blockchain Node Client:
    • Geth (Go-Ethereum) client hoặc kết nối qua cổng RPC (Infura / Quorum / Ganache-cli cho môi trường nội bộ).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phụ thuộc vào tốc độ đồng thuận Blockchain: Trong môi trường mạng công khai (Public Ethereum), thời gian xác nhận giao dịch (Block confirmation) có thể dao động từ 15 giây đến vài phút tùy vào lưu lượng mạng và mức phí Gas.
  • Chưa tích hợp ví phi tập trung phía người dùng cuối: Phiên bản hiện tại quản lý việc ký giao dịch qua tài khoản Admin tại Backend Server thay vì để từng Giảng viên/Sinh viên ký trực tiếp bằng ví cá nhân (như MetaMask).

Hướng phát triển trong tương lai

  1. Chuyển dịch sang mô hình Private/Consortium Blockchain: Triển khai trên nền tảng Hyperledger Fabric hoặc Quorum để tối ưu hóa hiệu năng, loại bỏ phí Gas giao dịch và nâng cao tính bảo mật nội bộ giữa các trường đại học.
  2. Ứng dụng tiêu chuẩn W3C Verifiable Credentials & DID: Định danh phi tập trung (Decentralized Identifiers - DID) cho từng sinh viên và giảng viên, cho phép sinh viên toàn quyền lưu trữ và xuất trình bằng cấp trên ví số di động.
  3. Mở rộng phạm vi ứng dụng: Tích hợp module quản lý học bạ điện tử liên cấp phổ thông và kiểm soát quy trình thi cử, chấm điểm tự động chống gian lận trên quy mô quốc gia.

Đối tượng hưởng lợi

                   +---------------------------------------+
                   |       ĐỐI TƯỢNG HƯỞNG LỢI             |
                   +---------------------------------------+
                                      │
       ┌──────────────────┬───────────┴───────────┬──────────────────┐
       │                  │                       │                  │
       ▼                  ▼                       ▼                  ▼
 [Sinh viên]       [Nhà tuyển dụng]      [Cơ sở Đào tạo]      [Lập trình viên]
Bảo vệ văn bằng    Xác minh tức thì      Nâng cao uy tín,     Khung tham chiếu
học thuật thật,    < 150ms, tiết kiệm    giảm 90% chi phí     kiến trúc Hybrid
loại bỏ gian lận   100% phí liên hệ      vận hành văn thư     Blockchain DApp
  • Sinh viên & Học viên: Bảo vệ thành quả học tập chân chính, sở hữu văn bằng có giá trị toàn cầu, dễ dàng chứng minh năng lực với nhà tuyển dụng quốc tế.
  • Doanh nghiệp & Nhà tuyển dụng: Cắt giảm 100% chi phí dịch vụ xác minh văn bằng bên thứ ba; rút ngắn thời gian thẩm định hồ sơ từ vài ngày xuống vài giây.
  • Các Cơ sở Giáo dục & Đào tạo: Nâng cao uy tín học hiệu, loại bỏ hoàn toàn các sự vụ tiêu cực liên quan đến bằng giả mạo danh nhà trường, tự động hóa quy trình quản lý lưu trữ hồ sơ.
  • Kỹ sư phần mềm & Nhà nghiên cứu: Cung cấp một case-study thực tiễn kèm mã nguồn hoàn chỉnh về việc kết hợp kiến trúc MVC truyền thống với Smart Contracts phân tán.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống trong môi trường nhà trường là gì?

Hệ thống yêu cầu một máy chủ Web tiêu chuẩn chạy Node.js và MySQL để lưu trữ thông tin quản trị nội bộ. Đối với tầng chuỗi khối, nhà trường có thể vận hành một mạng Ethereum Private PoA (Proof-of-Authority) gồm 3 - 5 node nội bộ để đạt tốc độ xử lý tức thì mà không tiêu tốn phí Ether thực tế.

2. Dữ liệu chứng chỉ đưa lên Blockchain có bị vi phạm quyền riêng tư (GDPR) không?

Không. Hệ thống áp dụng kỹ thuật lưu trữ On-chain/Off-chain kết hợp. Các thông tin định danh cá nhân nhạy cảm (như số CMND, địa chỉ, ngày sinh chi tiết) được lưu trữ tại cơ sở dữ liệu nội bộ có bảo mật. Trên Blockchain chỉ lưu trữ mã định danh sinh viên, mã phân loại chứng chỉ và mã băm SHA-256 (certDataHash), do đó không thể giải mã ngược để lấy dữ liệu cá nhân nếu không có quyền truy cập hợp lệ.

3. Nếu nhà trường muốn thu hồi hoặc sửa đổi chứng chỉ đã cấp thì làm thế nào khi Blockchain là bất biến?

Tính bất biến của Blockchain không đồng nghĩa với việc trạng thái dữ liệu bị đóng băng vĩnh viễn. Khi có quyết định thu hồi hoặc đính chính, Người phát hành sẽ gọi hàm updateCertificateStatus() trên Smart Contract. Bản ghi mới sẽ chuyển trạng thái chứng chỉ sang Revoked (Thu hồi) và ghi nhận lý do vào mảng UpdateHistory. Như vậy, trạng thái hiện tại bị vô hiệu hóa nhưng lịch sử cấp phát trước đó vẫn được lưu vết trung thực phục vụ kiểm toán.

4. Hệ thống có khả năng chịu tải và mở rộng quy mô như thế nào?

Ở tầng đọc (Read/Verify), hệ thống có thể mở rộng thông qua các kỹ thuật cân bằng tải (Load Balancer) và Node.js Cluster, cho phép xử lý hàng ngàn yêu cầu tra cứu/giây. Ở tầng ghi (Issue), khi triển khai trên mạng Consortium PoA, hệ thống có thể đạt thông lượng từ 50 - 100 giao dịch cấp phát/giây, đáp ứng tốt các đợt phát hành bằng tốt nghiệp định kỳ.

5. Chi phí vận hành và lộ trình hoàn vốn (ROI) ước tính ra sao?

Chi phí vận hành hệ thống chủ yếu là chi phí duy trì hạ tầng máy chủ Web thông thường (khoảng 20 - 50 USD/tháng). Với việc cắt giảm toàn bộ quy trình in ấn phôi chứng chỉ chống giả phức tạp và nhân lực trực tổng đài xác minh văn bằng, một trường đại học quy mô 15.000 sinh viên có thể hoàn vốn đầu tư phần mềm chỉ sau 3 - 6 tháng vận hành thực tế.


Kết luận

Đồ án tốt nghiệp "Ứng dụng Blockchain trong kiểm tra chứng chỉ" của tác giả Nguyễn Văn Hải (Đại học Bách Khoa Hà Nội) đã giải quyết thành công bài toán nhức nhối về tính toàn vẹn và minh bạch của dữ liệu văn bằng đào tạo. Bằng việc kết hợp hài hòa giữa công nghệ chuỗi khối Ethereum, hợp đồng thông minh Solidity và ngăn xếp Web hiện đại (Node.js, AngularJS, MySQL), công trình đã cung cấp một giải pháp công nghệ toàn diện, có tính khả thi cao và sẵn sàng ứng dụng vào thực tế giáo dục tại Việt Nam.

Toàn bộ mã nguồn và thiết kế kiến trúc của đồ án được công khai trên GitHub, đóng vai trò là tài liệu tham khảo giá trị cho cộng đồng học thuật và các kỹ sư phần mềm đang theo đuổi hướng phát triển ứng dụng phi tập trung (DApp) trong kỷ nguyên chuyển đổi số 4.0.