In my last articles, I talked about Cardano staking and choice of stake pool. The user experience was great. The delegation process was super smooth. It was done just by following some simple steps. There is no hold-up of token, meaning I can withdraw and use my ADA anytime I like. It is really a no-brainer way of earning passive income.
After familiarising with the whole process, I feel it’s time to go further by building my own stake pool. The advantages are twofold. Not only I can learn more about the fundamentals and concepts of Cardano, but also I can contribute to the de-centralization of the network by building block producing nodes.
In the following, I am going to share my experience of building the pool as well as giving some tips. Let’s dive in.
The 1st thing to consider is the choice of hardware and network. The hardware requirements are 3 Linux boxes — 1 for block-producing node, 1 for relay node and 1 offline machine to hold the secret keys (min. 2CPU, 4G RAM, 50G SDD) and a stable internet connection with acceptable speed (min. 10Mbps).
I had 2 options in my mind. Option 1 is to host everything at home, while Option 2 is to rent machines on the cloud. There are pros & cons for both options. At the end, I chose Option 2 due based on the following:
- Hardware and bandwidth can be upgraded or downgraded easily
- Internet connection is more stable
- Power failure shouldn’t be an issue for cloud computing as UPS is available at data centre
- Backup and recovery services are readily available
And for cloud computing, there are plenty of choices. (Digital Ocean, AWS, Google Cloud…). I had previous experience of hosting websites on Digital Ocean. There was no major server downtime as I can recall. So, I chose it as the price is cheaper compared with the others.
Please note that the cloud machines are for the block-producing node and the relay node only. For the offline machine, I just used an old PC at home.
This comes the most challenging but fun part. It’s quite a long installation and configuration process to go through before the stake pool can be up and running. I am not going through step-by-step here. Credits need to be given to this guide which I consider as a bible for Cardano stake pool setup. Other useful tutorials can be found from the reference section below.
Here are my tips on top of the guides:
- need to have 1 fixed IP for block producing node and 1 fixed IP for relay node. It’s not suggested to have floating IP even with DDNS configured
- you can practice on the testnet first before mainnet by changing the following parameters:
mainnet -> testnet-magic 1097911063
allegra-era -> mary-era
- test token (tAda) can be collected freely on faucet for testing purpose
- even everything tested ok on testnet and migrated to mainnet, there is no need to put all Ada for pledging and delegation yet. The pledging and delegation amount can be changed later when nodes get stable.
- never put the private keys on the block producing and relay nodes which are connected to the Internet. Instead, after all the deployment, we should check all the keys are removed from the production nodes and kept on the offline machine.
Bear in mind that the Cardano’s consensus algorithm (Ourborous) is based on proof of stake (POS). And from platform point of view, POS favours stability instead of computation power. So, it’s very important to ensure the platforms are up and running all the time. Imagine that if our node is selected as the next slot leader, but platform or network is down, all efforts will be wasted.
There are plenty of tools freely available for platform & network monitoring. In fact, all cloud providers offer such services for their platforms. You can check with your cloud providers for details.
If you look for a free tool, you can check out Prometheus and Grafana Dashboard. It comes with a nice dashboard tailored to show the blockchain status.
Having stake pool up and running is not the end of story. There are several actions need to be taken afterwards:
- Change Pledge, fee or margin
As mentioned above, there is no need to all in your Ada right after your nodes are installed. It would be better to observe serval days ensuring everything smooth before pledging more or adjust your fee or margin.
It’s quite simple. We just need to re-submit the stake pool registration certificate. Please refer to this.
The stake rewards are calculated based on this formula. Ada are distributed to delegators automatically. The remains are stake pool owner’s rewards which are accumulated in the stake address. It would be a good measure to check the rewards after each Epoch and then transfer them to other wallets.
- Harden your platform security
Remember the block producing node and relay nodes are exposed to the Internet and susceptible to cyber attacks. In a de-centralized world, if you lose something, you can never claim it back. (e.g. there is no such thing as central authority that can recover your lost password). It’s vital to impose strict security measures to safeguard all processions. To start with, implement those measures stated here.
The setting up of a stake pool seems intimidating at the beginning. But after some trial & error, I found it not difficult at all. Tech guys with intermediate linux and network skills should be able to do it.
I realize that it is less profitable delegating Ada to my own stake pool rather than other mature ones at the beginning. But I think it’s worthwhile as I can learn so much more about Cardano during the setup process and contribute to the de-centralization of the network.
Having the stake pool setup is only the beginning. To make it competitive and profitable requires marketing efforts to recruit new delegators. In the following months, I will focus on promoting my stake pool. I will write more on this. Please stay tuned.