---
name: chainstack
description: Use when deploying blockchain RPC nodes, managing node endpoints, configuring access rules, querying blockchain data via RPC methods, or migrating existing infrastructure to Chainstack. Reach for this skill when working with 70+ supported blockchain networks, managing billing and request units, or setting up authentication for blockchain API access.
metadata:
    mintlify-proj: chainstack
    version: "1.0"
---

# Chainstack Skill

## Product summary

Chainstack is a managed blockchain infrastructure platform providing RPC access to 70+ blockchain networks. Deploy a node from the console, get an endpoint in seconds, and call it via standard JSON-RPC methods. Alternatively, run the same node stack on your own Kubernetes cluster with Chainstack Self-Hosted.

**Key files and paths:**
- Console: https://console.chainstack.com/
- Node endpoints: HTTPS (key-protected or password-protected), WSS (WebSocket), gRPC (select protocols)
- Endpoint format: `https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d` (key) or `https://user:pass@nd-123-456-789.p2pify.com` (password)
- Platform API: https://console.chainstack.com/ (v1 and v2 endpoints available)
- Faucet: https://faucet.chainstack.com/ (testnet tokens)

**Primary docs:** https://docs.chainstack.com/

## When to use

Deploy this skill when:
- Creating or managing blockchain nodes on 70+ networks (Ethereum, Solana, Bitcoin, Polygon, Arbitrum, Base, Optimism, etc.)
- Configuring RPC endpoints for dApps, trading bots, or indexers
- Setting up authentication (API keys, basic auth, gRPC tokens)
- Restricting endpoint access via IP allowlists or domain allowlists
- Querying blockchain data (blocks, transactions, logs, state) via JSON-RPC
- Monitoring node metrics and request usage
- Migrating from another RPC provider (Infura, Alchemy, Syndica, Grove, Helius)
- Billing and request unit (RU) management
- Deploying nodes on your own infrastructure (Self-Hosted)

## Quick reference

### Node types and modes

| Type | Mode | Best for | Billing |
|------|------|----------|---------|
| **Global Node** | Full, Archive, Extended | Default choice; globally distributed; scales to any traffic | Per-request (RUs) |
| **Dedicated Node** | Full, Archive | Sustained heavy load; customization; specialized configs | Monthly compute + storage |
| **Trader Node** | Full, Archive | Latency-critical; Warp transactions; regional | Per-request (RUs) |
| **Unlimited Node** | Add-on | Predictable monthly bill for steady high traffic | Flat monthly fee (RPS tier) |

### Endpoint authentication

| Method | Format | Use case |
|--------|--------|----------|
| **Key-protected** | `https://nd-xxx.p2pify.com/TOKEN` | Default; secure; rotate keys in console |
| **Password-protected** | `https://user:pass@nd-xxx.p2pify.com` | Legacy; less secure; avoid in production |
| **gRPC (x-token)** | `host:443` + metadata header | Sui, Solana; high-throughput; binary protocol |

### Request units (RUs) pricing

- **Full node request:** 1 RU
- **Archive node request:** 2 RUs
- **Solana archive methods:** 2 RUs (eligible methods on old slots)
- **Warp transaction:** Separate billing; bloXroute integration

### Plan limits (RPS)

| Plan | RPS | Best for |
|------|-----|----------|
| Developer | 25 | Testing; low-traffic dApps |
| Growth | 250 | Production dApps |
| Pro | 400 | High-traffic dApps |
| Business | 600 | Enterprise workloads |
| Enterprise | Unlimited | Custom SLAs |

### Common RPC methods by category

| Category | Examples |
|----------|----------|
| **Blocks** | `eth_blockNumber`, `eth_getBlockByNumber`, `eth_getBlockByHash` |
| **Transactions** | `eth_getTransactionByHash`, `eth_getTransactionReceipt`, `eth_sendRawTransaction` |
| **Accounts** | `eth_getBalance`, `eth_getCode`, `eth_getStorageAt` |
| **Execution** | `eth_call`, `eth_estimateGas`, `eth_simulateV1` |
| **Logs** | `eth_getLogs`, `eth_newFilter`, `eth_getFilterChanges` |
| **Debug/Trace** | `debug_traceTransaction`, `trace_transaction`, `trace_call` |
| **Subscriptions** | `eth_subscribe`, `eth_unsubscribe` (WebSocket only) |

