ETH Price: $2,510.52 (-1.18%)

Contract

0x266d1020A84B9E8B0ed320831838152075F8C4cA
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Execute203778312024-07-24 17:15:4737 days ago1721841347IN
Interest Protocol: Token
0 ETH0.000645764.97754585
Cast Vote203610832024-07-22 9:09:3539 days ago1721639375IN
Interest Protocol: Token
0 ETH0.000359054.05273571
Cast Vote203421762024-07-19 17:49:3542 days ago1721411375IN
Interest Protocol: Token
0 ETH0.000504145.69045468
Queue203356252024-07-18 19:54:1143 days ago1721332451IN
Interest Protocol: Token
0 ETH0.001141528.9234363
Cast Vote203348222024-07-18 17:12:3543 days ago1721322755IN
Interest Protocol: Token
0 ETH0.0020029818.95056833
Propose203214662024-07-16 20:28:5944 days ago1721161739IN
Interest Protocol: Token
0 ETH0.0054990411.17273988
Cast Vote203051572024-07-14 13:51:3547 days ago1720965095IN
Interest Protocol: Token
0 ETH0.000206142.32685566
Cast Vote202920762024-07-12 17:59:4749 days ago1720807187IN
Interest Protocol: Token
0 ETH0.000369043.49156777
Propose202785502024-07-10 20:40:4750 days ago1720644047IN
Interest Protocol: Token
0 ETH0.001738183.78687513
Execute202635692024-07-08 18:26:4753 days ago1720463207IN
Interest Protocol: Token
0 ETH0.000648685
Queue202416072024-07-05 16:50:1156 days ago1720198211IN
Interest Protocol: Token
0 ETH0.000894126.98946348
Cast Vote201998982024-06-29 21:02:2361 days ago1719694943IN
Interest Protocol: Token
0 ETH0.000177192
Cast Vote201983782024-06-29 15:57:1162 days ago1719676631IN
Interest Protocol: Token
0 ETH0.00019492.2
Cast Vote201911222024-06-28 15:36:2363 days ago1719588983IN
Interest Protocol: Token
0 ETH0.000845568
Propose201757232024-06-26 11:59:5965 days ago1719403199IN
Interest Protocol: Token
0 ETH0.002743595.97771079
Execute200704642024-06-11 18:45:3580 days ago1718131535IN
Interest Protocol: Token
0 ETH0.0063239110.74009571
Execute200426852024-06-07 21:38:3583 days ago1717796315IN
Interest Protocol: Token
0 ETH0.001037888
Queue200135202024-06-03 19:56:2388 days ago1717444583IN
Interest Protocol: Token
0 ETH0.001002867.83957639
Queue200134072024-06-03 19:33:4788 days ago1717443227IN
Interest Protocol: Token
0 ETH0.002108659.05253745
Cast Vote199843452024-05-30 18:08:3592 days ago1717092515IN
Interest Protocol: Token
0 ETH0.0021769424.57184315
Cast Vote199501332024-05-25 23:20:2396 days ago1716679223IN
Interest Protocol: Token
0 ETH0.000307513.47101559
Cast Vote199501262024-05-25 23:18:5996 days ago1716679139IN
Interest Protocol: Token
0 ETH0.00041123.67629194
Cast Vote199496902024-05-25 21:51:3596 days ago1716673895IN
Interest Protocol: Token
0 ETH0.000387834.37765532
Cast Vote199486902024-05-25 18:30:2397 days ago1716661823IN
Interest Protocol: Token
0 ETH0.000593195.61233986
Cast Vote199428102024-05-24 22:46:1197 days ago1716590771IN
Interest Protocol: Token
0 ETH0.000478975.40637413
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GovernorCharlieDelegator

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : GovernorDelegator.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
pragma experimental ABIEncoderV2;

import "./IGovernor.sol";
import "./GovernorStorage.sol";

