Skip to main content
Schema Deprecation NoticeThe following tables will be deprecated and removed in a future release:
  • beacon.validator.balances_latest -> This will be replaced with beacon.raw.balances_latest
  • beacon.validator.balances -> This will be replaced with beacon.raw.balances_daily

beacon.validator.balances_latest

Effective Date: March 27, 2026
End of Life: April 14, 2026
Replacement: beacon.raw.balances_latest

Overview

The beacon.validator.balances_latest table will be removed on April 14, 2026. Please note that beacon.raw.balances_latest is a new table and will be available on April 14, 2026.

Migration Guide

Schema Comparison

Column NameOld Schema (beacon.validator.balances_latest)New Schema (beacon.raw.balances_latest)Change TypeNotes
SLOT_NUMBERIntegerIntegerNo changeSlot number remains the same
SLOT_TIMESTAMPTimestampTimestampNo changeTimestamp format unchanged
VALIDATOR_INDEXIntegerIntegerNo changeValidator index unchanged
RAW_BALANCEInteger (Wei)Integer (Wei)ReorderedNow appears BEFORE BALANCE column
BALANCE ⚠️Integer (Wei) - stored as 32787459477Float (ETH) - stored as 32.78744189BREAKINGChanged from Wei integer to ETH float
EFFECTIVE_BALANCE ⚠️Integer (Wei) - stored as 32000000000Float (ETH) - stored as 32BREAKINGChanged from Wei integer to ETH float
RAW_EFFECTIVE_BALANCEInteger (Wei)Integer (Wei)No changeRaw value unchanged
STATUSStringStringNo changeStatus values unchanged
PUBKEYString (hex)String (hex)No changePublic key format unchanged
WITHDRAWAL_CREDENTIALSString (hex)String (hex)No changeCredentials unchanged
WITHDRAWAL_PREFIX❌ Not presentString (hex) - 0x02NEWExtracted from withdrawal credentials
WITHDRAWAL_ADDRESS❌ Not presentString (hex) - 0x0d369bb...NEWExtracted withdrawal address
SLASHEDBooleanBooleanNo changeSlashing status unchanged
ACTIVATION_ELIGIBILITY_EPOCHIntegerIntegerNo changeEpoch values unchanged
ACTIVATION_EPOCHIntegerIntegerNo changeEpoch values unchanged
EXIT_EPOCHIntegerIntegerNo changeEpoch values unchanged
WITHDRAWABLE_EPOCHIntegerIntegerNo changeEpoch values unchanged
EXECUTION_OPTIMISTICBoolean (FALSE)String (empty) or BooleanBREAKINGType changed, may be empty string
FINALIZEDBoolean (FALSE)Boolean (TRUE)BREAKINGType may differ, default changed
UNIQUE_ID❌ Not presentString - validator_index-0NEWNew unique identifier field
_CREATED_ATTimestampTimestampNo changeCreation timestamp unchanged
_UPDATED_AT❌ Not presentTimestampNEWNew update tracking field
INDEXInteger - 0❌ RemovedREMOVEDReplaced by UNIQUE_ID

Breaking Changes Summary

Critical Breaking Changes - These require immediate attention in your queries:
  1. Column Order Changed: RAW_BALANCE now appears before BALANCE (affects SELECT * queries)
  2. Balance Data Types Changed:
    • BALANCE: Changed from Integer (Wei) to Float (ETH)
      • Old: 32787459477 (Wei)
      • New: 32.78744189 (ETH)
    • EFFECTIVE_BALANCE: Changed from Integer (Wei) to Float (ETH)
      • Old: 32000000000 (Wei)
      • New: 32 (ETH)
  3. New Columns Added:
    • WITHDRAWAL_PREFIX: Extracted prefix from withdrawal credentials
    • WITHDRAWAL_ADDRESS: Extracted address (no longer requires join with beacon.validator.index)
    • UNIQUE_ID: New unique identifier field
    • _UPDATED_AT: Timestamp tracking last update
  4. Removed Column:
    • INDEX: Removed, replaced by UNIQUE_ID
  5. Type Changes:
    • EXECUTION_OPTIMISTIC: May now be empty string instead of boolean
    • FINALIZED: Type consistency may vary

Quick Migration Examples

Basic query:
-- Before
SELECT validator_index, balance, status
FROM beacon.validator.balances_latest;

-- After
SELECT validator_index, raw_balance::numeric / 1e9 as balance_gwei, status
FROM beacon.raw.balances_latest;
With withdrawal address:
-- Before (required join)
SELECT b.validator_index, b.balance, i.withdrawal_address
FROM beacon.validator.balances_latest b
LEFT JOIN beacon.validator.index i ON b.validator_index = i.validator_index;

-- After (no join needed)
SELECT validator_index, raw_balance::numeric / 1e9 as balance_gwei, withdrawal_address
FROM beacon.raw.balances_latest;

beacon.validator.balances

Effective Date: March 27, 2026
End of Life: April 14, 2026
Replacement: beacon.raw.balances_daily

Overview

The beacon.validator.balances table will be removed on April 14, 2026. Please note that beacon.raw.balances_daily is a new table and will be available on April 14, 2026.

Migration Guide

Schema Comparison

