This repository contains the reference implementation of Alephium, a sharded blockchain that makes programmable money scalable and secure. For more information, please visit the wiki.
The protocol's innovations extend battle-tested ideas from Bitcoin and Ethereum:
- BlockFlow algorithm based on UTXO model enables sharding and scalability for today (code + algorithm paper)
- The first sharding algorithm that supports
single-step cross-shard transactions
, offering the same user experience as single chain - Simple and elegant
PoW based sharding
, does not rely on beacon chain
- The first sharding algorithm that supports
Stateful UTXO model
combines the advantages of both eUTXO model and account model (see code, wiki to come)- Tokens are first-class citizens and UTXO-based, which are
owned by users
directly instead of contracts - Offer the same expressiveness as
account model
. DApps can be easily built on top of it with better security - Support
multiple participants
in a single smart contract transaction. Multiple calls can be packed into a single transaction too.
- Tokens are first-class citizens and UTXO-based, which are
- Novel VM design resolves many critical challenges of dApp platforms (see code, wiki to come)
- Less IO intensive
- Flash loan is not available by design
- Eliminate many attack vectors of EVM, including unlimited authorization, double dip issue, reentrancy attack, etc
- UTXO style
fine-grained execution model
reduces risk-free arbitrage
Front-running mitigation
through random execution of transactions (see code, wiki to come)- PoLW algorithm reduces the energy consumption of PoW in the long term (research paper)
- Adaptive rewards based on hashrate and timestamp are designed and implemented
- Internal mining cost through burning will be added when hashrate and energy consumption is significantly high
The following dependencies must be installed in order to run the JAR deliverable:
- java (>= 8, 11 is recommended)
You can obtain our latest single JAR distribution from the GitHub releases and start the application using the following command:
java -jar alephium-<VERSION>.jar
In order to build the project from source the following dependencies must be installed on your system:
- java (>= 8, 11 is recommended)
- SBT
Use the following command to build a single runnable JAR :
make assembly
The resulting assembly file will appear in /app/target/scala-2.13/
directory.
Use the following command to build a zip distribution including launch scripts:
make package
The resulting package file will appear in the app/target/scala-2.13/universal
directory.
Use the following command to build a docker image:
make docker
You can define user specific settings in the file $ALEPHIUM_HOME/user.conf
, where by default $ALEPHIUM_HOME
points to ~/.alephium
.
There are two kinds of tests:
- Unit tests and property based tests, which can be run with the
make test
command. - Integration tests, which can be run with the
make itest
command.