contract GovernorCharlieDelegator is GovernorCharlieDelegatorStorage, GovernorCharlieEvents, IGovernorCharlieDelegator {
  constructor(
    address ipt_,
    address implementation_,
    uint256 votingPeriod_,
    uint256 votingDelay_,
    uint256 proposalThreshold_,
    uint256 proposalTimelockDelay_,
    uint256 quorumVotes_,
    uint256 emergencyQuorumVotes_,
    uint256 emergencyVotingPeriod_,
    uint256 emergencyTimelockDelay_
  ) {
    delegateTo(
      implementation_,
      abi.encodeWithSignature(
        "initialize(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)",
        ipt_,
        votingPeriod_,
        votingDelay_,
        proposalThreshold_,
        proposalTimelockDelay_,
        quorumVotes_,
        emergencyQuorumVotes_,
        emergencyVotingPeriod_,
        emergencyTimelockDelay_
      )
    );
    address oldImplementation = implementation;
    implementation = implementation_;
    emit NewImplementation(oldImplementation, implementation);
  }

  /**
   * @notice Called by itself via governance to update the implementation of the delegator
   * @param implementation_ The address of the new implementation for delegation
   */
  function _setImplementation(address implementation_) public override {
    require(msg.sender == address(this), "governance proposal required");
    require(implementation_ != address(0), "invalid implementation address");

    address oldImplementation = implementation;
    implementation = implementation_;

    emit NewImplementation(oldImplementation, implementation);
  }

  /**
   * @notice 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
   */
  function delegateTo(address callee, bytes memory data) internal {
    //solhint-disable-next-line avoid-low-level-calls
    (bool success, bytes memory returnData) = callee.delegatecall(data);
    //solhint-disable-next-line no-inline-assembly
    assembly {
      if eq(success, 0) {
        revert(add(returnData, 0x20), returndatasize())
      }
    }
  }

  /**
   * @dev Delegates execution to an implementation contract.
   * It returns to the external caller whatever the implementation returns
   * or forwards reverts.
   */
  // solhint-disable-next-line no-complex-fallback
  fallback() external payable override {
    // delegate all other functions to current implementation
    //solhint-disable-next-line avoid-low-level-calls
    (bool success, ) = implementation.delegatecall(msg.data);

    //solhint-disable-next-line no-inline-assembly
    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())
      }
    }
  }

  receive() external payable override {}
}

File 2 of 5 : IGovernor.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./Structs.sol";

/// @title interface to interact with TokenDelgator
interface IGovernorCharlieDelegator {
  function _setImplementation(address implementation_) external;

  fallback() external payable;

  receive() external payable;
}

/// @title interface to interact with TokenDelgate
interface IGovernorCharlieDelegate {
  function initialize(
    address ipt_,
    uint256 votingPeriod_,
    uint256 votingDelay_,
    uint256 proposalThreshold_,
    uint256 proposalTimelockDelay_,
    uint256 quorumVotes_,
    uint256 emergencyQuorumVotes_,
    uint256 emergencyVotingPeriod_,
    uint256 emergencyTimelockDelay_
  ) external;

  function propose(
    address[] memory targets,
    uint256[] memory values,
    string[] memory signatures,
    bytes[] memory calldatas,
    string memory description,
    bool emergency
  ) external returns (uint256);

  function queue(uint256 proposalId) external;

  function execute(uint256 proposalId) external payable;

  function executeTransaction(
    address target,
    uint256 value,
    string memory signature,
    bytes memory data,
    uint256 eta
  ) external payable;

  function cancel(uint256 proposalId) external;

  function getActions(uint256 proposalId)
    external
    view
    returns (
      address[] memory targets,
      uint256[] memory values,
      string[] memory signatures,
      bytes[] memory calldatas
    );

  function getReceipt(uint256 proposalId, address voter) external view returns (Receipt memory);

  function state(uint256 proposalId) external view returns (ProposalState);

  function castVote(uint256 proposalId, uint8 support) external;

  function castVoteWithReason(
    uint256 proposalId,
    uint8 support,
    string calldata reason
  ) external;

