serai/docs/protocol/Constants.md
Luke Parker 9da0eb69c7
Use an enum for Coin/NetworkId
It originally wasn't an enum so software which had yet to update before an
integration wouldn't error (as now enums are strictly typed). The strict typing
is preferable though.
2023-04-18 02:04:47 -04:00

1.7 KiB

Constants

Types

These are the list of types used to represent various properties within the protocol.

Alias Type
SeraiAddress sr25519::Public (unchecked [u8; 32] wrapper)
Amount u64
NetworkId u16
Coin u32
Network Vec
Session u32
Validator Set (Session, NetworkId)
Key BoundedVec<u8, 96>
ExternalAddress BoundedVec<u8, 128>
Data BoundedVec<u8, 512>

Networks

Every network connected to Serai operates over a specific curve. The processor generates a distinct set of keys per network. Beyond the key-generation itself being isolated, the generated keys are further bound to their respective networks via an additive offset created by hashing the network's name (among other properties). The network's key is used for all coins on that network.

Network Curve ID
Serai Ristretto 0
Bitcoin Secp256k1 1
Ethereum Secp256k1 2
Monero Ed25519 3

Coins

Coins exist over a network and have a distinct integer ID.

Coin Network ID
Serai Serai 0
Bitcoin Bitcoin 1
Ether Ethereum 2
DAI Ethereum 3
Monero Monero 4