npm.io
0.11.0 • Published 3d ago

@ton/retracer-core

Licence
MIT
Version
0.11.0
Deps
3
Size
2.2 MB
Vulns
0
Weekly
0
Stars
18

retracer-core

retracer-core is a core library for deep analysis, emulation, and tracing transactions on the TON blockchain. The library allows you to reproduce transaction execution in a local sandbox, obtain detailed reports on computation, actions, and money flow, and collect low-level information about blocks, accounts, and messages.

Features

  • Detailed transaction tracing: Emulate transaction execution in an environment identical to TON blockchain's mainnet.
  • Block and account data collection: Obtain account state snapshots, block configuration, and transaction history.
  • Work with libraries and contracts: Automatic loading and handling of exotic library cells.
  • Analysis of incoming/outgoing messages, balance calculations, and VM log collection.
  • Supports mainnet, testnet, and custom Toncenter-compatible endpoints.

Installation

yarn add @ton/retracer-core
# or
npm install @ton/retracer-core

Quick Start

import {RETRACE_MAINNET_NETWORK, retrace} from "@ton/retracer-core"

// Example: trace a transaction by its hash
const result = await retrace(RETRACE_MAINNET_NETWORK, "YOUR_TX_HASH")
console.log(result)

Main API

Transaction Tracing
import {
  RETRACE_MAINNET_NETWORK,
  RETRACE_TESTNET_NETWORK,
  findBaseTxByHash,
  retrace,
  retraceBaseTx,
} from "@ton/retracer-core"
import type {RetraceNetworkConfig} from "@ton/retracer-core"

/**
 * @param network - Toncenter-compatible network configuration
 * @param txHash - hex transaction hash
 * @returns Detailed execution report (TraceResult)
 */
const result1 = await retrace(RETRACE_MAINNET_NETWORK, txHash)
const result2 = await retrace(RETRACE_TESTNET_NETWORK, txHash)

const customNetwork: RetraceNetworkConfig = {
  testnet: true,
  v2BaseUrl: "https://example.com/api/v2",
  v3BaseUrl: "https://example.com/api/v3",
  toncenterApiKey: "optional-api-key",
}
const result3 = await retrace(customNetwork, txHash)

/**
 * Retrace a transaction described by base transaction information.
 * Base transaction info should be resolved through the same network first,
 * because it carries the Toncenter v3 shard block reference.
 */
const baseTx = await findBaseTxByHash(RETRACE_MAINNET_NETWORK, txHash)
if (baseTx === undefined) {
  throw new Error("Transaction not found")
}
const result4 = await retraceBaseTx(RETRACE_MAINNET_NETWORK, baseTx)
Helper Methods

All methods are exported from retracer-core and can be used independently:

  • findBaseTxByHash(network, txHash) — Find base transaction info by hash.
  • findRawTxByHash(network, baseTxInfo) — Get the raw transaction BoC and shard reference.
  • findShardBlockForTx(network, rawTx) — Find the shard block containing the transaction.
  • findMinLtInShardBlock(network, address, block, targetLt) — Find the earliest account transaction lt in the same shard block.
  • findAllTransactionsBetween(network, baseTx, minLt) — Get all account transactions in a given range.
  • getBlockConfig(network, mcSeqno) — Get global config for a masterchain block.
  • getBlockAccount(network, address, mcSeqno) — Get account snapshot before a masterchain block.
  • collectUsedLibraries(network, account, tx) — Collect used library cells.
  • prepareEmulator(blockConfig, libs, randSeed) — Prepare the emulator for transaction execution.
  • emulatePreviousTransactions(...) — Emulate a chain of previous transactions to restore the state.
  • computeFinalData(...) — Gather final data from emulation result.
  • findFinalActions(logs) — Extract final actions from VM logs.
  • shardAccountToBase64(shardAccount) — Serialize an account to base64 for the emulator.

Types

All main types (transactions, blocks, messages, tracing results) are exported from retracer-core and are fully typed (see src/types.ts).

Projects based on retracer-core

  • TxTracer — Web application for tracing and debugging any TON blockchain transactions

License

MIT TON Core, TON Studio

Keywords