What is the difference between Public and Developer RPC services?

Public RPC is designed for usage by the end users, while Devloper RPC is designed for back end services and integrators.

AvaCloud by default offers two different RPC services: Public and Developer RPC. Each is designed to handle specific use cases and workloads and therefore differ in features, configuration and limitations that they provide.

Public RPC is designed for use by the subnet's end users. Design goal was to support many concurrent users accessing the chain simultaneously with low latencies and supporting typical end user workloads.

In order to facilitate that Public RPC has:

  • public access, no authentication
  • rate limiting per IP address
  • reduced API surface

To be able to provide service that is available to end users freely, certain limitations are necessary, like rate limiting. Particular details of rate limiting is not available publicly, as the parameters change often and the API calls get assigned different rate limits based on the actual resource usage by a particular call. If the user gets to the rate limit, the API call will fail with 429 (Too Many Requests) error code and include the RetryAfter header indicating  when it will be safe to send another request. If the RetryAfter period has not elapsed before the next API call, the IP address will get blocked from access for an hour.

Devloper RPC is designed for use by back end services, developers and 3rd party service integrations.

As such, the service has:

  • private access, authenticated with an access token
  • no rate limits, outside of the basic DoS protection
  • full API surface

For the service to be usable for developer and back end service, it employs basic authentication, in order to guard access against unauthorised access. Since all the users are known, there is no rate limiting system used. This in turn means that the service can be brought down or start lagging by excessively large amount of requests. Developer RPC also exposes the full API surface, which includes the debug and trace API calls necessary for indexing service and app debugging.