Nhảy tới nội dung
This page uses machine translation from English, which may contain errors or unclear language. For the most accurate information, please see the original English version. Some content may be in the original English due to frequent updates. Help us improve this page's translation by joining our effort on Crowdin. (Crowdin translation page, Contributing guide)

ERC-721

Tổng quan

Hướng dẫn này cung cấp một hướng dẫn chi tiết từng bước về cách tạo và triển khai một token tương thích với ERC-721 trên Kaia. Do tính tương thích với Ethereum của Kaia, việc tạo ra một token có thể thay thế trên Kaia tuân theo các bước tương tự như trên Ethereum và sử dụng tiêu chuẩn ERC721.

Để tuân thủ tiêu chuẩn, bạn sẽ triển khai một hợp đồng thông minh thực hiện các giao diện ERC721 và ERC165 tương ứng như sau:


interface ERC721 /* is ERC165 */ {
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);=
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
interface ERC165 {
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

  • Sự kiện chuyển nhượng: được phát ra khi quyền sở hữu của một token được chuyển từ địa chỉ này sang địa chỉ khác.
  • Sự kiện phê duyệt: được phát ra khi một địa chỉ được phê duyệt để chuyển một token cụ thể.
  • Sự kiện ApprovalForAll: được phát ra khi chủ sở hữu phê duyệt hoặc thu hồi quyền phê duyệt cho một nhà điều hành quản lý tất cả các token của họ.
  • balanceOf: Phương thức trả về số lượng NFT (Non-Fungible Tokens) mà một địa chỉ cụ thể sở hữu.
  • ownerOf: Phương thức trả về địa chỉ của chủ sở hữu của một token cụ thể. Mỗi token ERC721 là duy nhất và được đại diện bởi một ID. Chức năng này cho phép người dùng hoặc ứng dụng xác định chủ sở hữu của token dựa trên ID duy nhất của nó.
  • safeTransferFrom (không kèm dữ liệu): phương thức chuyển giao quyền sở hữu của một token cụ thể từ một địa chỉ này sang một địa chỉ khác một cách an toàn. Chức năng này kiểm tra xem người nhận có phải là hợp đồng thông minh hay không. Nếu đúng như vậy, nó phải triển khai một hàm cụ thể (onERC721Received) để chấp nhận giao dịch chuyển nhượng.
  • transferFrom: Phương thức chuyển quyền sở hữu của một token từ một địa chỉ này sang một địa chỉ khác. Thông thường, nó được sử dụng khi người gửi đã được phê duyệt để chuyển token.
  • Phê duyệt: Phương thức để cấp phép cho một địa chỉ chuyển đổi một token cụ thể. Điều này cho phép chuyển nhượng ủy quyền, trong đó chủ sở hữu có thể cho phép một bên khác chuyển nhượng token thay mặt mình.
  • getApproved: Phương thức được sử dụng để lấy địa chỉ đã được phê duyệt cho một token cụ thể.
  • setApprovalForAll: Phương thức cho phép chủ sở hữu của một hoặc nhiều token cấp quyền hoặc thu hồi quyền cho một người vận hành để quản lý tất cả các token của họ.
  • isApprovedForAll: phương thức kiểm tra xem một người dùng có được phép quản lý tất cả các token của chủ sở hữu hay không.
  • safeTransferFrom (với dữ liệu): Phương thức này tương tự như safeTransferFrom (không có dữ liệu) nhưng có thêm tham số dữ liệu. Dữ liệu bổ sung này có thể được sử dụng để truyền thêm thông tin trong quá trình chuyển giao nếu người nhận là một hợp đồng thông minh. Chức năng này cũng kiểm tra xem người nhận có phải là hợp đồng thông minh hay không và liệu nó có triển khai hàm onERC721Received hay không.

Bắt đầu

Trong phần này, bạn sẽ tạo và triển khai hợp đồng token ERC721 của mình bằng cách sử dụng Remix Online IDE. Để đảm bảo tính tiện lợi và bảo mật, chúng tôi sẽ sử dụng hợp đồng OpenZeppelin ERC-721 để tạo token của mình. Với OpenZeppelin, chúng ta không cần phải viết toàn bộ giao diện ERC-721. Thay vào đó, chúng ta có thể nhập thư viện contract và sử dụng các hàm của nó.

Bước 1: Thêm tệp vào Filebase & IPFS

Chúng ta cần lưu trữ các tệp nghệ thuật NFT và metadata; để làm điều này, chúng ta sẽ sử dụng IPFS - một hệ thống lưu trữ và chia sẻ tệp ngang hàng phân tán. Có nhiều phương pháp khác nhau để tương tác với giao thức IPFS. Bạn có thể tự cài đặt và vận hành IPFS trên hệ thống của mình, hoặc sử dụng Filebase - một giải pháp đơn giản hơn.

Filebase là cầu nối đến hệ thống lưu trữ phi tập trung trên IPFS trong web3. Nó đơn giản hóa việc truy cập của bạn vào IPFS bằng cách quản lý hạ tầng cơ sở.

Trong hướng dẫn này, chúng tôi sẽ sử dụng Filebase để lưu trữ tác phẩm nghệ thuật NFT và metadata trên IPFS.

Các bước:

