For the complete documentation index, see llms.txt. This page is also available as Markdown.

Viết Smart Contract

Viết các hợp đồng Solidity tương thích với Chiliz Chain: phiên bản Solidity và EVM được khuyến nghị, số thập phân token CAP-20, cơ chế gas và sự khác biệt EVM so với Ethereum.

Ngay từ khi bạn quyết định tạo một dApp trên Chiliz Chain, bạn cần tính đến những đặc điểm riêng của blockchain này.

Mặc dù Chiliz Chain tương thích với EVM, nhưng nếu xem nó giống hệt Ethereum có thể dẫn đến các vấn đề về khả năng sử dụng, đặc biệt liên quan đến số thập phân token và cơ chế gas.

Hãy cùng khám phá!

Điều kiện tiên quyết

Môi trường

Trước khi bắt đầu viết hợp đồng, hãy đảm bảo môi trường của bạn đã sẵn sàng.

Đầu tiên, bạn cần có một ví được cấu hình cho Spicy Testnet (để phát triển) hoặc Chiliz Chain Mainnet (để triển khai thực tế).

Kết nối với Chiliz Chain

Thứ hai, bạn sẽ cần $CHZ để trả gas triển khai trên cả Testnet lẫn Mainnet. Trong khi bạn có thể mua $CHZ Mainnet trên bất kỳ sàn giao dịch tiền điện tử nào, bạn có thể dùng faucet để lấy token Testnet miễn phí.

Nhận Token Testnet Miễn Phí

Về công cụ, bạn có thể sử dụng Hardhat hoặc Remix. Xem ví dụ:

Triển khai với Remix

Cuối cùng, các hợp đồng trên Chiliz Chain được viết bằng ngôn ngữ Solidity:

Hãy sử dụng các phiên bản Solidity và EVM được khuyến nghị:

Phiên bản Solidity và EVM được khuyến nghị cho Chiliz Chain:

  • Phiên bản trình biên dịch Solidity: 0.8.30 (hoặc thấp hơn)

  • Phiên bản EVM mục tiêu: prague

Fan Tokens / CAP-20

Điểm đặc trưng nhất của Chiliz Chain là tiêu chuẩn CAP-20, được sử dụng cho Fan Tokens.

CAP-20 về mặt kỹ thuật tương đương với tiêu chuẩn ERC-20. Kể từ đợt Di Cư Fan Tokens Thập Phân 2026, các token CAP-20 sử dụng độ chính xác 18 số thập phân, giống như các token ERC-20 tiêu chuẩn, do đó số dư, giao dịch chuyển và tổng nguồn cung của Fan Token được tính theo đơn vị nhỏ nhất của token và hỗ trợ các phần nhỏ.

Fan Tokens từng sử dụng 0 số thập phân (chỉ các đơn vị nguyên) cho đến Di Cư Fan Tokens Thập Phân 2026, đợt nâng cấp đã đưa chúng lên độ chính xác 18 số thập phân. Các hợp đồng được viết dựa trên giả định đơn vị nguyên cũ có thể cần được cập nhật.

Về Fan Tokens

Các thực hành tốt nhất khi viết smart contract

Sử dụng các thư viện đã được kiểm chứng (OpenZeppelin)

Đừng bắt đầu tạo hợp đồng từ đầu. Biện pháp bảo mật hiệu quả nhất là dựa trên các tiêu chuẩn đã được cộng đồng kiểm tra, để giảm thiểu rủi ro lỗ hổng bảo mật.

Để phát triển trên Chiliz Chain, chúng tôi khuyến nghị mạnh mẽ sử dụng OpenZeppelin Contracts. Chúng cung cấp các triển khai an toàn và đã được cộng đồng xem xét cho các hợp đồng token.

Bằng cách sử dụng các hợp đồng tiêu chuẩn, bạn đảm bảo rằng token của mình tương thích với các ví phổ biến (như MetaMask) và hệ sinh thái Chiliz (Socios.com).

