Giới thiệu dự án

Thương mại điện tử (E-Commerce) đã trở thành trụ cột của nền kinh tế số toàn cầu với quy mô vượt 4.479 nghìn tỷ USD. Tuy nhiên, các mô hình kiến trúc tập trung truyền thống (Centralized E-Commerce) như Amazon, Alibaba hay eBay đang bộc lộ nhiều điểm nghẽn nghiêm trọng: nguy cơ rò rỉ dữ liệu người dùng, điểm lỗi đơn lẻ (Single Point of Failure - SPoF), chi phí trung gian thanh toán từ 2.5% - 4%, cùng tình trạng thiếu minh bạch trong lịch sử giao dịch và đánh giá sản phẩm.

Khóa luận tốt nghiệp "Áp dụng công nghệ Blockchain xây dựng website thương mại điện tử" do tác giả Đặng Phương Tân (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) thực hiện dưới sự hướng dẫn của ThS. Trần Anh Dũng, tập trung giải quyết bài toán cốt lõi: Kết hợp tính toàn vẹn, phi tập trung của Blockchain với năng lực xử lý tải cao của các công nghệ Web hiện đại.

+-------------------------------------------------------------------------+
|                        MÔ HÌNH BÀI TOÁN & GIẢI PHÁP                     |
+-------------------------------------------------------------------------+
| [Vấn đề E-Commerce truyền thống]                                       |
| - Dữ liệu tập trung -> Dễ bị tấn công SPoF & thao túng dữ liệu         |
| - Phí cổng thanh toán trung gian cao (2.5% - 4%)                       |
| - Đánh giá giả mạo, thiếu minh bạch trong truy xuất nguồn gốc           |
+-------------------------------------------------------------------------+
                                    |
                                    v (Ứng dụng)
+-------------------------------------------------------------------------+
| [Kiến trúc Lai (Hybrid Architecture) Đề xuất]                           |
| - On-chain: Ethereum Smart Contract (Thanh toán ETH, xác thực đơn hàng)|
| - Off-chain Media: IPFS (Lưu trữ hình ảnh phân tán, chống sửa đổi)      |
| - Off-chain Cache: Node.js + MongoDB (Tăng tốc độ truy vấn gấp 3.67 lần)|
| - Client: ReactJS + Web3.js + Ví MetaMask (Ký số bảo mật ECDSA)        |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Nghiên cứu và hiện thực hóa Smart Contract trên nền tảng Ethereum: Tự động hóa quy trình ký kết hợp đồng mua bán và thanh toán bằng tiền mã hóa Ether (ETH).
  2. Triển khai hệ thống lưu trữ phân tán IPFS (InterPlanetary File System): Đảm bảo toàn vẹn dữ liệu media, loại bỏ hoàn toàn rủi ro lỗi HTTP 404 và ngăn chặn hành vi giả mạo hình ảnh sản phẩm.
  3. Xây dựng kiến trúc lai (Hybrid Architecture): Đồng bộ hóa máy chủ Node.js/MongoDB song song với Ethereum Blockchain nhằm khắc phục độ trễ mạng phân tán và tối ưu hóa chi phí Gas.
  4. Phát triển ứng dụng Web thương mại điện tử hoàn chỉnh: Đáp ứng đầy đủ các module nghiệp vụ: Đăng ký/đăng nhập ví, quản lý danh mục/kho hàng, kiểm duyệt, giỏ hàng, tìm kiếm nâng cao, chat thời gian thực (Real-time Chat) và thống kê báo cáo.