  function castVoteBySig(
    uint256 proposalId,
    uint8 support,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external;

  function isWhitelisted(address account) external view returns (bool);

  function _setDelay(uint256 proposalTimelockDelay_) external;

  function _setEmergencyDelay(uint256 emergencyTimelockDelay_) external;

  function _setVotingDelay(uint256 newVotingDelay) external;

  function _setVotingPeriod(uint256 newVotingPeriod) external;

  function _setEmergencyVotingPeriod(uint256 newEmergencyVotingPeriod) external;

  function _setProposalThreshold(uint256 newProposalThreshold) external;

  function _setQuorumVotes(uint256 newQuorumVotes) external;

  function _setEmergencyQuorumVotes(uint256 newEmergencyQuorumVotes) external;

  function _setWhitelistAccountExpiration(address account, uint256 expiration) external;

  function _setWhitelistGuardian(address account) external;
}

/// @title interface which contains all events emitted by delegator & delegate
interface GovernorCharlieEvents {
  /// @notice An event emitted when a new proposal is created
  event ProposalCreated(
    uint256 indexed id,
    address indexed proposer,
    address[] targets,
    uint256[] values,
    string[] signatures,
    bytes[] calldatas,
    uint256 indexed startBlock,
    uint256 endBlock,
    string description
  );

  /// @notice An event emitted when a vote has been cast on a proposal
  /// @param voter The address which casted a vote
  /// @param proposalId The proposal id which was voted on
  /// @param support Support value for the vote. 0=against, 1=for, 2=abstain
  /// @param votes Number of votes which were cast by the voter
  /// @param reason The reason given for the vote by the voter
  event VoteCast(address indexed voter, uint256 indexed proposalId, uint8 support, uint256 votes, string reason);

  /// @notice An event emitted when a proposal has been canceled
  event ProposalCanceled(uint256 indexed id);

  /// @notice An event emitted when a proposal has been queued in the Timelock
  event ProposalQueued(uint256 indexed id, uint256 eta);

  /// @notice An event emitted when a proposal has been executed in the Timelock
  event ProposalExecuted(uint256 indexed id);

  /// @notice An event emitted when the voting delay is set
  event VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay);

  /// @notice An event emitted when the voting period is set
  event VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod);

  /// @notice An event emitted when the emergency voting period is set
  event EmergencyVotingPeriodSet(uint256 oldEmergencyVotingPeriod, uint256 emergencyVotingPeriod);

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

  /// @notice Emitted when proposal threshold is set
  event ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold);

  /// @notice Emitted when pendingAdmin is changed
  event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);

  /// @notice Emitted when pendingAdmin is accepted, which means admin is updated
  event NewAdmin(address oldAdmin, address newAdmin);

  /// @notice Emitted when whitelist account expiration is set
  event WhitelistAccountExpirationSet(address account, uint256 expiration);

  /// @notice Emitted when the whitelistGuardian is set
  event WhitelistGuardianSet(address oldGuardian, address newGuardian);

  /// @notice Emitted when the a new delay is set
  event NewDelay(uint256 oldTimelockDelay, uint256 proposalTimelockDelay);

  /// @notice Emitted when the a new emergency delay is set
  event NewEmergencyDelay(uint256 oldEmergencyTimelockDelay, uint256 emergencyTimelockDelay);

  /// @notice Emitted when the quorum is updated
  event NewQuorum(uint256 oldQuorumVotes, uint256 quorumVotes);

  /// @notice Emitted when the emergency quorum is updated
  event NewEmergencyQuorum(uint256 oldEmergencyQuorumVotes, uint256 emergencyQuorumVotes);

  /// @notice Emitted when a transaction is canceled
  event CancelTransaction(
    bytes32 indexed txHash,
    address indexed target,
    uint256 value,
    string signature,
    bytes data,
    uint256 eta
  );

  /// @notice Emitted when a transaction is executed
  event ExecuteTransaction(
    bytes32 indexed txHash,
    address indexed target,
    uint256 value,
    string signature,
    bytes data,
    uint256 eta
  );

  /// @notice Emitted when a transaction is queued
  event QueueTransaction(
    bytes32 indexed txHash,
    address indexed target,
    uint256 value,
    string signature,
    bytes data,
    uint256 eta
  );
}

