Friday, October 5, 2018

Purple -- Introduction

What is Purple?
Purple is an incredibly fast, multi-asset protocol that can be programmed using Turing Complete programming languages. It is been built from scratch without any bias towards existing or emerging technologies and has started out as both a curiosity and frustration with existing blockchain technology. It's mission is to achieve the following:

* Provide a completely decentralized multi-asset ecosystem.
* Achieve the highest scalability level possible on a public blockchain protocol.
* Be easy to use and to understand for both technical and non-technical persons.

How fast is Purple?
With the current architecture, Purple can process more than a million transactions per second assuming there are more than a hundred active miners. This is made possible by dividing the ledger into shards each of which has it's own consensus algorithm and set of participating nodes. With the current unoptimized code, the consensus algorithm can process ~13000 transactions per second. What sharding does is enable the parallel processing of transactions. In Purple there will be 256 such shards, each represented by a single byte. This means that maximum throughput is equal to tps x num_of_shards which is 13000 x 256 = 3.4 million transactions per second. Future optimizations should increase this number even further.

What consensus algorithm does Purple use?
Purple uses a stateful asynchronous algorithm for achieving consensus on which transactions are to be written to the ledger. Being stateful means that there are a number of designated nodes that are actively participating in the consensus algorithm in the same way as in Proof of Stake. However, that is it's only similarity since the algorithm employed by the participants relies on tracking the causality of network events that are broadcasted by the participants and then assembling a partial causal graph that is then reduced to a total ordering of events.

The rules for assembling this causal graph make it so that all participating nodes deterministically choose the same events that are to be applied to the state, as long as up to a third of participants are either byzantine (malicious) or crashed. In order to prevent this, nodes wanting to participate in the consensus algorithm must solve a computational puzzle of deterministic complexity and to provide a valid Proof of Work. This entry phase represents the synchronous part of the system.

It can be said then that Purple is a semi-synchronous system with the synchronous part serving as an adjustable bottleneck for the asynchronous part.

Mining
From a miner's standpoint, it can be said that mining on the Purple network feels quite similar to mining on the Bitcoin or Ethereum networks. But this is only on the surface level, the mining process in Purple is actually completely different from any other protocol. In Bitcoin, miners approve transactions by providing a valid Proof of Work and by choosing a number of pending transactions to be written in the ledger. While this works, it also means that the main bottleneck is the Proof of Work algorithm. In Purple, miners who provide a valid Proof of Work are eligible to approve transactions in a designated period. During that period they broadcast network events that include the transactions that they wish to approve. After the period has ended they will be required to issue a leave event which transfers all of the fees of the transactions to the address chosen by the miner. If a miner crashes or behaves maliciously during it's designated period, it will be removed by the other participants and will lose all of it's collected fees.

Multi-asset support
In Purple, multiple currencies/assets are handled at the protocol level. This increases the richness of the economic properties of the protocol. For example, transaction and smart contract fees can be paid in any listed currency if the miners accept it. This also means that a decentralized exchange between all listed currencies can exist at the protocol layer, simplifying the life of users immensely. At the same time, if say the main token of the protocol goes somehow loses it's value or is compromised in some way, the protocol can still function and support the other listed currencies.

Supported programming languages
The PurpleVM supports the execution of webassembly bytecode which means that any programming language that can compile to WASM can be used to write smart contracts and decentralized applications. The languages that are supported include:

* C/C++
* C#
* Golang
* Java
* Rust
* Haskell
* Python
* Typescript
* Lua
* Kotlin
* Scheme

What is the story behind Purple?
It started out as a mere curiosity in the technology powering Bitcoin and Ethereum and has since evolved into a thing of it's own. The main motivation behind building such a platform was the lack of tooling and ease of use for developing decentralized applications which along with the issue of scalability are the main impediments of mass-adoption. To this day there is no platform that offers all required properties which are: complete decentralization, scalability and ease of use. Most provide only one or two of the three. Purple strives to achieve all of the three.

What is the current status of the project?
Purple is in heavy development but will soon enter the testnet phase.

When will the mainnet be launched?
We plan to launch Purple on the 1st of February 2019.

Will there be a crowdsale?
Yes, we wish to host a crowdsale in late 2018. More info about this is coming soon.

Links
* Whitepaper - https://purpleprotocol.org/whitepaper/
* Featurepaper - https://purpleprotocol.org/feature_paper/
* Website - https://purpleprotocol.org/
* Github - https://github.com/purpleprotocol
* Twitter - https://twitter.com/purple_protocol
* Facebook - https://www.facebook.com/purpleprotocol/
* Medium - https://medium.com/purple-protocol
* Discord - https://discord.gg/C5CGZsM
* Telegram - https://t.me/purple_protocol


No comments:

Post a Comment