Phạm vi và Giới hạn hệ thống

  • Phạm vi: Giao dịch B2C/C2C trên mạng thử nghiệm Ethereum qua chuẩn kết nối Web3.js, thanh toán trực tiếp bằng ETH, định danh qua ví MetaMask.
  • Giới hạn: Chưa tích hợp cơ chế Layer 2 (Rollups) và Oracle giá động theo thời gian thực (Chainlink).

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 E-Commerce truyền thống (Amazon, Shopee) DApp thuần túy (OpenBazaar) Giải pháp Hybrid (Đồ án)
Cơ sở dữ liệu Tập trung (RDBMS/NoSQL) 100% On-chain / P2P Hybrid (Blockchain + IPFS + MongoDB)
Bảo mật giao dịch Phụ thuộc Admin / Bên thứ ba Chữ ký số mật mã Hợp đồng thông minh Ethereum (ECDSA)
Chi phí hạ tầng Máy chủ đám mây đắt đỏ Người dùng chịu Gas Cân bằng Gas On-chain & Server Node.js
Tốc độ đọc dữ liệu Rất nhanh (< 100ms) Rất chậm (12 - 15s/block) Nhanh (~45ms qua Cache/MongoDB)
Rủi ro kiểm duyệt Cao (Tài khoản dễ bị khóa) Không thể kiểm duyệt Kiểm duyệt tập trung bởi Admin có log On-chain

Phân loại yêu cầu người dùng theo mô hình MoSCoW

  • Must Have (Bắt buộc): Thanh toán an toàn bằng Smart Contract; Quản lý đơn hàng; Ký giao dịch qua MetaMask; Lưu ảnh sản phẩm lên IPFS.
  • Should Have (Nên có): Nhắn tin trực tiếp người mua - người bán qua Socket.io; Kiểm duyệt sản phẩm đa tầng; Gợi ý sản phẩm liên quan.
  • Could Have (Có thể có): Cơ chế đẩy tin sản phẩm (Seller Picks); Báo cáo sai phạm; Hệ thống đánh giá/rating xác thực giao dịch.
  • Won't Have (Chưa phát triển): Hỗ trợ đa chuỗi (Multi-chain cross-bridge); Thanh toán bằng tiền pháp định (Fiat gateway).

Thiết kế hệ thống

Bảng thông số kỹ thuật công nghệ (Technology Stack)

Thành phần Công nghệ / Thư viện Phiên bản Vai trò kỹ thuật
Smart Contract Solidity ^0.8.0 / ^0.5.16 Thực thi logic nghiệp vụ phân tán, quản lý thanh toán ký quỹ
Blockchain Client Truffle Framework / Web3.js v5.4.x / v1.3.6 Biên dịch, migrate Smart Contract và giao tiếp RPC Node
Wallet/Signer MetaMask Extension v9.x+ Quản lý khóa riêng (Private Key), tạo chữ ký điện tử ECDSA
Decentralized Storage IPFS (js-ipfs-http-client) v50.x Lưu trữ hình ảnh sản phẩm dưới dạng mã băm nội dung (CID)
Backend Engine Node.js / Express.js v14.17.x LTS / v4.17.x Xử lý API, điều phối nghiệp vụ off-chain, xác thực người dùng
Database MongoDB / Mongoose v4.4.x / v5.12.x Lưu trữ dữ liệu danh mục, giỏ hàng, thông tin off-chain
Realtime Service Socket.io v4.1.x Xử lý tin nhắn tức thời và thông báo hệ thống P2P
Mailer Engine Nodemailer v6.6.x Gửi email kích hoạt tài khoản và khôi phục mật khẩu qua SMTP

Thiết kế cấu trúc dữ liệu On-chain & Off-chain

1. Data Model trong Smart Contract (Solidity):

struct Product {
    uint id;
    string name;
    uint price;           // Lưu theo đơn vị Wei
    string ipfsHash;      // Địa chỉ hash CID của ảnh trên IPFS
    address payable seller;
    address buyer;
    bool isPurchased;
    bool isDelivered;
}

mapping(uint => Product) public products;
uint public productCount;

2. Data Model Server Node.js (MongoDB Mongoose Schema):

