FRAX Price: $0.84 (+4.47%)

Contract

0xcAA2bF0582aDbDBC0FB3e5785b030846dbfD470c

Overview

FRAX Balance | FXTL Balance

0 FRAX | 56 FXTL

FRAX Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
0x6080604075260542024-07-24 23:13:39554 days ago1721862819IN
 Create: GlyphDepositBalanceChecker
0 FRAX0.000003940.00100025
VIEW ADVANCED FILTER

Advanced mode:
Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GlyphDepositBalanceChecker

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 100000 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

// ====================================================================
// |     ______                   _______                             |
// |    / _____________ __  __   / ____(_____  ____ _____  ________   |
// |   / /_  / ___/ __ `| |/_/  / /_  / / __ \/ __ `/ __ \/ ___/ _ \  |
// |  / __/ / /  / /_/ _>  <   / __/ / / / / / /_/ / / / / /__/  __/  |
// | /_/   /_/   \__,_/_/|_|  /_/   /_/_/ /_/\__,_/_/ /_/\___/\___/   |
// |                                                                  |
// ====================================================================
// ================== GlyphDepositBalanceChecker ======================
// ====================================================================

interface IGlyphToken {
    function balanceOf(address user) external view returns (uint256);

    function totalSupply() external view returns (uint256);
}

/**
 * @title GlyphDepositBalanceChecker
 * @author Frax Finance
 * @notice The GlyphDepositBalanceChecker contract is used to retrieve the balances of addresses and tokens.
 */
contract GlyphDepositBalanceChecker {
    mapping (address glyphToken => address fraxToken) private glyphToFraxToken;

    constructor() {
        glyphToFraxToken[0x5E76562a265Aa595AD7377b11d17Cb0237970F20] = 0xFc00000000000000000000000000000000000001; // glyphFRAX => FRAX
        glyphToFraxToken[0x6D24Bfa1A4F68fA62dD7989D8961d1F0C251dC69] = address(0); // glyphfrxETH => frxETH
        glyphToFraxToken[0x471e51c7DAA092c07d1Fd75BAE492f3d76813620] = 0xFc00000000000000000000000000000000000002; // glyphFXS => FXS
        glyphToFraxToken[0xa6DD2773131e040e62E5a37482337536d7d00FB3] = 0xFC00000000000000000000000000000000000005; // glyphsfrxETH => sfrxETH
        glyphToFraxToken[0xF70b678FA8779F406D0e608B77E2290a8b4ff123] = 0xfc00000000000000000000000000000000000008; // glyphsFRAX => sFRAX
    }

    /**
     * @notice Used to get the token's balance for multiple addresses.
     * @param token Address of the token to check the balance of
     * @param addresses An array of addresses to check the balance of
     * @return result An array of the balances of the addresses
     */
    function tokenBalances(address token, address[] memory addresses) external view returns (uint256[] memory result) {
        result = new uint256[](addresses.length);
        IGlyphToken glyphToken = IGlyphToken(token);
        IGlyphToken fraxToken = IGlyphToken(glyphToFraxToken[token]);

        uint256 glyphTotalSupply = glyphToken.totalSupply();
        uint256 glyphFraxBalance;

        if (token == 0x6D24Bfa1A4F68fA62dD7989D8961d1F0C251dC69) {
            glyphFraxBalance = payable(token).balance;
        } else {
            glyphFraxBalance = fraxToken.balanceOf(token);
        }

        for (uint256 i = 0; i < addresses.length; ++i) {
            result[i] = glyphToken.balanceOf(addresses[i]) * glyphFraxBalance / glyphTotalSupply;
        }
    }

    /**
     * @notice Used to get the balances of multiple tokens for a single address.
     * @dev This function is only preserved for teh smart contract to maintain the same interface as the original
     *  BalanceChecker, but should not be called as it is hardcoded to simply return an empty array.
     * @param addr Address to check the balance of
     * @param tokens An array of tokens to check the balance of
     * @return result An array of the balances of the tokens
     */
    function addressBalances(address addr, address[] memory tokens) external view returns (uint256[] memory result) {
        uint256[] memory mockReturnValue;

        return mockReturnValue;
    }
}

