Kiến trúc Web3 khác biệt thế nào so với Web2 truyền thống?
Về mặt kỹ thuật, khác biệt cốt lõi giữa Web2 và Web3 nằm ở chỗ trạng thái và logic quan trọng được lưu ở đâu. Ứng dụng Web2 đặt dữ liệu và logic trên máy chủ do công ty kiểm soát; ứng dụng Web3 đặt phần cốt lõi lên blockchain dưới dạng smart contract, nơi không bên nào đơn phương sửa được. Từ khác biệt đó kéo theo thay đổi ở mọi tầng: xác thực bằng ví thay vì mật khẩu, "backend" là hợp đồng công khai, lưu trữ file trên mạng phi tập trung. Bài này đi qua từng tầng kiến trúc dành cho lập trình viên muốn hiểu cách xây ứng dụng Web3.
Kiến trúc Web2 điển hình
Một ứng dụng web hiện đại thường gồm:
- Frontend: React, Vue hoặc framework tương tự, chạy trên trình duyệt.
- Backend: máy chủ API viết bằng Node.js, Python, Java, Go, chạy trên cloud.
- Cơ sở dữ liệu: PostgreSQL, MySQL, MongoDB do công ty quản lý.
- Xác thực: tên đăng nhập và mật khẩu, hoặc đăng nhập qua Google, Facebook; phiên lưu bằng cookie hoặc JWT.
- Lưu trữ file: S3 hoặc dịch vụ tương đương.
- Thanh toán: cổng thanh toán, ngân hàng.
Mô hình này hiệu quả, nhanh và quen thuộc. Điểm yếu nằm ở niềm tin: người dùng phải tin công ty sẽ không sửa dữ liệu, không khóa tài khoản tùy ý, không biến mất cùng dữ liệu của họ.
Kiến trúc Web3 theo từng tầng
| Tầng | Web2 | Web3 |
|---|---|---|
| Giao diện | Web app trên máy chủ công ty | Web app giống Web2, có thể lưu trên IPFS |
| Logic nghiệp vụ | Mã backend riêng tư | Smart contract công khai trên blockchain |
| Trạng thái | Cơ sở dữ liệu tập trung | Storage của smart contract, được mọi nút đồng thuận |
| Danh tính | Tài khoản do nhà cung cấp cấp | Địa chỉ ví do người dùng tự tạo bằng khóa riêng |
| Xác thực | Mật khẩu, OAuth | Ký thông điệp bằng ví |
| Ghi dữ liệu | Gọi API, miễn phí với người dùng | Gửi giao dịch đã ký, trả phí gas |
| Đọc dữ liệu | API của backend | RPC node hoặc dịch vụ lập chỉ mục |
| Lưu file | Object storage | IPFS, Filecoin, Arweave |
| Thanh toán | Cổng thanh toán | Token gốc hoặc stablecoin chuyển trực tiếp |
Smart contract thay vai trò backend
Trong Web3, phần logic quyết định ai sở hữu gì, ai được làm gì được viết thành smart contract và triển khai lên blockchain như Ethereum. Ba đặc điểm khiến nó khác hẳn backend truyền thống:
- Công khai: ai cũng đọc được mã và dữ liệu.
- Bất biến: không sửa được sau khi triển khai, trừ khi thiết kế sẵn cơ chế nâng cấp.
- Tốn phí và chậm hơn: mỗi thao tác ghi cần giao dịch, chờ xác nhận và trả phí.
Do đó, không phải logic nào cũng nên lên chuỗi. Nguyên tắc chung: chỉ đặt lên blockchain phần cần tính minh bạch và không cần tin cậy, như quyền sở hữu tài sản, chuyển giá trị, quy tắc quản trị. Phần còn lại như tìm kiếm, gợi ý, xử lý ảnh vẫn chạy ngoài chuỗi. Bạn có thể tìm hiểu cách viết hợp đồng trong bài kiến thức nền lập trình smart contract.
Đọc dữ liệu: vấn đề mà Web2 không có
Blockchain được tối ưu cho đồng thuận, không cho truy vấn. Bạn có thể đọc giá trị hiện tại của một biến qua RPC, nhưng câu hỏi như "liệt kê mọi NFT mà ví này từng sở hữu" rất khó trả lời trực tiếp. Giải pháp là lớp lập chỉ mục: dịch vụ đọc các sự kiện phát ra từ hợp đồng, sắp xếp vào cơ sở dữ liệu có thể truy vấn. The Graph là giao thức lập chỉ mục phi tập trung phổ biến; nhiều đội cũng tự chạy indexer hoặc dùng API của nhà cung cấp hạ tầng.
Điều này có nghĩa ứng dụng Web3 thực tế thường vẫn có một thành phần "backend" quen thuộc, chỉ khác là nó đọc từ blockchain thay vì là nguồn sự thật.
Kết nối với blockchain: RPC node
Frontend và backend giao tiếp với blockchain qua JSON-RPC của một nút. Chạy nút riêng tốn tài nguyên, nên phần lớn đội dùng nhà cung cấp RPC. Điều này tạo ra một điểm tập trung đáng chú ý: nếu nhà cung cấp RPC gặp sự cố hoặc chặn truy cập, ứng dụng bị ảnh hưởng, dù blockchain vẫn chạy bình thường. Ứng dụng nghiêm túc nên cấu hình nhiều nhà cung cấp dự phòng.
Xác thực bằng ví
Thay vì lưu mật khẩu, ứng dụng Web3 yêu cầu người dùng ký một thông điệp bằng ví. Chuẩn Sign-In with Ethereum (EIP-4361) định dạng thông điệp này kèm tên miền, nonce và thời hạn để chống phát lại. Backend xác minh chữ ký khớp với địa chỉ và tạo phiên đăng nhập. Ưu điểm: ứng dụng không giữ mật khẩu để bị lộ. Nhược điểm: mất khóa riêng là mất danh tính, không có nút "quên mật khẩu".
Lưu trữ phi tập trung
Lưu file lớn trên blockchain là quá đắt. Ứng dụng Web3 thường lưu file trên IPFS, nơi file được định danh bằng hash nội dung, rồi chỉ ghi hash đó lên chuỗi. Để file không biến mất, cần dịch vụ ghim (pinning) hoặc mạng lưu trữ có khuyến khích kinh tế như Filecoin. Bài lưu trữ phi tập trung với IPFS và Filecoin phân tích chi tiết hơn.
Mở rộng: Layer 1 và Layer 2
Web2 mở rộng bằng cách thêm máy chủ. Blockchain tầng một có thông lượng giới hạn vì mọi nút phải xử lý mọi giao dịch. Các giải pháp Layer 2 như rollup xử lý giao dịch ngoài chuỗi chính rồi gửi bằng chứng hoặc dữ liệu nén về Ethereum, giảm phí và tăng tốc độ. Với lập trình viên, chọn mạng triển khai là một quyết định kiến trúc quan trọng, như được trình bày trong bài giải pháp Layer 2.
Đánh đổi khi chọn kiến trúc Web3
- Hiệu năng: ghi dữ liệu chậm hơn và tốn phí; cần thiết kế giao diện xử lý trạng thái chờ xác nhận.
- Quyền riêng tư: dữ liệu trên chuỗi công khai mặc định; thông tin nhạy cảm không nên đặt lên đó.
- Nâng cấp: sửa lỗi khó hơn nhiều so với deploy lại backend.
- Bảo mật: lỗi trong hợp đồng có thể dẫn đến mất tài sản ngay lập tức và không đảo ngược.
- Điểm tập trung ẩn: frontend trên máy chủ thường, RPC provider, indexer vẫn là điểm phụ thuộc.
Khi nào kiến trúc Web3 có ý nghĩa
Web3 phù hợp khi giá trị cốt lõi của ứng dụng nằm ở việc loại bỏ bên trung gian cần tin cậy: chuyển giá trị xuyên biên giới, sở hữu tài sản số có thể mang theo giữa các ứng dụng, quản trị minh bạch, giao thức tài chính mở. Với ứng dụng mà người dùng sẵn sàng tin một nhà cung cấp, như công cụ ghi chú hay mạng nội bộ công ty, kiến trúc Web2 thường đơn giản và hiệu quả hơn. Nhiều sản phẩm thành công kết hợp cả hai: Web2 cho trải nghiệm, Web3 cho phần cần tính minh bạch.
Câu hỏi thường gặp
Lập trình viên Web2 chuyển sang Web3 cần học thêm gì?
Cần học khái niệm blockchain, ví và giao dịch, ngôn ngữ smart contract như Solidity, thư viện tương tác như Ethers.js hoặc viem, cùng tư duy bảo mật cho mã bất biến. Kỹ năng frontend và backend sẵn có vẫn được dùng nhiều.
Ứng dụng Web3 có cần máy chủ không?
Phần lớn vẫn cần, cho việc lập chỉ mục dữ liệu, xử lý ngoài chuỗi, gửi thông báo hoặc phục vụ giao diện. Khác biệt là máy chủ không còn là nguồn sự thật duy nhất cho phần dữ liệu đã đặt lên blockchain.
Dữ liệu trên blockchain có xóa được không?
Về nguyên tắc là không, vì lịch sử giao dịch được lưu ở mọi nút đầy đủ. Đây là lý do không nên đưa dữ liệu cá nhân lên chuỗi, đặc biệt khi các quy định bảo vệ dữ liệu yêu cầu quyền được xóa.
Web3 có nhanh bằng Web2 không?
Thao tác đọc có thể nhanh tương đương nhờ cache và indexer, nhưng thao tác ghi cần chờ giao dịch được xác nhận nên chậm hơn. Các mạng Layer 2 và blockchain hiệu năng cao rút ngắn đáng kể thời gian này nhưng vẫn khác với phản hồi tức thì của cơ sở dữ liệu tập trung.
Bài liên quan

Bảo mật Smart Contract: Những lỗ hổng phổ biến cần tránh
Tổng hợp lỗ hổng smart contract phổ biến như reentrancy, kiểm soát truy cập, thao túng oracle, front-running, cùng thực hành phòng tránh và quy trình kiểm toán.

DAO (Decentralized Autonomous Organization) vận hành như thế nào?
DAO vận hành thế nào: smart contract quản trị, token biểu quyết, quy trình đề xuất, kho bạc chung, các mô hình bỏ phiếu, rủi ro và vấn đề pháp lý cần biết.

Hướng dẫn lập trình Smart Contract cơ bản trên Ethereum
Thực hành viết smart contract đầu tiên: dựng môi trường với Remix và Hardhat, viết hợp đồng quỹ đóng góp, kiểm thử, triển khai lên mạng thử nghiệm Sepolia.

Hướng dẫn lập trình Smart Contract cơ bản trên nền tảng Ethereum
Kiến thức nền để lập trình smart contract trên Ethereum: EVM, tài khoản, gas, cấu trúc hợp đồng Solidity, kiểu dữ liệu, sự kiện, chuẩn ERC và lộ trình học.