Astrocore aims to become an alternative implementation of the stellar-core, the core component of the Stellar network. This project is still in the very early development stage
rust >= 1.33.0 (nightly)
and sqlite3
- clone this repo
- move
.env.example
to.env
and setDATABASE_URL
variable there - install
diesel
and run migrations:cargo install diesel_cli --no-default-features --features sqlite diesel migration run
RUST_LOG="astrocore=info" RUSTFLAGS=-Awarnings cargo run
Stellar itself is a blockchain, decentralized by nature. Having more than one core node implementation is right for decentralization. Also, reimplementing can help to discover possible bugs in the current codebase.
Reference implementation doesn't have any specification of how it works, so we are going to use the reverse engineering approach and kickstart specification writing process(check out Github wiki). Having one facilitates the creation of other implementations tremendously. We put it in the .
The Rust language seems perfect for this task because it focuses heavily on performance and reliability. Moreover, Rust code is developer-friendly, and this can help to increase the number of potential contributors.
For starters, we took up networking part. At the moment Astrocore is able to connect to the existing Stellar network, discover and authenticate peers, and listen to the incoming messages, doing nothing in response
Stellar-core
consists of a few major components, according to the docs:
- SCP
- Herder
- Overlay
- Ledger
- History
- BucketList
- Transactions
We are going to reimplement them and their functionality consecutively. We started from the "Overlay" component, and you can find more in the "Current stage" section. We don't have reliable estimations on the time of delivery of any of these components, because Astrocore is still a very experimental project.