solana-go-sdk icon indicating copy to clipboard operation
solana-go-sdk copied to clipboard

Failing to deserialize token metadata

Open DanielSolomon opened this issue 8 months ago • 3 comments

Hey,

I'm trying to deserialize USDC token metadata, using MetadataDeserialize but I get an error: failed to deserialize data, err: failed to read required bytes.

Steps to reproduce:

  • I'm using blocto/solana-go-sdk v1.30.0.
curl https://api.mainnet-beta.solana.com \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc": "2.0","id": 1,"method": "getAccountInfo","params": ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",{"commitment":"finalized","encoding":"base64"}]}'

returns:

{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "apiVersion": "1.18.15",
      "slot": 270836536
    },
    "value": {
      "data": [
        "AQAAABzjWe1aAS4E+hQrnHUaHF6Hz9CgFhuchf/TG3jN/Nj22vN7gPIQCQAGAQEAAAAqnl7btTwEZ5CY/3sSZRcUQ0/AjFYqmjuGEQXmctQicw==",
        "base64"
      ],
      "executable": false,
      "lamports": 310700925773,
      "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
      "rentEpoch": 18446744073709552000,
      "space": 82
    }
  },
  "id": 1
}

Using result.value.data run the following test:

package main

import (
	"encoding/base64"
	"testing"

	tokenMetadata "github.com/blocto/solana-go-sdk/program/metaplex/token_metadata"
	"github.com/stretchr/testify/require"
)

func TestMetadataDeserialize(t *testing.T) {
	usdc := "AQAAABzjWe1aAS4E+hQrnHUaHF6Hz9CgFhuchf/TG3jN/Nj2IoXC/PIQCQAGAQEAAAAqnl7btTwEZ5CY/3sSZRcUQ0/AjFYqmjuGEQXmctQicw=="
	data, err := base64.StdEncoding.DecodeString(usdc)
	require.NoError(t, err)
	_, err = tokenMetadata.MetadataDeserialize(data)
	require.NoError(t, err)
}

DanielSolomon avatar Jun 09 '24 15:06 DanielSolomon