  1. Đăng nhập vào bảng điều khiển Filebase.
  2. Tạo một thùng IPFS bằng cách nhấp vào Tạo thùng nếu bạn chưa có.

  1. Nhấp vào nút Tải lên để tải lên tác phẩm NFT của bạn như hiển thị trên bảng điều khiển bucket của bạn.

  1. Nhấp vào tên tệp trong tab Tệp và sao chép (nút chia sẻ) URL IPFS cho tác phẩm nghệ thuật NFT của bạn.
  2. Thêm tệp JSON metadata vào IPFS bằng Filebase.

Tạo một tệp JSON có tên kairos.json, thay thế URL IPFS của bạn vào trường hình ảnh và lưu tệp. Sau khi lưu, tải tệp JSON của bạn lên IPFS, tương tự như bước trước đó.


{
"name": "Kairos NFT",
"description": "gkaia frens! gazuaaaaa!!!",
"image": "https://disastrous-turquoise-parakeet.myfilebase.com/ipfs/QmRvQc4wZCp6NF7dFL4ywiWTG7FSH3KKGUAkXGgsdYfcKi"
}

Sau khi tải lên, nhấp vào tên tệp trong tab Tệp và sao chép URL IPFS. Nó phải trông giống như hình bên dưới:


https://disastrous-turquoise-parakeet.myfilebase.com/ipfs/QmY1LZF8JHo2r3h4X5VzLLXtJujqnBFGTyo2aqR9joXnt8

Lưu địa chỉ URL IPFS này. Chúng ta sẽ cần điều này để đúc NFT của mình trong phần tiếp theo.

Bước 2: Tạo hợp đồng token ERC721

Trình hướng dẫn hợp đồng OpenZeppelin

  • Mở Trình hướng dẫn hợp đồng OpenZeppelin
  • Chọn ER721.
  • Cung cấp một tên và một biểu tượng cho token. Ví dụ: Kairos và KS tương ứng.
  • Trong trường Base URI, hãy để trống.
  • Trong phần Tính năng, hãy chọn các tính năng Mintable, Burnable, URIStorage để cho phép - tài khoản có quyền truy cập đặc quyền (chỉ chủ sở hữu) có thể đúc, đốt token và cho phép chúng tôi cập nhật URL token cho từng ID token.
  • Nhấp vào biểu tượng Sao chép để sao chép mã để sử dụng trên Remix trong phần tiếp theo.

Remix

  • Trong Remix, hãy điều hướng đến File Explorer và tạo một tệp mới có tên Kairos.sol trong thư mục contracts.
  • Chuyển đến tab Solidity Compiler và nhấp vào Compile Kairos.sol để biên dịch hợp đồng token.
  • Chuyển đến tab Deploy & run transactions
  • Chọn Môi trường > Nhà cung cấp được chèn > MetaMask.
  • Trong menu thả xuống Hợp đồng, hãy chọn hợp đồng của bạn. Ví dụ: Kairos.
  • Trong trường Deploy, hãy cung cấp tham số constructor cho initialOwner.
  • Nhấp vào Deploy

Bước 3: Tương tác với hợp đồng token ERC721

Bây giờ hãy chuyển đến phần Hợp đồng đã triển khai trong Remix và mở rộng hợp đồng đã triển khai. Bạn sẽ thấy một loạt các chức năng. Mở rộng hàm safeMint và thêm các chi tiết sau:

  1. Thêm địa chỉ ví của bạn vào ô đến.
  2. Nhập bất kỳ giá trị số lớn nào vào trường tokenId. Chúng tôi đề xuất sử dụng '1' vì nó đại diện cho token đầu tiên được đúc.
  3. Đối với trường uri, hãy nhập URI của tệp JSON mà bạn đã tạo trong phần Thêm tệp vào IPFS.

  1. Nhấp vào transact và xác nhận giao dịch từ MetaMask. Có thể mất vài phút, nhưng bạn có thể luôn xác nhận giao dịch đã được thực hiện thông qua một trình khám phá blockchain như Kaiascan.

Bây giờ bạn đã có NFT trên mạng thử nghiệm Kaia Kairos.

Bạn có thể kiểm tra các thông tin khác như số dư, tên, biểu tượng, chủ sở hữu hoặc địa chỉ token bằng cách nhập địa chỉ hoặc ID token đã sử dụng trước đó.

Bước 4: Xem NFT trên Metamask

  • Mở MetaMask
  • Truy cập vào tab NFT trên trang chủ ví của bạn và bạn sẽ thấy NFT của mình được phát hiện tự động.

ghi chú

Cách đơn giản nhất để hiển thị NFT của bạn là bật tính năng tự động phát hiện NFT, bạn có thể bật tính năng này trong phần "Cài đặt" dưới mục “Bảo mật & Quyền riêng tư”.

Cải thiện trang này