DEV Community

Alex Dovzhanyn
Alex Dovzhanyn

Posted on • Updated on

Elixium: A Decentralized App Network Built for Developers

I just wanted to bring some attention to a project I've been working hard on for the past few months, and hopefully bring on board some new contributors who want to get their hands dirty. It's called Elixium. Elixium is a decentralized application network built for developers; its a Proof of Work blockchain that allows engineers to write programs that run on the chain.

Decentralized applications aren't a new idea -- other networks such as Ethereum or EOS offer smart contracting functionality that doubles as a platform for decentralized applications, but they have their own limitations which we'll talk about in a second. The way Elixium differs from Ethereum/EOS/Lisk is that we're aiming to be akin to AWS, except decentralized, along with offering privacy out of the box.

What we're aiming to solve

One of the biggest issues in the blockchain ecosystem right now is the high barrier to entry for engineers who want to use the technology, whether its to create a decentralized application or just to interface with the blockchain. This can be attributed to many different things, but the most pressing reason is that language support in the ecosystem is very poor. In order for an engineer to create a decentralized application or smart contract, they need to either learn a language that is specifically created for smart contracting or use a predetermined language that they might not already know. The fact of the matter is that learning a new language can take days or even weeks, and engineers that I've spoken to are very excited about blockchain but don't want to invest weeks of their time learning a new toolset for a system that might not exist in a few years (e.g. learning Solidity to create Ethereum dApps), since the ecosystem is so rapidly evolving.

Elixium mitigates this barrier to entry by employing language agnostic smart contracts -- decentralized applications that can be written in potentially any language. Engineers will no longer be tied down to learning a new language like Solidity or migrating to a language like Javascript, they'll be able to use their existing toolset and create decentralized applications with any language that compiles to WebAssembly. They'll be able to use their C, C++, Python, Go, and any other language they're already farmiliar with -- all they have to do is learn a new API to interact with the chain.

Elixium is built with a technology that focuses on fault tolerance and scalability. This technology is a programming language called Elixir, which is built using a language called Erlang.

But why does this matter?

Erlang powers the entire telecom industry. This is the language that supports the infrastructure of our mobile phone networks. It was built by a company called Ericcson in 1986 for the purposes of being distributed, fault tolerant, and to have support for uninterruptable applications. Erlang was reported to have been used in production systems with an uptime of 9 nines, which is a maximum downtime of 32 milliseconds per year. This is a great fit for blockchain, as it is a system that needs to be extremely fault tolerant and available.

Concurrency is at the core of the language - processes are cheap and you can run hundreds of thousands to even millions of processes easily. This allows for huge performance improvements and parallelization. Erlang has built in error containment and fault tolerance. It has a really cool feature called a Supervisor, which automatically restarts failed processes. Erlang also features hot code swapping functionality -- allowing the software to be updated without interrupting the program. This makes writing distributed applications easy.

Because of Erlang's large support for concurrency, Elixium is able to mitigate pain points in blockchain by massively parallelizing things like transaction processing. Whenever a new transaction comes in, it's cheap and easy to spin up a separate process to validate and relay that transaction.

Using hot code swapping, Elixium reduces friction from nodes whenever a new version is released. Rather than a maintainer of a node needing to take down that node, download a patch, run the update, and then start the node back up, maintainers can choose to have their nodes updated on the fly. This reduces the chances of forks happening on the chain whenever a new patch is released.

As a result of the fault tolerance built into Erlang, and by extension Elixir, Elixium is able to have self-healing nodes. If a node encounters an error during runtime, rather than crashing and waiting for the maintainer of the node to notice and restart the node, it is able to restart itself and not lose context of its current operations, which adds to the total uptime and security of the overall network.

Anonymous transactions

We're going to be the first (that I'm aware of) blockchain that strictly enforces zkSNARKS technology in it's core. Other networks default to insecure / non-anonymous transactions and some allow nodes to opt into secure transactions. Our approach is to only allow anonymous transactions via zero knowledge proofs -- it's part of our consensus mechanism. We're still researching this, but we're looking at using Hyrax, a zero knowledge protocol that doesn't need a trusted setup.

A few other goodies

  • Smooth token emission similar to the CryptoNote token emission algorithm
  • Memory-hardened PoW algorithm that discourages the usage of FPGA/ASICs
  • Journalized sharding (more info here)
  • TCP-layer zero knowledge peer authentication for secure communication

Where we are now

Right now, we're very early in our development phase, so it's a great time to get involved if you want to sway the direction of the project. We're completely open source and community driven, and we aim to continue being that way -- decentralized even within the development team. We don't yet have a whitepaper; a lot of project launch with nothing but a whitepaper, we wanted to have an MVP done before writing a whitepaper to allow the technology to speak for itself, and have the whitepaper be supplemental to the actual system, not vice-versa.

The website isn't fully done, but I'll link it here as it has some useful links.

  • GitHub
  • Website (P.S. as soon as you contribute to the core, your name + photo is added to the team section of the website)
  • Telegram Group (This is where pretty much all of the development discussion is)
  • Twitter
  • Reddit

Top comments (6)

Collapse
 
layzee profile image
Lars Gyrup Brink Nielsen

This is unreal! Are you looking to support WASI as well?

Collapse
 
alexdovzhanyn profile image
Alex Dovzhanyn

We haven't looked into it yet! We likely will if the difference between the execution environments isn't too drastic

Collapse
 
layzee profile image
Lars Gyrup Brink Nielsen

Keep an eye on it 😃

Even your WASM VM for Elixir is a OSS contribution with a lot of potential, enabling language interoperability from Elxir within the same OS process.

Collapse
 
alexdovzhanyn profile image
Alex Dovzhanyn • Edited

Sorry, this should have said "Erlang was reported to have been used in production systems with an uptime percentage of 99.9999999%". Updated the post. Thanks for catching this!