What even are nodes?
In order to define nodes, its helpful to consider the Bitcoin blockchain and its nodes. Any computer that connects to the Bitcoin network is called a node. Nodes that fully verify all of the rules of Bitcoin are called full nodes. Full nodes download every block and transaction and check them against Bitcoin’s consensus rules, in marked contrast to light nodes that only download the block headers.
If a transaction or block violates the consensus rules, then it is immediately rejected. This remains true even if every other node on the network thinks that it is valid. Full nodes do what’s right no matter what. Not incidentally, miners actually have fairly limited power over full nodes. While they can only reorder or remove transactions, they must spend considerable computing power to do so. And while a powerful miner may be able to execute a serious attack on Bitcoin, the damage is limited as the network’s full nodes retain only a limited reliance on miners.
Nodes that have different consensus rules are actually using two different networks/currencies. Changing any of the consensus rules requires a hard fork, which can best be thought of as creating a new currency that investors are encouraged to move to. Note that consensus rules are different from policy rules, which specify how a node or miner prioritizes procedures. Policy rules can be changed freely and different nodes can have different policy rules. SInce all full nodes must use exactly the same consensus rules in order to remain compatible with each other (bugs and all), creating a full node from scratch is extremely difficult and dangerous.
At minimum, a full node must download every transaction that has ever taken place as well as all new transactions and block headers. Additionally, full nodes must store information about every unspent transaction output until it is spent. By default, full nodes are deemed inefficient since they download each new transaction at least twice and permanently store the entire blockchain when doing so (more than 165 GB as of 20180214). This is true even when only the unspent transaction outputs (<2 GB) are required.
Nodes and mining
So, what’s the difference between a node and a miner? Well, a full node contains a complete copy of the blockchain and is able to verify all transactions since the beginning.
In contrast, a miner only creates blocks in the blockchain which the nodes keep. Basically, the miner works on transactions by coming up with the best combination (hash) to store that information. Although miners may spend about 10 minutes working on a problem, nodes permanently store that result within the database and verify it with others. Miners don’t need to know about prior blocks (except for the last prior one) with very few exceptions.
As you can see, running a full node is in fact different from mining. The nodes validate the transactions before they get to the miners. Then the miners perform the actual calculations. The benefit of a full node is that it strengthens the network by making it much harder for invalid blocks to get through byway of malicious nodes. After the calculation is done, the block is essentially signed with a Proof-of-Work and added to the blockchain.
How are STATIC nodes different?
STATIC (Services Transactions and Trusted-in-Control) nodes form the backbone of the XTRABYTES network. They perform a crucial role in the consensus, security, and governance of the platform. It’s the STATIC nodes that are tasked with verifying transaction blocks, much the same as full nodes do for the Bitcoin network. They store the entire blockchain and ensure new blocks follow the consensus rules. However, the rules to do so are somewhat different.
For instance, XTRABYTES uses a new consensus algorithm called Proof-of-Signature rather than the more common Proof of Work consensus. Instead of transactions being passed on to miners, transactions blocks are validated by the nodes that are online at the time these transactions occur. Nodes that are offline double check these blocks when they come online again, though they are not required to sign the transactions themselves. Thus, even one online STATIC node could theoretically run the whole network. In order for this to work, STATIC nodes not only need to be known and trusted but communicate easily and effectively.
Consequently, the XTRABYTES network has been designed with great care. When confirming transactions, the XTRABYTES network uses an upper layer of the network we can call the Virtual Chord Network. Each STATIC node is connected to one “virtual chord node”, which are only virtual nodes rather than “real” (hardware) nodes. This is why it is not important how many STATIC nodes exist or how many STATIC nodes are online or offline at any given time, as the number of overview virtual network nodes remains constant.
In the case of XTRABYTES, this virtual chord network is known as VITALS (Virtual Information Transmissions Aligning STATICS). VITALS serves as the pathway between nodes, a proprietary network that provides VPN-like functionality to the STATIC nodes. More specifically, VITALS interconnects online STATIC nodes using a private virtual network, thus ensuring interference-free direct paths between these nodes. Not incidentally, the VITALS network contains fixed virtual (chord) nodes that correspond to one or more of the STATIC nodes. Additionally, STATIC nodes use the PULSE (Ping Unified Ledger Synchronization Equalizer) network to communicate with each other directly. Its PULSE that actually alerts the STATIC nodes when a transaction block must be validated.
Block communication is controlled entirely through the communication (using PULSE) between the VITALS and the system of physical STATIC nodes. When a transaction is created, it is signaled to and verified by all the STATIC nodes in the network. Once the transaction has been completely validated (every STATIC has signed the transaction), the VITALS network proceeds to create the new block and achieve 100% signature validation of that new block. Using this method of block creation, XTRABYTES avoids transaction and block conflicts while allowing every peer knowledge of who will create the new block and who will distribute the block first.
So STATIC nodes are full nodes that also take on the role of miners. However, rather than being validated through calculations (Proof-of-Work), these blocks are validated once they are proven to contain all the signatures from all the STATIC nodes. As you can see, this is far different than the 1 signature required by PoW and agreed upon from an untrusted/unknown source.
Since STATIC nodes need to be trusted and online as much as possible, running a STATIC node is basically a responsibility to the XTRABYTES network. Consequently, these nodes must be properly incentivized and have some sort of a barrier to entry (a dedication fee if you will).
So to incentivize running nodes and signing transactions, STATIC owners will receive a portion of the transaction fees. In addition, they may receive service fees for any current or future modules and/or Dapps they choose to host on their STATIC node (modules developed so far are X-CHAT, X-CHANGE and X-VAULT). STATIC owners will also be able to vote on issues regarding the XTRABYTES network (such as node halving or coupling).
In order to host a STATIC node, an investor must make a deposit of XBY or 2/3 XBY + 1/3 XFUEL. Nodes with partial XFUEL deposits will receive a greater portion of the transaction and service fees and will have greater voting weight than those without. Once mainnet comes online, STATIC node registration will begin. Once that occurs, investors will have a chance to register a STATIC node on the XBY network. There will be three levels of nodes available, with the levels corresponding to the amount of service and transaction fees received as a reward. The node can be broken at any time and the deposit thus refunded.
Required deposits for STATIC nodes:
Level 1 is: 500,000 XBY or 330,000 XBY + 170,000 XFUEL
Level 2 is: 250,000 XBY or 170,000 XBY + 80,000 XFUEL
Level 3 is: 125,000 XBY or 85,000 XBY + 40,000 XFUEL
There are a total of 512 L1, 1024 L2 and 2048 L3 STATIC nodes at present, adding up to a total of 3584 STATIC nodes. The nodes can be halved or coupled at any time in the future if the node owners vote for it.