ETH Price: $2,297.27 (+3.58%)

Contract

0xA5ba093611bc2f7167BB069113f875542b2b3c78
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Perform Upkeep219350722025-02-27 3:45:597 days ago1740627959IN
0xA5ba0936...42b2b3c78
0 ETH0.001727621.372258
Perform Upkeep217838202025-02-06 0:16:1128 days ago1738800971IN
0xA5ba0936...42b2b3c78
0 ETH0.001424381.15372559
Perform Upkeep216282912025-01-15 7:08:1150 days ago1736924891IN
0xA5ba0936...42b2b3c78
0 ETH0.003869723.90903477
Perform Upkeep214705472024-12-24 6:29:1172 days ago1735021751IN
0xA5ba0936...42b2b3c78
0 ETH0.005297975.26092135
Perform Upkeep213615802024-12-09 1:12:5987 days ago1733706779IN
0xA5ba0936...42b2b3c78
0 ETH0.0195488916.99586045
Perform Upkeep212352242024-11-21 9:31:11105 days ago1732181471IN
0xA5ba0936...42b2b3c78
0 ETH0.0140796111.38712015
Perform Upkeep210473922024-10-26 4:24:47131 days ago1729916687IN
0xA5ba0936...42b2b3c78
0 ETH0.00425784.29239106
Perform Upkeep209264382024-10-09 7:07:47148 days ago1728457667IN
0xA5ba0936...42b2b3c78
0 ETH0.009131979.22474911
Perform Upkeep207982832024-09-21 10:13:59166 days ago1726913639IN
0xA5ba0936...42b2b3c78
0 ETH0.010350910.4576287
Perform Upkeep206774252024-09-04 13:09:35182 days ago1725455375IN
0xA5ba0936...42b2b3c78
0 ETH0.00821776.6469986
Perform Upkeep205758122024-08-21 8:30:11197 days ago1724229011IN
0xA5ba0936...42b2b3c78
0 ETH0.001929961.9459346
Perform Upkeep204732242024-08-07 0:50:59211 days ago1722991859IN
0xA5ba0936...42b2b3c78
0 ETH0.001975761.99613812
Perform Upkeep204017092024-07-28 1:17:35221 days ago1722129455IN
0xA5ba0936...42b2b3c78
0 ETH0.001932761.94875663
Perform Upkeep203264822024-07-17 13:15:23231 days ago1721222123IN
0xA5ba0936...42b2b3c78
0 ETH0.009351069.44747383
Perform Upkeep202079632024-07-01 0:02:59248 days ago1719792179IN
0xA5ba0936...42b2b3c78
0 ETH0.00334923.38373568
Perform Upkeep201011452024-06-16 1:44:11263 days ago1718502251IN
0xA5ba0936...42b2b3c78
0 ETH0.002382752.41305219
Perform Upkeep200176622024-06-04 9:48:35275 days ago1717494515IN
0xA5ba0936...42b2b3c78
0 ETH0.008178658.26591426
Perform Upkeep199576762024-05-27 0:37:47283 days ago1716770267IN
0xA5ba0936...42b2b3c78
0 ETH0.003871523.9207605
Perform Upkeep199083982024-05-20 3:16:47290 days ago1716175007IN
0xA5ba0936...42b2b3c78
0 ETH0.00303813.07051976
Perform Upkeep198180342024-05-07 11:57:23302 days ago1715083043IN
0xA5ba0936...42b2b3c78
0 ETH0.006150596.21621758
Perform Upkeep197385362024-04-26 9:07:23314 days ago1714122443IN
0xA5ba0936...42b2b3c78
0 ETH0.007306387.39930239
Perform Upkeep196740932024-04-17 8:47:11323 days ago1713343631IN
0xA5ba0936...42b2b3c78
0 ETH0.0126088712.76921907
Perform Upkeep195791262024-04-04 1:28:47336 days ago1712194127IN
0xA5ba0936...42b2b3c78
0 ETH0.0229871722.39356577
Perform Upkeep194604092024-03-18 8:10:59353 days ago1710749459IN
0xA5ba0936...42b2b3c78
0 ETH0.0164310822.16597945
Perform Upkeep194096462024-03-11 5:03:47360 days ago1710133427IN
0xA5ba0936...42b2b3c78
0 ETH0.0296353939.97894376
View all transactions

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
File 1 of 7 : BendKeeper.sol
// 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;
        }
    }
}

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

import "./KeeperBase.sol";
import "./interfaces/KeeperCompatibleInterface.sol";

abstract contract KeeperCompatible is KeeperBase, KeeperCompatibleInterface {}

File 3 of 7 : IFeeDistributor.sol
// 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);
}

File 4 of 7 : IFeeCollector.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.4;

interface IFeeCollector {
    function collect() external;
}

File 5 of 7 : KeeperBase.sol
// 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();
    _;
  }
}

File 6 of 7 : KeeperCompatibleInterface.sol
// 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;
}

File 7 of 7 : ILendPoolAddressesProvider.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.4;

interface ILendPoolAddressesProvider {
    function getLendPool() external view returns (address);
}

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

Contract Security Audit

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

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  ]

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.