Settings
{
  "remappings": [
    "frax-std/=lib/frax-standard-solidity/src/",
    "@eth-optimism/=lib/optimism/packages/",
    "lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/",
    "src/=src/",
    "@openzeppelin-4/=node_modules/@openzeppelin-4/",
    "@openzeppelin-5/=node_modules/@openzeppelin-5/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@rari-capital/=node_modules/@rari-capital/",
    "clones-with-immutable-args/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
    "ds-test/=lib/frax-standard-solidity/lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/frax-standard-solidity/lib/forge-std/src/",
    "frax-standard-solidity/=lib/frax-standard-solidity/src/",
    "kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
    "lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/",
    "openzeppelin-contracts-upgradeable/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts/",
    "optimism/=lib/optimism/",
    "safe-contracts/=lib/optimism/packages/contracts-bedrock/lib/safe-contracts/contracts/",
    "solady/=lib/optimism/packages/contracts-bedrock/lib/solady/",
    "solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/",
    "solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 100000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"addressBalances","outputs":[{"internalType":"uint256[]","name":"result","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"tokenBalances","outputs":[{"internalType":"uint256[]","name":"result","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50600060208190527fd5f21532267a747d3234fdbfa9af8660f81a7b55c51d203fa20ac08397bf3dbb80546001600160a01b031990811673fc00000000000000000000000000000000000001179091557fbd7b1be218c6199cd36726a6816081484f6505371dafc38ba2346cf313120cea8054821690557f16068366df820c05856afc69b2840213d1de98305e21388390cea12457687a7e8054821673fc000000000000000000000000000000000000021790557fe92ea3a7d23618e4ecf103107b7e3441d822bee2dabcf8478b8f1182aa4a4e788054821673fc0000000000000000000000000000000000000517905573f70b678fa8779f406d0e608b77e2290a8b4ff1239091527f17b7dd19779e36675f9d2c35a2435ef9900154f54a679f5dbfd245262e29374b805490911673fc000000000000000000000000000000000000081790556105dc806101666000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633ad206cc1461003b578063a2b1600c14610064575b600080fd5b61004e6100493660046103ab565b610077565b60405161005b91906104a1565b60405180910390f35b61004e6100723660046103ab565b61034a565b6060815167ffffffffffffffff8111156100935761009361037c565b6040519080825280602002602001820160405280156100bc578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff8085166000818152602081815260408083205481517f18160ddd000000000000000000000000000000000000000000000000000000008152915196975089969516949293926318160ddd926004808401939192918290030181865afa15801561013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016391906104e5565b9050600073ffffffffffffffffffffffffffffffffffffffff8716736d24bfa1a4f68fa62dd7989d8961d1f0c251dc69036101b6575073ffffffffffffffffffffffffffffffffffffffff861631610249565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528416906370a0823190602401602060405180830381865afa158015610222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024691906104e5565b90505b60005b865181101561033f5782828673ffffffffffffffffffffffffffffffffffffffff166370a082318a8581518110610285576102856104fe565b60200260200101516040518263ffffffff1660e01b81526004016102c5919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030691906104e5565b610310919061052d565b61031a919061056b565b86828151811061032c5761032c6104fe565b602090810291909101015260010161024c565b505050505092915050565b60605b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461037757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156103be57600080fd5b6103c783610353565b915060208084013567ffffffffffffffff808211156103e557600080fd5b818601915086601f8301126103f957600080fd5b81358181111561040b5761040b61037c565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561044e5761044e61037c565b60405291825284820192508381018501918983111561046c57600080fd5b938501935b828510156104915761048285610353565b84529385019392850192610471565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156104d9578351835292840192918401916001016104bd565b50909695505050505050565b6000602082840312156104f757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761034d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826105a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122014912ab257457f6a484c71188ed91fc73913a581c737f8a9fc3f57a4e5cd7ab764736f6c63430008170033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633ad206cc1461003b578063a2b1600c14610064575b600080fd5b61004e6100493660046103ab565b610077565b60405161005b91906104a1565b60405180910390f35b61004e6100723660046103ab565b61034a565b6060815167ffffffffffffffff8111156100935761009361037c565b6040519080825280602002602001820160405280156100bc578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff8085166000818152602081815260408083205481517f18160ddd000000000000000000000000000000000000000000000000000000008152915196975089969516949293926318160ddd926004808401939192918290030181865afa15801561013f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016391906104e5565b9050600073ffffffffffffffffffffffffffffffffffffffff8716736d24bfa1a4f68fa62dd7989d8961d1f0c251dc69036101b6575073ffffffffffffffffffffffffffffffffffffffff861631610249565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528416906370a0823190602401602060405180830381865afa158015610222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024691906104e5565b90505b60005b865181101561033f5782828673ffffffffffffffffffffffffffffffffffffffff166370a082318a8581518110610285576102856104fe565b60200260200101516040518263ffffffff1660e01b81526004016102c5919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030691906104e5565b610310919061052d565b61031a919061056b565b86828151811061032c5761032c6104fe565b602090810291909101015260010161024c565b505050505092915050565b60605b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461037757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156103be57600080fd5b6103c783610353565b915060208084013567ffffffffffffffff808211156103e557600080fd5b818601915086601f8301126103f957600080fd5b81358181111561040b5761040b61037c565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561044e5761044e61037c565b60405291825284820192508381018501918983111561046c57600080fd5b938501935b828510156104915761048285610353565b84529385019392850192610471565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156104d9578351835292840192918401916001016104bd565b50909695505050505050565b6000602082840312156104f757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761034d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826105a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122014912ab257457f6a484c71188ed91fc73913a581c737f8a9fc3f57a4e5cd7ab764736f6c63430008170033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.