Bandwidth Limitations

Bandwidth limits for Shelby networks

Shelby is designed to serve data with subsecond latency, high throughput, and low costs. Some applications, however, require even lower latencies or exhibit extreme temporal hotspots. This document describes some of your options, such as running your own Shelby RPC or using a CDN.

Limits

The Shelby RPC for Shelbynet that is used by default in the SDK is operated by Geomi (from Aptos Labs). To ensure fair usage across all users, the RPC enforces bandwidth limitations. This document describes those limits and what alternatives exist if you need higher bandwidth.

Per-organization limits

See the Geomi docs here for information about per-organization limits. Look for limits related to the Shelby RPC. The limits apply collectively to all projects and resources within an organization. These are organization-wide caps, not per-project or per-resource.

Anonymous clients

See the Geomi docs here for information about anonymous limits. Anonymous clients are those using the Shelby RPC without an API key. These are subject to much lower limits, it is highly recommended you use an API key.

Coming soon!

Coming soon!

Use cases

Video streaming

4k video streaming requires about 4 MiB/s per stream. At time of writing Geomi allows 512 MiB/s for a single organization. As such, on Shelbynet a single organization can support approximately 64 concurrent viewers (512 MiB/s / 4 MiB/s = 128).

Higher bandwidth needs

If your application requires more bandwidth than these limits provide, consider these options:

1. Contact the Geomi team

The Geomi team is able to grant higher limits in some situations. If there is sufficient demand, we can consider increasing the total overall bandwidth the network is capable of as well. Sign in to geomi.dev and use the help button in the top right corner.

2. Run your own Shelby RPC

Guide coming soon.

3. Deploy a CDN

Place a CDN in front of the Shelby RPC. This way only the initial read (and therefore the cost for reading from an RPC) for a blob goes to an actual RPC, the rest are served by the CDN. For Shelby mainnet we will be deployed globally, but for Shelbynet / Testnet this can have noteworthy latency advantages as well.

Note: In this guide we assume the origin is the Geomi-hosted Shelby RPC. While Geomi can abstract read payments away and allow you to query with just an API key, other providers may not work this way.

1. Create a Pull Zone

In the Bunny dashboard:

  1. Go to Pull Zones → Add Pull Zone.
  2. Name your zone — e.g. dport-shelby-cdn.
  3. Use this for the Origin URL:
    https://api.shelbynet.shelby.xyz/shelby
  4. Save the Pull Zone.

2. Allow the CDN to query the Shelby RPC by attaching a Geomi API key

Go to geomi.dev. From there, create a new API key with shelbynet as the network.

Now in the Bunny dashboard go to Security -> S3 authentication. Paste the API key in to the "AWS key" and "AWS secret" fields. Use "geomi" as the AWS region name.

3. Configure other settings

These other settings are important to ensure the CDN is operating as intended:

  • Caching -> General -> Cache expiration time -> See below.
  • Security -> General -> Enable "Block POST requests"

The best cache expiration time will depend on your use of Shelby. Shelby blobs are immutable, but they can be deleted and re-created with the same name. If you delete blobs often, consider a shorter cache expiration time.

4. Update your application URLs

Before:

https://api.shelbynet.shelby.xyz/shelby/v1/blobs/0x0628e72def46bc247908f0b06367bfbf744a50328e429a97632941035ef50a63/whitepaper.pdf

After:

https://dport-shelby-cdn.b-cdn.net/v1/blobs/0x0628e72def46bc247908f0b06367bfbf744a50328e429a97632941035ef50a63/whitepaper.pdf

Note that /shelby is gone from the path.

The first request will fetch from the Shelby RPC. Subsequent requests come from BunnyCDN’s edge nodes. Confirm that this is happening by looking for the cdn-cache header in the response. Its value should be HIT from the second request onward.

5. Optimizations

The following changes can improve the security / performance of the CDN further:

  • General -> Websockets -> Disable
  • Caching -> General -> Turn on "Optimize for large object delivery"
  • Consider enabling Origin Shield to reduce the amount of traffic hitting the origin.
  • Consider some of the Bunny Optimizer features for improved performance.