Welcome to the second issue of Hash Out! Hash Out is a place which we cover all things about Function X. In our previous issue, we’ve given out a high-level overview of f(x) cross-chain architecture, practical Byzantine Fault Tolerance (pBFT), Proof of Stake (PoS), Proof of Service and inter-blockchain communication (IBC) protocol.
In this issue, we will be discussing Proof-of-Stake (PoS), Proof-of-Service, the roles that the nodes play in the Function X system, and how to become a node in detail.
What is a node? Hardware running Function X services are nodes. Examples of nodes on the f(x) testnet including personal computers, laptops, servers, possibly XPOS® and Blok On Blok (BOB) smartphones.
There are two types of nodes in the Function X ecosystem:
- Full nodes for validating blockchain transactions. They run on Proof-of-Stake.
- Service nodes for providing services. They run on Proof-of-Service.
Full Nodes (validator)
Full nodes validate blockchain transactions, hence they are the building blocks of Function X. Without them, transactions cannot be written and verified in a ledger.
What are the criteria of a full node? Anyone can setup a full node as long as they satisfy the first two requirements seen below. The third requirement allows you to delegate, and share the service and reward.
- Requirement 1: FX tokens staked
- Requirement 2: Non-malicious
- Requirement 3: Participate in a pool
What is an FX token stake? In order to become a node, you need FX tokens. During the early phases, we believe around 100,000 FX tokens, or something under 10,000 USD, would work well. The required amount of FX tokens will hit “equilibrium” based on the basic rule of supply and demand — we believe a stake of 100,000 FX tokens is a good start.
Alternatively, there is also a discussion on using a percentage of the circulating supply as the entry, for example, about 0.1%. Please join in our discussion at our Reddit Function X page to discuss which model is preferable on the number of FX tokens to stake to qualify as a node.
What is a non-malicious node? “Non-malicious” is a status whereby a node has not been involved in any malicious activities; all nodes start with being “non-malicious”. If you are a f(x) node, you have to make sure not to be involved in any malicious activities. If you try to “game the system”, e.g: trying to create a fork by validating a false transaction (or invalidating a true transaction), your staked FX tokens will get forfeited as a penalty by the consensus mechanism.
What is a pool participation? You can delegate your FX tokens to an existing validator to share the duty and reward. This pool participation happens when a person doesn’t have the feasibility to set up a full node or doesn’t have enough FX tokens to qualify for a full node.
How many full nodes (validator) ?
There isn’t a limit. We can have as many nodes in the ecosystem. However, not all the nodes will be utilized for a particular activity within the ecosystem.
For example, we think that a randomly selected size of 50 nodes might work well for a specific activity. In this hypothetical scenario, let’s assume we are operating on 50 selected nodes. Given the randomness of the selection, the 50 nodes are selected from a combined pool of all nodes, say, 1000 nodes. The 50 nodes selected are indifferently selected hence the 50 nodes are as fully random as the other 1000 nodes. Among those 50 nodes, a pBFT (Practical Byzantine Fault Tolerance) system is deployed. With all these involved, “malicious nodes” have to be over 33% of all nodes (hence 333 nodes in this instance) to perform any malicious act.
However, it is not entirely impossible to have 333 malicious nodes among 1000 nodes. Thus, we also need to make sure that the 333 malicious nodes have an opportunity cost in instigating an attack, for example, each node’s staked tokens will be forfeited if they are found to be malicious. The value of the forfeited tokens should be more than the gain from colluding. A FX stake withdrawal time is needed too, to prevent a sudden influx of nodes by a malicious attacker.
We’d love to hear your thoughts on this. Please head to Reddit Function X page to discuss more on node selection mechanism in the ecosystem and how we can participate in it.
We talked briefly about Proof of Service in January’s Hash Out. Proof-of-Service is a consensus model for service nodes; it is not involved in block creation like full nodes. There are many services that are provided by service nodes. These services require server space, bandwidth, developers, etc. For validators (they can be servers, home computers etc.) that provide such services, they are essentially service providers. Service nodes are set to gain FX tokens as rewards.
For example, the service nodes in the diagram below are involved in a blockchain called “establishment,” the service nodes are providing a service for the blockchain to establish. FX tokens are rewarded to service nodes that help provide blockchain services. Other service nodes might be involved in other services such as data storage, decentralized Internet browsing, etc.
More on Proof-of-Stake (PoS)
Proof-of-Stake is a consensus protocol for block generation that we talked about it in our January issue of Hash Out. The Function X ledger records transactions that take place in Function X. The ledger grows as the number of transactions increases. Nodes in Function X are involved in the validation process.
Example: Bitcoin has >10K full nodes and the nodes are involved in validating the transactions. These nodes compete to solve a mathematical computation and nodes that manage to solve the computation will create the next block, and with it, the bitcoin that comes with the new block. Bitcoin full nodes operate on the Proof of Work (PoW) model which requires computational power and electricity. Function X’s full nodes operate on Proof-of-Stake (PoS) which require consensus.
[*] Function X: Hash Out is a monthly article that focuses on product discussion and technical implementation. Ideas discussed in the article are Works in Progress hence final implementation may vary.
[**] Nodes, validators, validator nodes are used interchangeably to refer to the devices/services validating the blockchain.
[***] XPOS and BOB may become nodes depending on the implementation.