Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

327
Views
Ethers.js - "ERC721A: transferencia del propietario incorrecto" Error de MetaMask

Mi objetivo es setApprovalForAll para un contrato de token antes de ejecutar la función safeTransferFrom para cada tokenId en la colección NFT. De esta manera, podré transferir NFT a otra dirección sin que MetaMask solicite varias aprobaciones.

Sin embargo, recibo un error al ejecutar la función safeTransferFrom , se activa el siguiente error:ver imagen

Esto sucede incluso después de llamar a la función setApprovalForAll . La transacción setApprovalForAll parece haber sido exitosa también:

ver la actividad de MetaMask

pero llamar a isApprovedForAll dice lo contrario (ver el comentario en la línea 16 del código).

Creo que es posible que el error se genere debido a que no llamé a la función setApprovalForAll correctamente, porque ¿por qué otra razón isApprovedForAll devolvería false ?

 document.querySelector('.click-me').onclick = async () => { const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = await provider.getSigner(); const CONTRACT_ADDRESS = '0x...'; // token contract address const RECEIVER_ADDRESS = '0x...'; // this address expected to get approval for all const ABI = [ 'function setApprovalForAll(address operator, bool _approved)', 'function safeTransferFrom(address from, address to, uint256 tokenId)', 'function isApprovedForAll(address owner, address operator) view returns (bool)' ]; const contract = new ethers.Contract(CONTRACT_ADDRESS, ABI, signer); try { const isApproved = await contract.isApprovedForAll(CONTRACT_ADDRESS, RECEIVER_ADDRESS); console.log(isApproved); // returns false even after several attempts await contract.setApprovalForAll(RECEIVER_ADDRESS, true); // seems to work fine, even shows in MetaMask activity // ERROR SEEMS TO OCCUR HERE const test = await contract.safeTransferFrom(CONTRACT_ADDRESS, RECEIVER_ADDRESS, 749); // 749 is my NFT tokenId console.log(test); } catch (error) { console.log(error.message) } };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Debe cambiar la dirección del contrato al propietario del NFT, consulte a continuación

 document.querySelector('.click-me').onclick = async () => { const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = await provider.getSigner(); const CONTRACT_ADDRESS = '0x...'; // token contract address const RECEIVER_ADDRESS = '0x...'; // this address expected to get approval for all const ABI = [ 'function setApprovalForAll(address operator, bool _approved)', 'function safeTransferFrom(address from, address to, uint256 tokenId)', 'function isApprovedForAll(address owner, address operator) view returns (bool)' ]; const contract = new ethers.Contract(CONTRACT_ADDRESS, ABI, signer); try { const isApproved = await contract.isApprovedForAll(CONTRACT_ADDRESS, RECEIVER_ADDRESS); console.log(isApproved); // returns false even after several attempts await contract.setApprovalForAll(RECEIVER_ADDRESS, true); // seems to work fine, even shows in MetaMask activity // FIXED const test = await contract.safeTransferFrom(signer.address, RECEIVER_ADDRESS, 749); // 749 is my NFT tokenId console.log(test); } catch (error) { console.log(error.message) } };
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!