What is DERO ?

Slixe
6 min readOct 24, 2021

--

The new protocol is based on homomorphic encryption which ensures true anonymity compared to current solutions based on obfuscation.

DERO’s network is decentralized thanks to its unique PoW algorithm named “AstroBWT” allowing everyone to secure the network and can support up to 750 transactions per second with only an average throughput of 20 Mbps.

DERO is based on the account model, which means that each user must register on the blockchain before interacting with anything.

The registration is done through a “registration” type transaction that is broadcasted on the whole network, and is verified and included like any other normal transaction.

Once registered, the balance is saved in an encrypted manner making it impossible for anyone without access to the account to see the balance (or even the transactions).

The balance of an account is updated automatically without revealing anything thanks to homomorphic encryption.

No transaction between wallet is traceable, promoting anonymity and fungibility.

UTXO vs Account Model

The UTXO model is an auditing model as nodes check every incoming and outgoing transaction, while the account model is a computational model that just needs to check the balance of each user. Account-based systems offer storage advantages because the state and transactions are smaller.

For the UTXO model, you need to store incoming transactions, and outgoing transactions, and limiting anonymity and fungibility since each transaction links together and some coins may not have the same value if they were used for something illegal for example.

AstroBWT

AstroBWT is a unique algorithm developed in 2020 and is based on Burrows-Wheeler transform (BWT).

This algorithm allows to lower the barrier to the maximum allowing anyone to participate in the network security with any type of electronic device (such as graphics card, processor, or even cell phone and many others).

At the functional level, AstroBWT performs the following actions:

  • Step 1: calculate SHA3 of input data
  • Step 2: expand data using Salsa20
  • Step 3: calculate BWT of step 2
  • Step 4: calculate SHA3 of BWT data
  • Step 5: calculate size of stage2 with random number based on step 4
  • Step 6: expand data using Salsa20 with size of step 5
  • Step 7: Calculate BWT of data from step 6
  • Step 8: calculate SHA3 of BWT data from step 7

You can find the community benchmarks here

Homomorphic encryption

Homomorphic encryption allows, without decrypting the data, to perform operations on it.

This technology is used for the balances of accounts saved on the blockchain, and for the amount of token or DERO that is contained in a transaction.

In short, you can do additions, subtractions, on unknown numbers without having to reveal them.

Smart Contracts

Through smart contracts, we can realize decentralized and transparent applications making them impossible to be censored.

The source code of the contract is stored publicly on the blockchain, allowing any node in the network to execute its code.

The programming language used is DBasic, which is a language interpreted by the DVM (Dero Virtual Machine) inspired by Visual Basic.

When a user interacts with your contract, the nodes will execute the necessary actions that have been programmed.

The contract can request specific parameters from a user on an entry point.

You can have several entry points on the same contract, allowing different actions to be performed.

For more information, please refer to the DVM documentation.

Services

DERO allows direct anonymous communication between two users through services.

Each transaction has an allocated (fixed) space of 128 bytes. This space allows any data to pass between two accounts in a totally anonymous way, because the information is encrypted from end to end and is not detectable/differentiable since this fixed space is in each transaction.

Unlike CryptoNote, when there is an incoming transaction, the account receiving the transaction has the ability to see the sender’s address. This feature allows Services to respond to a message without a third party.

BlockDAG

First of all, a block is composed of two important values:

  • Block Height: current height not unique to the format of a traditional blockchain
  • Topo Height: unique topological height with respect to the DAG

One block can have up to 3 parent blocks, these are called “Tips” and store in the block N the hash of each previous block (N-1).

No chain split is possible thanks to this feature, because both chains will eventually come back as one.

The main chain is not determined by which one is the longest, but which one is the heaviest in terms of work, based on the “cumulative difficulty”.

Transaction

A transaction is a transfer of value (or information) between two parties in a secure, decentralized manner so as not to have to rely on the trust of the other party.

Roughly speaking, it is composed of a ring size, a SCID (representing the type of token transfered), the type of transaction, the fees paid by the sender, and an encrypted amount that will be transferred.

At the technical level, it is composed of a “Proof” part and a “Statement” part. This separation is useful for reducing the size of the blockchain.

A transaction can have several outputs: in the same transaction you can transfer X DERO to Alice and Y DERO to Bob without either of them knowing about the other.

Depending on the type of transaction, there may be more information. For a transaction to a smart contract for example, you need to add specific parameters for an entry point.

Each transaction has a unique private key to unlock the information. This is useful when you want to prove something to someone who was not in the transaction. This private key is stored locally on your wallet.

If your wallet is corrupted, (that someone managed to get your seed for example), he will not be able to see your outgoing transactions, avoiding any additional data leakage

Ring Size

The ring size allows to hide the sender and the receiver by randomly adding participants registered on the blockchain and to mix the order of all these accounts in the transaction.

Each account that is included in a transaction has its balance updated with homomorphic encryption, allowing to really hide the transfer of funds.

If you set a Ringsize of 8. your transaction will contain your address (sender), the address of the person you want to pay (receiver), and 6 valid accounts (registered) selected from the blockchain. These 6 accounts are chosen randomly by default by your wallet from the list of registered accounts.

Since we use encrypted data, no one knows that you are only adding a 0 to the balance of each account you selected to hide your address and the receiver’s address.

Synchronization of a node

DERO has developed a unique feature to reduce the blockchain.

Pruning allows to keep only the recent and necessary data, allowing to have a huge scalability while remaining secure with merke proofs. Thus, any user running their own node can control and limit the size of the blockchain on disk without any repercussions.

When you also want to launch a node, it will be directly synchronized in a few seconds thanks to the downloaded bootstrap that gathers the most recent and important data, allowing to be directly in harmony with the rest of the network.

Wallet synchronization

With the help of the account model, it is no longer necessary to synchronize and scan the entire blockchain to only calculate our final balance.

Synchronizing the wallet with a node is instantaneous and allows you to see its updated balance directly.

However, if you want to see your transactions, in this case you will have to synchronize the blockchain.

For graphical comparisons, please go here to see Azylem’s great work.

--

--