Logo
New RPC users get 35% off their first monthView the offer
OnFinality Learn
Infrastructure & Operations14 min read

Aptos Full Node Requirements, Storage, and RPC Setup

A practical guide to sizing, syncing, and exposing an Aptos full node REST API for production RPC traffic.

TL;DR

Running an Aptos full node requires balancing CPU, RAM, NVMe storage, and network throughput against a hardware baseline that drifts upward with each network release. A full node syncs the ledger and serves the Aptos REST API on its HTTP port, while a validator additionally participates in consensus and requires identity key management plus stake eligibility. Most teams need a synced full node, not a validator. Bootstrap from a state snapshot is faster than from genesis but introduces source-trust trade-offs. After sync, verify the REST API with ledger-info, account, and block-by-height probes before routing production traffic. Managed RPC providers remain more cost-effective for many read-heavy teams, but self-hosting is viable with disciplined upgrades, disk monitoring, and API hardening.

Aptos Node Role Landscape: Validator, Full Node, and API-Serving Full Node

An Aptos node can run in several configurations, and the requirements differ sharply between them. A validator node participates in consensus, which means it must manage identity keys, meet community and stake eligibility rules, and maintain strict uptime. A full node syncs the ledger and can serve the REST API, but it does not vote on blocks. The Aptos documentation on node types separates these roles clearly, and the distinction matters because most infrastructure teams do not need a validator.

The configuration most teams actually want is a full node running the REST/JSON-RPC API. This node answers account, block, transaction, and event queries over HTTP. The Aptos full node documentation describes the setup path, and the Aptos APIs documentation describes the REST surface the node exposes. If your goal is to serve read traffic for a dapp, indexer, or wallet, you are sizing a full node, not a validator.

  • Validator: consensus participation, identity keys, stake eligibility, strict uptime.
  • Full node: syncs ledger, serves REST API, does not vote.
  • API-serving full node: the configuration most read-heavy teams need.
  • Managed RPC: an alternative when self-hosting overhead outweighs control.

Four Resource Dimensions That Decide Aptos Node Sizing

Aptos execution and its parallel execution engine are CPU-bound, so core count and single-thread speed drive both sync progress and query latency. RAM must hold the in-memory state and index structures; if they do not fit, the node swaps and lags behind the chain head. Storage must accommodate the ledger plus the state snapshot, which grow continuously and require fast NVMe with high endurance. Network throughput matters for both sync and API traffic, so bandwidth and low-latency peering to the network are part of the sizing equation.

The official Aptos documentation publishes a hardware table that should be treated as a moving baseline. It drifts upward with network load and release changes, so always reconcile your plan against the current docs rather than a cached copy. For a broader comparison of how these dimensions map to other chains, see Solana RPC node requirements and hardware sizing.

  • CPU: core count and single-thread speed for execution and query latency.
  • RAM: must fit in-memory state and indexes to avoid swapping.
  • Storage: fast NVMe with high endurance; snapshot archive multiplies capacity.
  • Network: throughput and low-latency peering for sync and API traffic.

Sync Strategy: State Snapshot vs Genesis Bootstrap

Aptos full nodes can bootstrap from a state snapshot, which is much faster than syncing from genesis. The trade-off is trust: a snapshot must be obtained from a source you trust, and its freshness determines how much additional sync remains. Genesis sync is slow but verifies the full chain history from the start. The Aptos full node documentation describes both paths.

For production RPC, snapshot sync is usually the pragmatic choice because it gets the node to a recent state quickly. However, if your use case requires historical verification or archive-level data, review Archive node vs full node and Accessing historical blockchain data before committing to a sync strategy.

  • Snapshot sync: fast, requires trusted source, may need additional sync.
  • Genesis sync: slow, verifies full history, high time cost.
  • Archive needs: consider archive node patterns for historical queries.
  • Freshness: check snapshot age before starting sync.

Exposing and Verifying the Aptos REST API

The node serves the REST API on its HTTP port. Before routing traffic, confirm it responds to standard endpoints: a node-info or ledger-info call, an account lookup, and a block-by-height query. The Aptos APIs documentation lists the available endpoints, though the exact surface varies by node version and configuration.

Verification should be scripted so it is repeatable. The following curl example probes a running Aptos node's REST API for ledger info, an account resource, and a block by height. Replace the base URL with your node's HTTP endpoint.

#!/usr/bin/env bash
# Probe an Aptos full node REST API
BASE_URL="http://localhost:8080"

# 1. Ledger info: synced version and chain id
curl -s "$BASE_URL/v1" | jq '{chain_id, ledger_version, ledger_timestamp}'

# 2. Account resource (replace with a known account address)
curl -s "$BASE_URL/v1/accounts/0x1/resource/0x1::account::Account" | jq .

# 3. Block by height (replace with a recent height)
curl -s "$BASE_URL/v1/blocks/by_height/1000000?with_transactions=false" | jq '{block_height, block_hash}'

Runnable Node.js Probe for Aptos REST API Health

A Node.js probe can be integrated into monitoring. The example below fetches ledger info, an account resource, and a block by height, then prints the synced version, chain id, and whether the API answered. It uses the built-in fetch API available in modern Node.js.

Run this against your node's HTTP endpoint. If any call fails, the node may still be syncing, the endpoint may be misconfigured, or the API surface may differ by version. Use the output to decide whether to route traffic.

