ETH Price: $2,306.41 (+0.78%)

Contract

0xAc13Be461746E3D495AA11a13EB2395746d91174
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Redeem197543792024-04-28 14:21:35132 days ago1714314095IN
0xAc13Be46...746d91174
0 ETH0.0015548510.11505442
Redeem197290122024-04-25 1:09:59135 days ago1714007399IN
0xAc13Be46...746d91174
0 ETH0.000977747.15617487
Redeem185389232023-11-10 3:41:11302 days ago1699587671IN
0xAc13Be46...746d91174
0 ETH0.0049882737.68833815
Redeem175453722023-06-23 22:56:35441 days ago1687560995IN
0xAc13Be46...746d91174
0 ETH0.0025315216.93827916
Redeem165834962023-02-08 10:34:35577 days ago1675852475IN
0xAc13Be46...746d91174
0 ETH0.0034949323.38439906
Redeem157189552022-10-10 16:40:47697 days ago1665420047IN
0xAc13Be46...746d91174
0 ETH0.0053575834.23595312
Redeem153265742022-08-12 10:51:40757 days ago1660301500IN
0xAc13Be46...746d91174
0 ETH0.0019848414.24071264
Redeem153139222022-08-10 10:53:48759 days ago1660128828IN
0xAc13Be46...746d91174
0 ETH0.001243867.94911936
Redeem152830822022-08-05 15:14:13764 days ago1659712453IN
0xAc13Be46...746d91174
0 ETH0.0029579718.90344254
Redeem152501502022-07-31 12:10:55769 days ago1659269455IN
0xAc13Be46...746d91174
0 ETH0.0017418512.49732058
Redeem150962092022-07-07 15:22:23793 days ago1657207343IN
0xAc13Be46...746d91174
0 ETH0.0073302452.59257618
Redeem150960862022-07-07 14:56:37793 days ago1657205797IN
0xAc13Be46...746d91174
0 ETH0.013658597.99615725
Redeem150553132022-07-01 7:35:50799 days ago1656660950IN
0xAc13Be46...746d91174
0 ETH0.0028277418.07122853
Redeem150484112022-06-30 3:44:16800 days ago1656560656IN
0xAc13Be46...746d91174
0 ETH0.004694730
Redeem150441622022-06-29 8:45:57801 days ago1656492357IN
0xAc13Be46...746d91174
0 ETH0.0044479830.85066274
Redeem150441462022-06-29 8:42:17801 days ago1656492137IN
0xAc13Be46...746d91174
0 ETH0.005537135.3858111
Redeem150320932022-06-27 2:34:03803 days ago1656297243IN
0xAc13Be46...746d91174
0 ETH0.0055090734.1613911
Redeem150000462022-06-21 2:38:39809 days ago1655779119IN
0xAc13Be46...746d91174
0 ETH0.0025589315.86780344
Redeem149910442022-06-19 13:37:26811 days ago1655645846IN
0xAc13Be46...746d91174
0 ETH0.0025938218.60838995
Redeem149895162022-06-19 7:09:04811 days ago1655622544IN
0xAc13Be46...746d91174
0 ETH0.003129820
Redeem149872682022-06-18 21:47:22811 days ago1655588842IN
0xAc13Be46...746d91174
0 ETH0.0096567169.28435976
Redeem149418232022-06-11 2:28:51819 days ago1654914531IN
0xAc13Be46...746d91174
0 ETH0.0031740729.02436047
Redeem149418232022-06-11 2:28:51819 days ago1654914531IN
0xAc13Be46...746d91174
0 ETH0.0045420229.02436047
Redeem149418212022-06-11 2:28:22819 days ago1654914502IN
0xAc13Be46...746d91174
0 ETH0.0049491331.62586195
Redeem149418172022-06-11 2:26:44819 days ago1654914404IN
0xAc13Be46...746d91174
0 ETH0.0044414328.38160302
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
137557502021-12-07 1:36:551005 days ago1638841015  Contract Creation0 ETH
Loading...
Loading

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

Contract Name:
LPoolDelegator

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : LPoolDelegator.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.7.6;


import "../Adminable.sol";
import "../DelegatorInterface.sol";


/**
 * @title Compound's LPoolDelegator Contract
 * LTokens which wrap an EIP-20 underlying and delegate to an implementation
 * @author Compound
 */