const ProductSchema = new mongoose.Schema({
    contractProductId: { type: Number, required: true },
    title: { type: String, required: true, index: true },
    category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' },
    ipfsHash: { type: String, required: true },
    priceETH: { type: Number, required: true },
    stockQuantity: { type: Number, default: 1 },
    sellerAddress: { type: String, required: true, lowercase: true },
    approvalStatus: { type: String, enum: ['pending', 'approved', 'rejected'], default: 'pending' },
    createdAt: { type: Date, default: Date.now }
});

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

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum với chu kỳ 4 Sprint (2 tuần/Sprint):

  • Sprint 1 (Tuần 1-2): Phân tích nghiệp vụ, khảo sát hiện trạng, thiết kế kiến trúc hệ thống lai (Hybrid Architecture) và viết Smart Contract cơ sở.
  • Sprint 2 (Tuần 3-4): Xây dựng backend Node.js, tích hợp cơ sở dữ liệu MongoDB, cấu hình Node IPFS và kết nối Web3.js RPC.
  • Sprint 3 (Tuần 5-6): Phát triển giao diện ReactJS, tích hợp ví MetaMask, hiện thực quy trình thanh toán On-chain, đẩy tin và chat Real-time qua Socket.io.
  • Sprint 4 (Tuần 7-8): Kiểm thử đơn vị (Unit Test), tối ưu hóa chi phí Gas, kiểm thử tải và hoàn thiện tài liệu hướng dẫn kỹ thuật.
+-----------------------------------------------------------------------------------+
|                           MA TRẬN QUẢN TRỊ RỦI RO DỰ ÁN                           |
+---------------------+-------------------+------------+----------------------------+
| Rủi ro kỹ thuật     | Khả năng xảy ra   | Mức độ ảnh hưởng | Giải pháp xử lý (Mitigation)|
+---------------------+-------------------+------------+----------------------------+
| Phí Gas tăng đột biến| Cao               | Nghiêm trọng| Tối ưu Struct Packing trong|
|                     |                   |            | Solidity, giảm writes On-chain|
+---------------------+-------------------+------------+----------------------------+
| Tắc nghẽn mạng ETH  | Trung bình        | Lớn        | Sử dụng Node.js làm Cache  |
|                     |                   |            | cho các tác vụ Read-only  |
+---------------------+-------------------+------------+----------------------------+
| Lỗ hổng Reentrancy  | Thấp              | Thảm khốc  | Áp dụng Checks-Effects-    |
| trong Smart Contract|                   |            | Interactions & OpenZeppelin|
+---------------------+-------------------+------------+----------------------------+

Implementation và kết quả

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

Quy trình giao dịch trên hệ thống kết hợp giữa tính bất biến của hợp đồng thông minh và khả năng phản hồi nhanh của Web Server.

1. Thuật toán mua hàng và xử lý ký quỹ (Solidity Smart Contract)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract EcommerceStore {
    struct Product {
        uint id;
        string name;
        uint price;
        string ipfsHash;
        address payable seller;
        address buyer;
        bool isPurchased;
    }

    mapping(uint => Product) public products;
    uint public productCount;

    event ProductCreated(uint indexed id, string name, uint price, address seller);
    event ProductPurchased(uint indexed id, address buyer, address seller, uint price);

    function createProduct(string memory _name, uint _price, string memory _ipfsHash) public {
        require(bytes(_name).length > 0, "Product name cannot be empty");
        require(_price > 0, "Price must be greater than zero");
        require(bytes(_ipfsHash).length > 0, "IPFS hash required");

        productCount++;
        products[productCount] = Product(productCount, _name, _price, _ipfsHash, payable(msg.sender), address(0), false);
        emit ProductCreated(productCount, _name, _price, msg.sender);
    }

    function purchaseProduct(uint _id) public payable {
        Product memory _prod = products[_id];
        require(_prod.id > 0 && _prod.id <= productCount, "Invalid product ID");
        require(msg.value >= _prod.price, "Insufficient ETH sent");
        require(!_prod.isPurchased, "Product already sold");
        require(msg.sender != _prod.seller, "Seller cannot buy own product");

        _prod.buyer = msg.sender;
        _prod.isPurchased = true;
        products[_id] = _prod;

        // Chuyển trực tiếp ETH vào tài khoản người bán thông qua giao thức an toàn
        _prod.seller.transfer(msg.value);

        emit ProductPurchased(_id, msg.sender, _prod.seller, _prod.price);
    }
}

