serai/spec/integrations/Monero.md
2024-03-11 17:55:05 -04:00

1.2 KiB

Monero

Addresses

Monero addresses are structs, defined as follows:

  • kind: Enum { Standard, Subaddress, Featured { flags: u8 } }
  • spend: [u8; 32]
  • view: [u8; 32]

Integrated addresses are not supported due to only being able to send to one per Monero transaction. Supporting them would add a level of complexity to Serai which isn't worth it.

This definition of Featured Addresses is non-standard since the flags are represented by a u8, not a VarInt. Currently, only half of the bits are used, with no further planned features. Accordingly, it should be fine to fix its size. If needed, another enum entry for a 2-byte flags Featured Address could be added.

This definition is also non-standard by not having a Payment ID field. This is per not supporting integrated addresses.

In Instructions

Monero In Instructions are present via tx.extra, specifically via inclusion in a TX_EXTRA_NONCE tag. The tag is followed by the VarInt length of its contents, and then additionally marked by a byte 127. The following data is limited to 254 bytes.

Out Instructions

Out Instructions ignore data.