# DragonX Overview

## Mining Algorithm

RandomX (CPU). DragonX is CPU-mineable using the RandomX Proof-of-Work algorithm
(the same family used by Monero). ASIC and GPU mining are not applicable. See
[randomx.md](randomx.md) for details.

## Block time

36 seconds

## Block reward

3 DRAGONX per block, halving every 3,500,000 blocks.

## Block size

4 MB (consensus maximum)

## P2P

TLS1.3 via WolfSSL is enforced for all network connections. Many ciphersuites are
technically supported by TLS1.3 but many of them are ancient, proved to be less secure
than intended or likely backdoored. DragonX only uses what are widely considered to be the
most secure and [best ciphersuites](https://ciphersuite.info/cs/).

New DragonX P2P connections randomly choose between these two ciphersuites each
time a new connection to a peer is created:

  * `TLS_AES_256_GCM_SHA384`
  * `TLS_CHACHA20_POLY1305_SHA256`

Encrypted P2P connections are important because it means passive network spies,
such as ISPs, cannot tell what nodes are communicating to each other and also
prevents certain attacks against privacy at the network level, such as looking
for which node was the first to relay a transaction. Bitcoin has no protection
against this which is why it's trivial for network spies to tell which node
(and hence which IP address) created a certain transaction and hence which
IP address owns which addresses.

## RPC

Inherited many RPCs from Bitcoin and Zcash, with many new ones.

## Consensus

DragonX is a fully private blockchain from genesis. The consensus parameter
`ac_private=1` is active from block 1 and Sapling is active at height 1, so every
non-coinbase output must be shielded — you can only send to a shielded (`zs...`)
address, never to a transparent address. This is sometimes called "z2z". Unlike
chains that switched on mandatory privacy at a later height, DragonX enforces it
from the very first block.

Transparent addresses exist only to receive mining coinbase; mature coinbase is
directly spendable and is not required to be shielded first (shielding it with
`z_shieldcoinbase` is an optional privacy step). See
[hd-transparent-keys.md](hd-transparent-keys.md).
