mpl-token-metadata
mpl-token-metadata copied to clipboard
mpl_token_metadata::accounts::Metadata::from_bytes() fails
I'm trying to decode some token metadata, and mpl_token_metadata::accounts::Metadata::from_bytes()
works for most tokens, but it's failing for 2 that I've found.
The raw data is encoded in base64, so I've written a function like this:
// decode the base64 string, then decode those bytes to metadata
fn decode_base64_to_metadata(data: String) -> Metadata {
let decoded_base64: Vec<u8> =
base64::Engine::decode(&base64::engine::general_purpose::STANDARD, data).unwrap();
Metadata::from_bytes(&decoded_base64).unwrap()
}
But the last line Metadata::from_bytes(&decoded_base64).unwrap()
is panicking when I call the function with these two strings:
-
BIujMfe1f4+f62sriKcmF5frjExh19LNVTFjEoOTb4ZALGkR7Ylov5UYZr/5UvSvSNprO4d+aL0S4JjpVvWiOb4VAAAATG9sbGFwYWxvb3phIDIwMTggQXJ0BgAAADExNDgzMxAAAABsb2xsYXBhbG9vemFhcnQzAAABAQAAAIujMfe1f4+f62sriKcmF5frjExh19LNVTFjEoOTb4ZAAWQAASAgICAgAAABAQAAAIujMfe1f4+f62sriKcmF5frjExh19LNVTFjEoOTb4ZAAWQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
and:
-
BNUAmMn7BYQUxe8+WzdLfzW1gKg4MPTOih9dR4ffxbCuffD7fiz0KEiFGG+ecMNdO7HiYZdCLK3sFCG+HSXWHN8gAAAARmx1bmsgRG9ua2V5ICM1Mjg0AAAAAAAAAAAAAAAAAAAKAAAARkxVTksAAAAAAMgAAABodHRwczovL2Fyd2VhdmUubmV0L1N2TC1Mc2NCZ3I1LW9jTEJWeXJSdEdfcDNHNDZPNTJJcE1KaXRoWE5xQzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQBAQIAAADVAJjJ+wWEFMXvPls3S381tYCoODD0zoofXUeH38WwrgEAvkiveUxiDgbILHv60zihQvroPzQHmLg7cfM4sKkmrtsAZAEBAf0AAQFbL7vcSRP9/ZYiXPFua2KDNbcdW/gYhL9tUUZW1HrZwgAza8zyJZA4AfNZvjo5NXQ0ZE34CUGp3EjvNwAZ1QCYyfsFhBTF7z5bN0t/NbWAqDgw9M6KH11Hh9/FsK4AGQEBAf0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
The panics I get are:
`Err` value: Custom { kind: InvalidInput, error: "Invalid Option representation: 32. The first byte must be 0 or 1" }
and
`Err` value: Custom { kind: InvalidInput, error: "Invalid Option representation: 51. The first byte must be 0 or 1" }
However, it works just fine for many others, for example:
-
BAJ1ZqOecDcJSJlLWEeVJqYqAzJvsU73TL2Jgt2pFgWBLlGyyN/11z+5nu30lmHn6VqbuESYLKZ6rpEo09v71vEgAAAAQk9CIElTIFRIRSBUSUNLRVIAAAAAAAAAAAAAAAAAAAAKAAAAJEJPQgAAAAAAAMgAAABodHRwczovL2JhZmtyZWlib3pvdmtxeHRybm56aXV3aDR4dm1qMzVkeTZ4azJjYmp2M3dna3U2dW5pcWViZDdjdjd5LmlwZnMubmZ0c3RvcmFnZS5saW5rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf8BAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
If you attempt to decode these using https://www.base64decode.org/, then you'll see in the text that they correspond to Flunk Donkey #5284
, BOB IS THE TICKER
, and Lollapalooza 2018 Art
I'm using the latest version of the mpl-token-metadata crate (3.2.3) and the latest version of the base64 crate (0.21.5).