> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goldsky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cut RPC costs with Boost

> Keep your current RPC provider while Boost serves historical and tip-of-chain reads from Goldsky's indexed data and forwards everything else upstream.

export const BoostDiagram = () => <div style={{
  border: '1px solid var(--gsk-hair, rgba(17,24,39,0.12))',
  borderRadius: 14,
  padding: 16,
  margin: '20px 0',
  background: 'var(--gsk-panel, #fcfcfb)'
}}>
    <style>{`
      .boost-diagram-mobile { display: none; }
      @media (max-width: 640px) {
        .boost-diagram-desktop { display: none; }
        .boost-diagram-mobile { display: block; }
      }
    `}</style>

    <svg className="boost-diagram-desktop" viewBox="0 0 760 250" role="img" aria-labelledby="boost-flow-title boost-flow-description" style={{
  width: '100%',
  height: 'auto'
}}>
      <title id="boost-flow-title">How Boost routes JSON-RPC requests</title>
      <desc id="boost-flow-description">
        Requests travel from your application to Boost. Eligible historical and tip-of-chain reads are answered from Goldsky indexed data. Other calls are forwarded to your RPC provider.
      </desc>
      <defs>
        <marker id="boost-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M 0 1 L 9 5 L 0 9 z" fill="var(--gsk-wire, #94a3b8)" />
        </marker>
        <marker id="boost-arrow-accent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M 0 1 L 9 5 L 0 9 z" fill="var(--gsk-purple, #7c3aed)" />
        </marker>
      </defs>

      <rect x="24" y="96" width="160" height="58" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-hair, rgba(17,24,39,0.12))" />
      <text x="104" y="131" textAnchor="middle" fontSize="16" fontWeight="600" fill="var(--gsk-ink, #111827)">Your app</text>

      <path d="M 184 125 L 280 125" fill="none" stroke="var(--gsk-purple, #7c3aed)" strokeWidth="1.6" markerEnd="url(#boost-arrow-accent)" />
      <text x="232" y="113" textAnchor="middle" fontSize="11" fontWeight="500" fill="var(--gsk-purple, #7c3aed)">JSON-RPC</text>

      <rect x="288" y="96" width="174" height="58" rx="12" fill="var(--gsk-purple, #7c3aed)" />
      <text x="375" y="131" textAnchor="middle" fontSize="17" fontWeight="650" fill="var(--gsk-on-accent, #fff)">Boost</text>

      <path d="M 462 112 C 520 98, 526 57, 580 57" fill="none" stroke="var(--gsk-wire, #94a3b8)" strokeWidth="1.5" markerEnd="url(#boost-arrow)" />
      <text x="520" y="75" textAnchor="middle" fontSize="11" fontWeight="500" fill="var(--gsk-sub, #6b7280)">eligible read</text>
      <rect x="586" y="26" width="150" height="62" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-gold, #d97706)" />
      <text x="661" y="53" textAnchor="middle" fontSize="15" fontWeight="600" fill="var(--gsk-gold, #d97706)">Goldsky data</text>
      <text x="661" y="71" textAnchor="middle" fontSize="11" fill="var(--gsk-sub, #6b7280)">served by Boost</text>

      <path d="M 462 138 C 520 152, 526 193, 580 193" fill="none" stroke="var(--gsk-wire, #94a3b8)" strokeWidth="1.5" markerEnd="url(#boost-arrow)" />
      <text x="520" y="181" textAnchor="middle" fontSize="11" fontWeight="500" fill="var(--gsk-sub, #6b7280)">everything else</text>
      <rect x="586" y="162" width="150" height="62" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-gray, #6b7280)" />
      <text x="661" y="189" textAnchor="middle" fontSize="15" fontWeight="600" fill="var(--gsk-ink, #111827)">Your provider</text>
      <text x="661" y="207" textAnchor="middle" fontSize="11" fill="var(--gsk-sub, #6b7280)">forwarded by Boost</text>
    </svg>

    <svg className="boost-diagram-mobile" viewBox="0 0 340 430" role="img" aria-labelledby="boost-flow-mobile-title boost-flow-mobile-description" style={{
  width: '100%',
  height: 'auto'
}}>
      <title id="boost-flow-mobile-title">How Boost routes JSON-RPC requests</title>
      <desc id="boost-flow-mobile-description">
        Requests travel from your application to Boost. Eligible historical and tip-of-chain reads are answered from Goldsky indexed data. Other calls are forwarded to your RPC provider.
      </desc>
      <defs>
        <marker id="boost-arrow-mobile" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M 0 1 L 9 5 L 0 9 z" fill="var(--gsk-wire, #94a3b8)" />
        </marker>
        <marker id="boost-arrow-mobile-accent" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto">
          <path d="M 0 1 L 9 5 L 0 9 z" fill="var(--gsk-purple, #7c3aed)" />
        </marker>
      </defs>

      <rect x="75" y="12" width="190" height="58" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-hair, rgba(17,24,39,0.12))" />
      <text x="170" y="47" textAnchor="middle" fontSize="16" fontWeight="600" fill="var(--gsk-ink, #111827)">Your app</text>
      <path d="M 170 70 L 170 116" fill="none" stroke="var(--gsk-purple, #7c3aed)" strokeWidth="1.6" markerEnd="url(#boost-arrow-mobile-accent)" />
      <text x="180" y="98" fontSize="11" fontWeight="500" fill="var(--gsk-purple, #7c3aed)">JSON-RPC</text>

      <rect x="75" y="124" width="190" height="58" rx="12" fill="var(--gsk-purple, #7c3aed)" />
      <text x="170" y="159" textAnchor="middle" fontSize="17" fontWeight="650" fill="var(--gsk-on-accent, #fff)">Boost</text>

      <path d="M 145 182 C 145 222, 84 225, 84 265" fill="none" stroke="var(--gsk-wire, #94a3b8)" strokeWidth="1.5" markerEnd="url(#boost-arrow-mobile)" />
      <text x="76" y="224" textAnchor="middle" fontSize="11" fontWeight="500" fill="var(--gsk-sub, #6b7280)">eligible read</text>
      <rect x="12" y="274" width="144" height="80" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-gold, #d97706)" />
      <text x="84" y="308" textAnchor="middle" fontSize="15" fontWeight="600" fill="var(--gsk-gold, #d97706)">Goldsky data</text>
      <text x="84" y="329" textAnchor="middle" fontSize="11" fill="var(--gsk-sub, #6b7280)">served by Boost</text>

      <path d="M 195 182 C 195 222, 256 225, 256 265" fill="none" stroke="var(--gsk-wire, #94a3b8)" strokeWidth="1.5" markerEnd="url(#boost-arrow-mobile)" />
      <text x="268" y="224" textAnchor="middle" fontSize="11" fontWeight="500" fill="var(--gsk-sub, #6b7280)">other calls</text>
      <rect x="184" y="274" width="144" height="80" rx="12" fill="var(--gsk-card, #fff)" stroke="var(--gsk-gray, #6b7280)" />
      <text x="256" y="308" textAnchor="middle" fontSize="15" fontWeight="600" fill="var(--gsk-ink, #111827)">Your provider</text>
      <text x="256" y="329" textAnchor="middle" fontSize="11" fill="var(--gsk-sub, #6b7280)">forwarded</text>

      <text x="170" y="397" textAnchor="middle" fontSize="12" fill="var(--gsk-sub, #6b7280)">The response returns through the same Boost URL.</text>
    </svg>
  </div>;

