0

I get this metaplex program log in the blockchain (metaqbxxUerdq28cj1RbbAWkYQm3ybzjb6a8bt518x1s)

How do I decode it so I can get this token data?

{
  "name": {
    "type": "string",
    "data": "Smoking Gangster Pig"
  },
  "symbol": {
    "type": "string",
    "data": "SGP"
  },
  "uri": {
    "type": "string",
    "data": "https://ipfs.io/ipfs/QmX1KSVVxKwL3fFKNE2vbfovcnaK7kA7P6o9Ph6o7T9PGT"
  },
  "mint": {
    "type": "publicKey",
    "data": "BREk36PFG3BuBjVYLkg8WUecqr3ujMMFoY387aBRpump"
  },
  "bondingCurve": {
    "type": "publicKey",
    "data": "5Lj9ACuoZ3jLwFoF4X8tEXmc2WsGiUEiZBKckLGCWt7A"
  },
  "user": {
    "type": "publicKey",
    "data": "9VnmREtEWMAkAdL5xTJ1WSVYZMiwkr6q8ZfC2NLtjdJR"
  }
}

At the moment I'm from this log 'Program data: G3KpTd7rY3YUUAAAAAU21va2luZyBHYW5nc3RlciBQaWcDAAAAU0dQQQwAAAGh0dHBzOi8vaXBmcy5pby9pcGZzL1FtWDFLU1ZWeEt3TDNmRktORTJ2YmZvdmNuYUs3a0E3UDZvOVBoNm83VDlQR1Sayl jIqddZ5MHb5i5554M127CJIdXepFn5OOqgc7Coz0B8boK9mw6bXgT83AhpeAbeS1DjAlCvNHpUSuosoPNpfj2BckBfcTh8yTCmA8J0eJdp/dtcJR/hMeQbZuU+qWI=' will only be able to get surface data without mint, user, bc...

{
  signature: '2nRAKcDF5MsXtvezRaUCNpQMbzSNacbJyxPKdWP2AEpSZMj41QJc7scwyr6aXVfT66q4ZkgHDqFjbBXibwAtatnz',
  err: null,
  logs: [
    'Program ComputeBudget111111111111111111111111111111 invoke [1]',
    'Program ComputeBudget111111111111111111111111111111 success',
    'Program ComputeBudget111111111111111111111111111111 invoke [1]',
    'Program ComputeBudget111111111111111111111111111111 success',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [1]',
    'Program log: Instruction: Create',
    'Program 11111111111111111111111111111111 invoke [2]',
    'Program 11111111111111111111111111111111 success',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: InitializeMint2',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2780 of 163880 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program 11111111111111111111111111111111 invoke [2]',
    'Program 11111111111111111111111111111111 success',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [2]',
    'Program log: Create',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]',
    'Program log: Instruction: GetAccountDataSize',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1595 of 141484 compute units',
    'Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program 11111111111111111111111111111111 invoke [3]',
    'Program 11111111111111111111111111111111 success',
    'Program log: Initialize the associated token account',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]',
    'Program log: Instruction: InitializeImmutableOwner',
    'Program log: Please upgrade to SPL Token 2022 for immutable owner support',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 134871 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]',
    'Program log: Instruction: InitializeAccount3',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4214 of 130987 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20490 of 146959 compute units',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success',
    'Program metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s invoke [2]',
    'Program log: IX: Create Metadata Accounts v3',
    'Program 11111111111111111111111111111111 invoke [3]',
    'Program 11111111111111111111111111111111 success',
    'Program log: Allocate space for the account',
    'Program 11111111111111111111111111111111 invoke [3]',
    'Program 11111111111111111111111111111111 success',
    'Program log: Assign the account to the owning program',
    'Program 11111111111111111111111111111111 invoke [3]',
    'Program 11111111111111111111111111111111 success',
    'Program metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s consumed 36588 of 113018 compute units',
    'Program metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s success',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: MintTo',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4492 of 73915 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: SetAuthority',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2911 of 67276 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [2]',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 2003 of 60158 compute units',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success',
    'Program data: G3KpTd7rY3YUAAAAU21va2luZyBHYW5nc3RlciBQaWcDAAAAU0dQQwAAAGh0dHBzOi8vaXBmcy5pby9pcGZzL1FtWDFLU1ZWeEt3TDNmRktORTJ2YmZvdmNuYUs3a0E3UDZvOVBoNm83VDlQR1Sayl
