1

如何从类型脚本中读取缓冲区数据?

我想使用公钥来获取我拥有的所有令牌列表。我试图得到这个,但正在返回一个空的对象数组。

import {Connection, Keypair} from "@solana/web3.js";

const Solana = new Connection("https://api.testnet.solana.com/","confirmed")
const getInfo = async () => {
    const recentInfo = await Solana.getEpochInfo()
    const DEMO_FROM_SECRET_KEY = new Uint8Array([
       223, 119, 171,   5, 237, 138,  42, 140, 176, 163,  74,
      107,  25, 143,  90,  97, 250, 158, 203, 102, 238,  19,
       77, 228, 211, 238, 147, 149,  40,  50, 211, 155,  51,
      207,  14,  53,  86, 230, 164,  27,  14, 202,  78, 181,
      185, 250,  16,  52, 134, 242,  96,  16,  12,  67,   2,
      178, 106, 241, 156, 212,  11, 150, 114,  72])
    const keypair = Keypair.fromSecretKey(DEMO_FROM_SECRET_KEY)

    console.log("=============get account info==============")
    async function fetchaccountdata() {
        const accountinfo = await Solana.getParsedAccountInfo(keypair.publicKey,"max")
        const accountinfodata =  JSON.stringify(accountinfo)
        const accountinfodata2 = JSON.parse(accountinfodata)
        console.log(accountinfo)
        console.log("=============get account info==============")
        console.log(accountinfodata)
        console.log(accountinfodata2)
    }
    fetchaccountdata()
}
getInfo()

终端是

accountinfodata = {"context":{"slot":94636033},"value":{"data":{"type":"Buffer","data":[]},"executable":false,"lamports":42784111360,"owner":{"_bn":"00"},"rentEpoch":231}}

accountinfodata2 = {
  context: { slot: 94636033 },
  value: {
    data: { type: 'Buffer', data: [] },
    executable: false,
    lamports: 42784111360,
    owner: { _bn: '00' },
    rentEpoch: 231
  }
}

accountinfo 对象的数据为空数组。如何阅读信息?

4

2 回答 2

1

此调用正在获取您钱包的帐户数据。你的钱包里只有 SOL,这就是为什么数据什么都不是!

如果您想获得您拥有的所有令牌帐户,最好使用getParsedTokenAccountsByOwnerhttps ://github.com/solana-labs/solana/blob/2a42f8a06edd4d33c6cda4d66add0a2582d37011/web3.js/src/connection.ts# L2310

于 2021-09-20T14:30:03.603 回答
0

缓冲区包含没有特定格式的帐户信息数据。不过,Borsh 最近已被确立为标准。

来自 SPL 的 borsh 序列化示例: https ://github.com/solana-labs/solana-program-library/blob/master/token/program/src/state.rs#L128

metaplex 元数据的 borsh 反序列化示例:https ://github.com/metaplex-foundation/metaplex-program-library/blob/master/token-metadata/program/src/instruction.rs#L77-L78

如果您不尝试解码 metaplex 元数据,则应在别处查找架构,但遵循相同的代码原则。如果您知道该帐户未使用 borsh,则由您自行解码。

访问 solana tech discord 获取更多信息/帮助。 https://discord.com/channels/428295358100013066/517163444747894795/917412508418068510

于 2022-02-08T03:37:22.173 回答