Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 30 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Perform Upkeep | 21935072 | 7 days ago | IN | 0 ETH | 0.00172762 | ||||
Perform Upkeep | 21783820 | 28 days ago | IN | 0 ETH | 0.00142438 | ||||
Perform Upkeep | 21628291 | 50 days ago | IN | 0 ETH | 0.00386972 | ||||
Perform Upkeep | 21470547 | 72 days ago | IN | 0 ETH | 0.00529797 | ||||
Perform Upkeep | 21361580 | 87 days ago | IN | 0 ETH | 0.01954889 | ||||
Perform Upkeep | 21235224 | 105 days ago | IN | 0 ETH | 0.01407961 | ||||
Perform Upkeep | 21047392 | 131 days ago | IN | 0 ETH | 0.0042578 | ||||
Perform Upkeep | 20926438 | 148 days ago | IN | 0 ETH | 0.00913197 | ||||
Perform Upkeep | 20798283 | 166 days ago | IN | 0 ETH | 0.0103509 | ||||
Perform Upkeep | 20677425 | 182 days ago | IN | 0 ETH | 0.0082177 | ||||
Perform Upkeep | 20575812 | 197 days ago | IN | 0 ETH | 0.00192996 | ||||
Perform Upkeep | 20473224 | 211 days ago | IN | 0 ETH | 0.00197576 | ||||
Perform Upkeep | 20401709 | 221 days ago | IN | 0 ETH | 0.00193276 | ||||
Perform Upkeep | 20326482 | 231 days ago | IN | 0 ETH | 0.00935106 | ||||
Perform Upkeep | 20207963 | 248 days ago | IN | 0 ETH | 0.0033492 | ||||
Perform Upkeep | 20101145 | 263 days ago | IN | 0 ETH | 0.00238275 | ||||
Perform Upkeep | 20017662 | 275 days ago | IN | 0 ETH | 0.00817865 | ||||
Perform Upkeep | 19957676 | 283 days ago | IN | 0 ETH | 0.00387152 | ||||
Perform Upkeep | 19908398 | 290 days ago | IN | 0 ETH | 0.0030381 | ||||
Perform Upkeep | 19818034 | 302 days ago | IN | 0 ETH | 0.00615059 | ||||
Perform Upkeep | 19738536 | 314 days ago | IN | 0 ETH | 0.00730638 | ||||
Perform Upkeep | 19674093 | 323 days ago | IN | 0 ETH | 0.01260887 | ||||
Perform Upkeep | 19579126 | 336 days ago | IN | 0 ETH | 0.02298717 | ||||
Perform Upkeep | 19460409 | 353 days ago | IN | 0 ETH | 0.01643108 | ||||
Perform Upkeep | 19409646 | 360 days ago | IN | 0 ETH | 0.02963539 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x62682F4E...c4d39605e The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
BendKeeper
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.8.4; import {KeeperCompatibleInterface} from "@chainlink/contracts/src/v0.8/KeeperCompatible.sol"; import {IFeeDistributor} from "./interfaces/IFeeDistributor.sol"; import {IFeeCollector} from "./interfaces/IFeeCollector.sol"; contract BendKeeper is KeeperCompatibleInterface { uint256 public constant DAY = 86400; IFeeDistributor public feeDistributor; IFeeCollector public feeCollector; uint256 public nextDistributeTime; constructor(address _feeDistributorAddr, address _feeCollector) { feeDistributor = IFeeDistributor(_feeDistributorAddr); feeCollector = IFeeCollector(_feeCollector); nextDistributeTime = (block.timestamp / DAY) * DAY + DAY; } function checkUpkeep(bytes calldata) external view override returns (bool upkeepNeeded, bytes memory) { upkeepNeeded = block.timestamp >= nextDistributeTime; } function performUpkeep(bytes calldata) external override { if (block.timestamp >= nextDistributeTime) { feeCollector.collect(); feeDistributor.distribute(); nextDistributeTime += DAY; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./KeeperBase.sol"; import "./interfaces/KeeperCompatibleInterface.sol"; abstract contract KeeperCompatible is KeeperBase, KeeperCompatibleInterface {}
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.8.4; import {ILendPoolAddressesProvider} from "../interfaces/ILendPoolAddressesProvider.sol"; interface IFeeDistributor { event Distributed(uint256 time, uint256 tokenAmount); event Claimed( address indexed recipient, uint256 amount, uint256 claimEpoch, uint256 maxEpoch ); function lastDistributeTime() external view returns (uint256); function distribute() external; function claim(bool weth) external returns (uint256); function claimable(address _addr) external view returns (uint256); function addressesProvider() external view returns (ILendPoolAddressesProvider); function bendCollector() external view returns (address); }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.8.4; interface IFeeCollector { function collect() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract KeeperBase { error OnlySimulatedBackend(); /** * @notice method that allows it to be simulated via eth_call by checking that * the sender is the zero address. */ function preventExecution() internal view { if (tx.origin != address(0)) { revert OnlySimulatedBackend(); } } /** * @notice modifier that allows it to be simulated via eth_call by checking * that the sender is the zero address. */ modifier cannotExecute() { preventExecution(); _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface KeeperCompatibleInterface { /** * @notice method that is simulated by the keepers to see if any work actually * needs to be performed. This method does does not actually need to be * executable, and since it is only ever simulated it can consume lots of gas. * @dev To ensure that it is never called, you may want to add the * cannotExecute modifier from KeeperBase to your implementation of this * method. * @param checkData specified in the upkeep registration so it is always the * same for a registered upkeep. This can easily be broken down into specific * arguments using `abi.decode`, so multiple upkeeps can be registered on the * same contract and easily differentiated by the contract. * @return upkeepNeeded boolean to indicate whether the keeper should call * performUpkeep or not. * @return performData bytes that the keeper should call performUpkeep with, if * upkeep is needed. If you would like to encode data to decode later, try * `abi.encode`. */ function checkUpkeep(bytes calldata checkData) external returns (bool upkeepNeeded, bytes memory performData); /** * @notice method that is actually executed by the keepers, via the registry. * The data returned by the checkUpkeep simulation will be passed into * this method to actually be executed. * @dev The input to this method should not be trusted, and the caller of the * method should not even be restricted to any single registry. Anyone should * be able call it, and the input should be validated, there is no guarantee * that the data passed in is the performData returned from checkUpkeep. This * could happen due to malicious keepers, racing keepers, or simply a state * change while the performUpkeep transaction is waiting for confirmation. * Always validate the data passed in. * @param performData is the data which was passed back from the checkData * simulation. If it is encoded, it can easily be decoded into other types by * calling `abi.decode`. This data should not be trusted, and should be * validated against the contract's current state. */ function performUpkeep(bytes calldata performData) external; }
// SPDX-License-Identifier: agpl-3.0 pragma solidity 0.8.4; interface ILendPoolAddressesProvider { function getLendPool() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_feeDistributorAddr","type":"address"},{"internalType":"address","name":"_feeCollector","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"contract IFeeCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDistributor","outputs":[{"internalType":"contract IFeeDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextDistributeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c80630d43e8ad146100675780631d2ad5491461009757806327cfe856146100ae5780634585e33b146100b85780636e04ff0d146100cd578063c415b95c146100f7575b600080fd5b60005461007a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a060025481565b60405190815260200161008e565b6100a06201518081565b6100cb6100c63660046101f5565b61010a565b005b6100e96100db3660046101f5565b505060025442101590606090565b60405161008e929190610262565b60015461007a906001600160a01b031681565b60025442106101f157600160009054906101000a90046001600160a01b03166001600160a01b031663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561016357600080fd5b505af1158015610177573d6000803e3d6000fd5b5050600080546040805163e4fc6b6d60e01b815290516001600160a01b03909216945063e4fc6b6d9350600480820193929182900301818387803b1580156101be57600080fd5b505af11580156101d2573d6000803e3d6000fd5b5050505062015180600260008282546101eb91906102bf565b90915550505b5050565b60008060208385031215610207578182fd5b823567ffffffffffffffff8082111561021e578384fd5b818501915085601f830112610231578384fd5b81358181111561023f578485fd5b866020828501011115610250578485fd5b60209290920196919550909350505050565b8215158152600060206040818401528351806040850152825b818110156102975785810183015185820160600152820161027b565b818111156102a85783606083870101525b50601f01601f191692909201606001949350505050565b600082198211156102de57634e487b7160e01b81526011600452602481fd5b50019056fea2646970667358221220268a2e7892537e9080ec243f28bbcc60438ac7da21a2f35e1211e724b8ee466864736f6c63430008040033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.