Try running some of the following tasks:
npx hardhat help
npx hardhat test
npx hardhat node
npx hardhat run scripts/deploy.js
- Giới thiệu
- Yêu cầu hệ thống
- Cài đặt project
- Thuật toán IOU
- Các lệnh cơ bản
- Ứng dụng Web
- Thông tin bổ sung
- Minh họa
Dự án này xây dựng một hệ thống IOU (I Owe You) đơn giản để theo dõi các khoản nợ giữa các địa chỉ trên blockchain. Hệ thống bao gồm các hợp đồng thông minh cho IOU, các script để triển khai hợp đồng, và giao diện web cơ bản để tương tác với các chức năng của hệ thống. Mục tiêu là triển khai hợp đồng trên BSC Testnet và tích hợp chúng vào một ứng dụng web.
- Hợp đồng thông minh cho hệ thống IOU.
- Các bài kiểm thử để đảm bảo tính toàn vẹn của hệ thống.
- Cấu hình Hardhat để triển khai và kiểm thử hợp đồng.
- Ứng dụng web3/Dapps.
- Node.js và npm phiên bản mới nhất.
- Hardhat để triển khai và quản lý project.
- Git để quản lý mã nguồn.
Mở terminal
và tạo một thư mục mới cho project của bạn:
mkdir CS251HardhatProject
cd CS251HardhatProject
npm init -y
npm install --save-dev hardhat
npx hardhat
Chọn Create a basic sample project khi được hỏi để tạo các tệp mẫu.
Thêm cấu hình vào hardhat.config.js
nếu cần, ví dụ:
require("@nomiclabs/hardhat-waffle");
module.exports = {
solidity: "0.8.17",
};
Cài đặt các thư viện cần thiết:
npm install --save-dev @nomicfoundation/hardhat-toolbox
npm install dotenv
Sử dụng tệp .env
để lưu thông tin nhạy cảm như API_URL
và PRIVATE_KEY
:
API_URL=https://<Infura_or_Alchemy_URL>
PRIVATE_KEY=<Your_Private_Key>
Cập nhật hardhat.config.js
để lấy giá trị từ .env
:
require("dotenv").config();
module.exports = {
solidity: "0.8.17",
networks: {
rinkeby: {
url: process.env.API_URL,
accounts: [process.env.PRIVATE_KEY],
},
},
};
Hệ thống IOU (I Owe You) này sử dụng thuật toán cập nhật các khoản nợ giữa các địa chỉ.
- Theo dõi khoản nợ: Mỗi lần add_IOU được gọi, hệ thống lưu thông tin ai nợ ai và số tiền.
- Tìm đường đi: Sử dụng thuật toán BFS để xác định chuỗi các khoản nợ qua lại giữa các địa chỉ và tối thiểu hóa nợ.
- Tối ưu hóa nợ: Nếu có chuỗi nợ, hệ thống giảm nợ trên chuỗi này bằng cách cập nhật giá trị nhỏ nhất giữa các khoản nợ.
- Tự động cập nhật: Nếu có sự thay đổi, các khoản nợ được cập nhật tương ứng để tối ưu hóa việc trả nợ.
- Ví dụ, nếu A nợ B 10 và B nợ C 10 C nợ A 14, việc gọi add_IOU sẽ giúp cập nhật trạng thái và tối ưu hóa bằng cách giảm số nợ của A, B và đưa về thành C nợ A 14-10 = 4 (trừ đi cạnh có trọng số min trong đồ thị).
- Hiển thị trợ giúp
npx hardhat help
- Chạy kiểm thử (cần tạo file test để test).
npx hardhat test
- Khởi động mạng Hardhat node
npx hardhat node
- Triển khai hợp đồng
npx hardhat run scripts/deploy.js
Ứng dụng web này cho phép người dùng tạo và theo dõi các khoản nợ bằng giao diện đơn giản. Các tệp chính trong ứng dụng web:
1. index.html
- Tạo một giao diện cơ bản để nhập thông tin và kết nối với hợp đồng thông minh.
2. style.css
- Định dạng giao diện với các kiểu dáng CSS cơ bản.
3. script.js
- Kết nối với blockchain và hợp đồng thông qua web3.js hoặc ethers.js.
- Git: Project được khuyến khích quản lý qua Git để theo dõi các thay đổi.
- MetaMask: Dùng để kết nối với mạng blockchain thử nghiệm.
- Hardhat Network: Cung cấp một mạng blockchain cục bộ và cho phép thử nghiệm các tính năng mà không cần phí gas thực tế. (tôi sử dụng BNB Smart Chain Testnet).