bitcoin.core Table: fact_transactions Type: View
Description
This table contains the canonical record of all confirmed Bitcoin transactions, providing comprehensive transaction-level data including block context, transaction identifiers, input/output details, fees, and raw transaction data. Each row represents a single transaction with complete UTXO information, fee calculations, and transaction metadata. The model aggregates data from upstream silver-layer models and includes computed fields such as transaction fees, input/output value totals, and coinbase status. All values are standardized to Bitcoin conventions (BTC and Satoshis), making this the primary source for Bitcoin transaction analytics.Key Use Cases
- Transaction flow analysis and UTXO tracing across the Bitcoin network
- Fee market analysis and blockspace utilization studies
- Address and entity behavior pattern recognition
- Forensic analysis and transaction graph reconstruction
- Network activity monitoring and transaction volume analysis
- Coinbase transaction analysis and mining reward tracking
- Cross-transaction correlation and clustering analysis
Important Relationships
- Primary source for all transaction-level analytics in the Bitcoin ecosystem
- Referenced by
core.fact_inputsandcore.fact_outputsfor detailed UTXO analysis - Supports
core.fact_clustered_transfersfor entity-level transfer tracking - Used by
core.dim_entity_clustersfor address clustering and entity identification - Provides transaction data for
stats.ez_core_metrics_hourlyaggregated metrics - Enables integration with
core.dim_labelsfor categorized transaction analysis
Commonly-used Fields
block_timestamp: Essential for time-series analysis and trend detectiontx_hash: Critical for transaction identification and verificationfee: Key metric for fee market analysis and transaction prioritizationinput_valueandoutput_value: Core fields for value flow analysisinputsandoutputs: Critical for UTXO tracing and transaction reconstructionis_coinbase: Important for distinguishing mining rewards from regular transactionssizeandvirtual_size: Essential for blockspace analysis and fee calculations
Columns
| Column Name | Data Type | Description |
|---|---|---|
| BLOCK_TIMESTAMP | TIMESTAMP_NTZ | The timestamp (TIMESTAMP_NTZ, UTC) of the block that contains this transaction. This value is inherited from the block header and represents when the block was mined and the transaction was confirmed on-chain. |
[ {"txid": "...", "vout": 0, "scriptSig": { ... }, "sequence": 4294967295 }, ... ] | |
INPUT_COUNT | NUMBER | The number of inputs (INTEGER) in the transaction (length of the inputs/vin
array).
Example: 3 | | INPUT_VALUE | NUMBER | The total value (FLOAT, BTC) of all inputs in this
transaction. Calculated as the sum of the value of each input, expressed in BTC.
Example: 0.12345678 | | INPUT_VALUE_SATS | NUMBER | The total value (INTEGER, Satoshis) of all
inputs or outputs in this transaction, depending on context. Satoshis are the smallest unit of
Bitcoin, with 1 BTC = 100,000,000 Satoshis. Using satoshis provides the highest precision for
Bitcoin value calculations and avoids floating-point arithmetic issues that can occur with decimal
BTC values. This field is essential for precise financial calculations, especially when dealing with
small amounts or when aggregating large numbers of transactions where precision is critical.
Example: 12345678 | | OUTPUTS | ARRAY | An array of output objects (ARRAY<STRUCT>) for this
transaction. Each object represents a transaction output (vout), including fields such as value,
scriptPubKey, and output index.
Example: [ {"value": 0.5, "n": 0, "scriptPubKey": { ... } }, ... ] | | OUTPUT_COUNT | NUMBER | The
number of outputs (INTEGER) in the transaction (length of the outputs/vout array).
Example: 2 | | OUTPUT_VALUE | NUMBER | The total value (FLOAT, BTC) of all outputs in this
transaction. Calculated as the sum of the value of each output, expressed in BTC.
Example: 0.12341111 | | OUTPUT_VALUE_SATS | NUMBER | The total value (INTEGER, Satoshis) of all
inputs or outputs in this transaction, depending on context. Satoshis are the smallest unit of
Bitcoin, with 1 BTC = 100,000,000 Satoshis. Using satoshis provides the highest precision for
Bitcoin value calculations and avoids floating-point arithmetic issues that can occur with decimal
BTC values. This field is essential for precise financial calculations, especially when dealing with
small amounts or when aggregating large numbers of transactions where precision is critical.
Example: 12345678 | | SIZE | NUMBER | The size (INTEGER, bytes) of the transaction as it appears
on-chain.
Example: 225 | | VIRTUAL_SIZE | TEXT | The virtual size (INTEGER, vbytes) of the transaction. For
SegWit transactions, this is the weight divided by 4, which may differ from the raw size in bytes.
Example: 141 | | WEIGHT | TEXT | The transaction’s weight (INTEGER, weight units). Calculated as
(strippedsize * 3) + totalsize, or equivalently, virtual_size * 4. Used for fee calculation and
block size limits in Bitcoin.
Example: 564 | | LOCK_TIME | TEXT | The lock time (INTEGER) for this transaction. Specifies the
earliest time or block height when the transaction may be added to the blockchain. If 0, the
transaction is valid immediately.
Example: 0 | | VERSION | NUMBER | The transaction version (INTEGER). Indicates the version of the
transaction format used. Most Bitcoin transactions use version 1 or 2.
Example: 2 | | FACT_TRANSACTIONS_ID | TEXT | A unique identifier (STRING or NUMBER) for the record,
used as a primary key for this table. Not a blockchain-native field.
Example: 123456789 | | INSERTED_TIMESTAMP | TIMESTAMP_LTZ | The timestamp (TIMESTAMP_NTZ, UTC) when
this record was initially created and inserted into the table.
Example: 2024-06-01 12:34:56.000 | | MODIFIED_TIMESTAMP | TIMESTAMP_LTZ | The timestamp
(TIMESTAMP_NTZ, UTC) when this record was last modified by an internal process.
Example: 2024-06-01 12:35:00.000 |