mat*_*att 8 token jsx reactjs solana solana-web3js
通过该方法,我获得了 publicKey 拥有的令牌列表:
connection
.getParsedTokenAccountsByOwner(
new PublicKey(publicKey.toBase58()),
{
programId: TOKEN_PROGRAM_ID
}
)
.then((b) => {
const owner = b?.value?.[0].account.owner;
const pb = b?.value?.[0].pubkey;
const nonZeroAccounts = b?.value?.filter(
(obj) => obj.account.data.parsed.info.tokenAmount.uiAmount > 0
);
setTokens(JSON.stringify(nonZeroAccounts, null, 2));
Run Code Online (Sandbox Code Playgroud)
例如,拥有 1 个代币的帐户的返回值:
{
"account": {
"data": {
"parsed": {
"info": {
"isNative": false,
"mint": "example",
"owner": "example",
"state": "initialized",
"tokenAmount": {
"amount": "1",
"decimals": 0,
"uiAmount": 1,
"uiAmountString": "1"
}
},
"type": "account"
},
"program": "spl-token",
"space": 165
},
"executable": false,
"lamports": 2039280,
"owner": {
"_bn": "example"
},
"rentEpoch": 245
},
"pubkey": {
"_bn": "example"
}
Run Code Online (Sandbox Code Playgroud)
现在我有了这些信息,我想知道如何获取该令牌的元数据
在 Soubriquet 请求之后,我将在此处添加实际的工作代码。
Metaplex 文档并不总是最新的,所以不要相信它。
const Metadata = require("@metaplex-foundation/mpl-token-metadata");
async function getMetadataPDA(mint)
{
const [publicKey] = await web3.PublicKey.findProgramAddress(
[Buffer.from("metadata"),
Metadata.PROGRAM_ID.toBuffer(),
mint.toBuffer()],
Metadata.PROGRAM_ID
);
return publicKey;
}
let pda = await getMetadataPDA(mint);
let res = await Metadata.Metadata.fromAccountAddress(connection, account);
Run Code Online (Sandbox Code Playgroud)
考虑一下 mint 是一个 PublicKey,而不是一个字符串。
这是返回值的 JSON 结构 https://docs.metaplex.com/token-metadata/Versions/v1.0.0/nft-standard
| 归档时间: |
|
| 查看次数: |
7634 次 |
| 最近记录: |