More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 18538935 | 242 days ago | IN | 0 ETH | 0.00503182 | ||||
Redeem | 15745943 | 634 days ago | IN | 0 ETH | 0.00212403 | ||||
Redeem | 15549229 | 662 days ago | IN | 0 ETH | 0.00095092 | ||||
Redeem | 15295322 | 702 days ago | IN | 0 ETH | 0.00096894 | ||||
Redeem | 14740082 | 792 days ago | IN | 0 ETH | 0.0026936 | ||||
Redeem | 14276191 | 865 days ago | IN | 0 ETH | 0.00594662 | ||||
Redeem | 13949484 | 915 days ago | IN | 0 ETH | 0.02407118 | ||||
Redeem | 13853621 | 930 days ago | IN | 0 ETH | 0.00540237 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
18538935 | 242 days ago | 1.1077424 ETH | ||||
18538935 | 242 days ago | 1.1077424 ETH | ||||
15773797 | 630 days ago | 0.001 ETH | ||||
15773797 | 630 days ago | 0.001 ETH | ||||
15745943 | 634 days ago | 0.09892621 ETH | ||||
15745943 | 634 days ago | 0.09892621 ETH | ||||
15549229 | 662 days ago | 0.01220014 ETH | ||||
15549229 | 662 days ago | 0.01220014 ETH | ||||
15549144 | 662 days ago | 0.0122 ETH | ||||
15549144 | 662 days ago | 0.0122 ETH | ||||
15445635 | 678 days ago | 0.0949 ETH | ||||
15445635 | 678 days ago | 0.0949 ETH | ||||
15295322 | 702 days ago | 0.10845302 ETH | ||||
15295322 | 702 days ago | 0.10845302 ETH | ||||
15210059 | 715 days ago | 0.00452 ETH | ||||
15210059 | 715 days ago | 0.00452 ETH | ||||
15120460 | 729 days ago | 0.106 ETH | ||||
15120460 | 729 days ago | 0.106 ETH | ||||
15103433 | 732 days ago | 0.00455 ETH | ||||
15103433 | 732 days ago | 0.00455 ETH | ||||
14740082 | 792 days ago | 0.20021608 ETH | ||||
14740082 | 792 days ago | 0.20021608 ETH | ||||
14276191 | 865 days ago | 0.25011447 ETH | ||||
14276191 | 865 days ago | 0.25011447 ETH | ||||
13949484 | 915 days ago | 0.33000185 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
Contract Source Code (Solidity Standard Json-Input format)
// 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); } }
// 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())} } } } }
// 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); } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $3,042.11 | 0.0316 | $96.19 |
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.