Aller au contenu

Wownero

source

Manual code review

Basics

C++, fork of monero

uses:

  • Cmake
  • Libsodium
  • ZeroMQ

P2P Protocol structure

WOWnero uses Levin Protocol (from Monero & Cryptonote)

P2P message structure:

  • header: protocol signature id / body length / excpect response bool / command id / return code / flags bit field / version
  • message body

flags = message types Q = request S = resonse B = beginning of a fragmened message E = end of a fragmented message

Protocol commands: standard and admin commands

Blockchain structure

  • TxPool: transactions which are not yet in a block. When the transaction pool hits 50, a new block is calculated.
  • TX: transactions.
  • Blocks: blocks grouping validated transactions
  • Chain: contains blocks
  • Outputs: part of the transaction (1 input (amount), multiple outputs)

basic info:

  • Block id is called "height"
  • Sync() operation syncs the DB to disk (RAM by default)

specific info:

  • ID are stored in the DB, not hashes! Using a table to convert from ID to hash.
  • in tx outputs , stealth addresses are provided, not real address! You must use the viewkey to know if your address is in the payout.
  • one-time transaction private keys are created!
  • Ring Confidential Transactions (RCT): transactions are signed by a group, the "real" signer is harder to find; In Wownero, the ring size is 22 (instead of 11 for Monero)

Fluffy Block?

RCT Output

User wallet

Privacy first: Opaque blockchain.

To see if a public address is in a tx output (ie "DO I HAVE A PAYOUT????"): provide public address + private viewkey

To see if a public address sent something (ie "signature plzzz": provide recipient public address + tx private key

An user has:

  • public address
  • private BIP-39 seed
  • private view key
  • public view key
  • private spend key
  • public spend key