4

我试图找出特定 nft 的糖果机 ID 或地址是什么。

到目前为止,我已经尝试使用@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);
          }

但我没有找到糖果机信息。

4

1 回答 1

1

如果我理解得很好,你想知道特定 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');
于 2022-02-02T19:40:42.343 回答