Lending DApp là một ứng dụng tài chính phi tập trung (DeFi) cho phép người dùng thực hiện các hoạt động vay và cho vay tiền mã hóa một cách minh bạch, tự động và không cần thông qua trung gian. Hệ thống hoạt động dựa trên Smart Contracts (Hợp đồng thông minh) trên nền tảng Blockchain.
- Người gửi (Supplier): Cung cấp thanh khoản (Token) vào Pool để nhận lãi suất (Future feature) hoặc hỗ trợ thanh khoản.
- Người vay (Borrower): Thế chấp tài sản (ETH) để vay Token (ví dụ: Stablecoin).
- Cơ chế thanh lý (Liquidation): Đảm bảo an toàn vốn cho giao thức bằng cách thanh lý tài sản thế chấp khi giá trị giảm xuống dưới ngưỡng an toàn.
Nền tảng cốt lõi xử lý logic nghiệp vụ và lưu trữ dữ liệu.
| Công nghệ | Phiên bản / Chi tiết | Vai trò |
|---|---|---|
| Solidity | ^0.8.0 | Ngôn ngữ lập trình Smart Contract chính. |
| Hardhat | Latest | Môi trường phát triển, kiểm thử và triển khai Smart Contract. |
| OpenZeppelin | Contracts | Cung cấp các chuẩn bảo mật (ReentrancyGuard, Ownable) và chuẩn Token (ERC20). |
| Ethereum / EVM | Localhost / Testnet | Mạng lưới Blockchain triển khai ứng dụng. |
Giao diện người dùng tương tác với Blockchain.
| Công nghệ | Phiên bản / Chi tiết | Vai trò |
|---|---|---|
| Nuxt 4 | Beta/Latest | Framework Vue.js tối ưu cho SSR và cấu trúc dự án. |
| Vue 3 | Latest | Framework JavaScript xây dựng giao diện phản hồi (Reactive UI). |
| Tailwind CSS | Latest | Framework CSS utility-first giúp thiết kế giao diện nhanh chóng. |
| PrimeVue | v4.5 | Bộ thư viện UI Component cao cấp (Table, Button, Dialog, etc.). |
| Ethers.js | v6.x | Thư viện kết nối Frontend với Blockchain (Wallet, Provider, Contract). |
| Chart.js | v4.x | Hiển thị biểu đồ dữ liệu thị trường. |
- Chức năng:
deposit() - Mô tả: Người dùng gửi ETH vào Smart Contract. Số ETH này được khóa lại và sử dụng làm tài sản đảm bảo (Collateral) cho khoản vay.
- Công nghệ: Payable function trong Solidity, mapping lưu trữ số dư
deposits.
- Chức năng:
borrow(uint256 amount) - Mô tả: Người dùng vay Token dựa trên giá trị tài sản thế chấp.
- Quy tắc an toàn (LTV): Hệ thống chỉ cho phép vay tối đa 80% giá trị tài sản thế chấp (Loan-to-Value Ratio).
- Oracle: Sử dụng Mock Oracle (
ethPrice) để quy đổi giá trị ETH sang Token.
- Chức năng:
repay(uint256 amount) - Mô tả: Người dùng trả lại số Token đã vay để giảm nợ. Sau khi trả hết nợ, tài sản thế chấp (ETH) sẽ được mở khóa để rút.
- Chức năng:
withdraw(uint256 amount) - Mô tả: Rút ETH thế chấp về ví.
- Kiểm tra an toàn: Chỉ cho phép rút nếu Health Factor (Hệ số sức khỏe) vẫn giữ ở mức an toàn (>= 1) sau khi rút.
- Chức năng:
liquidate(address user) - Mô tả: Khi giá trị tài sản thế chấp giảm mạnh (Health Factor < 1), bất kỳ ai cũng có thể trở thành "người thanh lý" (Liquidator).
- Cơ chế:
- Liquidator trả thay nợ cho Borrower.
- Liquidator nhận lại phần tài sản thế chấp (ETH) tương ứng + 10% Bonus (phần thưởng thanh lý).
- Mục đích: Đảm bảo Pool luôn có đủ khả năng chi trả (Solvency).
- Chức năng:
supply(uint256 amount)&withdrawSupply(uint256 amount) - Mô tả: Người dùng gửi Token vào Pool để cung cấp vốn cho người khác vay (Tính năng nền tảng cho Lending Pool).
graph TD
User[Người dùng] -->|Tương tác qua Trình duyệt| FE[Frontend (Nuxt/Vue)]
subgraph Frontend Logic
FE -->|PrimeVue/Tailwind| UI[Giao diện UI]
FE -->|Ethers.js| Web3[Web3 Provider\n(Metamask)]
end
User -->|Ký giao dịch| Web3
subgraph Blockchain Layer
Web3 -->|RPC Call| SC[Smart Contract: LendingPool]
SC -->|Lưu trữ| State[Blockchain State\n(Balance, Collateral)]
end
subgraph External
Admin -->|Update Price| Oracle[Mock Oracle]
Oracle -->|Set ETH Price| SC
end
-
An toàn bảo mật (Security First):
- Sử dụng
ReentrancyGuardđể ngăn chặn các cuộc tấn công Reentrancy (lỗi bảo mật phổ biến nhất trong DeFi). - Kiểm tra điều kiện (
require) chặt chẽ trước mọi thay đổi trạng thái.
- Sử dụng
-
Khả năng mở rộng (Scalability):
- Kiến trúc tách biệt giữa Token (
IERC20) và Logic (LendingPool), dễ dàng hỗ trợ nhiều loại tài sản trong tương lai.
- Kiến trúc tách biệt giữa Token (
-
Trải nghiệm người dùng (UX):
- Giao diện cập nhật Real-time (thời gian thực) khi giao dịch thành công.
- Thông báo trạng thái rõ ràng, xử lý lỗi giao dịch trực quan trên Frontend.