2. Tích hợp upload dữ liệu media phân tán qua IPFS (Node.js/JavaScript)

const ipfsClient = require('ipfs-http-client');
const ipfs = ipfsClient.create({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' });

async function uploadProductMediaToIPFS(fileBuffer) {
    try {
        const result = await ipfs.add(fileBuffer);
        // Trả về IPFS Hash CID bất biến
        return result.path;
    } catch (error) {
        console.error("Lỗi khi tải ảnh lên mạng IPFS:", error);
        throw new Error("IPFS_UPLOAD_FAILED");
    }
}

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

Hệ thống được kiểm thử toàn diện với 45 ca kiểm thử tự động (Unit Tests) thông qua Truffle Test Runner (Mocha & Chai framework).

+---------------------------------------------------------------------------------+
|                       KẾT QUẢ BENCHMARK TỐC ĐỘ TRUY XUẤT                         |
+------------------------------------+-----------------------+--------------------+
| Phương thức truy vấn               | Thời gian phản hồi    | Tỷ lệ cải thiện    |
+------------------------------------+-----------------------+--------------------+
| Trực tiếp qua Ethereum RPC (Web3)  | 165 ms                | Cơ sở (Baseline)   |
| Qua Server Node.js Cache + MongoDB | 45 ms                 | Nhanh hơn 3.67 lần |
+------------------------------------+-----------------------+--------------------+

+---------------------------------------------------------------------------------+
|                       ĐỊNH LƯỢNG CHI PHÍ GAS TRÊN ETHEREUM                      |
+---------------------------+-------------------+---------------------------------+
| Hàm Smart Contract        | Gas tiêu thụ      | Chi phí ước tính (@20 Gwei)     |
+---------------------------+-------------------+---------------------------------+
| `createProduct`           | ~142,500 Gas      | 0.00285 ETH                     |
| `purchaseProduct`         | ~68,200 Gas       | 0.00136 ETH                     |
| `confirmDelivery`         | ~35,400 Gas       | 0.00070 ETH                     |
+---------------------------+-------------------+---------------------------------+

Kết quả đạt được

  • Tính năng hoàn chỉnh:
    • 100% các giao dịch mua bán cốt lõi được ghi nhận bất biến trên sổ cái phân tán Ethereum.
    • Tích hợp thành công giải pháp lưu trữ hình ảnh qua IPFS, triệt tiêu nguy cơ sửa đổi hay biến mất của hình ảnh bằng chứng sản phẩm.
    • Xây dựng module phân quyền quản trị (Admin Dashboard) hỗ trợ duyệt hàng, kiểm duyệt báo cáo vi phạm, quản lý tài khoản và thống kê dòng tiền.
    • Hệ thống nhắn tin tức thời Real-time kết nối người mua và người bán với độ trễ dưới 80ms.

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

  1. Kiến trúc Hybrid phân tầng dữ liệu (Multi-tier Hybrid Architecture): Khắc phục điểm yếu về tốc độ và chi phí lưu trữ của Blockchain bằng cách phân tách luồng: State & Value Transfer nằm trên Smart Contract, Large Media Binary nằm trên IPFS, và Search Index & Ephemeral Data nằm trên Node.js/MongoDB.
  2. Loại bỏ trung gian thanh toán và nguy cơ Chargeback: Giao dịch được xác thực mật mã học qua thuật toán ECDSA và thực thi tự động qua Smart Contract, loại trừ hoàn toàn chi phí hoa hồng ngân hàng (tiết kiệm từ 2.5% đến 4% giá trị giao dịch).
  3. Minh bạch hóa dữ liệu nguồn gốc và đánh giá: Liên kết mã định danh hàng hóa và lịch sử chuyển nhượng trên Blockchain, ngăn chặn hoàn toàn việc người bán can thiệp vào cơ sở dữ liệu để sửa đổi đánh giá hoặc xóa lịch sử đơn hàng.

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

Trường hợp sử dụng thực tế (Real-world Use Cases)

  • Thương mại đồ xa xỉ và tác phẩm nghệ thuật số: Xác thực nguồn gốc sản phẩm và chuyển giao quyền sở hữu không thể làm giả.
  • Thương mại điện tử xuyên biên giới (Cross-border E-Commerce): Loại bỏ các rào cản tỷ giá hối đoái và độ trễ thanh toán quốc tế nhờ sử dụng ETH làm đồng tiền thanh toán chuẩn hóa.

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

+-------------------------------------------------------------------------+
|                    YÊU CẦU CẤU HÌNH HỆ THỐNG TỐI THIỂU                  |
+------------------------------------+------------------------------------+
| Phần mềm / Môi trường              | Cấu hình khuyến nghị               |
+------------------------------------+------------------------------------+
| Hệ điều hành                       | Ubuntu 20.04 LTS / Windows 10/11   |
| Node.js & NPM Runtime              | Node.js v14.17.0+, NPM v6.14.0+    |
| Database Engine                    | MongoDB Community Server v4.4+     |
| Trình duyệt Web                    | Google Chrome / Brave có MetaMask  |
| Công cụ phát triển Blockchain      | Truffle v5.x, Ganache CLI / GUI    |
| IPFS Node                          | IPFS Desktop hoặc Infura Gateway   |
+------------------------------------+------------------------------------+

Hướng dẫn cài đặt và khởi chạy hệ thống (Deployment Runbook)

# 1. Clone repository và cài đặt các phụ thuộc backend
git clone https://github.com/dangphuongtan/blockchain-ecommerce.git
cd blockchain-ecommerce/server
npm install

# 2. Cấu hình biến môi trường trong file .env
# PORT=5000, MONGODB_URI=mongodb://localhost:27017/blockchain_ecommerce, JWT_SECRET=secret_key

# 3. Biên dịch và triển khai Smart Contract lên mạng Blockchain
cd ../blockchain
truffle compile
truffle migrate --reset --network development

# 4. Khởi chạy máy chủ Backend và Giao diện Frontend
cd ../server && npm run start
cd ../client && npm start

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

Hạn chế kỹ thuật

  • Sự biến động của phí Gas Ethereum: Khi mạng Ethereum tắc nghẽn, phí Gas tăng cao có thể gây trở ngại cho các giao dịch giá trị nhỏ (Microtransactions).
  • Rào cản trải nghiệm người dùng (UX): Người dùng phổ thông bắt buộc phải cài đặt ví MetaMask, lưu trữ Private Key/Seed Phrase và sở hữu sẵn ETH để chi trả phí Gas.
  • Tốc độ sinh khối của Layer 1: Thời gian xác nhận khối trên mạng Ethereum Mainnet (~12-15 giây) chưa đạt được tốc độ phản hồi tức thì như các hệ thống tập trung.

Hướng phát triển tiếp theo

  • Tích hợp giải pháp Layer 2 (Optimistic Rollups / Arbitrum / Polygon): Tăng thông lượng giao dịch lên hơn 2.000 TPS và giảm 99% phí Gas.
  • Hỗ trợ thanh toán bằng Stablecoin (USDT, USDC): Giảm thiểu rủi ro biến động giá của đồng ETH cho người bán.
  • Ứng dụng mô hình Tòa án phi tập trung (Decentralized Arbitration - Kleros): Tự động hóa việc giải quyết tranh chấp hoàn tiền thông qua mạng lưới bồi thẩm đoàn phi tập trung.

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

+---------------------------------------------------------------------------------+
|                       GIÁ TRỊ MANG LẠI CHO CÁC ĐỐI TƯỢNG                        |
+---------------------+-----------------------------------------------------------+
| Đối tượng           | Giá trị thực tiễn và Định lượng lợi ích                    |
+---------------------+-----------------------------------------------------------+
| Sinh viên CNTT      | Nắm vững kiến trúc phát triển DApp, Full-stack Web3       |
|                     | và mô hình kết hợp Node.js với EVM.                       |
+---------------------+-----------------------------------------------------------+
| Lập trình viên      | Sở hữu bộ khung mã nguồn mẫu (Boilerplate) tích hợp chuẩn|
|                     | giữa React, Web3.js, Truffle và IPFS.                     |
+---------------------+-----------------------------------------------------------+
| Doanh nghiệp bán lẻ | Cắt giảm hoàn toàn 2.5% - 4% phí cổng thanh toán, tối ưu  |
|                     | tính toàn vẹn chuỗi cung ứng và chống gian lận.           |
+---------------------+-----------------------------------------------------------+
| Nhà nghiên cứu      | Tài liệu tham khảo về hiệu năng kiến trúc lai trong việc  |
|                     | giải quyết bài toán Blockchain Trilemma.                  |
+---------------------+-----------------------------------------------------------+

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

1. Yêu cầu kỹ thuật bắt buộc để người dùng tham gia mua hàng là gì?

Người dùng cần cài đặt tiện ích mở rộng ví MetaMask trên trình duyệt (Chrome, Brave, Firefox), chuyển mạng về đúng mạng Blockchain mà hệ thống đang triển khai (Ethereum Testnet/Mainnet), và sở hữu một lượng nhỏ ETH làm số dư thanh toán và trả phí Gas.

2. Làm thế nào hệ thống giải quyết điểm nghẽn về tốc độ đọc dữ liệu của Blockchain?

Hệ thống sử dụng cơ chế Off-chain Caching thông qua máy chủ Node.js và MongoDB. Dữ liệu tĩnh, danh mục, hình ảnh và chỉ mục tìm kiếm được lưu trữ off-chain giúp tốc độ tải trang nhanh hơn gần 3.67 lần, trong khi chỉ có dữ liệu giao dịch tài chính và xác nhận sở hữu mới cần ghi On-chain.

3. Hình ảnh sản phẩm lưu trên IPFS có nguy cơ bị người khác sửa đổi không?

Không. IPFS sử dụng cơ chế định danh bằng nội dung (Content Identifier - CID) dựa trên hàm băm mật mã. Nếu bất kỳ byte nào của bức ảnh bị thay đổi, mã CID sinh ra sẽ thay đổi hoàn toàn, giúp hệ thống phát hiện ngay sự sai lệch so với giá trị hash đã lưu cố định trong Smart Contract.

4. Hệ thống có thể tích hợp với các hệ thống ERP hoặc phần mềm quản lý kho hiện có không?

Có. Máy chủ Node.js cung cấp đầy đủ hệ thống RESTful APIWebhooks chuẩn hóa, cho phép các hệ thống phần mềm quản trị doanh nghiệp (ERP, CRM) đồng bộ hóa số lượng tồn kho và trạng thái vận chuyển theo thời gian thực.

5. Chi phí triển khai và thời gian hoàn vốn (ROI) dự kiến ra sao?

Do loại bỏ được máy chủ cơ sở dữ liệu phân tán đắt tiền và giảm chi phí chiết khấu cổng thanh toán trung gian từ 3% xuống xấp xỉ 0%, các doanh nghiệp triển khai giải pháp này có thể đạt điểm hòa vốn và ghi nhận ROI dương trong vòng 6 đến 9 tháng vận hành thực tế.


Kết luận

Khóa luận tốt nghiệp "Áp dụng công nghệ Blockchain xây dựng website thương mại điện tử" của tác giả Đặng Phương Tân đã hiện thực hóa thành công một giải pháp kỹ thuật toàn diện cho ngành thương mại số. Bằng cách kết hợp linh hoạt giữa Ethereum Smart Contract, hệ thống lưu trữ phân tán IPFS và nền tảng Web hiệu năng cao Node.js/MongoDB, đồ án đã giải quyết triệt để các bài toán hóc búa về tính minh bạch, an toàn dữ liệu và chi phí trung gian mà các hệ thống e-commerce truyền thống đang đối mặt.

Đây là công trình nghiên cứu ứng dụng có giá trị học thuật cao, cung cấp cơ sở lý thuyết vững chắc cùng mã nguồn mẫu thực tiễn cho cộng đồng kỹ thuật phần mềm Web3 tại Việt Nam.