es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Solana: Obtén información de la Máquina de Dulces desde un token NFT utilizando Js.

Estoy intentando encontrar cuál es el identificador o dirección de la máquina expendedora de dulces para un NFT específico.

Hasta ahora he intentado recorrer las cuentas de billetera utilizando @solana/web3.js

const tokenAccounts = await connection
        .getParsedTokenAccountsByOwner(publicKey, {
          programId: TOKEN_PROGRAM_ID,
        })
        .then((context) => context.value);

También intenté con metaplex/js, obtuve más información como los creadores:

const mintAccount = new metaplex.Account(searchNftAddress, mintAccInfo);
          if (mintAccount) {
            const metadata = metaplex.programs.metadata.Metadata.from(mintAccount);
            console.log(metadata.data?.data?.creators);
          }

Pero no encuentro la información de la máquina expendedora de dulces.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para encontrar el ID o dirección de la máquina de dulces para un NFT específico, puedes seguir los siguientes pasos:

    1. Primero, necesitas conocer la dirección de acuñación del NFT en el que estás interesado. Esto generalmente se puede encontrar en el explorador de blockchain o al revisar los metadatos o la cuenta del token asociada con el NFT.
    2. Una vez que tengas la dirección de acuñación, puedes utilizar la API de Metaplex para buscar los metadatos asociados con esa dirección de acuñación. Los metadatos deberían contener información sobre la máquina de dulces, incluyendo el ID o la dirección de la máquina de dulces.

      const mintAddress = 'insertar dirección de acuñación aquí';
      const connection = new solanaWeb3.Connection('https://api.mainnet-beta.solana.com');
      const programId = new solanaWeb3.PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
      const metadataAccounts = await metaplex.getMetadata(mintAddress, {
      connection: connection,
      programId: programId,
      });
      const candyMachineAddress = metadataAccounts[0]?.data?.data?.candyMachineId || '';
      console.log('Dirección de la máquina de dulces:', candyMachineAddress);  
      

    3. Si los metadatos no contienen la información de la máquina de dulces, puedes intentar buscar las cuentas de tokens asociadas utilizando la librería Solana web3.js. Busca cualquier cuenta que tenga un saldo del NFT en el que estás interesado y verifica si están asociadas con una máquina de dulces.
      const TOKEN_PROGRAM_ID = new solanaWeb3.PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');
      const publicKey = 'insertar clave pública de la billetera aquí';
      const tokenAccounts = await connection
      .getParsedTokenAccountsByOwner(publicKey, {
        programId: TOKEN_PROGRAM_ID,
      })
      .then((context) => context.value);
      for (let i = 0; i < tokenAccounts.length; i++) {
      const tokenAccount = tokenAccounts[i];
      if (tokenAccount.account.data.parsed.info.tokenAmount.amount === '1') {
        const candyMachineId = tokenAccount.account.data.parsed.info.data
          .find((item) => item.account === '11111111111111111111111111111111')
          ?.parsed.info?.mint?.toString();
        if (candyMachineId) {
          console.log('ID de la máquina de dulces:', candyMachineId);
          break;
        }
      }
      }  
      

    Ten en cuenta que el código anterior es solo un ejemplo y podría necesitar modificaciones dependiendo de tu caso de uso específico.

Comments are closed.