Солана: получить информацию о Candy Machine из токена NFT с помощью Js
Я пытаюсь узнать, какой идентификатор или адрес конфетной машины для конкретной nft.
До сих пор я пробовал перебирать учетные записи кошельков с помощью @solana / web3.js
const tokenAccounts = await connection
.getParsedTokenAccountsByOwner(publicKey, {
programId: TOKEN_PROGRAM_ID,
})
.then((context) => context.value);
Также пробовал metaplex / js, я получил дополнительную информацию, например, о создателях:
const mintAccount = new metaplex.Account(searchNftAddress, mintAccInfo);
if (mintAccount) {
const metadata = metaplex.programs.metadata.Metadata.from(mintAccount);
console.log(metadata.data?.data?.creators);
}
Но я не нахожу информации о конфетах.
2 ответа
Если я правильно понимаю, вы хотите знать владельца конкретного NFT?
У меня это работает, я взял отсюда https://solanacookbook.com/references/nfts.html#candy-machine-v1
import {Connection, clusterApiUrl, PublicKey} from '@solana/web3.js';
const connection = new Connection(clusterApiUrl('mainnet-beta'));
export const getOwnerAddresses = async (tokenMint) => {
//const connection = new Connection('https://api.mainnet-beta.solana.com');
const largestAccounts = await connection.getTokenLargestAccounts(new PublicKey(tokenMint));
const largestAccountInfo = await connection.getParsedAccountInfo(largestAccounts.value[0].address);
//console.log(largestAccountInfo.value.data);
console.log(largestAccountInfo.value.data.parsed.info.owner);
/*
PublicKey {
_bn: <BN: 6ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9>
}
*/
};
Вам просто нужно создать модуль импорта и использовать его следующим образом:
getOwnerAddresses('XXXXXXXXX');
Я думаю, что когда вы загружаете nfts, в папке кеша будет создан новый json, и вы получите идентификатор оттуда:
{
"program": {
"uuid": "Wzsae7",
"config": "Serai5EV4oisGhcZHYHGaL4J16ebWKU2yagUrer5fBaK"
},
"items": {
"0": {
"link": "https://arweave.net/flpdtSkJcdospfV93Yfy_tUTrY3abDWDMvTyNMLiY2",
"name": "TEST 0",
"onChain": true
}
}
}