## Decision guidance

### When to use Global Node vs Dedicated Node

| Scenario | Global Node | Dedicated Node |
|----------|-------------|----------------|
| Starting out; testing | ✓ | |
| Unpredictable traffic spikes | ✓ | |
| Sustained high throughput (>1000 RPS) | | ✓ |
| Custom node configuration | | ✓ |
| Cost-sensitive (low traffic) | ✓ | |
| Predictable monthly budget | | ✓ |
| Latency-critical (regional) | Trader Node | |

### When to use Full vs Archive mode

| Use case | Full | Archive |
|----------|------|---------|
| Latest block queries | ✓ | ✓ |
| Recent transaction history | ✓ | ✓ |
| Historical state (past blocks) | | ✓ |
| Balance at block N | | ✓ |
| Contract state at genesis | | ✓ |
| Cost-sensitive | ✓ | |

### Authentication method selection

| Scenario | Method | Reason |
|----------|--------|--------|
| Browser dApp (CORS) | Key-protected + Origin allowlist | Secure; prevents domain hijacking |
| Backend service (stable IP) | Key-protected + IP allowlist | Secure; IP-based access control |
| Legacy integration | Password-protected | Backward compatibility only |
| High-throughput indexer | gRPC (x-token) | Binary protocol; lower latency |

## Workflow

### 1. Deploy a node and get an endpoint

1. Log in to https://console.chainstack.com/
2. Create a project (if needed): **Create project** → name → **Create**
3. Click **Get started** or **Join network**
4. Select protocol and network (e.g., Ethereum Mainnet)
5. Choose node type: **Global Node** (default) or **Dedicated Node**
6. Select mode: **Full** (recent data) or **Archive** (all history)
7. For Dedicated: choose cloud provider, name, review cost
8. Click **Deploy** → wait for **Running** status (seconds for Global, minutes for Dedicated)
9. Click the node name → **Access** tab → copy endpoint

### 2. Secure the endpoint

1. Click the node name → **Security** tab
2. Add access rules:
   - **Allowed origin:** `myapp.com` (browser dApps)
   - **IP address:** `203.0.113.50` (backend services)
3. Hover over rule → click pencil → **Activate**
4. Test: `curl -H "Origin: myapp.com" https://YOUR_ENDPOINT`

### 3. Query blockchain data

1. Get your endpoint from the node details
2. Choose a web3 library (ethers.js, web3.js, web3.py, etc.)
3. Connect to the endpoint:
   ```javascript
   const provider = new ethers.JsonRpcProvider('https://YOUR_ENDPOINT');
   const balance = await provider.getBalance('0x...');
   ```
4. Call RPC methods: `eth_call`, `eth_getLogs`, `eth_getBalance`, etc.
5. Monitor usage: node details → **Metrics** tab

### 4. Handle authentication

**Key-protected (recommended):**
```bash
curl https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
```

**Password-protected:**
```bash
curl https://user:pass@nd-123-456-789.p2pify.com \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
```

**gRPC (Solana/Sui):**
```javascript
const metadata = new grpc.Metadata();
metadata.add('x-token', 'YOUR_TOKEN');
const client = new SolanaRpcClient('solana-mainnet.core.chainstack.com:443', metadata);
```

### 5. Monitor and optimize

1. Node details → **Metrics** tab → select timeframe (1h, 24h, 7d)
2. View: requests made, method calls breakdown, response codes
3. Download aggregate data: click hamburger → select format
4. Check organization stats: **Statistics** (top-level menu)
5. If hitting RPS limit: upgrade plan or add Unlimited Node add-on
6. If hitting RU quota: enable extra usage or upgrade plan

### 6. Migrate from another provider

1. Read the provider-specific guide (Infura, Alchemy, Syndica, Grove, Helius)
2. Deploy a Chainstack node on the same network
3. Update your endpoint URL in code/config
4. Test on testnet first
5. Verify node is synced: `eth_blockNumber` matches other providers
6. Switch production traffic
7. Monitor metrics for 24h

## Common gotchas

