Node RPC needs to get fixed

Disclaimer: I am not familiar with technical aspects of Tezos nodes in depth. I am going to share my experiences I made while developing in the Tezos ecosystem.

Lately I was using the tezos-client for doing some transactions and also doing a lot contract interactions. Since I am relatively new to the “tezos-ecosystem” I was astonished about how often you would have problems while interacting with different node endpoints.

I basically tried out all public nodes provided here: RPC nodes | Taquito . Some nodes worked better other did not work at all. Even https://mainnet-tezos.giganode.io/ sometimes seemed unresponsive and had long request times.

Important services in the Tezos ecosystem like the “Temple-Wallet” also rely on public node endpoints. In the last few days there were lots of “downtimes” in the whole (web based dApp) Tezos ecosystem due to node RPC’s being down or responding extremely slow. This is extremely unsatisfying for newcomers and also for devs who dont want to spin up an own node directly.

As I mentioned above I don’t have much technical inside when it comes to the nodes but I suspect the node API scales bad under high user traffic.

It would be really nice to see this issue addressed in the next node updates, I think its a very important to allow the Tezos ecosystem getting a bigger user base.

Thank you.

2 Likes

Have you tried using indexer APIs? Contrary to the Tezos node, they are meant for this and they also provide more features (like listing the keys of big maps for example).

2 Likes

Although I’m not sure why Temple and some other core dApps aren’t using their own indexers. I picked up somewhere that Temple was using giganode. Maybe they are, in which case I’d also be curious about the performance issues in Temple.

1 Like

What is the node RPC meant for then?

A few use cases of the node RPCs are:

  • administration of the node (for example, blacklisting a peer)
  • monitoring of the node (for example, checking that the node is bootstrapped)
  • communication with baker binaries (baker, endorser, and accuser)
  • communication with tezos-client which is both a command-line wallet and a command-line interface to the protocol
  • monitoring of the chain, typically to index new blocks when they are added to the chain (or operations when they enter the mempool)

It is not impossible to use RPCs to run a dapp but it has some limitations that indexer APIs don’t have:

  • The node does not store what it does not need; this is important because users of the chain are charged for what they store onchain. Typically, since we cannot iterate over big maps there is no need to store the keys so the keys are not stored and the storage cost of big maps is independent of the size of the keys.
  • In some cases, data is stored but not in a way that allows to get it efficiently. For example, for a given account, the balance is stored in the context but the transaction history of the account can only be obtained by iterating over all operations of all blocks which is extremely slow. Indexers store transactions in a way that makes getting the transaction history of an account efficient.
1 Like