File 3 of 5 : GovernorStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

import "./IIpt.sol";
import "./Structs.sol";

contract GovernorCharlieDelegatorStorage {
  /// @notice Active brains of Governor
  address public implementation;
}

/**
 * @title Storage for Governor Charlie Delegate
 * @notice For future upgrades, do not change GovernorCharlieDelegateStorage. Create a new
 * contract which implements GovernorCharlieDelegateStorage and following the naming convention
 * GovernorCharlieDelegateStorageVX.
 */
//solhint-disable-next-line max-states-count
contract GovernorCharlieDelegateStorage is GovernorCharlieDelegatorStorage {
  /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
  uint256 public quorumVotes;

  /// @notice The number of votes in support of a proposal required in order for an emergency quorum to be reached and for a vote to succeed
  uint256 public emergencyQuorumVotes;

  /// @notice The delay before voting on a proposal may take place, once proposed, in blocks
  uint256 public votingDelay;

  /// @notice The duration of voting on a proposal, in blocks
  uint256 public votingPeriod;

  /// @notice The number of votes required in order for a voter to become a proposer
  uint256 public proposalThreshold;

  /// @notice Initial proposal id set at become
  uint256 public initialProposalId;

  /// @notice The total number of proposals
  uint256 public proposalCount;

  /// @notice The address of the Interest Protocol governance token
  IIpt public ipt;

  /// @notice The official record of all proposals ever proposed
  mapping(uint256 => Proposal) public proposals;

  /// @notice The latest proposal for each proposer
  mapping(address => uint256) public latestProposalIds;

  /// @notice The latest proposal for each proposer
  mapping(bytes32 => bool) public queuedTransactions;

  /// @notice The proposal holding period
  uint256 public proposalTimelockDelay;

  /// @notice Stores the expiration of account whitelist status as a timestamp
  mapping(address => uint256) public whitelistAccountExpirations;

  /// @notice Address which manages whitelisted proposals and whitelist accounts
  address public whitelistGuardian;

  /// @notice The duration of the voting on a emergency proposal, in blocks
  uint256 public emergencyVotingPeriod;

  /// @notice The emergency proposal holding period
  uint256 public emergencyTimelockDelay;

  /// all receipts for proposal
  mapping(uint256 => mapping(address => Receipt)) public proposalReceipts;

  /// @notice The emergency proposal holding period
  bool public initialized;
}

File 4 of 5 : Structs.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

struct Proposal {
  /// @notice Unique id for looking up a proposal
  uint256 id;
  /// @notice Creator of the proposal
  address proposer;
  /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds
  uint256 eta;
  /// @notice the ordered list of target addresses for calls to be made
  address[] targets;
  /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made
  uint256[] values;
  /// @notice The ordered list of function signatures to be called
  string[] signatures;
  /// @notice The ordered list of calldata to be passed to each call
  bytes[] calldatas;
  /// @notice The block at which voting begins: holders must delegate their votes prior to this block
  uint256 startBlock;
  /// @notice The block at which voting ends: votes must be cast prior to this block
  uint256 endBlock;
  /// @notice Current number of votes in favor of this proposal
  uint256 forVotes;
  /// @notice Current number of votes in opposition to this proposal
  uint256 againstVotes;
  /// @notice Current number of votes for abstaining for this proposal
  uint256 abstainVotes;
  /// @notice Flag marking whether the proposal has been canceled
  bool canceled;
  /// @notice Flag marking whether the proposal has been executed
  bool executed;
  /// @notice Whether the proposal is an emergency proposal
  bool emergency;
  /// @notice quorum votes requires
  uint256 quorumVotes;
  /// @notice time delay
  uint256 delay;
}

/// @notice Ballot receipt record for a voter
struct Receipt {
  /// @notice Whether or not a vote has been cast
  bool hasVoted;
  /// @notice Whether or not the voter supports the proposal or abstains
  uint8 support;
  /// @notice The number of votes the voter had, which were cast
  uint96 votes;
}

/// @notice Possible states that a proposal may be in
enum ProposalState {
  Pending,
  Active,
  Canceled,
  Defeated,
  Succeeded,
  Queued,
  Expired,
  Executed
}