export const BoostAgentActions = () => {
  const prompt = `Help me add Goldsky Boost to an existing EVM app. Use the current documentation at https://docs.goldsky.com/boost and confirm the cached methods and supported networks before changing code. Ask which RPC client and provider I use, then show the smallest endpoint change and how to verify cache hits with x-cache and x-edge-billable.`;
  const encoded = encodeURIComponent(prompt);
  const actionStyle = {
    display: 'inline-flex',
    alignItems: 'center',
    justifyContent: 'center',
    gap: 8,
    flex: '0 0 auto',
    height: 38,
    boxSizing: 'border-box',
    padding: '0 12px',
    borderRadius: 10,
    border: '1px solid var(--gsk-edge, rgba(17,24,39,0.2))',
    background: 'transparent',
    color: 'var(--gsk-ink, #111827)',
    fontSize: 13,
    fontWeight: 600,
    lineHeight: 1,
    whiteSpace: 'nowrap',
    textDecoration: 'none',
    cursor: 'pointer',
    transition: 'border-color 150ms ease, background-color 150ms ease, transform 150ms ease'
  };
  return <>
      <style>{`
        .boost-ai-action:hover {
          border-color: rgba(243, 75, 19, 0.7) !important;
          background: rgba(243, 75, 19, 0.06) !important;
          transform: translateY(-1px);
        }
        .boost-ai-action:focus-visible {
          outline: 2px solid #f34b13;
          outline-offset: 2px;
        }
      `}</style>
      <div className="not-prose border border-gray-950/10 dark:border-white/10" style={{
    display: 'flex',
    flexWrap: 'wrap',
    alignItems: 'center',
    justifyContent: 'space-between',
    gap: 16,
    borderRadius: 16,
    padding: '20px 24px',
    margin: '20px 0',
    background: 'transparent'
  }}>
        <div style={{
    flex: '1 1 280px'
  }}>
          <div style={{
    color: 'var(--gsk-ink, #111827)',
    fontSize: 16,
    fontWeight: 600,
    lineHeight: 1.5
  }}>Use your AI assistant</div>
          <div style={{
    marginTop: 4,
    color: 'var(--gsk-body, #4b5563)',
    fontSize: 16,
    lineHeight: 1.5
  }}>
            Start from a prompt tailored to your existing EVM client.
          </div>
        </div>
        <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    alignItems: 'center',
    gap: 8
  }}>
          <a className="boost-ai-action" href={`https://chatgpt.com/?q=${encoded}`} style={actionStyle}>
            <img src="/images/logos/icon-chatgpt.svg" alt="" aria-hidden="true" width="16" height="16" className="no-zoom" />
            ChatGPT
            <span aria-hidden="true" style={{
    color: 'var(--gsk-sub, #6b7280)',
    fontSize: 12
  }}>↗</span>
          </a>
          <a className="boost-ai-action" href={`https://claude.ai/new?q=${encoded}`} style={actionStyle}>
            <img src="/images/logos/icon-claude.svg" alt="" aria-hidden="true" width="16" height="16" className="no-zoom" />
            Claude
            <span aria-hidden="true" style={{
    color: 'var(--gsk-sub, #6b7280)',
    fontSize: 12
  }}>↗</span>
          </a>
        </div>
      </div>
    </>;
};