jIqddZ5MHb5i5554M127CJIdXepFn5OOqgc7Coz0B8boK9mw6bXgT83AhpeAbeS1DjAlCvNHpUSuosoPNpfj2BckBfcTh8yTCmA8J0eJdp/dtcJR/hMeQbZuU+qWI=',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 118934 of 175230 compute units',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]',
    'Program log: CreateIdempotent',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: GetAccountDataSize',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 50895 compute units',
    'Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program 11111111111111111111111111111111 invoke [2]',
    'Program 11111111111111111111111111111111 success',
    'Program log: Initialize the associated token account',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: InitializeImmutableOwner',
    'Program log: Please upgrade to SPL Token 2022 for immutable owner support',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 44308 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: InitializeAccount3',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 40428 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 20339 of 56296 compute units',
    'Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [1]',
    'Program log: Instruction: Buy',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]',
    'Program log: Instruction: Transfer',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 15816 compute units',
    'Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success',
    'Program 11111111111111111111111111111111 invoke [2]',
    'Program 11111111111111111111111111111111 success',
    'Program 11111111111111111111111111111111 invoke [2]',
    'Program 11111111111111111111111111111111 success',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [2]',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 2003 of 3728 compute units',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success',
    'Program data: vdt/007mYe6ayljIqddZ5MHb5i5554M127CJIdXepFn5OOqgc7CozwC/LyAAAAAAGIvUYEERAAABfj2BckBfcTh8yTCmA8J0eJdp/dtcJR/hMeQbZuU+qWKI53ZnAAAAAABrUxwHAAAA6IQD56G+Aw
AAvy8gAAAAAOjs8JoQwAIA',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 35957 of 35957 compute units',
    'Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success'
  ]
}

export class LogDecode {
  static decodeMetadataToken(base64: string): DecodeMetadataToken {
    try {
      const buffer = Buffer.from(base64, "base64");
      let offset = 0;

      // Helper function to safely read string
      const readString = () => {
        if (offset + 4 > buffer.length) {
          throw new Error(`Buffer overflow at offset ${offset}`);
        }

        const length = buffer.readUInt32LE(offset);
        offset += 4;

        if (offset + length > buffer.length) {
          throw new Error(
            `Buffer overflow while reading string at offset ${offset}`,
          );
        }

        const str = buffer.toString("utf8", offset, offset + length);
        offset += length;
        return str;
      };

      // Skip first 8 bytes (header/metadata)
      offset += 8;

      // Read name, symbol, and URI
      const name = readString();
      const symbol = readString();
      const uri = readString();

      logger.info(`Токен:\nНазвание: ${name}\nСимвол: ${symbol}\nUri: ${uri}`);

      return {
        name,
        symbol,
        uri,
      };
    } catch (error) {
      logger.error(
        `Ошибка при декодировании токена: ${(error as Error).message}`,
      );
      throw error;
    }
  }

this working decoding function was written to me by claude.

1
  • AI-generated content is banned here. This includes posting AI-generated code in questions, as you have here. Commented May 1 at 19:53

1 Answer 1

0

You can get the metadata in the structured format.

export async function getMeta(conn: Connection, token: string) {
  try {
    const metaplex = Metaplex.make(conn);
    const mintAddress = new PublicKey(token);
    const metadataAccount = metaplex.nfts().pdas().metadata({ mint: mintAddress });

    const metadataAccountInfo = await conn.getAccountInfo(metadataAccount);

    if (metadataAccountInfo) {
      const meta = await metaplex.nfts().findByMint({ mintAddress: mintAddress });
      return new TokenMeta({
        address: meta.metadataAddress.toBase58(),
        mintAddress: token,
        mint: meta.mint,
        updateAuthorityAddress: meta.updateAuthorityAddress.toBase58(),
        json: meta.json ? JSON.stringify(meta.json) : "",
        jsonLoaded: meta.jsonLoaded,
        name: meta.name,
        symbol: meta.symbol,
        uri: meta.uri,
        isMutable: meta.isMutable,
        primarySaleHappened: meta.primarySaleHappened,
        sellerFeeBasisPoints: meta.sellerFeeBasisPoints,
        editionNonce: meta.editionNonce,
        creators: meta.creators,
        tokenStandard: meta.tokenStandard,
        collection: meta.collection,
        collectionDetails: meta.collectionDetails,
        uses: meta.uses,
        compression: meta.compression,
      });
    }
  } catch (err) {
    G.log("❗ get meta failed", err);
  }
  return null;
}

I hope you to please remember that getting the metadata with metaplex takes some delays. So while managing the result of the metadata you would rather to set some delays or retry when it returned the value of undefined or null.

Sign up to request clarification or add additional context in comments.

1 Comment

I removed your mention of helping with a meme coin site. This is not the place to promote your work or post requests for collaborators, nor is it the place to promote memecoin sites.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.