Bắt đầu nhanh
Trong hướng dẫn này, bạn sẽ học cách triển khai hợp đồng thông minh trên CrossFi Chain. Chúng ta sẽ tạo một hợp đồng đơn giản, kiểm tra hợp đồng, và sau đó triển khai nó. Hướng dẫn này có thể được sử dụng sau đó khi bạn triển khai các hợp đồng phức tạp hơn vì các bước sẽ tương tự.
Yêu cầu
- Node.js
- Kiến thức cơ bản về Solidity
- Đồng XFI Tesnet (Các vòi nước có trong Bảng điều khiển thử nghiệm XFI)
Cài đặt Foundry (Bắt buộc)
Trong hướng dẫn này, chúng ta sẽ sử dụng Foundry để kiểm tra và triển khai hợp đồng thông minh của mình. Foundry cho phép chúng ta làm điều này chỉ trong một bộ công cụ và sử dụng dòng lệnh (CLI).
Đầu tiên, chúng ta sẽ tạo một thư mục cho dự án của mình và sau đó cài đặt Foundry. Nếu bạn đã cài đặt Foundry, bạn có thể bỏ qua bước này.
Tạo dự án
Trong terminal của bạn, chạy lệnh sau để tạo một thư mục và khởi tạo npm.
mkdir crossfi_quickstart && cd crossfi_quickstart && npm init -y
Tải xuống và cài đặt Foundry
Lệnh dưới đây sẽ tải xuống phiên bản mới nhất của Foundry:
curl -L https://foundry.paradigm.xyz | bash
Sau khi tải xuống hoàn tất, chạy lệnh foundryup
trong terminal của bạn:
foundryup
Nếu sử dụng MacOS, bạn có thể gặp lỗi sau:
dyld[32719]: Library not loaded: /usr/local/opt/libusb/lib/libusb-1.0.0.dylib
Để khắc phục việc n ày, chạy brew install libusb (Yêu cầu Homebrew)
Tạo Hợp Đồng
Bây giờ chúng ta sẽ tạo tệp hợp đồng và các tệp hỗ trợ bằng cách sử dụng lệnh dưới đây:
forge init counter_contract
Bây giờ bạn có thể mở trình chỉnh sửa mã ở vị trí counter_contract
vừa tạo. Một cấu trúc thư mục dưới đây sẽ được tạo:
--lib
--script
--src
--test
--README.md
--foundry.toml
Đừng lo nếu bạn không chắc tất cả các thư mục này để làm gì vì chúng ta sẽ sử dụng chúng trong suốt hướng dẫn này.
Xem xét hợp đồng thông minh đếm ngược
Trong trình chỉnh sửa mã của bạn, mở tệp Counter.sol nằm trong /src/Counter.sol.
Mã nên giống như dưới đây với có khả năng một phiên bản Solidity khác:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Counter
function increment() public
}
Hợp đồng này bao gồm:
number - Một biến số được gán như một số nguyên không dấu với 256 bit.
setNumber - Một hàm công khai có thể được gọi để đặt biến số
increment - Một hàm công khai tăng biến số lên 1
Biên dịch hợp đồng
Bây giờ chúng ta cần biên dịch hợp đồng. Đây là một bước cần thiết để xác minh rằng hợp đồng thông minh của chúng ta không có bất kỳ lỗi mã hóa logic nào. Đây không phải là một kiểm tra bảo mật của hợp đồng thông minh.
Chúng ta có thể làm điều này bằng cách chạy lệnh dưới đây:
forge build
Nếu thành công, điều này sẽ tạo ra một thư mục tên là out
chứa ABI của hợp đồng thông minh của chúng ta dưới dạng một tệp JSON tên là Counter.json.
Kiểm tra hợp đồng
Đối với hướng dẫn này, chúng ta sẽ không cần tạo kiểm tra của mình vì chúng được cung cấp cho chúng ta trong tệp /test/Counter.t.sol
. Mã nên giống như sau:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import from "forge-std/Test.sol";
import from "../src/Counter.sol";
contract CounterTest is Test
function test_Increment() public
function testFuzz_SetNumber(uint256 x) public
}
Sau đó chúng ta có thể thực hiện mã kiểm tra bằng cách chạy lệnh sau:
forge test
Sau khi chạy lệnh này, bạn sẽ thấy rằng 2 kiểm tra đã được thông qua cũng như mức gas cho hàm Increment
:
Đã chạy 2 kiểm tra cho test/Counter.t.sol:CounterTest
[PASS] testFuzz_SetNumber(uint256) (số lần chạy: 256, μ: 30066, ~: 31310)
[PASS] test_Increment() (gas: 31325)
Kết quả bộ: ok. 2 thành công; 0 thất bại; 0 bỏ qua; hoàn thành trong 9.45ms (thời gian CPU 5.75ms)
Triển khai hợp đồng
Bây giờ là lúc triển khai hợp đồng thông minh của chúng ta trên chuỗi thử nghiệm CrossFi. Chúng ta có thể làm điều này chỉ với một lệnh duy nhất bằng cách sử dụng forge create.
Bạn sẽ cần sử dụng một khóa riêng được kết nối với ví của bạn có mã XFI thử nghiệm.
forge create --rpc-url https://rpc.testnet.ms \
--private-key YOUR_PRIVATE_KEY \
src/Counter.sol:Counter
Nếu việc triển khai thành công, bạn sẽ thấy địa chỉ hợp đồng của bạn dưới tiêu đề "Đã triển khai tới" trong terminal của bạn.
Người triển khai: 0x85Ec95865AD3F912213f105d4f44e132B381f719
Đã triển khai tới: 0xE785D511Fa79B4D3C0c5C4182090EA8D89F32FF4
Băm giao dịch: 0x26ec2881d45dbb0eda13e2cd7df165d6ff8ff15a49af0196b45c5e7f34291d69
Bạn có thể xác minh rằng hợp đồng của bạn đã được triển khai trên thử nghiệm CrossFi bằng cách tìm kiếm địa chỉ của nó bằng test XFI Scan.
Tương tác với hợp đồng
Ở bước cuối cùng của hướng dẫn này, chúng ta sẽ tương tác với hợp đồng của mình bằng cách gọi các hàm công khai. Chúng ta có thể làm điều này bằng cách sử dụng Foundry và các lệnh sau:
Đặt số
Để sử dụng hàm setNumber
để đặt số mới, bạn có thể sử dụng lệnh sau:
cast send YOUR_CONTRACT_ADDRESS "setNumber(uint256)" 5 --rpc-url https://rpc.testnet.ms --private-key YOUR_PRIVATE_KEY
Nếu thành công, bạn sẽ thấy blockHash
và các dữ liệu giao dịch khác.
Đọc số
Để đọc giá trị hiện tại của biến số, bạn có thể sử dụng lệnh sau:
cast call YOUR_CONTRACT_ADDRESS "number()" --rpc-url https://rpc.testnet.ms
Tăng số
Để sử dụng hàm increment
để tăng số lên 1, bạn có thể sử dụng lệnh sau:
cast send YOUR_CONTRACT_ADDRESS "increment()" --rpc-url https://rpc.testnet.ms --private-key YOUR_PRIVATE_KEY
Kết luận
Xin chúc mừng, bạn đã kiểm tra, biên dịch và triển khai một hợp đồng thông minh lên thử nghiệm CrossFi!
Các bước bạn đã hoàn thành trong hướng dẫn này là các bước bạn có thể thực hiện khi tiếp tục xây dựng trên CrossFi.