【问题标题】:Solana: Get Candy Machine info from a NFT token using JsSolana:使用 Js 从 NFT 令牌中获取 Candy Machine 信息
【发布时间】:2021-12-28 16:12:21
【问题描述】:

我正在尝试找出特定 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);
          }

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

【问题讨论】:

    标签: javascript solana metaplex solana-web3js


    【解决方案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-06-21
      • 2022-06-16
      • 2022-10-19
      • 2021-12-05
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2022-06-11
      相关资源
      最近更新 更多