contract LPoolDelegator is DelegatorInterface, Adminable {


    constructor() {
        admin = msg.sender;
    }
    function initialize(address underlying_,
        bool isWethPool_,
        address contoller_,
        uint256 baseRatePerYear,
        uint256 multiplierPerYear,
        uint256 jumpMultiplierPerYear,
        uint256 kink_,

        uint initialExchangeRateMantissa_,
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        address payable admin_,
        address implementation_) external onlyAdmin {
        require(implementation == address(0), "initialize once");
        // Creator of the contract is admin during initialization
        // First delegate gets to initialize the delegator (i.e. storage contract)
        delegateTo(implementation_, abi.encodeWithSignature("initialize(address,bool,address,uint256,uint256,uint256,uint256,uint256,string,string,uint8)",
            underlying_,
            isWethPool_,
            contoller_,
            baseRatePerYear,
            multiplierPerYear,
            jumpMultiplierPerYear,
            kink_,
            initialExchangeRateMantissa_,
            name_,
            symbol_,
            decimals_));

        implementation = implementation_;

        // Set the proper admin now that initialization is done
        admin = admin_;
    }
    /**
     * Called by the admin to update the implementation of the delegator
     * @param implementation_ The address of the new implementation for delegation
     */
    function setImplementation(address implementation_) public override onlyAdmin {
        address oldImplementation = implementation;
        implementation = implementation_;
        emit NewImplementation(oldImplementation, implementation);
    }


}

File 2 of 3 : DelegatorInterface.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.7.6;


abstract contract DelegatorInterface {
    /**
     * Implementation address for this contract
     */
    address public implementation;

    /**
     * Emitted when implementation is changed
     */
    event NewImplementation(address oldImplementation, address newImplementation);

    /**
     * Called by the admin to update the implementation of the delegator
     * @param implementation_ The address of the new implementation for delegation
     */
    function setImplementation(address implementation_) public virtual;


    /**
    * Internal method to delegate execution to another contract
    * @dev It returns to the external caller whatever the implementation returns or forwards reverts
    * @param callee The contract to delegatecall
    * @param data The raw data to delegatecall
    * @return The returned bytes from the delegatecall
    */
    function delegateTo(address callee, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returnData) = callee.delegatecall(data);
        assembly {
            if eq(success, 0) {revert(add(returnData, 0x20), returndatasize())}
        }
        return returnData;
    }

    /**
     * Delegates execution to the implementation contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     * @param data The raw data to delegatecall
     * @return The returned bytes from the delegatecall
     */
    function delegateToImplementation(bytes memory data) public returns (bytes memory) {
        return delegateTo(implementation, data);
    }

    /**
     * Delegates execution to an implementation contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     *  There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop.
     * @param data The raw data to delegatecall
     * @return The returned bytes from the delegatecall
     */
    function delegateToViewImplementation(bytes memory data) public view returns (bytes memory) {
        (bool success, bytes memory returnData) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", data));
        assembly {
            if eq(success, 0) {revert(add(returnData, 0x20), returndatasize())}
        }
        return abi.decode(returnData, (bytes));
    }
    /**
    * Delegates execution to an implementation contract
    * @dev It returns to the external caller whatever the implementation returns or forwards reverts
    */
    fallback() external payable {
        _fallback();
    }

    receive() external payable {
        _fallback();
    }

    function _fallback() internal {
        // delegate all other functions to current implementation
        if (msg.data.length > 0) {
            (bool success,) = implementation.delegatecall(msg.data);
            assembly {
                let free_mem_ptr := mload(0x40)
                returndatacopy(free_mem_ptr, 0, returndatasize())
                switch success
                case 0 {revert(free_mem_ptr, returndatasize())}
                default {return (free_mem_ptr, returndatasize())}
            }
        }
    }
}

File 3 of 3 : Adminable.sol
// SPDX-License-Identifier: BUSL-1.1


pragma solidity 0.7.6;

