Aptos RPC: Move Language, Parallel Execution, and REST API

By John Sullivan · January 1, 1970 · 4 min read

Aptos is a Layer 1 blockchain built by former Meta (Diem) engineers, and it's fundamentally different from the EVM chains most developers are used to. No JSON-RPC, no Solidity, no EVM. Instead, Aptos uses a REST API, the Move programming language, and a parallel execution engine called Block-STM. If you're coming from Ethereum, everything is different — and that's the point.

What Aptos actually is

Aptos is a high-throughput Layer 1 designed for sub-second finality and massive parallel transaction processing. It launched mainnet in October 2022 after years of development stemming from Meta's Diem project.

Key specs:

  • Chain ID: 1 (in Aptos terms, not EVM)
  • Block time: ~1 second
  • Finality: Sub-second (deterministic via AptosBFT)
  • Gas token: APT (8 decimals)
  • Consensus: AptosBFT (Jolteon-based proof-of-stake)
  • Execution: Block-STM (parallel execution engine)
  • Smart contracts: Move language (not Solidity)

The architecture is built around three core innovations:

  1. Move language: A resource-oriented programming language designed for safe digital asset management. Unlike Solidity's account model, Move treats assets as resources that can't be copied or accidentally discarded.

  2. Block-STM: A parallel execution engine that runs transactions optimistically in parallel and re-executes only those that conflict. This extracts parallelism without requiring developers to declare dependencies upfront.

  3. AptosBFT: A consensus mechanism based on Jolteon, providing deterministic finality in sub-second time. Once a block is committed, it's final — no reorgs, no probabilistic confirmation waits.

The API: REST, not JSON-RPC

Here's where most Ethereum developers get tripped up. Aptos doesn't use JSON-RPC. It uses a REST API (the Aptos fullnode API). If you're trying to use ethers.js or viem, you're in the wrong place.

# Get ledger info (chain state)
curl -s https://rpc.swiftnodes.io/rpc/aptos | jq .

# Get account info
curl -s https://rpc.swiftnodes.io/rpc/aptos/accounts/0x1 | jq .

# Get account resource (e.g., coin balance)
curl -s https://rpc.swiftnodes.io/rpc/aptos/accounts/0x1/resource/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> | jq .

The core endpoints you'll use:

Endpoint What it gives you
/ Ledger info (chain ID, epoch, block height, timestamp)
/accounts/{address} Account info (sequence number, authentication key)
/accounts/{address}/resource/{resource_type} Account resource (balances, module state)
/accounts/{address}/modules Deployed Move modules
/transactions Submit or query transactions
/blocks/by_height/{height} Block by height

Move language: Resources, not accounts

Move is the heart of Aptos, and it's unlike any smart contract language you've used. The key concept: resources.

In Solidity, balances are just numbers in a mapping. In Move, coins are resources that:

  • Can't be copied (no accidental inflation)
  • Can't be discarded (no accidental loss)
  • Must be explicitly moved or destroyed

Here's what a simple coin transfer looks like in Move:

public entry fun transfer<CoinType>(
    from: &signer,
    to: address,
    amount: u64
) acquires CoinStore {
    // Withdraw from sender
    let coins = Coin::withdraw<CoinType>(from, amount);
    // Deposit to recipient
    Coin::deposit<CoinType>(to, coins);
}

The type system ensures that coins can't be copied or dropped — it must be deposited somewhere. This eliminates entire classes of bugs that plague Solidity contracts.

Block-STM: Parallel execution without the hassle

Most blockchains execute transactions sequentially. If you have 100 transactions in a block, they run one after another. Aptos does something different.

Block-STM runs all transactions in a block optimistically in parallel. If two transactions conflict (they touch the same state), Block-STM detects the conflict and re-executes only the conflicting transactions. The result: you get parallel execution benefits without having to manually declare dependencies or worry about ordering.

For developers, this means:

  • Write contracts as if execution is sequential
  • The runtime handles parallelization automatically
  • High throughput without the complexity

How this compares to other chains

Aptos is often compared to Sui, which also uses Move. The difference: Aptos uses an account-based model (like Ethereum), while Sui uses an object-based model. Aptos is closer to what Ethereum developers expect, but with Move's safety guarantees.

Compared to Solana, Aptos offers similar throughput but with deterministic finality (Solana has probabilistic finality with reorg risk). Aptos also uses Move instead of Rust, which is more specialized for blockchain but has a steeper learning curve.

Compared to Cosmos chains, Aptos is a single monolithic chain (not an appchain framework). You're trading customization for simplicity and performance.

Querying account state

In Ethereum, you query balances with eth_getBalance. In Aptos, you query resources. Every piece of state is a resource stored under an account.

# Get APT balance for an account
curl -s "https://rpc.swiftnodes.io/rpc/aptos/accounts/0x1/resource/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>" | jq .

# Response includes:
# {
#   "data": {
#     "coin": { "value": "1000000000" },  // 10 APT (8 decimals)
#     "frozen": false,
#     "deposit_events": { ... },
#     "withdraw_events": { ... }
#   }
# }

The resource type is a fully qualified Move module path: 0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>. This is verbose but explicit — you know exactly what you're querying.

Transaction submission

Submitting transactions is also different. You don't just sign and send raw transactions. You:

  1. Build a transaction payload (specifying the Move function to call)
  2. Simulate the transaction (optional but recommended)
  3. Sign with your account's private key
  4. Submit via the /transactions endpoint

The Aptos TypeScript SDK handles most of this for you, but it's still a different workflow than Ethereum's eth_sendRawTransaction.

The short version

Aptos is a high-performance L1 using Move language and Block-STM parallel execution. Chain ID 1, ~1 second blocks, sub-second finality. REST API (not JSON-RPC), APT token (8 decimals). Smart contracts in Move (not Solidity).

For developers building high-throughput applications — DeFi, gaming, consumer apps — Aptos offers Ethereum-like account model with Move's safety guarantees and parallel execution performance.

For reliable Aptos REST API access across load-balanced nodes, grab a free API key and point your app at:

https://rpc.swiftnodes.io/rpc/aptos?key=YOUR_API_KEY
J
John Sullivan
Infrastructure Writer, SwiftNodes

John Sullivan covers RPC infrastructure, node operations, and multi-chain development at SwiftNodes — what it actually takes to keep endpoints fast, fresh, and reliable across EVM and non-EVM networks.

Try SwiftNodes free — multi-chain RPC across 75+ networks, flat-rate pricing, pay by card or crypto, no KYC. Get an API key in 30 seconds →