File 5 of 5 : IIpt.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

interface IIpt {
  function getPriorVotes(address account, uint256 blockNumber) external view returns (uint96);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"ipt_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"uint256","name":"votingPeriod_","type":"uint256"},{"internalType":"uint256","name":"votingDelay_","type":"uint256"},{"internalType":"uint256","name":"proposalThreshold_","type":"uint256"},{"internalType":"uint256","name":"proposalTimelockDelay_","type":"uint256"},{"internalType":"uint256","name":"quorumVotes_","type":"uint256"},{"internalType":"uint256","name":"emergencyQuorumVotes_","type":"uint256"},{"internalType":"uint256","name":"emergencyVotingPeriod_","type":"uint256"},{"internalType":"uint256","name":"emergencyTimelockDelay_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"CancelTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldEmergencyVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"emergencyVotingPeriod","type":"uint256"}],"name":"EmergencyVotingPeriodSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ExecuteTransaction","type":"event"},{"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":"uint256","name":"oldTimelockDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalTimelockDelay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldEmergencyTimelockDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"emergencyTimelockDelay","type":"uint256"}],"name":"NewEmergencyDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldEmergencyQuorumVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"emergencyQuorumVotes","type":"uint256"}],"name":"NewEmergencyQuorum","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldQuorumVotes","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quorumVotes","type":"uint256"}],"name":"NewQuorum","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"address[]","name":"targets","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"},{"indexed":false,"internalType":"string[]","name":"signatures","type":"string[]"},{"indexed":false,"internalType":"bytes[]","name":"calldatas","type":"bytes[]"},{"indexed":true,"internalType":"uint256","name":"startBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"string","name":"description","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldProposalThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"QueueTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"VoteCast","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingDelay","type":"uint256"}],"name":"VotingDelaySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVotingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVotingPeriod","type":"uint256"}],"name":"VotingPeriodSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"WhitelistAccountExpirationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldGuardian","type":"address"},{"indexed":false,"internalType":"address","name":"newGuardian","type":"address"}],"name":"WhitelistGuardianSet","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"}],"name":"_setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161051138038061051183398101604081905261002f916101b7565b6040516001600160a01b038b16602482015260448101899052606481018890526084810187905260a4810186905260c4810185905260e48101849052610104810183905261012481018290526100b8908a906101440160408051601f198184030181529190526020810180516001600160e01b0390811663344539bf60e21b1790915261012516565b600080546001600160a01b038b81166001600160a01b031983168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050505050505050505050610274565b600080836001600160a01b0316836040516101409190610239565b600060405180830381855af49150503d806000811461017b576040519150601f19603f3d011682016040523d82523d6000602084013e610180565b606091505b50915091506000821415610195573d60208201fd5b50505050565b80516001600160a01b03811681146101b257600080fd5b919050565b6000806000806000806000806000806101408b8d0312156101d757600080fd5b6101e08b61019b565b99506101ee60208c0161019b565b985060408b0151975060608b0151965060808b0151955060a08b0151945060c08b0151935060e08b015192506101008b015191506101208b015190509295989b9194979a5092959850565b6000825160005b8181101561025a5760208186018101518583015201610240565b81811115610269576000828501525b509190910192915050565b61028e806102836000396000f3fe60806040526004361061002d5760003560e01c80635c60da1b146100af578063bb913f41146100eb57610034565b3661003457005b600080546040516001600160a01b03909116906100549083903690610218565b600060405180830381855af49150503d806000811461008f576040519150601f19603f3d011682016040523d82523d6000602084013e610094565b606091505b505090506040513d6000823e8180156100ab573d82f35b3d82fd5b3480156100bb57600080fd5b506000546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f757600080fd5b5061010b610106366004610228565b61010d565b005b3330146101615760405162461bcd60e51b815260206004820152601c60248201527f676f7665726e616e63652070726f706f73616c2072657175697265640000000060448201526064015b60405180910390fd5b6001600160a01b0381166101b75760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420696d706c656d656e746174696f6e206164647265737300006044820152606401610158565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050565b8183823760009101908152919050565b60006020828403121561023a57600080fd5b81356001600160a01b038116811461025157600080fd5b939250505056fea26469706673582212207584af484e6f842ecc5b9051e772df589fadc0294635b159f654d46c8b5c2a2464736f6c63430008090033000000000000000000000000af239a6fab6a873c779f3f33dbd34104287b93e1000000000000000000000000df352c2fcb3cbfdbba619090e2a1deb9ac534a290000000000000000000000000000000000000000000000000000000000009d80000000000000000000000000000000000000000000000000000000000000335400000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000000000000000000000211654585005212800000000000000000000000000000000000000000000000000000000000000000019aa000000000000000000000000000000000000000000000000000000000000a8c0

