What is the difference between a Public Node and Public RPC Node in Zenon Network?

Viewed 44

"Public Node" and "Public RPC Node" are used interchangeable by community members. Is there a difference between a Public Node and Public RPC Node in Zenon Network?

I myself refer to Public RPC Nodes as "Public Nodes" because that is what non-technical people refer to them as. Should we use a different term that is easy to understand?

1 Answers

TLDR: Public nodes are essential for the protocol and may be incentivized in the future. Public RPC nodes are a convenience provided by the community to quickly access network data. There are certain risks to be aware of when connecting to public rpc nodes.

Public Nodes

Public [protocol] nodes ARE the network in the most literal sense. They are the set of computers constantly in communication with each other to validate and broadcast chain data. For NoM, that would be momentums and account blocks (transactions).

A public node must be running software which implements Zenon Network's protocol, (currently only go-zenon's znnd). It must be reachable (have a stable public IP address) and accept incoming connections on its protocol port (e.g 35995).

Most nodes that join the network, for example, epheremal embedded nodes from Syrius, will sync and do initial block download (IBD) by connecting to public nodes.

Ideally the network has many public nodes with a high degree of connectivity. This ensures chain data is quickly transmitted to the entire network and that the loss of a few nodes does not result in a network halt or fork.

Because of how essential public nodes are, incentivization of public nodes is an area of research within the community, particularly when it comes to the role of Sentinels.

Public RPC Nodes

go-zenon's znnd software provides an RPC interface. RPC stands for Remote Procedure Call. It is a method of interacting with a node to submit and query chain data. The default RPC port is currently 35997 for HTTP and 35998 for Websockets.

Wallets such as Syrius must connect to a node via RPC in order to display the status of an account and submit transactions. Syrius is able to run an embedded znnd node and use its RPC interface. The advantage of this method is that all transactions are verified by the embedded node so that your wallet has an accurate and trustless view of the network. The disadvantage is that the embedded node must sync up-to-date before use which can take a long and variable amount of time.

For non-server devices such as laptops and phones, constantly leaving the embedded node running to sync may not be feasible. In addition to the embedded node, Syrius allows users to connect to an external RPC endpoint. For example, a user can run a node on a cloud server that is always on and point their wallet to it.

Public RPC nodes are simply these servers which have a public IP address and an open RPC port. Some community members operate public rpc nodes for the benefit of other community members.

As the protocol and RPC use different ports, it is possible for a public RPC node to not be a public protocol node and vice-versa.

Compared to public nodes which are essential, public RPC nodes are a convenience for accessibility at the cost of trustlessness. The network would function completely fine without the existence of any public rpc nodes. It is important that if one connects to public rpc nodes, that one understands the risks and tradeoffs.

By connecting to a public rpc node, your wallet/application is trusting that the returned data is accurate and has not been tampered with by the rpc node operator. You could also be providing associated metadata that can be used to link information such as your IP addresses and wallet addresses.