Boost reduces the traffic sent to an RPC provider you already use. Historical and tip-of-chain reads come from Goldsky's indexed data. Every other JSON-RPC call forwards to your configured endpoint.

Your application keeps one RPC interface and one response shape. You keep control of the upstream provider, while repeatable reads can avoid reaching it at all.

<BoostAgentActions />

<CardGroup cols={2}>
  <Card title="Set up Boost" icon="rocket" href="/boost/quickstart" arrow>
    Configure an upstream and verify your first cache hit.
  </Card>

  <Card title="See what Boost serves" icon="route" href="/boost/how-it-works" arrow>
    Understand cache eligibility, block tags, batches, and forwarding.
  </Card>
</CardGroup>

## How Boost fits into your stack

<BoostDiagram />

1. Your application sends JSON-RPC requests to a Boost URL instead of directly to your provider.
2. Boost serves eligible reads when Goldsky has the requested data, from any historical block up to the chain tip.
3. Calls Boost cannot serve are forwarded to the active upstream configured for that network.

The routing decision uses the request method and parameters. It does not require an additional request to your provider.

<Note>
  Boost preserves the JSON-RPC interface, but it is still an HTTP proxy. It normalizes some transport headers and manages CORS at the edge. See [request and response forwarding](/boost/configuration#request-and-response-forwarding) for the exact contract.
</Note>

## Use Boost when

* You want to keep your current provider and client libraries.
* Your workload reads blocks, transactions, receipts, or log ranges, at fixed heights or at the latest block.
* You want to reduce upstream request volume without changing application behavior on a cache miss.
* You need to measure which requests Boost served and which reached your provider.

Boost is not a replacement for WebSocket subscriptions. State reads such as `eth_call` and `eth_getBalance`, and the `pending`, `safe`, and `finalized` tags, remain with your provider. If you want Goldsky to operate the RPC provider layer as well, use [Edge RPC](/edge-rpc/introduction).

## Explore Boost

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/boost/quickstart" arrow>
    Make a cache hit, compare a forwarded request, and update an existing client.
  </Card>

  <Card title="How it works" icon="route" href="/boost/how-it-works" arrow>
    Cached methods, block tags, batch behavior, and the forwarding contract.
  </Card>

  <Card title="Configure upstreams" icon="settings-2" href="/boost/configuration" arrow>
    Provider connections, custom URLs, credentials, headers, CORS, and timeouts.
  </Card>

  <Card title="Measure results" icon="chart-no-axes-combined" href="/boost/observability" arrow>
    Read response headers and calculate the share of calls that avoided your provider.
  </Card>

  <Card title="Reference" icon="library" href="/boost/reference" arrow>
    Endpoint syntax, supported networks, billing, and limits.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/boost/troubleshooting" arrow>
    Diagnose misses, provider errors, CORS, large batches, and verification issues.
  </Card>
</CardGroup>

## Getting help

Can't find what you're looking for? Reach out to us at [support@goldsky.com](mailto:support@goldsky.com) for help.


## Related topics

- [Pricing: plans, metering, and product costs](/pricing/summary.md)
- [How Boost routes requests](/boost/how-it-works.md)
- [Boost reference](/boost/reference.md)
- [Configure Boost upstreams](/boost/configuration.md)
- [Troubleshoot Boost](/boost/troubleshooting.md)
