Bài viết
Chia sẻ kiến thức của bạn.
Làm thế nào để đảm bảo chỉ chủ sở hữu NFT mới có thể chuyển giao nó trong hợp đồng?
Này mọi người! Tôi đang thực hiện hợp đồng NFT và muốn đảm bảo rằng chỉ chủ sở hữu hợp pháp của NFT mới có thể chuyển giao nó. Tôi có chức năng này để chuyển:
public fun transfer(
nft: DevNetNFT, recipient: address, _: &mut TxContext
) {
transfer::public_transfer(nft, recipient)
}
Việc kiểm tra này có được thực hiện trong public_transfer
phương thức không, hay tôi cần thêm logic bổ sung?
- Move CLI
Câu trả lời
3Để làm rõ hơn nữa, đó không phải public_transfer
là kiểm tra quyền sở hữu cụ thể, mà là ngữ nghĩa giao dịch Sui. Để một giao dịch chấp nhận một đối tượng làm đầu vào, bạn phải có quyền sở hữu, nghĩa là địa chỉ của người gửi phải khớp với địa chỉ chủ sở hữu trên đối tượng. Tuy nhiên, các đối tượng được chia sẻ coi mọi người là 'chủ sở hữu' cho mục đích giao dịch.
checkWithegorTrước khi chuyển NFT, public_transfer
chức năng kiểm tra xem người gửi có giữ NFT hay không. Do đó, logic thực sự được tích hợp vào public_transfer
phương pháp.
Bạn thực sự không cần chức năng này vì bạn có thể gọi trực tiếp tx.transferObjects
trong PTB.
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.