Have you ever wondered why people talk about blockchains being decentralized? Check out our explainer on nodes and the basics of running one yourself.
Nodes are an integral part of the blockchain infrastructure. In a way, they are the blockchain infrastructure since they run the software that allows the whole thing to work, reach consensus on which information is more reliable, and sometimes store the history of all transactions.
Broadly, the term nodes refers to computers that coordinate to keep a network of information available at all times. For instance, in the Bitcoin network, nodes validate transactions and relay this data to other nodes that repeat the process until the entire network is aware of the same information. However, blockchains possess different architectures; thus, nodes can work with varying consensus mechanisms and storage parameters.
Ultimately, the main goal behind decentralization and node redundancy in blockchains is that no computer becomes essential by itself, and the network becomes resilient to external events or attacks. Several others would remain functional for any machine that stopped working at any time.
There are many ways in which nodes can work together and agree on the latest and more veritable records. For instance, blockchains within the Cosmos ecosystem use the Tendermint consensus algorithms, which allow around 100 computers to coordinate and maintain a decentralized blockchain efficiently. Maya Protocol falls in this category.
Another feature of the Tendermint engine is that it can have two types of nodes.
They are usually easier to install and maintain since they run on lighter software and don't have to post (i.e., risk) a cryptocurrency bond.
The bonding system is in place to align the incentives of all the node operators - especially since anybody can freely and anonymously become one – and to prevent nodes from acting undesirably, which can get their stake slashed away. This bonding is one of many security features and economically inhibits attacks on the network by malicious actors.
Running a Maya node has two important benefits for the operator. First, they can contribute directly to the network's decentralization and resiliency. In addition, the node generates revenue in compensation for the hard work involved in running it.
As a unique feature in Maya, all of the bonds posted by the nodes in the network also yield additional revenue, which is possible because the capital is used to provide liquidity inside the protocol's pools. See here for more details.
The job also comes with risks, like the possibility of a bond being slashed if the node behaves erratically. Nevertheless, running a node is mostly a matter of finding the right economics.
Anyone can run a Maya node - our goal is to have as many different operators as possible. Nevertheless, the task can be highly technical and expensive - especially for validator nodes.
There is no best way of setting up a node, its configuration depends entirely on personal choices. Some people like to their setups locally, others might want to host their infrastructure with a cloud provider or they use bare metal servers.
Validator Nodes, on the other side, require a more sophisticated setup. Because of the particular design of the Maya blockchain - inherited from THORChain's - all Validator Nodes in the network are required to post a $CACAO bond and need to run one Full Node of all of the supported external assets' blockchains.
This means that to run a Maya Validator Node, you also need a BTC node, an Ethereum node, a THORChain node, etc. Plus, all the necessary stakes and tokens are demanded by these nodes.
All these required capital and costs can get pretty high; the infrastructure to run a Validator Maya could cost around USD 5,000 per month with a cloud provider. Operators also need to consider location-dependent costs, which include recurrent monthly electricity bills and the human time required to monitor and maintain the infrastructure.
If you are serious about mounting one of our nodes, the next step would be installing and running the appropriate repositories, which can be found in our official documentation. As we said, running a node is a very particularized job that can vary significantly between operators, depending on their own needs and likings. We would also be happy to help anyone interested in this task via our Discord Server.