- **Missing authentication:** Endpoint requires key or password; 401 error if omitted. Always include token in URL or basic auth header.
- **Wrong endpoint format:** Key-protected uses `/TOKEN` suffix; password-protected uses `user:pass@` prefix. Mixing them fails.
- **gRPC x-token in URL:** gRPC tokens go in request metadata, not the URL. Use `grpc.Metadata()` to add headers.
- **Access rules not activated:** Rules are created but inactive by default. Hover → pencil → **Activate** to enable.
- **Origin header missing:** Browser requests include `Origin` header automatically; curl/Postman do not. Add `-H "Origin: myapp.com"` manually.
- **Archive mode doesn't exist:** Not all protocols support archive mode. Check **Protocols** → protocol → **Modes and types**.
- **Warp transactions not enabled:** Warp is an add-on. Node details → **Add-ons** tab → enable **Warp transactions**.
- **RPS limit hit:** 429 error. Reduce request rate, upgrade plan, or add Unlimited Node add-on.
- **RU quota exhausted:** 429 error with "monthly quota" message. Enable extra usage in **Billing** → **Manage plan**.
- **WebSocket connection fails:** WSS endpoints are separate from HTTPS. Use `wss://` prefix, not `https://`. Solana v1 SDK has a derivation bug—pass `wsEndpoint` explicitly.
- **Timeout on heavy queries:** `eth_getLogs` over wide block ranges or `debug_traceTransaction` on large blocks timeout. Paginate ranges or move to Dedicated Node.
- **Node not synced:** New nodes take time to sync. Check **Overview** → **Latest block number** vs. network. Wait or contact support.
- **Dedicated Node cost surprise:** Dedicated Nodes bill monthly, not per-request. Review cost before deploying.
- **Self-Hosted networking:** Requires Kubernetes cluster, stable egress IP, and DNS. See Self-Hosted docs for setup.

## Verification checklist

Before submitting work:

- [ ] Node status is **Running** (not Pending, Syncing, or Failed)
- [ ] Endpoint is reachable: `curl https://YOUR_ENDPOINT` returns 200 or 400 (not 404, 502, 503)
- [ ] Authentication works: key or password included in URL or header
- [ ] Access rules are activated (if configured): hover → pencil → status shows **Active**
- [ ] Correct node type selected: Global (default), Dedicated (custom), or Trader (latency-critical)
- [ ] Correct mode selected: Full (recent) or Archive (all history)
- [ ] RPC method is supported: check protocol docs (e.g., Ethereum methods, Solana methods)
- [ ] Request is valid JSON-RPC: `{"jsonrpc":"2.0","method":"...","params":[],"id":1}`
- [ ] Billing plan has RU quota remaining: check **Billing** → **Usage**
- [ ] RPS limit not exceeded: check **Metrics** → response codes for 429 errors
- [ ] WebSocket uses `wss://` prefix (not `https://`)
- [ ] gRPC uses x-token in metadata (not URL)
- [ ] Testnet node tested before production switch
- [ ] Metrics show expected traffic pattern (no spikes or drops)

## Resources

**Comprehensive navigation:**
- [llms.txt](https://docs.chainstack.com/llms.txt) — compact index of all sections
- [llms-full.txt](https://docs.chainstack.com/llms-full.txt) — entire portal in one file

**Critical pages:**
1. [Platform introduction](https://docs.chainstack.com/docs/platform-introduction) — overview, node types, pricing
2. [Manage your node](https://docs.chainstack.com/docs/manage-your-node) — view credentials, metrics, delete
3. [Blockchain APIs reference](https://docs.chainstack.com/reference/blockchain-apis) — RPC method docs by protocol
4. [Access rules](https://docs.chainstack.com/docs/access-rules) — IP and origin allowlists
5. [Authentication methods](https://docs.chainstack.com/docs/authentication-methods-for-different-scenarios) — key, password, gRPC, JWT
6. [Pricing and request units](https://docs.chainstack.com/docs/pricing-introduction) — billing, RU costs, plan limits
7. [Error reference](https://docs.chainstack.com/docs/error-reference) — HTTP codes and solutions
8. [Chainstack MCP server](https://docs.chainstack.com/docs/chainstack-mcp-server) — deploy and manage nodes from AI agents

---

> For additional documentation and navigation, see: https://docs.chainstack.com/llms.txt