Các thực hành tốt nhất cho EVM nói chung

Bất kể blockchain nào, ba mô hình sau đây là không thể thiếu để phát triển Solidity an toàn.

Mô hình "Checks-Effects-Interactions"

Đây là lớp phòng thủ chính của bạn chống lại Reentrancy Attacks. Luôn cấu trúc các hàm của bạn theo đúng thứ tự này:

  1. Checks (Kiểm tra): Xác thực đầu vào và điều kiện (ví dụ: các câu lệnh require).

  2. Effects (Hiệu ứng): Cập nhật trạng thái hợp đồng (ví dụ: giảm số dư).

  3. Interactions (Tương tác): Tương tác với các hợp đồng khác hoặc gửi tiền (ví dụ: transfer).

Kiểm soát truy cập chặt chẽ

Không bao giờ để các hàm nhạy cảm không được bảo vệ. Nếu một hàm đúc token, thay đổi phí hoặc nâng cấp logic, nó phải được hạn chế quyền truy cập.

  • Đơn giản: Sử dụng Ownable cho các hợp đồng có một quản trị viên duy nhất.

  • Phức tạp: Sử dụng AccessControl cho các hợp đồng yêu cầu nhiều vai trò (ví dụ: MINTER_ROLE, ADMIN_ROLE).

Xác thực đầu vào

Hãy giả định rằng tất cả đầu vào đều có hại. Sử dụng các câu lệnh require() ngay đầu hàm của bạn để xác thực các tham số.

Ví dụ:

  • Kiểm tra địa chỉ zero (address(0)).

  • Kiểm tra số lượng bằng không khi chuyển nhượng.

  • Xác minh độ dài mảng khớp nhau nếu truyền nhiều mảng.

  • v.v.

Chi tiết triển khai đặc thù của Chiliz

Mặc dù Chiliz Chain tương thích với EVM, một số "quy tắc riêng" được áp dụng, đặc biệt liên quan đến số thập phân token.

Tuân thủ CAP-20 (Fan Tokens)

Nếu bạn đang viết một hợp đồng tương tác với Fan Tokens (ví dụ: một Staking Pool cho $PSG hoặc $BAR), hãy tính đến số thập phân của chúng thay vì giả định một giá trị cố định.

Kể từ đợt Di Cư Fan Tokens Thập Phân 2026, Fan Tokens sử dụng 18 số thập phân, do đó 1 Token = 10^18 units, giống như hầu hết các token ERC-20. Các hợp đồng Fan Token cũ sử dụng 0 số thập phân (1 Token = 1 unit), và một số vẫn có thể còn gặp trên chain.

  • Đừng hardcode số thập phân của một token. Hãy đọc token.decimals() một cách động để hợp đồng của bạn hoạt động dù token sử dụng 18 số thập phân hay cấu hình 0 số thập phân cũ.

  • Hãy scale các số lượng bằng giá trị mà decimals() trả về thay vì giả định 1e18.

Tối ưu hóa gas trên Chiliz

Các giao dịch trên Chiliz Chain rẻ hơn đáng kể so với Ethereum, nhưng mã không được tối ưu vẫn có thể gây ra tắc nghẽn hoặc giao dịch thất bại trong các sự kiện có lưu lượng cao (ví dụ: trong một trận đấu trực tiếp).

Dưới đây là ba cách để tiết kiệm gas:

  • Sử dụng Custom Errors: Thay vì chuỗi thông báo dài trong require, hãy sử dụng định nghĩa error để tiết kiệm gas.

  • Sắp xếp các biến trạng thái của bạn sao cho vừa vặn trong các slot 32 byte. Đặt uint128, address và bool cạnh nhau khi có thể.

  • Ưu tiên external cho các hàm không bao giờ được gọi nội bộ bởi chính hợp đồng.

Cập nhật lần cuối

Nội dung này có hữu ích không?