Overview

Overview

Trace Logo

Welcome to Trace — a powerful suite of debugging and development tools for the Movement L1 blockchain.

What is Trace?

Trace provides developers with essential tools to simulate, debug, and test smart contract transactions on the Movement network before deploying to mainnet. Built specifically for the Movement ecosystem, Trace helps you:

  • Simulate transactions before execution to preview results and catch errors
  • Fork networks to create isolated testing environments
  • Debug failed transactions with detailed error messages and gas analysis
  • Inspect state changes including events and resource modifications
  • Build and test complex DeFi flows without risking real assets

Key Features

🎮 Transaction Simulator

Simulate any entry or view function on Movement mainnet or testnet. See exactly what would happen without spending gas or modifying state.

  • Load any contract by address
  • Auto-discover modules and functions
  • Preview events, state changes, and return values
  • Detailed gas usage breakdown

🌐 VirtualNet

Create forked network sessions to test complex transaction sequences in isolation.

  • Fork from mainnet or testnet at any point
  • Execute multiple transactions in sequence
  • Fund test accounts with simulated tokens
  • Full transaction history per session

🔌 REST API

Integrate Trace directly into your development workflow with our comprehensive API.

  • Programmatic session management
  • CI/CD pipeline integration
  • Custom tooling support
  • Multi-language support (TypeScript, Python, cURL)

Quick Example

Here's how easy it is to simulate a transaction with Trace:

// Create a session
const session = await fetch("https://trace-api.example.com/sessions/init", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
        userId: "my-user",
        network: "movement-mainnet",
    }),
}).then(r => r.json());
 
// Fund your account
await fetch(`https://trace-api.example.com/sessions/${session.sessionId}/fund`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
        account: session.defaultAccount,
        amount: 100000000, // 1 APT
    }),
});
 
// Execute a transaction
const result = await fetch(`https://trace-api.example.com/sessions/${session.sessionId}/execute`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
        functionId: "0x1::coin::transfer",
        typeArguments: ["0x1::aptos_coin::AptosCoin"],
        args: ["address:0x2", "u64:1000000"],
    }),
}).then(r => r.json());
 
console.log("Success:", result.success);
console.log("Gas used:", result.gasUsed);

Getting Started

Ready to dive in? Here are your next steps:

Supported Networks

NetworkStatusDescription
Movement Mainnet✅ ProductionFull support for production simulations
Movement Testnet✅ ProductionTest your contracts on testnet
Custom RPC✅ SupportedConnect to any Movement-compatible node