abstract contract Adminable {
    address payable public admin;
    address payable public pendingAdmin;
    address payable public developer;

    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);

    event NewAdmin(address oldAdmin, address newAdmin);
    constructor () {
        developer = msg.sender;
    }

    modifier onlyAdmin() {
        require(msg.sender == admin, "caller must be admin");
        _;
    }
    modifier onlyAdminOrDeveloper() {
        require(msg.sender == admin || msg.sender == developer, "caller must be admin or developer");
        _;
    }

    function setPendingAdmin(address payable newPendingAdmin) external virtual onlyAdmin {
        // Save current value, if any, for inclusion in log
        address oldPendingAdmin = pendingAdmin;
        // Store pendingAdmin with value newPendingAdmin
        pendingAdmin = newPendingAdmin;
        // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)
        emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);
    }

    function acceptAdmin() external virtual {
        require(msg.sender == pendingAdmin, "only pendingAdmin can accept admin");
        // Save current values for inclusion in log
        address oldAdmin = admin;
        address oldPendingAdmin = pendingAdmin;
        // Store admin with value pendingAdmin
        admin = pendingAdmin;
        // Clear the pending value
        pendingAdmin = address(0);
        emit NewAdmin(oldAdmin, admin);
        emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);
    }

}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToViewImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developer","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"bool","name":"isWethPool_","type":"bool"},{"internalType":"address","name":"contoller_","type":"address"},{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"jumpMultiplierPerYear","type":"uint256"},{"internalType":"uint256","name":"kink_","type":"uint256"},{"internalType":"uint256","name":"initialExchangeRateMantissa_","type":"uint256"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address payable","name":"admin_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100955760003560e01c80635c60da1b116100595780635c60da1b146102fc5780639d867f8014610311578063ca4b208b146104a4578063d784d426146104b9578063f851a440146104ec576100a4565b80630933c1ed146100ac5780630e18b681146101d257806326782247146101e75780634487152f146102185780634dd18bf5146102c9576100a4565b366100a4576100a2610501565b005b6100a2610501565b3480156100b857600080fd5b5061015d600480360360208110156100cf57600080fd5b810190602081018135600160201b8111156100e957600080fd5b8201836020820111156100fb57600080fd5b803590602001918460018302840111600160201b8311171561011c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061058c945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019757818101518382015260200161017f565b50505050905090810190601f1680156101c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101de57600080fd5b506100a26105ab565b3480156101f357600080fd5b506101fc6106ab565b604080516001600160a01b039092168252519081900360200190f35b34801561022457600080fd5b5061015d6004803603602081101561023b57600080fd5b810190602081018135600160201b81111561025557600080fd5b82018360208201111561026757600080fd5b803590602001918460018302840111600160201b8311171561028857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106ba945050505050565b3480156102d557600080fd5b506100a2600480360360208110156102ec57600080fd5b50356001600160a01b03166108d8565b34801561030857600080fd5b506101fc610991565b34801561031d57600080fd5b506100a260048036036101a081101561033557600080fd5b6001600160a01b038235811692602081013515159260408201359092169160608201359160808101359160a08201359160c08101359160e082013591908101906101208101610100820135600160201b81111561039157600080fd5b8201836020820111156103a357600080fd5b803590602001918460018302840111600160201b831117156103c457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561041657600080fd5b82018360208201111561042857600080fd5b803590602001918460018302840111600160201b8311171561044957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506109a0565b3480156104b057600080fd5b506101fc610bf0565b3480156104c557600080fd5b506100a2600480360360208110156104dc57600080fd5b50356001600160a01b0316610bff565b3480156104f857600080fd5b506101fc610cb7565b361561058a57600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461056a576040519150601f19603f3d011682016040523d82523d6000602084013e61056f565b606091505b505090506040513d6000823e818015610586573d82f35b3d82fd5b565b6000546060906105a5906001600160a01b031683610cc6565b92915050565b6002546001600160a01b031633146105f45760405162461bcd60e51b8152600401808060200182810382526022815260200180610d886022913960400191505060405180910390fd5b60018054600280546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600254604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a15050565b6002546001600160a01b031681565b6060600080306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b8381101561070a5781810151838201526020016106f2565b50505050905090810190601f1680156107375780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b602083106107925780518252601f199092019160209182019101610773565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146107f2576040519150601f19603f3d011682016040523d82523d6000602084013e6107f7565b606091505b5091509150600082141561080c573d60208201fd5b80806020019051602081101561082157600080fd5b8101908080516040519392919084600160201b82111561084057600080fd5b90830190602082018581111561085557600080fd5b8251600160201b81118282018810171561086e57600080fd5b82525081516020918201929091019080838360005b8381101561089b578181015183820152602001610883565b50505050905090810190601f1680156108c85780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b6001546001600160a01b0316331461092e576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6000546001600160a01b031681565b6001546001600160a01b031633146109f6576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b6000546001600160a01b031615610a46576040805162461bcd60e51b815260206004820152600f60248201526e696e697469616c697a65206f6e636560881b604482015290519081900360640190fd5b610bb3818e8e8e8e8e8e8e8e8e8e8e604051602401808c6001600160a01b031681526020018b151581526020018a6001600160a01b0316815260200189815260200188815260200187815260200186815260200185815260200180602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b83811015610ae6578181015183820152602001610ace565b50505050905090810190601f168015610b135780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015610b46578181015183820152602001610b2e565b50505050905090810190601f168015610b735780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166319134c6d60e31b1790529d50610cc69c50505050505050505050505050565b50600080546001600160a01b039283166001600160a01b031991821617909155600180549390921692169190911790555050505050505050505050565b6003546001600160a01b031681565b6001546001600160a01b03163314610c55576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b600080546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a15050565b6001546001600160a01b031681565b6060600080846001600160a01b0316846040518082805190602001908083835b60208310610d055780518252601f199092019160209182019101610ce6565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610d65576040519150601f19603f3d011682016040523d82523d6000602084013e610d6a565b606091505b50915091506000821415610d7f573d60208201fd5b94935050505056fe6f6e6c792070656e64696e6741646d696e2063616e206163636570742061646d696ea2646970667358221220c492dce528296adbf1260a27d2220e6da609842a20d7dff7c98d00e3c81e792964736f6c63430007060033

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
Loading...
Loading
[ 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.