ETH Price: $1,794.56 (+7.09%)

Contract

0x62c5AA8277E49B3EAd43dC67453ec91DC6826403

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw3274884672025-04-18 0:51:105 days ago1744937470IN
0x62c5AA82...DC6826403
0 ETH0.000002280.01
Withdraw3272992742025-04-17 11:40:536 days ago1744890053IN
0x62c5AA82...DC6826403
0 ETH0.000001750.01
Withdraw3272992182025-04-17 11:40:396 days ago1744890039IN
0x62c5AA82...DC6826403
0 ETH0.000002660.01
Withdraw3272991602025-04-17 11:40:256 days ago1744890025IN
0x62c5AA82...DC6826403
0 ETH0.000002730.01
Withdraw3272991012025-04-17 11:40:106 days ago1744890010IN
0x62c5AA82...DC6826403
0 ETH0.000005540.01
Repay3272988832025-04-17 11:39:186 days ago1744889958IN
0x62c5AA82...DC6826403
0 ETH0.000002150.01
Deposit3272988302025-04-17 11:39:056 days ago1744889945IN
0x62c5AA82...DC6826403
0 ETH0.000002540.01
Withdraw3213372792025-03-31 4:07:5523 days ago1743394075IN
0x62c5AA82...DC6826403
0 ETH0.00000370.01
Withdraw3213371752025-03-31 4:07:2923 days ago1743394049IN
0x62c5AA82...DC6826403
0 ETH0.000004970.01
Withdraw3199288622025-03-27 2:11:1427 days ago1743041474IN
0x62c5AA82...DC6826403
0 ETH0.000001290.01
Withdraw3199288252025-03-27 2:11:0527 days ago1743041465IN
0x62c5AA82...DC6826403
0 ETH0.000001120.01
Repay3199287762025-03-27 2:10:5227 days ago1743041452IN
0x62c5AA82...DC6826403
0 ETH0.000001480.01
Exec3199286982025-03-27 2:10:3327 days ago1743041433IN
0x62c5AA82...DC6826403
0 ETH0.000005980.01
Exec3199286452025-03-27 2:10:1927 days ago1743041419IN
0x62c5AA82...DC6826403
0 ETH0.000006320.01
Approve3199286012025-03-27 2:10:0827 days ago1743041408IN
0x62c5AA82...DC6826403
0 ETH0.000000990.01
Repay3199282392025-03-27 2:08:3827 days ago1743041318IN
0x62c5AA82...DC6826403
0 ETH0.000001510.01
Exec3199281362025-03-27 2:08:1227 days ago1743041292IN
0x62c5AA82...DC6826403
0 ETH0.000007850.01
Withdraw3199268552025-03-27 2:02:5127 days ago1743040971IN
0x62c5AA82...DC6826403
0 ETH0.000003060.01
Repay3199267152025-03-27 2:02:1627 days ago1743040936IN
0x62c5AA82...DC6826403
0 ETH0.000001510.01
Exec3199266412025-03-27 2:01:5827 days ago1743040918IN
0x62c5AA82...DC6826403
0 ETH0.00000610.01
Approve3199266202025-03-27 2:01:5327 days ago1743040913IN
0x62c5AA82...DC6826403
0 ETH0.000001130.01
Repay3199262832025-03-27 2:00:2827 days ago1743040828IN
0x62c5AA82...DC6826403
0 ETH0.000001560.01
Exec3199261912025-03-27 2:00:0527 days ago1743040805IN
0x62c5AA82...DC6826403
0 ETH0.000007620.01
Approve3199261602025-03-27 1:59:5727 days ago1743040797IN
0x62c5AA82...DC6826403
0 ETH0.000001070.01
Withdraw3199250932025-03-27 1:55:3027 days ago1743040530IN
0x62c5AA82...DC6826403
0 ETH0.000003640.01
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
2377497472024-07-30 21:19:44266 days ago1722374384
0x62c5AA82...DC6826403
0.23 ETH
2266395842024-06-28 15:10:12298 days ago1719587412
0x62c5AA82...DC6826403
0.001 ETH
2017301232024-04-16 20:40:42371 days ago1713300042
0x62c5AA82...DC6826403
0.0003 ETH
2015757702024-04-16 9:44:09372 days ago1713260649
0x62c5AA82...DC6826403
0.005 ETH
1944345012024-03-26 14:43:48393 days ago1711464228
0x62c5AA82...DC6826403
0.009 ETH
1944336812024-03-26 14:40:21393 days ago1711464021
0x62c5AA82...DC6826403
0.0035 ETH
1944333122024-03-26 14:38:48393 days ago1711463928
0x62c5AA82...DC6826403
0.003 ETH
1944326972024-03-26 14:36:16393 days ago1711463776
0x62c5AA82...DC6826403
0.003 ETH
1944306702024-03-26 14:27:47393 days ago1711463267
0x62c5AA82...DC6826403
0.003 ETH
1944304482024-03-26 14:26:51393 days ago1711463211
0x62c5AA82...DC6826403
0.01 ETH
1944301052024-03-26 14:25:26393 days ago1711463126
0x62c5AA82...DC6826403
0.0028 ETH
1944278542024-03-26 14:16:00393 days ago1711462560
0x62c5AA82...DC6826403
0.002 ETH
1944239082024-03-26 13:59:33393 days ago1711461573
0x62c5AA82...DC6826403
0.01 ETH
1864586232024-03-02 20:36:47416 days ago1709411807
0x62c5AA82...DC6826403
0.001 ETH
1847656942024-02-26 19:49:55421 days ago1708976995
0x62c5AA82...DC6826403
0.005 ETH
1847362802024-02-26 17:43:56421 days ago1708969436
0x62c5AA82...DC6826403
0.001 ETH
1815473542024-02-17 3:55:58431 days ago1708142158
0x62c5AA82...DC6826403
0.01 ETH
1796077572024-02-11 8:48:54437 days ago1707641334
0x62c5AA82...DC6826403
0.0004 ETH
1782164972024-02-07 3:33:09441 days ago1707276789
0x62c5AA82...DC6826403
0.0001 ETH
1765296162024-02-01 23:08:38446 days ago1706828918
0x62c5AA82...DC6826403
0.02 ETH
1752925022024-01-29 6:09:40450 days ago1706508580
0x62c5AA82...DC6826403
0.015 ETH
1752925012024-01-29 6:09:40450 days ago1706508580
0x62c5AA82...DC6826403
0.01 ETH
1752925012024-01-29 6:09:40450 days ago1706508580
0x62c5AA82...DC6826403
0.006 ETH
1752925002024-01-29 6:09:39450 days ago1706508579
0x62c5AA82...DC6826403
0.005 ETH
1752925002024-01-29 6:09:39450 days ago1706508579
0x62c5AA82...DC6826403
0.007 ETH
View All Internal Transactions

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0dDB1eA4...E94B1299B
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Proxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import {BaseProxy} from "./BaseProxy.sol";
import {Errors} from "../utils/Errors.sol";
import {StorageSlot} from "../utils/Storage.sol";
import {Helpers} from "../utils/Helpers.sol";

