As we march towards the Moonlight token sale, we thought it would be a good idea to introduce the community to some of the components that will help build out the Moonlight (and Neo) ecosystem. The first one we’re going to be introducing is Asteroid.

What is Asteroid?

Asteroid is a distributed back-end for the Moonlight platform. As many of you are aware, our system is designed as a hybrid application (partially residing on-chain and partially off-chain). This allows us to do a number a things:

  • Maintain regulatory compliance for sensitive information which cannot reside on an immutable ledger
  • Perform advanced operations which aren’t currently supported in the Neo-VM
  • Make use of storage and compute requirements for the analytical methods required by our platform that may not be computationally feasible on a client. (Yes…we are an analytics company)

For the near term (at least until token sale is over), we will maintain Asteroid ‘Core’ as closed source for security reasons. The goal is to make this component open source in the very near future.

We will, however, be making another component of Asteroid open source today.

Introducing Asteroid Load Balancer!

One of the metrics used to track enterprise platforms is ‘availability’. For those of you who aren’t familiar with this term, it is a measure of the functional uptime of a system. You will often hear the term ‘nines’ to indicate the percentage uptime in high availability systems.

In the Neo ecosystem, we have a lot of public nodes for applications to take advantage of as seen here, but selection of these nodes to identify an optimal interface (fully synced, responsive, and performant) is currently delegated to the light application, requiring it to perform ‘node hopping’ to continually maintain a connection to a quality full node.

Asteroid Load Balancer attempts to resolve this need by introducing a reverse proxy solution into the ecosystem. By deploying this component, light applications are able to target a single server for the Neo Blockchain with high confidence that it will resolve to a fully synced, performant node.

The Load Balancer will register and maintain information about a number of different nodes and will handle the ‘node hopping’ functionality on its own, providing a solution which simplifies light applications while maintaining the uptime of the node ecosystem.

For reference, the Asteroid Load Balancer has been running as a City of Zion seed node for the past two months.

The platform is very young, but will eventually grow to include a number of other features like cluster monitoring, node security, and multiple selection criteria.

You can expect a number of tasks in the Moonlight platform to help build out this valuable component when we go live. For now, we welcome community use and enhancements via pull request to the repository below:

A load balancer for neo full nodes. Contribute to Moonlight-io/asteroid-load-balancer development by creating an account on GitHub.