Column NameOld Schema (beacon.validator.balances)New Schema (beacon.raw.balances_daily)Change TypeNotes
SLOT_NUMBERIntegerIntegerNo changeSlot number remains the same
SLOT_TIMESTAMPTimestampTimestampNo changeTimestamp format unchanged
VALIDATOR_INDEXIntegerIntegerNo changeValidator index unchanged
RAW_BALANCEInteger (Wei) - 32787279442Integer (Wei) - 32787279442ReorderedNow appears BEFORE BALANCE column
BALANCE ⚠️Float (ETH) - 32.787279442Float (ETH) - 32.787279442ReorderedColumn moved after RAW_BALANCE
EFFECTIVE_BALANCEFloat (ETH) - 32Float (ETH) - 32ReorderedColumn moved in order
RAW_EFFECTIVE_BALANCEInteger (Wei) - 32000000000Integer (Wei) - 32000000000ReorderedColumn moved in order
STATUSString - active_ongoingString - active_ongoingReorderedMoved after balance columns
PUBKEYString (hex)String (hex)No changePublic key format unchanged
WITHDRAWAL_CREDENTIALSString (hex)String (hex)No changeCredentials unchanged
WITHDRAWAL_PREFIXString (hex) - 0x02String (hex) - 0x02No changePrefix unchanged
WITHDRAWAL_ADDRESSString (hex)String (hex)No changeAddress unchanged
IS_SLASHED ⚠️Boolean - FALSE❌ RemovedREMOVEDReplaced by SLASHED
SLASHED ⚠️❌ Not presentBoolean - FALSENEWReplaces IS_SLASHED (column renamed)
ACTIVATION_ELIGIBILITY_EPOCHIntegerIntegerNo changeEpoch values unchanged
ACTIVATION_EPOCHIntegerIntegerNo changeEpoch values unchanged
EXIT_EPOCHIntegerIntegerNo changeEpoch values unchanged
WITHDRAWABLE_EPOCHIntegerIntegerNo changeEpoch values unchanged
EXECUTION_OPTIMISTIC❌ Not presentString (empty) or BooleanNEWNew field for optimistic execution status
FINALIZED❌ Not presentBoolean - TRUENEWNew field for finalization status
UNIQUE_ID ⚠️String - date-2026-03-27_validator_index-0String - date-2026-03-27-validator_index-0BREAKINGFormat changed: underscore removed between date and validator
_CREATED_ATTimestampTimestampNo changeCreation timestamp unchanged
_UPDATED_ATTimestampTimestampNo changeUpdate timestamp unchanged
_CHANGED_SINCE_FULL_REFRESHBoolean - TRUE❌ RemovedREMOVEDField no longer available

Breaking Changes Summary

Critical Breaking Changes - These require immediate attention in your queries:
  1. Column Order Changed: Multiple columns reordered (affects SELECT * queries)
    • RAW_BALANCE now appears before BALANCE
    • Balance-related columns grouped together at the beginning
    • STATUS moved after balance columns
  2. Column Renamed:
    • IS_SLASHEDSLASHED (column name changed)
  3. UNIQUE_ID Format Changed:
    • Old: date-2026-03-27_validator_index-0 (underscore separator)
    • New: date-2026-03-27-validator_index-0 (hyphen separator)
    • Impact: Breaks queries filtering or joining on UNIQUE_ID
  4. New Columns Added:
    • EXECUTION_OPTIMISTIC: New field for optimistic execution status
    • FINALIZED: New field indicating finalization status
  5. Removed Column:
    • _CHANGED_SINCE_FULL_REFRESH: No longer available
  6. Data Type Consistency:
    • Balance columns remain consistent (RAW as Integer Wei, computed as Float ETH)
    • No breaking type changes for existing columns

Non-Breaking Changes

  • Core validator fields (VALIDATOR_INDEX, PUBKEY, STATUS, etc.) maintain same data types
  • Withdrawal fields (WITHDRAWAL_PREFIX, WITHDRAWAL_ADDRESS) already present in old schema
  • Epoch fields remain as integers
  • Timestamp fields maintain same format
  • RAW_BALANCE and RAW_EFFECTIVE_BALANCE maintain Integer (Wei) format

Quick Migration Examples

Basic query:
-- Before
SELECT validator_index, balance, status
FROM beacon.validator.balances
WHERE slot_timestamp::date = '2026-03-27';

-- After
SELECT validator_index, balance, status
FROM beacon.raw.balances_daily
WHERE slot_timestamp::date = '2026-03-27';
Using IS_SLASHED (column renamed):
-- Before
SELECT validator_index, balance
FROM beacon.validator.balances
WHERE is_slashed = TRUE;

-- After
SELECT validator_index, balance
FROM beacon.raw.balances_daily
WHERE slashed = TRUE;

FAQ

Will queries break immediately?
No. The table remains available until April 14, 2026.
How do I convert Wei to ETH/Gwei?
raw_balance::numeric / 1e9
Why use strings for balances?
To prevent floating-point precision loss. Wei values can exceed safe float precision.

Support

Questions? Contact Allium Support at support@allium.so Related Tables:
  • beacon.raw.balances_latest (replacement)
  • beacon.validator.balances (historical daily snapshots)
  • beacon.validator.index (validator registry)

Document Version: 1.0 | Last Updated: March 27, 2026