Skip to content

Encoding & Hashing Reference

This page collects small protocol references that are useful for integrators and indexers.

Dusk wallet addresses are Base58-encoded bytes of compressed public keys.

Address type Underlying key(s) Encoding
Moonlight (public) 1x BLS12-381 G2 compressed (96 B) Base58
Phoenix (shielded) 2x Jubjub points (A, B) compressed (2 x 32 B) Base58

If you are building in Rust, the most reliable way to validate/parse addresses is to use rusk_wallet::Address::from_str() (it performs Base58 decoding, decompression, and structural checks).

High-level map of what hashes are used for what (internal details live in rusk):

  • SHA3-256
    • Block hashes, Merkle roots, and various consensus-related IDs.
  • BLAKE3
    • Contract bytecode hash and contract event bloom filters.
  • BLAKE2b
    • Contract IDs.
    • Transaction IDs and hash_to_scalar-style hashing (hashing bytes, then mapping into a BLS scalar).
  • SHA2-256
    • Integrity checks and some key-derivation primitives in the wallet stack.