Um… Casper isn’t finished yet

You’re absolutely right! While Casper is still a while away from implementation, I spent a fair amount of time analysing the Mauve paper and code. This allowed me to build a dummy Casper contract that simulates the inputs/outputs of Casper (none of the real internal workings) so that Rocket Pool can work as expected (at this stage). We will of course keep a very close eye on its development as work continues on getting Rocket Pool to the next release stage.

Right! So how does it work?

Rocket Pool is composed of 3 primary elements. Smart contracts, smart nodes and minipools. All three integrate with each other to provide a network that can automatically scale and load balance itself across multiple cloud hosting providers in any region of the world.

When a user sends their Ether deposit to the main Rocket Pool smart contract, if it does not meet the minimum requirement for staking with Casper (currently 32 Ether), it will create a new minipool contract and assign the user + their deposit to it. Once enough users are assigned to this minipool and their deposit total exceeds 32 Ether (or any min limit set by Rocket Pool), their minipool is then assigned to a smart node in the network with the least amount of server load (future versions will also assign to alternating geographic regions for redundancy and decentralisation), and their deposit is sent to Casper with their assigned nodes details. The user is also able to join minipools of a specific staking time, this allows them to have their deposit earning interest for the minimum allowed time by Casper (currently 2 months), 6 months, 9 months or a year.

When a minipools staking time is completed, a smart node will automatically request the withdrawal process to start with Casper. This withdrawal process can take some time and when it is finally ready to actually withdraw the deposit + rewards, a smart node will trigger this process for the minipool again. The minipool users are then allowed to withdraw their deposit + rewards from Rocket Pool.

To accommodate businesses such as wallet providers or exchanges, Rocket Pool also has a 3rd party partner contract API that allows these entities to offer staking services for their users while using the Rocket Pool infrastructure in the background. This free’s them up to focus on their business while providing their users the opportunity to earn interest on deposits for a fixed term.

Smart Nodes

By now you’re probably wondering what a smart node is. In the Rocket Pool network, a smart node can listen to all goings on in the network, get issued commands and contact other smart nodes directly using special scripts that run as services on each node. Currently each node must report in with the main contract every 15 mins to report on its current server load, launch any minipools that are ready and more. Smart nodes are also capable of disabling other smart nodes that are misbehaving, this can come in particularly handy if a node is suffering a DDOS attack, the server has caught fire or anything else that might allow Casper to penalise the node for not doing its job. In that case, the smart node will disable the misbehaving node to prevent any new users being assigned to it and (this depends on Casper atm) move any minipools currently staking on it to another node.

Future versions of Rocket Pool will give smart nodes even more brains. Each smart node will be able to monitor the status of the network and can even attempt to remote reboot another smart node regardless of the cloud provider it’s hosted on. Smart nodes will also be able to scale the network by automatically launching new smart nodes themselves (hello skynet) if they detect the network is running near capacity.

The Future

Rocket Pool is undergoing constant work and new features are always being added. While Rocket Pool is currently in Alpha, it is fully interactive in its current state and can be run with a local testrpc instance and truffle. I’d love to hear some feedback or anything else users would like to have in such a network.

The Code

We have working code! You can see all the contracts on my GitHub account at the moment. The smart node service scripts are currently working but still heavily under development and will be available there in the near future, the contracts run just fine without them though if you wish to run Rocket Pool locally.

Contact Us

If you’d like to have a chat, feel free to view the Rocket Pool website at www.rocketpool.net to contact me there, join us in the slack channel for a chat or if you just want to leave a few quick thoughts, let us know below. All feedback is welcome! Thank you for taking the time to read this far :)