Estoy tratando de averiguar todos los nft que fueron creados por una máquina de dulces. Estoy tan confundido con el v2. Esto es lo que he hecho hasta ahora.
async function getProgramAccounts( connection, programId, configOrCommitment, ) { const extra = {}; let commitment; //let encoding; if (configOrCommitment) { if (typeof configOrCommitment === 'string') { commitment = configOrCommitment; } else { commitment = configOrCommitment.commitment; //encoding = configOrCommitment.encoding; if (configOrCommitment.dataSlice) { extra.dataSlice = configOrCommitment.dataSlice; } if (configOrCommitment.filters) { extra.filters = configOrCommitment.filters; } } } const args = connection._buildArgs([programId], commitment, 'base64', extra); const unsafeRes = await (connection)._rpcRequest( 'getProgramAccounts', args, ); return unsafeRes.result; }Según el chat de discordia metaplex anterior. Necesito obtener el primer creador que con esta función
const deriveCandyMachineV2ProgramAddress = async ( candyMachineId, ) => { const candyMachineID = new PublicKey(candyMachineId); return await PublicKey.findProgramAddress( [Buffer.from('candy_machine'), candyMachineID.toBuffer()], candyMachineProgram, ); };para obtener las tablas hash de la siguiente manera
const fetchHashTable = async (hash, metadataEnabled) => { const connection = new web3.Connection( process.env.REACT_APP_SOLANA_RPC_HOST ); const creatorKey = await deriveCandyMachineV2ProgramAddress(hash) const metadataAccounts = await getProgramAccounts( connection, { filters: [ { memcmp: { offset: 1 + 32 + 32 + 4 + MAX_NAME_LENGTH + 4 + MAX_URI_LENGTH + 4 + MAX_SYMBOL_LENGTH + 2 + 1 + 4 + 0 * MAX_CREATOR_LEN, bytes: creatorKey, }, }, ], } ); const mintHashes = []; for (let index = 0; index < metadataAccounts.length; index++) { const account = metadataAccounts[index]; const accountInfo = await connection.getParsedAccountInfo(account.pubkey); const metadata = new Metadata(hash.toString(), accountInfo.value); if (metadataEnabled) mintHashes.push(metadata.data); else mintHashes.push(metadata.data.mint); } console.log(mintHashes, 'minthashes') return mintHashes; }; El problema es que mi función getProgramAccounts no devuelve nada.
¿Alguien puede decirme qué estoy haciendo mal?
Gracias
derivaCandyMachineV2ProgramAddress debe devolver una matriz con 2 valores, por lo que para obtener la clave del creador necesita acceder al primer elemento: const [creatorKey] = await deriveCandyMachineV2ProgramAddress(hash) y esto devolverá una interfaz de clave pública, así que simplemente cambie bytes: creatorKey a bytes: creatorKey.toBase58()