Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

149
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda