## Inspiration

Professor Faust as the head of our research group at TU Darmstadt is our main inspiration because he came up with the initial academic paper for proof of space. Further, last year's implementation of the Aura PoA algorithm and the Goerli testnet should be mentioned here.

## What it does

We introduce an improved version of a different consensus algorithm called *Laika* based on proof of capacity (PoC) on the Ethereum Blockchain. It uses disk space instead of cpu/gpu cycles to mine blocks. This reduces energy consumption 14000 fold which translates to 7€ in energy cost savings when calculating with the average German price of 0,28€ for 1 KwH.

Laika can be run on traditional hard drives. Fast and expensive SSDs do not give the user a major advantage, creating a low entry point for miners and driving decentralization. Our partial motivation is the fact that most users have free disk space or old hard drives laying around making this a green solution with no additional cost the user.
Further, CPU usage remains very low while mining, enabling the use of low power devices such as a Raspberry Pi with an attached external hard drive to be used for mining.

## How we built it

Step 1: The idea Step 2: Formalizing the algorithm Step 3: Forking Geth Step 4: Laika implementation, Genesis Block, Plotting, etc. Step 5: Launching the Laika testnet

PoC consists of four main steps: Plotting: The proof of capacity follows a similar approach to Burstcoin: during the preparation phase, a function is evaluated that generates a chunk of solutions at once, which are then written to the hard drive, grouped by index. This is repeated until the capacity to be proven is filled with solutions, the process of which is also referred to as “plotting”.

Challenge: When proving capacity, an index is randomly selected, and the group of solutions with that index is then scanned for the fittest solution. From the fitness of the fittest solution, the amount of solutions scanned can be extrapolated statistically. This extrapolation is then used as the proven capacity.

Verification: To verify a solution, the whole solution chunk has to be generated, and it has to be checked whether the solution is actually part of the chunk. This means, a single evaluation of the function is needed.

Justification Because only a single solution group is needed to generate a proof, only a small part of the hard drive needs to be accessed, which makes the proof usable even for larger capacities. Because reading a group precalculated solutions is much faster than generating new chunks of solutions on the fly, it is expensive to achieve the same speeds of solution generation as the speed of reading a packed group of solutions. As long as it is impractical to not plot the capacity one wants to prove, the proof is reliable.

## Challenges we ran into

Complexity of the project. PoC is conceptually different than PoW making it non-trivial to implement in Geth. The architecture of Geth is fundamentally different than what were expecting hence why we failed to get a running version of the consensus algorithm. Block generation is stuck after 1-2 blocks are generated.

## Accomplishments that we're proud of

The algorithm works! So does generating plot data, proof generation and verification. Cool crypto stuff :)

## What we learned

Choosing a very ambitious project and failing to get a running version in the end is definitely a learning.

## What's next for Laika Testnet

We believe that Laika can solve the energy inefficiency of Blockchains while maintaining a decentralized network and more importantly a fair distribution of mining rewards making it a better alternative to PoS. Having the actual testnet running would be a major step.

## Built With

- go-ethereum
- golang

Log inorsign up for Devpostto join the conversation.