contract Proxy is BaseProxy {

    bytes32 private constant _IMPL_SLOT =
        bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1);

    event Upgraded(address indexed newImplementation);

    constructor(address _logic) {
        _setImplementation(_logic);
        _setAdmin(msg.sender);
    }

    function changeImplementation(address implementation) external adminOnly {
        _setImplementation(implementation);
    }

    function upgradeToAndCall(address implementation, bytes calldata data) external adminOnly {
        _upgradeToAndCall(implementation, data);
    }

    function getImplementation() public override view returns (address) {
        return StorageSlot.getAddressAt(_IMPL_SLOT);
    }

    function _setImplementation(address implementation) internal {
        if (implementation == address(0)) revert Errors.ZeroAddress();
        StorageSlot.setAddressAt(_IMPL_SLOT, implementation);
        emit Upgraded(implementation);
    }

    function _upgradeToAndCall(address implementation, bytes calldata data) internal {
        _setImplementation(implementation);
        if (data.length > 0) Helpers.functionDelegateCall(implementation, data);
    }
}

File 2 of 7 : IAccount.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IAccount {
    function activate() external;
    function deactivate() external;
    function addAsset(address token) external;
    function addBorrow(address token) external;
    function removeAsset(address token) external;
    function sweepTo(address toAddress) external;
    function removeBorrow(address token) external;
    function init(address accountManager) external;
    function hasAsset(address) external returns (bool);
    function assets(uint) external returns (address);
    function hasNoDebt() external view returns (bool);
    function activationBlock() external view returns (uint);
    function accountManager() external view returns (address);
    function getAssets() external view returns (address[] memory);
    function getBorrows() external view returns (address[] memory);
    function exec(
        address target,
        uint amt,
        bytes calldata data
    ) external returns (bool, bytes memory);
}

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function decimals() external view returns (uint8);
    function balanceOf(address _owner) external view returns (uint256 balance);
    function transfer(address _to, uint256 _value)
        external returns (bool success);
    function approve(address _spender, uint256 _value)
        external returns (bool success);
    function allowance(address _owner, address _spender)
        external view returns (uint256 remaining);
    function transferFrom(address _from, address _to, uint256 _value)
        external returns (bool success);
}

