EasonTestTerpLayerToken Holders
    Updated 2024-10-27
    -- 替换 `TOKEN_CONTRACT_ADDRESS` 为你要查询的 ERC-20 代币合约地址
    WITH transfers AS (
    SELECT
    block_number,
    tx_hash,
    decoded_log:from AS from_address,
    decoded_log:to AS to_address,
    CAST(decoded_log:value AS NUMERIC) AS value,
    FROM
    berachain.testnet.fact_decoded_event_logs
    WHERE
    contract_address = LOWER('0xb18CEC4160E5310e79AEf0d06a8df223A35599cD')
    AND event_name = 'Transfer'
    ) -- 计算余额:从转账记录累加代币余额
    ,
    balances AS (
    SELECT
    COALESCE(to_address, from_address) AS holder_address,
    SUM(
    CASE
    WHEN to_address IS NOT NULL THEN value
    ELSE -value
    END
    ) AS balance
    FROM
    transfers
    WHERE
    to_address IS NOT NULL
    OR from_address IS NOT NULL
    GROUP BY
    holder_address
    ) -- 过滤余额大于零的地址,并按余额降序排列
    SELECT
    holder_address,
    balance / POW(10, 18) AS balance -- 假设代币的小数位数是 18
    FROM
    QueryRunArchived: QueryRun has been archived