Enumeration
Trong các hướng dẫn trước, bạn đã xem xét các cách tích hợp chức năng mint vào một skeleton smart contract. Để NFT của bạn hiển thị trong ví, bạn cũng phải deploy một bản vá lỗi đã được implement một trong các enumeration method. In this tutorial, you'll expand on and finish the rest of the enumeration methods as per the standard Now you'll extend the NFT smart contract and add a couple of enumeration methods that can be used to return the contract's state.
Giới thiệu
Như đã đề cập trong hướng dẫn Upgrade một Contract, bạn có thể deploy các bản vá và sửa lỗi cho các smart contract. Lần này, bạn sẽ dùng kiến thức đó để implement các enumeration function nft_total_supply
, nft_tokens
và nft_supply_for_owner
.
Để bắt đầu, bạn có thể switch sang branch 2.minting
từ GitHub repository của chúng tôi, hoặc tiếp tục với phần hướng dẫn bên trên. Nếu bạn chưa clone, hãy tham khảo Kiến trúc của Contract để check out repository.
git checkout 2.minting
3.enumeration
. :::Các sửa đổi với contract
Let's start by opening the src/enumeration.ts
file and locating the empty internalNftTotalSupply
function.
NFT Total Supply
Function này sẽ trả về tổng số các NFT được lưu trữ trên contract. You can easily achieve this functionality by simply returning the length of the nftMetadataById
data structure.
Loading...
NFT Tokens
This function should return a paginated list of JsonTokens
that are stored on the contract regardless of their owners. If the user provides a from_index
parameter, you should use that as the starting point for which to start iterating through tokens; otherwise it should start from the beginning. Likewise, if the user provides a limit
parameter, the function shall stop after reaching either the limit or the end of the list.
Loading...
NFT Supply For Owner
Function này sẽ tìm kiếm tất cả các non-fungible token của owner do người dùng xác định và trả về độ dài của tập hợp kết quả. If there isn't a set of tokens for the provided Account ID, then the function shall return 0
.
Loading...
Tiếp theo, bạn có thể sử dụng CLI để truy vấn các method mới này và xác nhận rằng chúng hoạt động chính xác.
Redeploy contract
Giờ đây bạn đã implement xong phần logic cần thiết cho nft_tokens_for_owner
, giờ là lúc build và deploy lại contract cho account của bạn. Dùng build script, deploy contract theo cách bạn đã làm trong các phần hướng dẫn trước:
yarn build && near deploy --wasmFile build/nft.wasm --accountId $NFT_CONTRACT_ID
Lúc này sẽ có một cảnh báo nói rằng tài khoản đã có một contract đã được deploy và sẽ hỏi bạn có muốn tiếp tục hay không. Đơn giản hãy gõ y
và ấn enter.
This account already has a deployed contract [ AKJK7sCysrWrFZ976YVBnm6yzmJuKLzdAyssfzK9yLsa ]. Do you want to proceed? (y/n)
Các token enumerating
Khi contract cập nhật đã được deploy lại, bạn có thể kiểm tra và xem liệu các function mới này có hoạt động như mong đợi hay không.
Các token NFT
Hãy query một list của non-fungible token trên contract. Sử dụng lệnh sau để truy vấn thông tin của tối đa 50 NFT bắt đầu từ item thứ 10:
near view $NFT_CONTRACT_ID nft_tokens '{"from_index": "10", "limit": 50}'
Câu lệnh này sẽ trả về một ouput kiểu như sau:
Ví dụ về response nhận được:
[]
Các token theo owner
Để lấy tổng số lượng NFT sở hữu bởi account goteam.testnet
, hãy call function nft_supply_for_owner
và set parameter account_id
:
near view $NFT_CONTRACT_ID nft_supply_for_owner '{"account_id": "goteam.testnet"}'
Nó sẽ trả về một output trong giống như sau:
Ví dụ về response nhận được:
0
Tổng kết
Trong hướng dẫn này, bạn đã thêm hai enumeration function mới, và bây giờ bạn đã có NFT smart contract cơ bản với mint và enumeration method. Sau khi implement các sửa đổi này, bạn deploy lại smart contract và test các function bằng CLI.
Trong hướng dẫn kế tiếp, bạn sẽ implement các core function cần thiết để cho phép các user có thể transfer các token đã được mint ra.
3.enumeration
. :::