File 4 of 7 : BaseProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import {Errors} from "../utils/Errors.sol";
import {StorageSlot} from "../utils/Storage.sol";

abstract contract BaseProxy {

    bytes32 private constant _ADMIN_SLOT =
        bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1);

    event AdminChanged(address previousAdmin, address newAdmin);

    modifier adminOnly() {
        if (msg.sender != getAdmin()) revert Errors.AdminOnly();
        _;
    }

    function changeAdmin(address newAdmin) external adminOnly {
        _setAdmin(newAdmin);
    }

    function getAdmin() public view returns (address) {
        return StorageSlot.getAddressAt(_ADMIN_SLOT);
    }

    function _setAdmin(address admin) internal {
        if (admin == address(0)) revert Errors.ZeroAddress();
        emit AdminChanged(getAdmin(), admin);
        StorageSlot.setAddressAt(_ADMIN_SLOT, admin);
    }

    function getImplementation() public virtual returns (address);

    function _delegate(address impl) internal virtual {
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())

            let result := delegatecall(gas(), impl, ptr, calldatasize(), 0, 0)

            let size := returndatasize()
            returndatacopy(ptr, 0, size)

            switch result
            case 0 {
                revert(ptr, size)
            }
            default {
                return(ptr, size)
            }
        }
    }

    fallback() external payable {
        _delegate(getImplementation());
    }

    receive() external payable {
        _delegate(getImplementation());
    }
}

File 5 of 7 : Errors.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

library Errors {
    error AdminOnly();
    error MaxSupply();
    error ZeroShares();
    error ZeroAssets();
    error ZeroAddress();
    error MinimumShares();
    error ContractPaused();
    error OutstandingDebt();
    error AccountOwnerOnly();
    error TokenNotContract();
    error AddressNotContract();
    error ContractNotPaused();
    error LTokenUnavailable();
    error LiquidationFailed();
    error EthTransferFailure();
    error AccountManagerOnly();
    error RiskThresholdBreached();
    error FunctionCallRestricted();
    error AccountNotLiquidatable();
    error CollateralTypeRestricted();
    error IncorrectConstructorArgs();
    error ContractAlreadyInitialized();
    error AccountDeactivationFailure();
    error AccountInteractionFailure(address, address, uint, bytes);
}

File 6 of 7 : Helpers.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.17;

import {Errors} from "./Errors.sol";
import {IERC20} from "../interface/tokens/IERC20.sol";
import {IAccount} from "../interface/core/IAccount.sol";

/// @author Modified from Rari-Capital/Solmate
library Helpers {
    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 amt
    ) internal {
        if (!isContract(token)) revert Errors.TokenNotContract();
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, amt)
        );
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        address token,
        address to,
        uint256 amt
    ) internal {
        if (!isContract(token)) revert Errors.TokenNotContract();
        (bool success, bytes memory data) = address(token).call(
            abi.encodeWithSelector(IERC20.transfer.selector, to, amt)
        );
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TRANSFER_FAILED");
    }

    function safeTransferEth(address to, uint256 amt) internal {
        (bool success, ) = to.call{value: amt}(new bytes(0));
        if(!success) revert Errors.EthTransferFailure();
    }

    function balanceOf(address token, address owner) internal view returns (uint) {
        return IERC20(token).balanceOf(owner);
    }

    function withdrawEth(address account, address to, uint amt) internal {
        (bool success, ) = IAccount(account).exec(to, amt, new bytes(0));
        if(!success) revert Errors.EthTransferFailure();
    }

    function withdraw(address account, address to, address token, uint amt) internal {
        if (!isContract(token)) revert Errors.TokenNotContract();
        (bool success, bytes memory data) = IAccount(account).exec(token, 0,
                abi.encodeWithSelector(IERC20.transfer.selector, to, amt));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TRANSFER_FAILED");
    }

    function safeApprove(address account, address token, address spender, uint amt) internal {
        (bool success, bytes memory data) = IAccount(account).exec(token, 0,
            abi.encodeWithSelector(IERC20.approve.selector, spender, amt));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "APPROVE_FAILED");
    }

    function isContract(address token) internal view returns (bool) {
        return token.code.length > 0;
    }

    function functionDelegateCall(
        address target,
        bytes calldata data
    ) internal {
        if (!isContract(target)) revert Errors.AddressNotContract();
        (bool success, ) = target.delegatecall(data);
        require(success, "CALL_FAILED");
    }
}