// aptos-probe.js
const BASE_URL = process.env.APTOS_NODE_URL || 'http://localhost:8080';

async function probe() {
  const results = {};
  try {
    const ledgerRes = await fetch(`${BASE_URL}/v1`);
    const ledger = await ledgerRes.json();
    results.chainId = ledger.chain_id;
    results.syncedVersion = ledger.ledger_version;
    results.ledgerTimestamp = ledger.ledger_timestamp;
  } catch (e) {
    results.ledgerError = e.message;
  }

  try {
    const accountRes = await fetch(`${BASE_URL}/v1/accounts/0x1/resource/0x1::account::Account`);
    results.accountStatus = accountRes.status;
  } catch (e) {
    results.accountError = e.message;
  }

  try {
    const blockRes = await fetch(`${BASE_URL}/v1/blocks/by_height/1000000?with_transactions=false`);
    results.blockStatus = blockRes.status;
  } catch (e) {
    results.blockError = e.message;
  }

  console.log(JSON.stringify(results, null, 2));
  const answered = results.chainId !== undefined && results.accountStatus === 200;
  console.log(`API answered: ${answered}`);
}

probe();

Reproducible Results Table for Node Sizing and API Probes

Use the following tables to record your measurements and compare them against documented values. The first table covers resource dimensions; the second covers API probes. Fill these in with your own observations to create a reproducible record.

For the sizing table, measure CPU cores, RAM, storage IOPS, and network throughput on your node. Compare against the current Aptos documentation minimum and recommended values. The verdict column should state whether your node meets, exceeds, or falls short of the baseline. The action column should record the next step, such as upgrading storage or adding RAM.

  • Dimension: CPU, RAM, storage, network.
  • Measured value: your observed metric.
  • Documented minimum: from current Aptos docs.
  • Documented recommended: from current Aptos docs.
  • Verdict: meets, exceeds, or falls short.
  • Action: upgrade, monitor, or accept.

API Probe Results Table Template

The API probe table helps you verify that the node is serving the expected endpoints. Record the endpoint, expected response, observed response, and any notes. This is useful when comparing node versions or configurations.

For example, the ledger-info endpoint should return a chain_id and ledger_version. The account resource endpoint should return a 200 status for a known account. The block-by-height endpoint should return a block for a recent height. If any endpoint fails, note the error and check the node logs.

  • Endpoint: /v1, /v1/accounts/{address}/resource/{resource}, /v1/blocks/by_height/{height}.
  • Expected: chain_id, ledger_version, 200 status, block data.
  • Observed: your actual response.
  • Notes: version differences, sync status, configuration.

Limitations and Trade-offs of Self-Hosting an Aptos Full Node

Aptos hardware guidance changes per release, so always reconcile against the current docs. A from-genesis sync takes a long time, while a snapshot sync is faster but must be trusted from its source. The REST API surface and available endpoints vary by node version and configuration, so what works on one node may not work on another.

Managed RPC providers remain more cost-effective than self-hosting for many read-heavy teams. If your workload is primarily reads, compare the total cost of ownership against RPC pricing and the Aptos RPC endpoints (RPC Assistant) page. Self-hosting still requires ongoing upgrades, disk monitoring, and API hardening. For teams that need control over data locality or custom indexing, self-hosting may still be justified.

  • Hardware guidance drifts per release; verify against current docs.
  • Snapshot sync trust: source must be reputable.
  • API surface varies by version and configuration.
  • Managed RPC often more cost-effective for read-heavy workloads.
  • Self-hosting requires upgrades, disk monitoring, API hardening.

Troubleshooting Common Aptos Full Node Issues

If the node is not syncing, check disk space first. The ledger and state snapshot grow continuously, and a full disk will halt sync. Next, verify network connectivity and peer count. If the node is syncing but the REST API is unresponsive, confirm the HTTP port is open and the API service is enabled in the node configuration.

If API calls return errors, check the node version and the endpoint path. Some endpoints may be deprecated or renamed. If the node is behind the chain head, the ledger_version will lag. Use the probe scripts above to identify which component is failing. For broader infrastructure patterns, see the OnFinality Learn hub and the API service overview.

  • Disk full: expand storage or prune if supported.
  • No peers: check network and firewall rules.
  • API unresponsive: verify HTTP port and service configuration.
  • Version mismatch: check endpoint paths against current docs.
  • Lagging ledger_version: node still syncing or under-resourced.

Next Steps: From Local Node to Production RPC

Once your node is synced and the REST API is verified, you can route traffic to it. For production, consider load balancing across multiple nodes, monitoring disk and CPU, and automating upgrades. If you prefer to avoid operational overhead, evaluate managed RPC providers. The Aptos RPC endpoints (RPC Assistant) page lists provider options, and RPC pricing helps compare costs.

For teams building on Aptos, the Aptos network page provides an overview of the network and available services. If you are also running other chains, the Sui full node RPC endpoint setup guide follows a similar pattern. Always keep your node software up to date and re-measure against the current Aptos documentation.

  • Route traffic after verifying API health.
  • Load balance multiple nodes for production.
  • Monitor disk, CPU, and network continuously.
  • Automate upgrades to match network releases.
  • Compare managed RPC costs against self-hosting.
RPC Assistant

Related RPC Assistant resources

Never Worry about Infrastructure Again

OnFinality takes away the heavy lifting of DevOps so you can build smarter and faster.

Get Started