in

Cómo obtener la dirección usando tokenId

Estoy buscando una manera de obtener la dirección del token minter usando tokenId. Sé que puedo acceder al propietario del token usando ownerOf(tokenId), pero eso devuelve la dirección actual donde se encuentra el token. Quiero realizar una instrucción require que se parezca a esto require(minterOf(tokenId) == msg.sender. ¿Hay alguna manera de hacer referencia a este valor en Solidity?

Para el contexto, estoy creando una aplicación web que permite a los usuarios proporcionar los datos que elijan para acuñar tokens ERC721. Quiero darle al minter una función que les permita quemar el token incluso si existe en una dirección que no controlan.

2 respuestas
2

No hay forma de hacerlo de forma nativa en solidez ya que no puede comunicarse con la cadena de bloques, solo enviarle datos. Tendría que usar un explorador para eso, para rastrear transacciones. No puede rastrear transacciones a través de solidity, solo la transacción actual (con miembros tx.origin o tx.gasprice).

Pude completar esto de forma nativa en Solidity. Creé un mapeo para la dirección minter:

mapping(uint256 => address) private _minters;

Anulé la función _mint de ERC721.sol así:

   function _mint(address to, uint256 tokenId) internal override {
       super._mint(to, tokenId);
       _minters[tokenId] = msg.sender;
   }

Y creó una función de revocación que solo permite que el minter queme tokens que fueron acuñados por ellos mismos pero que están en manos de otras billeteras.

 function revokeCredential(uint256 tokenId) external {
    require(
        _minters[tokenId] == msg.sender,
        "Only the issuer can revoke a credential"
    );
    _burn(tokenId);
}

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest

0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

¿Cómo verificar la integridad de una blockchain privada?

¿Necesito una visa de tránsito Schengen si estoy en tránsito en 2 países Schengen diferentes?