Reading the code, I see that transactions can contain an unlimited number of tx_extra_field
items.
tx_extra_field
is defined in src/cryptonote_core/tx_extra.h
as a union of a few possible types, identified by a type byte:
#define TX_EXTRA_TAG_PADDING 0x00
#define TX_EXTRA_TAG_PUBKEY 0x01
#define TX_EXTRA_NONCE 0x02
#define TX_EXTRA_MERGE_MINING_TAG 0x03
#define TX_EXTRA_MYSTERIOUS_MINERGATE_TAG 0xDE
Further, nonces can be one of:
#define TX_EXTRA_NONCE_PAYMENT_ID 0x00
#define TX_EXTRA_NONCE_ENCRYPTED_PAYMENT_ID 0x01
What are each of these types/formats used for? Also, what is the purpose of padding?
Thanks