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 ChainThứ 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 RemixCuố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ị:
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ỏ.
Về Fan TokensCá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:
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).Effects (Hiệu ứng): Cập nhật trạng thái hợp đồng (ví dụ: giảm số dư).
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
Ownablecho các hợp đồng có một quản trị viên duy nhất.Phức tạp: Sử dụng
AccessControlcho 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ả định1e18.
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ĩaerrorđể 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,addressvàboolcạnh nhau khi có thể.Ưu tiên
externalcho 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?