我怎样才能得到 collection 糖果机的 public 钥匙
How can i get the public key of the Candy Machine of collection
请帮助我获得 NFT Mint 地址和下面这个功能 return 我想要的但它需要糖果机 ID :
import { Connection, clusterApiUrl, PublicKey } from '@solana/web3.js';
import bs58 from 'bs58';
const connection = new Connection(clusterApiUrl('mainnet-beta'));
const MAX_NAME_LENGTH = 32;
const MAX_URI_LENGTH = 200;
const MAX_SYMBOL_LENGTH = 10;
const MAX_CREATOR_LEN = 32 + 1 + 1;
const MAX_CREATOR_LIMIT = 5;
const MAX_DATA_SIZE = 4 + MAX_NAME_LENGTH + 4 + MAX_SYMBOL_LENGTH + 4 + MAX_URI_LENGTH + 2 + 1 + 4 + MAX_CREATOR_LIMIT * MAX_CREATOR_LEN;
const MAX_METADATA_LEN = 1 + 32 + 32 + MAX_DATA_SIZE + 1 + 1 + 9 + 172;
const CREATOR_ARRAY_START = 1 + 32 + 32 + 4 + MAX_NAME_LENGTH + 4 + MAX_URI_LENGTH + 4 + MAX_SYMBOL_LENGTH + 2 + 1 + 4;
const TOKEN_METADATA_PROGRAM = new PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
const candyMachineId = new PublicKey('ENTER_YOUR_CANDY_MACHINE_ID_HERE');
const getMintAddresses = async (firstCreatorAddress: PublicKey) => {
const metadataAccounts = await connection.getProgramAccounts(
TOKEN_METADATA_PROGRAM,
{
// The mint address is located at byte 33 and lasts for 32 bytes.
dataSlice: { offset: 33, length: 32 },
filters: [
// Only get Metadata accounts.
{ dataSize: MAX_METADATA_LEN },
// Filter using the first creator.
{
memcmp: {
offset: CREATOR_ARRAY_START,
bytes: firstCreatorAddress.toBase58(),
},
},
],
},
);
return metadataAccounts.map((metadataAccountInfo) => (
bs58.encode(metadataAccountInfo.account.data)
));
};
getMintAddresses(candyMachineId);
https://solanacookbook.com/references/nfts.html#how-to-get-the-owner-of-an-nft
提前致谢
当你 运行 candy-machine-v2-cli.ts 上传时,它应该将新创建的糖果机 ID 打印到你的控制台。
但是,鉴于您搜索创作者,您实际上需要使用与糖果机关联的糖果机 创作者 id。这个和糖果机Id本身是不一样的
您可以在任何铸造资产的元数据中找到糖果机创建者 ID。糖果机创建者id将是第一个创建者份额为0的列表创建者。
请帮助我获得 NFT Mint 地址和下面这个功能 return 我想要的但它需要糖果机 ID :
import { Connection, clusterApiUrl, PublicKey } from '@solana/web3.js';
import bs58 from 'bs58';
const connection = new Connection(clusterApiUrl('mainnet-beta'));
const MAX_NAME_LENGTH = 32;
const MAX_URI_LENGTH = 200;
const MAX_SYMBOL_LENGTH = 10;
const MAX_CREATOR_LEN = 32 + 1 + 1;
const MAX_CREATOR_LIMIT = 5;
const MAX_DATA_SIZE = 4 + MAX_NAME_LENGTH + 4 + MAX_SYMBOL_LENGTH + 4 + MAX_URI_LENGTH + 2 + 1 + 4 + MAX_CREATOR_LIMIT * MAX_CREATOR_LEN;
const MAX_METADATA_LEN = 1 + 32 + 32 + MAX_DATA_SIZE + 1 + 1 + 9 + 172;
const CREATOR_ARRAY_START = 1 + 32 + 32 + 4 + MAX_NAME_LENGTH + 4 + MAX_URI_LENGTH + 4 + MAX_SYMBOL_LENGTH + 2 + 1 + 4;
const TOKEN_METADATA_PROGRAM = new PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
const candyMachineId = new PublicKey('ENTER_YOUR_CANDY_MACHINE_ID_HERE');
const getMintAddresses = async (firstCreatorAddress: PublicKey) => {
const metadataAccounts = await connection.getProgramAccounts(
TOKEN_METADATA_PROGRAM,
{
// The mint address is located at byte 33 and lasts for 32 bytes.
dataSlice: { offset: 33, length: 32 },
filters: [
// Only get Metadata accounts.
{ dataSize: MAX_METADATA_LEN },
// Filter using the first creator.
{
memcmp: {
offset: CREATOR_ARRAY_START,
bytes: firstCreatorAddress.toBase58(),
},
},
],
},
);
return metadataAccounts.map((metadataAccountInfo) => (
bs58.encode(metadataAccountInfo.account.data)
));
};
getMintAddresses(candyMachineId);
https://solanacookbook.com/references/nfts.html#how-to-get-the-owner-of-an-nft
提前致谢
当你 运行 candy-machine-v2-cli.ts 上传时,它应该将新创建的糖果机 ID 打印到你的控制台。
但是,鉴于您搜索创作者,您实际上需要使用与糖果机关联的糖果机 创作者 id。这个和糖果机Id本身是不一样的
您可以在任何铸造资产的元数据中找到糖果机创建者 ID。糖果机创建者id将是第一个创建者份额为0的列表创建者。