Допис
Діліться своїми знаннями.
Як переконатися, що лише власник 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. Щоб транзакція приймала об'єкт як вхідний, ви повинні мати право власності, тобто адреса відправника повинна збігатися з адресою власника об'єкта. Спільні об'єкти, однак, ставляться до кожного як до «власника» для цілей транзакцій.
checkWithEGOR Перед передачею NFT public_transfer
функція перевіряє, чи зберігає відправник NFT. Таким чином, логіка дійсно вбудована в public_transfer
метод.
Насправді ця функція вам не потрібна, оскільки ви можете безпосередньо викликати tx.transferObjects
в PTB.
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.