Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda