Skip to content

Storage Layout

DISCLAIMER // NFA // DYOR

This analysis is based on verified source code retrieved from Etherscan and observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code. It should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.

⊙ generated by robots | curated by humans

METADATA
Contract Address 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 (etherscan)
Network Ethereum Mainnet
Analysis Date 2025-12-13

Variables

SLOT VARIABLE NAME TYPE PURPOSE
0 _owner address Owner address from Ownable (160 bits)
1-3 ERC20 metadata string _name, _symbol (inherited)
4 _totalSupply uint256 Current circulating supply (ERC20)
5 _balances mapping(address => uint256) Token balances per address
6 _allowances mapping(address => mapping) Spending approvals
N/A TOTAL_SUPPLY uint256 Immutable, stored in contract bytecode
7 presaleWallet address Public state variable
8 presaleAllocation uint256 Public state variable

Immutable Variables

The TOTAL_SUPPLY variable is marked as immutable in Solidity. Immutable variables are stored in the contract bytecode, not in storage slots. This means they cannot be changed after deployment and cost less gas to read.


Variable Details

TOTAL_SUPPLY

ATTRIBUTE VALUE
Type uint256
Modifier public immutable
Location Contract bytecode (not storage)
Purpose Original maximum supply set at deployment

This variable stores the original total supply and never changes. The actual circulating supply (_totalSupply from ERC20) may be less if tokens have been burned.


presaleWallet

ATTRIBUTE VALUE
Type address
Modifier public
Purpose Address that received presale allocation at deployment

Historical record of the presale recipient. This address received presaleAllocation tokens during contract construction.


presaleAllocation

ATTRIBUTE VALUE
Type uint256
Modifier public
Purpose Amount allocated to presale wallet at deployment

Historical record of the presale amount. Provides transparency about initial token distribution.


Inherited from ERC20

VARIABLE TYPE PURPOSE
_balances mapping(address => uint256) Token balance for each address
_allowances mapping(address => mapping(address => uint256)) Approved spending amounts
_totalSupply uint256 Current circulating supply (decreases with burns)
_name string Token name ("Xcellar")
_symbol string Token symbol ("XCL")

Inherited from Ownable

VARIABLE TYPE PURPOSE
_owner address Current owner address (initially deployer)

Storage Diagram

graph TD
    subgraph Bytecode["Contract Bytecode (Immutable)"]
        TotalSup["TOTAL_SUPPLY: uint256<br/>Original maximum supply"]
    end

    subgraph Ownable["Ownable State (Slot 0)"]
        Owner["_owner: address<br/>Contract owner"]
    end

    subgraph ERC20["ERC20 State"]
        Supply["_totalSupply: uint256<br/>Circulating supply"]
        Balances["_balances: mapping<br/>address => uint256"]
        Allowances["_allowances: mapping<br/>owner => spender => amount"]
    end

    subgraph Custom["Custom State"]
        Presale["presaleWallet: address<br/>Presale recipient"]
        Alloc["presaleAllocation: uint256<br/>Presale amount"]
    end

    TotalSup -.->|"reference"| Supply
    Presale -.->|"initial recipient"| Balances

Verification Commands

Tip

Commands below use cast from the Foundry Toolkit. Set the RPC URL:

export ETH_RPC_URL=https://eth.llamarpc.com

Read TOTAL_SUPPLY (Immutable)

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "TOTAL_SUPPLY()(uint256)"

Read Current Total Supply

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "totalSupply()(uint256)"

Read Presale Wallet

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "presaleWallet()(address)"

Read Presale Allocation

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "presaleAllocation()(uint256)"

Read Owner

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "owner()(address)"

Read Balance of Address

cast call 0xCa5E50710F656F2e537cE2Fc8504dB6E24eD3515 "balanceOf(address)(uint256)" <ADDRESS>