Rocket Pool — Your new Casper friendly Ethereum POS pool in alpha.
Around the end of 2013, like many others at the time, I was captivated by the juggernaut that had become Bitcoin as it busted onto the mainstream media radar with the seemingly unstoppable price increase that not unsurprisingly, busted shortly after and as such, led to a bear market for the next few years in Bitcoin.
But my interest in a new found passion for Cryptocurrency didn’t waver and by early 2014, I had built my first mining rig. I quickly mined the most very wow Cryptocurrency at the time, none other than Dogecoin which was becoming a runaway success among a boom of Bitcoin spin offs.
After mining for several months with relative success, it quickly became apparent due to the immense power usage required for POW, it was not to be a long term strategy for me as the power rates in my area were not cheap and my profitability became smaller by the day. Despite my passion for it, I decided to dismantle the rig, keep two of the cards for an awesome gaming rig and sold the rest. Once again, my interest in Cryptocurrency didn’t waiver and I spent the next few years reading daily on just about everything Bitcoin related, new breakthroughs, adoption and the rest.
With over 15 years lead web development experience and a CS background, I had often tinkered with the idea of doing some Bitcoin development so I could combine my passion for dev and crypto. Due to several factors, Bitcoin politics being one of them, I never pursued this idea and kept just doing my regular lead dev 9–5 gig which I was quite happy with.
That itch though has never gone away and in early 2016 I was quickly mesmerised with the technology behind a relative new comer, Ethereum. While I had heard of Ethereum on the grapevine for a while, I’d never seriously looked into it until that time and from that point on I found myself hooked on the idea of smart contracts on a blockchain.
Fast forward to late 2016 and that itch was continuing to dig at me, so I decided to start getting a handle on Solidity, the primary Ethereum smart contract language. After making a few small apps, I was pretty impressed with Solidity and although it’s still a new language and still quite primitive in some areas, it’s pretty solid (great work solidity devs).
I knew I needed a project that might test my skills and allow me to get a much deeper understanding of Ethereum and solidity. Then it occurred to me, why not combine my old passion for mining with my new passion for smart contracts and make a new generation of mining pools with the main focus on being Casper compatible. That shouldn’t be too hard… right?
Rocket Pool — The new generation of pools
Rocket Pool is the result of that itch finally being scratched. I would classify it as a next generation decentralised Ethereum proof of stake (POS) pool currently in Alpha and built to be compatible with Casper.
Unlike traditional centralised POW pools, Rocket Pool utilises the power of smart contracts to create a self regulating decentralised network of smart nodes that allows users with any amount of Ether to earn interest on their deposit and help secure the Ethereum network at the same time.
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.
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.
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.
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.
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 :)