Git Repository Now Public
1. Looking Back
It has been a little over 3 months since we announced the postponement of our ICO due to the performance of the Pre-Sale. In that announcement, we identified a number of reasons that contributed to the performance, of which the most worrying was the lack of verifiable progress in development. We resolved to fixing this by channeling the available resources towards development. The pre-sale period provided much needed feedback that continues to guide us.
2. Public Repository
We have taken the decision to make the official client repository public. Now, community members and other stakeholders will be able to track progress and contribute. The team is still hard at work and many things may change but it is important to us that we stay in sync with everyone.
Find the repo here:
In this section, I will briefly discuss various technical directions we are currently taking or investigating. Please note that we are actively working and some of this things may change slightly or significantly.
3.1 Peer Discovery
One of the qualities that underpins a good blockchain is the ability for nodes to form reliable and strong connections with other nodes. A network where nodes are well connected allows for quick broadcast of messages — This will translate to transactions and blocks getting processed quickly. One of the most interesting blockchains worthy of emulation is Bitcoin. Bitcoin is able to efficiently manage connections and keep nodes well connected. Our peer discovery mechanism closely follows the protocol defined by Bitcoin.
3.2 Consensus Algorithm
The consensus method determines how nodes in a decentralized network reach agreement on values — In a blockchain network, this value is a block which contains transactions. The type of consensus method chosen will go a long way to determine the security, speed and ultimately value of a network. Two of the most popular consensus schemes are Proof-of-Work and Proof-of-stake.
3.2.1 Proof-of-work
Proof of work is the most popular, well tested consensus algorithm currently used by Bitcoin, Ethereum and many other cryptocurrencies. It involves a continuous procedure where each node on the network try to find a special value that when hashed with a block’s header produces another value that is below or equal to a target. PoW has received a lot of criticism for the amount of energy consumed.
3.2.2 Proof-of-Stake
On the other hand, Proof-of-Stake is the protocol that is being championed to succeed PoW. It does away with the energy “wasting” computation performed by PoW and instead requires network participant to stake a minimum amount of money in the system in other to have a chance at creating blocks. Essentially, the more stake you put in the system, the better your chance to create a block and receive the associated rewards. PoS has been criticized for the ability to encourage a system controlled by wealth individuals or groups. Among other attacks, nothing-at-stake attack allows a PoS participant to create forks without consequence. Compared to PoW, PoS is largely untested.
3.2.3 Hybrid Consensus Algorithm
One of the most popular blockchain systems right now using a hybrid consensus system is Decred. Decred makes uses of both PoW and PoS algorithms where PoW participants create blocks and PoS participants validate the blocks. A number of PoS participants are randomly selected to verify a block mined by a PoW participant. A block is not considered valid, if it has not received votes from a majority of the selected PoS participants. Block reward is shared between PoW/PoS participants and Decred (used to finance continuous development). PoS participants are selected in a lottery. Before a PoS participant is eligible, they must purchase a ticket. Take a look at Decred’s docs to learn more.
3.3 Ellcrys Consensus
Early on, we planned to implement a DPoS style consensus method which is a more democratic style of PoS where participants (a.k.a delegates) are selected to create blocks in a turn-by-turn order. The democratic nature of this system appealed to us. Today, we are more weary and conscious of the merits of consensus protocol. What matters to us now are:
- The History — How long has it been in existence. Has it been successful or attacked in an existing system that has implement it.
- Simplicity — How difficult is it to understand, implement and test. How many moving parts are there.
- Amount of known attack surfaces — Knowing the level of possible attacks that can be potentially performed against it.
- Cost of attack — If an attack occurred, how cheap was it to the adversary. A relatively cheap attack that can be retried over and over could be devastating.
- Speed — We don’t want to create a system that does worse than existing systems. We want to build a system with high through-put that is also stable and secured enough to receive incremental improvement upgrades.
In light of this, We have decided to implement a hybrid consensus algorithm similar to Decred’s. A hybrid consensus algorithm like Decreds’ offers us:
- The ability to benefit from the security of PoW while making transaction confirmation faster through PoS verifications.
- We get the democratic qualities of DPoS as PoS miners have the ability to vote in support of a network upgrade.
- PoS miners are also able to force miners who are refusing to follow the set protocol rules to act accordingly or be penalized.
- Coin owners can decide to lock their coins for a long time and earn interest through rewards received for their participation as PoS miners.
3.3 Blockcodes
Blockcodes are arbitrary codes that will be executed by nodes on the Ellcrys network — They are also known as smart contracts. As stated in previous versions of our white paper, our goal is to support already established languages as opposed to introducing a new language.
This decision comes with a troubling challenge; Allowing the use of general purpose languages opens up the likelihood of people writing non-deterministic codes and it is impossible to prevent. Blockcodes can contain codes that will produce different outputs on different nodes, causing nodes to never come to consensus on a single block.
If we are to make this happen, we must separate execution of transactions from the creation of blocks such that transactions are executed first before they get included in a transaction pool. This has successfully been done in Hyperledger Fabric. Here is a great explanation of how Fabric executes transactions.
In Fabric, a transaction is first sent to a set of endorsers who execute, sign and return the transaction to the proposer. When the proposer receives enough signatures, she can send the transaction, along with the signatures to the rest of the network to be included in a block. Block creators can pick transactions based on an endorsement policy — For us, this will be a policy that requires all transactions to be completely deterministic — Have same output.
A decred-like consensus systems is ideal as we can extend the lottery system used to select PoS miners for block verification to support random selection of endorsers.
We are actively running tests and investigating concepts and approaches. We will write more posts like this to help communicate our direction.