Source Code
Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| 0x60806040 | 7429348 | 556 days ago | IN | 0 FRAX | 0.00000468 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FraxswapCollateralBalanceChecker
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 100000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
// ====================================================================
// | ______ _______ |
// | / _____________ __ __ / ____(_____ ____ _____ ________ |
// | / /_ / ___/ __ `| |/_/ / /_ / / __ \/ __ `/ __ \/ ___/ _ \ |
// | / __/ / / / /_/ _> < / __/ / / / / / /_/ / / / / /__/ __/ |
// | /_/ /_/ \__,_/_/|_| /_/ /_/_/ /_/\__,_/_/ /_/\___/\___/ |
// | |
// ====================================================================
// =============== FraxswapCollateralBalanceChecker ===================
// ====================================================================
import { IFraxlendPair } from "./interfaces/IFraxlendPair.sol";
/**
* @title FraxswapCollateralBalanceChecker
* @author Frax Finance
* @notice The FraxswapCollateralBalanceChecker contract is used to retrieve the balances of addresses and tokens.
*/
contract FraxswapCollateralBalanceChecker {
constructor() {}
/**
* @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);
IFraxlendPair fraxlendPair = IFraxlendPair(token);
for (uint256 i = 0; i < addresses.length; ++i) {
( , , uint256 _userCollateralBalance) = fraxlendPair.getUserSnapshot(addresses[i]);
result[i] = _userCollateralBalance;
}
}
/**
* @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;
}
}// SPDX-License-Identifier: ISC
pragma solidity >=0.8.19;
interface IFraxlendPair {
function CIRCUIT_BREAKER_ADDRESS() external view returns (address);
function COMPTROLLER_ADDRESS() external view returns (address);
function DEPLOYER_ADDRESS() external view returns (address);
function FRAXLEND_WHITELIST_ADDRESS() external view returns (address);
function timelockAddress() external view returns (address);
function addCollateral(uint256 _collateralAmount, address _borrower) external;
function addInterest()
external
returns (uint256 _interestEarned, uint256 _feesAmount, uint256 _feesShare, uint64 _newRate);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function approvedBorrowers(address) external view returns (bool);
function approvedLenders(address) external view returns (bool);
function asset() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function borrowAsset(
uint256 _borrowAmount,
uint256 _collateralAmount,
address _receiver
) external returns (uint256 _shares);
function borrowerWhitelistActive() external view returns (bool);
function changeFee(uint32 _newFee) external;
function cleanLiquidationFee() external view returns (uint256);
function collateralContract() external view returns (address);
function currentRateInfo()
external
view
returns (
uint32 lastBlock,
uint32 feeToProtocolRate,
uint64 lastTimestamp,
uint64 ratePerSec,
uint64 fullUtilizationRate
);
function decimals() external view returns (uint8);
function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
function deposit(uint256 _amount, address _receiver) external returns (uint256 _sharesReceived);
function dirtyLiquidationFee() external view returns (uint256);
function exchangeRateInfo() external view returns (uint32 lastTimestamp, uint224 exchangeRate);
function getConstants()
external
pure
returns (
uint256 _LTV_PRECISION,
uint256 _LIQ_PRECISION,
uint256 _UTIL_PREC,
uint256 _FEE_PRECISION,
uint256 _EXCHANGE_PRECISION,
uint64 _DEFAULT_INT,
uint16 _DEFAULT_PROTOCOL_FEE,
uint256 _MAX_PROTOCOL_FEE
);
function getImmutableAddressBool()
external
view
returns (
address _assetContract,
address _collateralContract,
address _oracleMultiply,
address _oracleDivide,
address _rateContract,
address _DEPLOYER_CONTRACT,
address _COMPTROLLER_ADDRESS,
address _FRAXLEND_WHITELIST,
bool _borrowerWhitelistActive,
bool _lenderWhitelistActive
);
function getImmutableUint256()
external
view
returns (
uint256 _oracleNormalization,
uint256 _maxLTV,
uint256 _cleanLiquidationFee,
uint256 _maturityDate,
uint256 _penaltyRate
);
function getPairAccounting()
external
view
returns (
uint128 _totalAssetAmount,
uint128 _totalAssetShares,
uint128 _totalBorrowAmount,
uint128 _totalBorrowShares,
uint256 _totalCollateral
);
function getUserSnapshot(
address _address
) external view returns (uint256 _userAssetShares, uint256 _userBorrowShares, uint256 _userCollateralBalance);
function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
function lenderWhitelistActive() external view returns (bool);
function leveragedPosition(
address _swapperAddress,
uint256 _borrowAmount,
uint256 _initialCollateralAmount,
uint256 _amountCollateralOutMin,
address[] memory _path
) external returns (uint256 _totalCollateralBalance);
function liquidate(
uint128 _sharesToLiquidate,
uint256 _deadline,
address _borrower
) external returns (uint256 _collateralForLiquidator);
function maturityDate() external view returns (uint256);
function maxLTV() external view returns (uint256);
function maxOracleDelay() external view returns (uint256);
function name() external view returns (string memory);
function oracleDivide() external view returns (address);
function oracleMultiply() external view returns (address);
function oracleNormalization() external view returns (uint256);
function owner() external view returns (address);
function pause() external;
function paused() external view returns (bool);
function penaltyRate() external view returns (uint256);
function rateContract() external view returns (address);
function redeem(uint256 _shares, address _receiver, address _owner) external returns (uint256 _amountToReturn);
function removeCollateral(uint256 _collateralAmount, address _receiver) external;
function renounceOwnership() external;
function repayAsset(uint256 _shares, address _borrower) external returns (uint256 _amountToRepay);
function repayAssetWithCollateral(
address _swapperAddress,
uint256 _collateralToSwap,
uint256 _amountAssetOutMin,
address[] memory _path
) external returns (uint256 _amountAssetOut);
function setApprovedBorrowers(address[] memory _borrowers, bool _approval) external;
function setApprovedLenders(address[] memory _lenders, bool _approval) external;
function setMaxOracleDelay(uint256 _newDelay) external;
function setSwapper(address _swapper, bool _approval) external;
function setTimelock(address _newAddress) external;
function swappers(address) external view returns (bool);
function symbol() external view returns (string memory);
function toAssetAmount(uint256 _shares, bool _roundUp) external view returns (uint256);
function toAssetShares(uint256 _amount, bool _roundUp) external view returns (uint256);
function toBorrowAmount(uint256 _shares, bool _roundUp) external view returns (uint256);
function toBorrowShares(uint256 _amount, bool _roundUp) external view returns (uint256);
function totalAsset() external view returns (uint128 amount, uint128 shares);
function totalBorrow() external view returns (uint128 amount, uint128 shares);
function totalCollateral() external view returns (uint256);
function totalSupply() external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
function transferOwnership(address newOwner) external;
function unpause() external;
function updateExchangeRate() external returns (uint256 _exchangeRate);
function userBorrowShares(address) external view returns (uint256);
function userCollateralBalance(address) external view returns (uint256);
function version() external pure returns (uint256 _major, uint256 _minor, uint256 _patch);
function withdrawFees(uint128 _shares, address _recipient) external returns (uint256 _amountToTransfer);
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
608060405234801561001057600080fd5b506103d8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633ad206cc1461003b578063a2b1600c14610064575b600080fd5b61004e61004936600461020b565b61007a565b60405161005b9190610301565b60405180910390f35b61004e61007236600461020b565b606092915050565b6060815167ffffffffffffffff811115610096576100966101dc565b6040519080825280602002602001820160405280156100bf578160200160208202803683370190505b5090508260005b83518110156101ab5760008273ffffffffffffffffffffffffffffffffffffffff1663b68d0a098684815181106100ff576100ff610345565b60200260200101516040518263ffffffff1660e01b815260040161013f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b606060405180830381865afa15801561015c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101809190610374565b925050508084838151811061019757610197610345565b6020908102919091010152506001016100c6565b505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101d757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021e57600080fd5b610227836101b3565b915060208084013567ffffffffffffffff8082111561024557600080fd5b818601915086601f83011261025957600080fd5b81358181111561026b5761026b6101dc565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102ae576102ae6101dc565b6040529182528482019250838101850191898311156102cc57600080fd5b938501935b828510156102f1576102e2856101b3565b845293850193928501926102d1565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156103395783518352928401929184019160010161031d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060006060848603121561038957600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122097d284ff4efbcbac060987d1565bc75b4ff5b4a6af04a1af8bae05542f4cc48964736f6c63430008170033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c80633ad206cc1461003b578063a2b1600c14610064575b600080fd5b61004e61004936600461020b565b61007a565b60405161005b9190610301565b60405180910390f35b61004e61007236600461020b565b606092915050565b6060815167ffffffffffffffff811115610096576100966101dc565b6040519080825280602002602001820160405280156100bf578160200160208202803683370190505b5090508260005b83518110156101ab5760008273ffffffffffffffffffffffffffffffffffffffff1663b68d0a098684815181106100ff576100ff610345565b60200260200101516040518263ffffffff1660e01b815260040161013f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b606060405180830381865afa15801561015c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101809190610374565b925050508084838151811061019757610197610345565b6020908102919091010152506001016100c6565b505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101d757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021e57600080fd5b610227836101b3565b915060208084013567ffffffffffffffff8082111561024557600080fd5b818601915086601f83011261025957600080fd5b81358181111561026b5761026b6101dc565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102ae576102ae6101dc565b6040529182528482019250838101850191898311156102cc57600080fd5b938501935b828510156102f1576102e2856101b3565b845293850193928501926102d1565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156103395783518352928401929184019160010161031d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060006060848603121561038957600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122097d284ff4efbcbac060987d1565bc75b4ff5b4a6af04a1af8bae05542f4cc48964736f6c63430008170033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.