Skip to main content

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

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.