In this page, we describe an Ellcrys address and how it is constructed.

Like Bitcoin and many other cryptocurrency, an address is the most basic construct of the blockchain that allows us to receive money. When someone intends to send us money through the blockchain, they will require an address in the same way a bank account is required to send fiat to a person. An address is constructed from a public key.

A public key and private key are two unique but related cryptographic keys. They are long random numbers of which the public key is derived from the private key. The public key can be freely shared to anyone while the private key must be kept secret at all times and never revealed to anyone.

Since the public key is derived from the private key and are both mathematically related, the public key can be used to verify signatures created using the private key. The private key can also decrypt messages encrypted using the public key. For example, Alice can encrypt a message to Bob using Bob's public key if she does not want to reveal the message to a third-party. Bob will be able to decrypt Alice's messages using his private key and since only Bob knows the private key, only he can decrypt the message.

Public and Private Keys form the basis of cryptocurrencies which has made uncensored, programmable money possible.

Ellcrys is leverages on elliptic curve cryptography. We make use Ed25519 as the primary signature scheme. Ed25519 offers very fast key generation and signing capabilities. It was created by Daniel Bernstein.

An Ellcrys address is a 20 bytes string. A product of hashing an Ed25519 public key with SHA3-256 and RIPEMD160. The 20 bytes address is finally encoded using Base58Check to produce an address that can be verified to prevent people from transferring money to wrong addresses.

BASE58CHECK(RIPEMD160(SHA3-256(public_key)), 94)

The Base58Check version used is 94 which has the effect of producing addresses beginning with the letter `e`

to help user identify an Ellcrys address.

Example AddresseGzzf1HtQL7M9Eh792iGHTvb6fsnnPipad

Ellcrys uses a balance-based accounting model similar to what is obtainable in today's banking institutions. Each account is subjected to direct state changes as opposed to the UTXO model where there are dependencies in multiple UTXO objects. Account-based model saves space and is easier to use and understand. An account is addressed using Ellcrys' 20 bytes address described above.