FA2 de / para a serialização
No padrão FA2.0, o remetente e o destinatário são enviados como Bytes (em vez de enviar como string para FA1.2).
Resultado esperado: ao decodificar os endereços (string) para sua representação hash de chave pública, eu presumiria que o formato P2P é seguido: https://tezos.gitlab.io/api/p2p.html#public-key-hash-21-bytes-8-bit-tag. Por exemplo, tz1ij8gUYbMRUXa4xX3mNvKguhaWG9GGbURn seria '00fd41f8dd065c16d8bfe0d6aa932b765f5b23f5c0' (21 bytes)
Resultado visto: ao verificar uma transação existente, os bytes têm comprimento 22 com um prefixo '00' '0000fd41f8dd065c16d8bfe0d6aa932b765f5b23f5c0' (https://better-call.dev/carthagenet/opg/oosHQxzosTdzizkPDvaDYDjjHeRCu4uG3MnfeH6SeceDoZJLNby/contents => rawJSON)
Para que é usado o byte extra? Devo esperar que seja sempre '00'?
Respostas
No padrão FA2.0, o remetente e o destinatário são enviados como Bytes (em vez de enviar como string para FA1.2).
Ambos os padrões de token dizem que o remetente e o destinatário são endereços de Michelson. Os endereços de Michelson têm duas representações permitidas, como strings (representação legível) e como bytes (representação otimizada).
Para que é usado o byte extra?
O byte extra é usado para distinguir contas implícitas de contratos inteligentes.
Devo esperar que seja sempre '00'?
Não, é apenas '00' para contas implícitas.
Para obter uma descrição detalhada do esquema de codificação binária dos endereços Tezos, você pode usar o seguinte comando:
$ tezos-codec describe alpha.contract binary schema