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

154
Views
¿Cómo encontrar el recuento de propietarios de una colección NFT?

Estoy tratando de encontrar un recuento de titulares de colección NFT (token ERC721). Por ejemplo, OpenSea y EtherScan tienen estos datos, pero no pude encontrar un método ERC721 nativo para lograrlo.

Cual es la mejor manera de hacer esto?

Gracias

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La mejor manera sería usar el evento Transfer ya que para eso. Puede consultar todos los eventos de transferencia y filtrar por ID.

Sin embargo, también puede crear su function(id, address) que se llamará en cada transferencia nft, allí puede enviar a una matriz en una id -> address[] donde la matriz representa las direcciones de los píos que poseían eso NFT.

Y luego cree otra function(id) para devolver esa matriz según la identificación enviada a la función.

about 4 years ago · Juan Pablo Isaza Report

0

Bueno, después de unas horas más de investigación, encontré algunas soluciones y quería compartirlas.

Hay algunas maneras de hacer esto:

  1. Si está trabajando en un contrato específico y este contrato se extiende ERC721Enumerable , su estudio de caso es un poco más fácil. Porque puede encontrar el recuento de tokens usando totalSupply() para que pueda omitir la primera parte del código a continuación.
  2. Si desea utilizar una herramienta de terceros, puede consultar Moralis . Devuelve el recuento de propietarios con una lista de direcciones y datos adicionales. Ver la respuesta ya existente
  3. Si desea escribir el código manualmente, aquí está mi código:

 async testGetOwnerCount({ }, payload) { // Connect the contract let nftContract = new ethers.Contract(nftContractAddress, ERC721.abi, signer); // First find the mint count which is equal to the token count const transferFilter = nftContract.filters.Transfer("0x0000000000000000000000000000000000000000", null, null) const tokens = await nftContract.queryFilter(transferFilter) const tokenCount = tokens.length; // Iterate over tokens and store owner addresses in an array let owners = [] for (let i = 0; i < tokenCount; i++) { // First, find the all transfers of the token // from null` to `null` so we get all the transfers of `tokenId` const transferFilter = nftContract.filters.Transfer(null, null, parseInt(tokens[i].args.tokenId)) const tokenTransfers = await nftContract.queryFilter(transferFilter) // `args.to` of the last element gives the current owner of issued token let lastTransfer = tokenTransfers[tokenTransfers.length - 1] let currentOwner = lastTransfer.args.to // If the address has already found before, don't add it... if (!owners.includes(currentOwner)) { owners.push(currentOwner) } } }

Puede haber mejores formas de lograr esto, pero esta fue la mejor que pude encontrar, ya que quiero manejar todos los contratos, no solo aquellos que son ERC721Enumerable y no quiero usar otra herramienta.

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!