Deployed Bytecode

0x60806040526004361061002d5760003560e01c80635c60da1b146100af578063bb913f41146100eb57610034565b3661003457005b600080546040516001600160a01b03909116906100549083903690610218565b600060405180830381855af49150503d806000811461008f576040519150601f19603f3d011682016040523d82523d6000602084013e610094565b606091505b505090506040513d6000823e8180156100ab573d82f35b3d82fd5b3480156100bb57600080fd5b506000546100cf906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f757600080fd5b5061010b610106366004610228565b61010d565b005b3330146101615760405162461bcd60e51b815260206004820152601c60248201527f676f7665726e616e63652070726f706f73616c2072657175697265640000000060448201526064015b60405180910390fd5b6001600160a01b0381166101b75760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420696d706c656d656e746174696f6e206164647265737300006044820152606401610158565b600080546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a15050565b8183823760009101908152919050565b60006020828403121561023a57600080fd5b81356001600160a01b038116811461025157600080fd5b939250505056fea26469706673582212207584af484e6f842ecc5b9051e772df589fadc0294635b159f654d46c8b5c2a2464736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000af239a6fab6a873c779f3f33dbd34104287b93e1000000000000000000000000df352c2fcb3cbfdbba619090e2a1deb9ac534a290000000000000000000000000000000000000000000000000000000000009d80000000000000000000000000000000000000000000000000000000000000335400000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000000000000000000000211654585005212800000000000000000000000000000000000000000000000000000000000000000019aa000000000000000000000000000000000000000000000000000000000000a8c0

-----Decoded View---------------
Arg [0] : ipt_ (address): 0xaF239a6fab6a873c779F3F33dbd34104287b93e1
Arg [1] : implementation_ (address): 0xdF352c2fcB3cbfdbBA619090E2A1DEB9aC534A29
Arg [2] : votingPeriod_ (uint256): 40320
Arg [3] : votingDelay_ (uint256): 13140
Arg [4] : proposalThreshold_ (uint256): 1000000000000000000000000
Arg [5] : proposalTimelockDelay_ (uint256): 172800
Arg [6] : quorumVotes_ (uint256): 10000000000000000000000000
Arg [7] : emergencyQuorumVotes_ (uint256): 40000000000000000000000000
Arg [8] : emergencyVotingPeriod_ (uint256): 6570
Arg [9] : emergencyTimelockDelay_ (uint256): 43200

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000af239a6fab6a873c779f3f33dbd34104287b93e1
Arg [1] : 000000000000000000000000df352c2fcb3cbfdbba619090e2a1deb9ac534a29
Arg [2] : 0000000000000000000000000000000000000000000000000000000000009d80
Arg [3] : 0000000000000000000000000000000000000000000000000000000000003354
Arg [4] : 00000000000000000000000000000000000000000000d3c21bcecceda1000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000002a300
Arg [6] : 000000000000000000000000000000000000000000084595161401484a000000
Arg [7] : 0000000000000000000000000000000000000000002116545850052128000000
Arg [8] : 00000000000000000000000000000000000000000000000000000000000019aa
Arg [9] : 000000000000000000000000000000000000000000000000000000000000a8c0


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Interest Protocol is a borrow/lend protocol that adapts the fractional reserve system of banks to a DeFi protocol.

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.