Пост
Поделитесь своими знаниями.
Как обеспечить, чтобы только владелец NFT мог передать его в контракте?
Всем привет! Я работаю над реализацией контракта NFT и хочу убедиться, что только законный владелец NFT может передать его. У меня есть следующая функция для перевода:
public fun transfer(
nft: DevNetNFT, recipient: address, _: &mut TxContext
) {
transfer::public_transfer(nft, recipient)
}
Выполняется ли эта проверка в public_transfer
методе или мне нужно добавить дополнительную логику?
- Move CLI
Ответы
3Поясню подробнее: проверка права собственности public_transfer
заключается не только в проверке прав собственности, а в семантике транзакций Sui. Чтобы транзакция приняла объект в качестве входных данных, вы должны иметь право собственности, то есть адрес отправителя должен совпадать с адресом владельца объекта. Однако для целей транзакций все совместно используемые объекты считаются «владельцами».
Проверьте с помощью EGOR Перед передачей NFT public_transfer
функция проверяет, есть ли у отправителя NFT. public_transfer
Таким образом, логика действительно встроена в метод.
На самом деле эта функция вам не нужна, так как вы можете напрямую звонить tx.transferObjects
в PTB.
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.