sui.core Table: fact_balance_changes Type: Base Table
Fact table recording every token and coin balance change event on the Sui blockchain at the finest
granularity. Each row represents a single balance delta (positive or negative) for a specific owner,
coin type, and transaction, capturing the full flow of assets across wallets and contracts. Includes
object IDs, transaction context, and ownership metadata, supporting precise tracking of token
movements, portfolio changes, and treasury operations. Enables reconstruction of wallet balances,
detection of large transfers, and analysis of token velocity. Data is derived from transaction
execution effects and object state transitions, following Sui’s explicit ownership and versioning
model.
Data Coverage: This table contains data from January 2025 - Present (1.40B rows). It
relies on the balance changes object returned from the RPC response, which is why historical
backfill is not available.
Columns
| Column Name | Data Type | Description |
|---|---|---|
| CHECKPOINT_NUMBER | NUMBER | The sequential number of the checkpoint in which this record was finalized on the Sui blockchain. Checkpoints are consensus milestones that bundle and finalize multiple transactions, providing the primary unit of finality and recovery in Sui. Starts at 0 (genesis checkpoint) and increments by one for each new checkpoint. Used for time series analysis, transaction ordering, and measuring network throughput. Once a transaction is included in a checkpoint, it is permanently recorded and cannot be reverted. This dataset only includes checkpoints greater than or equal to 96605300. Example: 96605301. |
| BLOCK_TIMESTAMP | TIMESTAMP_NTZ | The network-agreed timestamp (in milliseconds since Unix epoch) when the checkpoint containing this record was finalized by Sui consensus. Represents the authoritative time of transaction finality, as determined by validator signatures. Used for temporal analytics, trend analysis, and aligning on-chain activity with real-world time. Example: ‘2024-06-01 12:34:56.789’. |
| TX_DIGEST | TEXT | A 32-byte cryptographic hash (Base58-encoded) uniquely identifying the transaction’s contents and structure. Serves as the primary key for transaction lookup, integrity verification, and cross-model joins. Enables cryptographic proof of transaction inclusion and supports lineage tracing across all Sui analytics. Example: ‘6Qk8…9Xz’. |
| TX_KIND | TEXT | The type of transaction executed. Values include ‘Programmable Transaction Block’ (PTB) for user-submitted transactions (up to 1,024 commands) and ‘System Transaction’ for validator/network operations. Determines execution path, available operations, and analytics grouping. Example: ‘ProgrammableTransactionBlock’. |
| TX_SENDER | TEXT | The 32-byte Sui address (hex with 0x prefix) that initiated and signed the transaction. Identifies the account responsible for the transaction and gas payment. Used for user activity tracking, wallet analytics, and authorization analysis. Example: ‘0xabc123…’. |
| MESSAGE_VERSION | TEXT | The version of the transaction data structure, supporting protocol evolution and backward compatibility. Currently uses ‘TransactionDataV1’. Ensures analytics remain robust across protocol upgrades. Example: ‘1’. |
| TX_SUCCEEDED | BOOLEAN | Boolean flag indicating transaction execution outcome. true = success, false = error. Used for outcome analysis, error monitoring, and success rate tracking. Example: true. |
| BALANCE_CHANGE_INDEX | NUMBER | Zero-based index ordering balance changes within a transaction. Tracks the sequence of balance modifications for accurate financial analysis and reconciliation. Example: 0. |
| COIN_TYPE | TEXT | Fully qualified Move type identifier for coins/tokens. Format: {package}::{module}::{struct}. Example: 0x2::sui::SUI for native SUI token. Essential for DeFi analytics, token classification, and cross-asset analysis. |
| AMOUNT | NUMBER | Token quantity in the smallest unit (MIST for SUI). Integer value; 1 SUI = 1,000,000,000 MIST. Used for precise financial calculations, balance tracking, and token flow analysis. Example: 1000000000. |
| OBJECT_OWNER | TEXT | Indicates how the object is owned and accessed. Types: Address-owned, Shared (consensus), Immutable (public), Object-owned. Determines access patterns and transaction requirements. Example: ‘Shared’. |
| ADDRESS_OWNER | TEXT | The 32-byte Sui address (hex with 0x prefix) that owns this object when it has address-based ownership. Address-owned objects are controlled by a specific account and can only be accessed by their owner, providing exclusive control and enabling efficient parallel processing since they don’t require consensus. Used for wallet analytics, ownership tracking, and transaction authorization analysis. When null, the object has a different ownership type (shared, immutable, or object-owned). Example: ‘0xabc123…’. |
| FACT_TRANSACTION_BALANCE_CHANGES_ID | TEXT | Surrogate key for the balance changes fact table. Generated unique identifier by combining transaction digest and balance change index, guaranteeing uniqueness for each balance change event. Critical for financial analysis, reconciliation, and tracking token flows at the most granular level. In Sui, this enables accurate wallet balance reconstruction, detection of large transfers, and portfolio analytics across all addresses and token types. |
| INSERTED_TIMESTAMP | TIMESTAMP_NTZ | Timestamp when the record was inserted into the analytics database. System-generated by the ETL pipeline, typically in TIMESTAMP_NTZ format. Used for data lineage, ETL monitoring, and freshness checks. In Sui analytics, this field is essential for tracking data ingestion latency, validating pipeline health, and supporting incremental model builds. Example: ‘2024-06-01 12:34:56.789’. |
| MODIFIED_TIMESTAMP | TIMESTAMP_NTZ | Timestamp when the record was last modified in the analytics database. System-generated for change tracking, data versioning, and consistency verification. In Sui, this supports incremental processing, late-arriving data correction, and auditability of analytics workflows. Used to monitor data staleness and trigger downstream updates. Example: ‘2024-06-01 12:34:56.789’. |