Publicación
Comparte tu conocimiento.
¿Cómo garantizar que solo el propietario de un NFT pueda transferirlo en un contrato?
¡Hola a todos! Estoy trabajando para implementar un contrato de NFT y quiero asegurarme de que solo el propietario legítimo del NFT pueda transferirlo. Tengo esta función para transferir:
public fun transfer(
nft: DevNetNFT, recipient: address, _: &mut TxContext
) {
transfer::public_transfer(nft, recipient)
}
¿Esta comprobación se realiza dentro del public_transfer
método o tengo que añadir lógica adicional?
- Move CLI
Respuestas
3Para aclarar más, no es específicamente el public_transfer
que comprueba la propiedad, sino la semántica de las transacciones de Sui. Para que una transacción acepte un objeto como entrada, debes tener la propiedad, lo que significa que la dirección del remitente debe coincidir con la dirección del propietario del objeto. Sin embargo, los objetos compartidos tratan a todos como «propietarios» a los efectos de las transacciones.
CheckWitheGor Antes de transferir una NFT, la public_transfer
función comprueba si el remitente tiene la NFT. public_transfer
Por lo tanto, la lógica está integrada en el método.
En realidad, no necesita esta función, ya que puede llamar directamente desde tx.transferObjects
un PTB.
Sabes la respuesta?
Inicie sesión y compártalo.