File 7 of 7 : Storage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

library StorageSlot {
    function getAddressAt(bytes32 slot) internal view returns (address a) {
        assembly {
            a := sload(slot)
        }
    }

    function setAddressAt(bytes32 slot, address address_) internal {
        assembly {
            sstore(slot, address_)
        }
    }
}

Settings
{
  "remappings": [
    "controller/=lib/controller/src/",
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "oracle/=lib/oracle/src/",
    "solidity-bytes-utils/=lib/controller/lib/solidity-bytes-utils/contracts/",
    "solmate/=lib/solmate/src/",
    "v3-core/=lib/oracle/lib/v3-core/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AddressNotContract","type":"error"},{"inputs":[],"name":"AdminOnly","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"changeImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061004e5760003560e01c806317a68dd8146100705780634f1ef286146100905780636e9960c3146100b05780638f283970146100e1578063aaf10f421461010157610065565b366100655761006361005e610112565b61014b565b005b61006361005e610112565b34801561007c57600080fd5b5061006361008b3660046104ac565b610170565b34801561009c57600080fd5b506100636100ab3660046104ce565b6101b5565b3480156100bc57600080fd5b506100c56101fe565b6040516001600160a01b03909116815260200160405180910390f35b3480156100ed57600080fd5b506100636100fc3660046104ac565b61022e565b34801561010d57600080fd5b506100c55b600061014661014260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610551565b5490565b905090565b60405136600082376000803683855af43d806000843e81801561016c578184f35b8184fd5b6101786101fe565b6001600160a01b0316336001600160a01b0316146101a957604051633057182d60e21b815260040160405180910390fd5b6101b281610278565b50565b6101bd6101fe565b6001600160a01b0316336001600160a01b0316146101ee57604051633057182d60e21b815260040160405180910390fd5b6101f9838383610309565b505050565b600061014661014260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610551565b6102366101fe565b6001600160a01b0316336001600160a01b03161461026757604051633057182d60e21b815260040160405180910390fd5b6101b281610323565b9055565b5490565b6001600160a01b03811661029f5760405163d92e233d60e01b815260040160405180910390fd5b6102d26102cd60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610551565b829055565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61031283610278565b80156101f9576101f98383836103c3565b6001600160a01b03811661034a5760405163d92e233d60e01b815260040160405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103736101fe565b604080516001600160a01b03928316815291841660208301520160405180910390a16101b26102cd60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610551565b6001600160a01b0383163b6103eb57604051630a48311160e41b815260040160405180910390fd5b6000836001600160a01b03168383604051610407929190610578565b600060405180830381855af49150503d8060008114610442576040519150601f19603f3d011682016040523d82523d6000602084013e610447565b606091505b505090508061048a5760405162461bcd60e51b815260206004820152600b60248201526a10d0531317d1905253115160aa1b604482015260640160405180910390fd5b50505050565b80356001600160a01b03811681146104a757600080fd5b919050565b6000602082840312156104be57600080fd5b6104c782610490565b9392505050565b6000806000604084860312156104e357600080fd5b6104ec84610490565b9250602084013567ffffffffffffffff8082111561050957600080fd5b818601915086601f83011261051d57600080fd5b81358181111561052c57600080fd5b87602082850101111561053e57600080fd5b6020830194508093505050509250925092565b8181038181111561057257634e487b7160e01b600052601160045260246000fd5b92915050565b818382376000910190815291905056fea2646970667358221220f625db3343f43a1847c252e9bb88db63d93d6616701c6583d59ce4a2f8ddcf4a64736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ 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.