Skip to content
Stellar-core implementation in Rust (WIP)
Rust TSQL Ruby
Branch: master
Clone or download
Arkweid Merge pull request #27 from astroband/fix/unexpected-io
Wrap io and parse errors in Peer::receive_message
Latest commit 15f9ab6 Aug 19, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config move actors May 13, 2019
migrations fix peers schema Jul 19, 2019
ruby_xdr adapt new xdr struct Apr 1, 2019
src Wrap io and parse errors in Peer::receive_message Aug 19, 2019
tests fix peers schema Jul 19, 2019
.env.example Make OverlayActor and PeerActor May 8, 2019
.gitignore Make OverlayActor and PeerActor May 8, 2019
CONTRIBUTING.md Remove sodiumoxide (really?!) Jul 29, 2019
Cargo.lock Remove sodiumoxide (really?!) Jul 29, 2019
Cargo.toml Remove sodiumoxide (really?!) Jul 29, 2019
README.md Add title to the README Aug 12, 2019
config.toml
diesel.toml

README.md

Astrocore

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

Sponsored by Evil Martians

Quickstart

Requirements

rust >= 1.33.0 (nightly) and sqlite3

Building

  1. clone this repo
  2. move .env.example to .env and set DATABASE_URL variable there
  3. install diesel and run migrations:
    cargo install diesel_cli --no-default-features --features sqlite
    diesel migration run

Running

RUST_LOG="astrocore=info" RUSTFLAGS=-Awarnings cargo run

Why another implementation?

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 .

Why Rust?

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.

Roadmap

Current stage

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

Next Steps

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.

Astrocore team

@Arkweid
@nebolsin
@charlie-wasp

You can’t perform that action at this time.