The Graph: Indexer 0x365...96e
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Locked ... | 20170114 | 240 days ago | IN | 0 ETH | 0.00256413 | ||||
Transfer Locked ... | 18669817 | 450 days ago | IN | 0 ETH | 0.00854541 | ||||
Set Delegation P... | 18227848 | 512 days ago | IN | 0 ETH | 0.00152644 | ||||
Transfer Locked ... | 18227727 | 512 days ago | IN | 0 ETH | 0.00593243 | ||||
Transfer Locked ... | 18092129 | 531 days ago | IN | 0 ETH | 0.00375273 | ||||
Transfer Locked ... | 18064649 | 535 days ago | IN | 0 ETH | 0.00525381 | ||||
Set L2Wallet Add... | 18034938 | 539 days ago | IN | 0 ETH | 0.0021125 | ||||
Set Operator | 16748297 | 720 days ago | IN | 0 ETH | 0.00204794 | ||||
Set Delegation P... | 15706746 | 865 days ago | IN | 0 ETH | 0.00152922 | ||||
Stake | 15706450 | 865 days ago | IN | 0 ETH | 0.00242083 | ||||
Stake | 12892030 | 1306 days ago | IN | 0 ETH | 0.00088287 | ||||
Stake | 12869853 | 1310 days ago | IN | 0 ETH | 0.0013243 | ||||
Stake | 12869732 | 1310 days ago | IN | 0 ETH | 0.00132412 | ||||
Set Rewards Dest... | 12479122 | 1371 days ago | IN | 0 ETH | 0.00564762 | ||||
Set Delegation P... | 12318636 | 1395 days ago | IN | 0 ETH | 0.0039127 | ||||
Set Delegation P... | 11760482 | 1481 days ago | IN | 0 ETH | 0.00438744 | ||||
Set Delegation P... | 11706492 | 1490 days ago | IN | 0 ETH | 0.00384197 | ||||
Stake | 11641875 | 1499 days ago | IN | 0 ETH | 0.00356496 | ||||
Stake | 11621019 | 1503 days ago | IN | 0 ETH | 0.00890609 | ||||
Set Operator | 11620953 | 1503 days ago | IN | 0 ETH | 0.00334851 | ||||
Approve Protocol | 11615295 | 1504 days ago | IN | 0 ETH | 0.0037443 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
11469804 | 1526 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Minimal Proxy Contract for 0xbe5e630383b5baecf0db7b15c50d410edd5a2255
Contract Name:
GraphTokenLockWallet
Compiler Version
v0.7.3+commit.9bfce1f6
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.3;import "@openzeppelin/contracts/utils/Address.sol";import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "./GraphTokenLock.sol";import "./IGraphTokenLockManager.sol";/*** @title GraphTokenLockWallet* @notice This contract is built on top of the base GraphTokenLock functionality.* It allows wallet beneficiaries to use the deposited funds to perform specific function calls* on specific contracts.** The idea is that supporters with locked tokens can participate in the protocol* but disallow any release before the vesting/lock schedule.* The beneficiary can issue authorized function calls to this contract that will* get forwarded to a target contract. A target contract is any of our protocol contracts.* The function calls allowed are queried to the GraphTokenLockManager, this way* the same configuration can be shared for all the created lock wallet contracts.** NOTE: Contracts used as target must have its function signatures checked to avoid collisions
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.2 <0.8.0;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*/function isContract(address account) internal view returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;/*** @dev Wrappers over Solidity's arithmetic operations with added overflow* checks.** Arithmetic operations in Solidity wrap on overflow. This can easily result* in bugs, because programmers usually assume that an overflow raises an* error, which is the standard behavior in high level programming languages.* `SafeMath` restores this intuition by reverting the transaction when an* operation overflows.** Using this library instead of the unchecked operations eliminates an entire* class of bugs, so it's recommended to use it always.*/library SafeMath {/*** @dev Returns the addition of two unsigned integers, reverting on* overflow.** Counterpart to Solidity's `+` operator.** Requirements:*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Returns the amount of tokens in existence.*/function totalSupply() external view returns (uint256);/*** @dev Returns the amount of tokens owned by `account`.*/function balanceOf(address account) external view returns (uint256);/*** @dev Moves `amount` tokens from the caller's account to `recipient`.** Returns a boolean value indicating whether the operation succeeded.** Emits a {Transfer} event.*/function transfer(address recipient, uint256 amount) external returns (bool);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;import "./IERC20.sol";import "../../math/SafeMath.sol";import "../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using SafeMath for uint256;using Address for address;function safeTransfer(IERC20 token, address to, uint256 value) internal {_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));}function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.3;import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "./Ownable.sol";import "./MathUtils.sol";import "./IGraphTokenLock.sol";/*** @title GraphTokenLock* @notice Contract that manages an unlocking schedule of tokens.* @dev The contract lock manage a number of tokens deposited into the contract to ensure that* they can only be released under certain time conditions.** This contract implements a release scheduled based on periods and tokens are released in steps* after each period ends. It can be configured with one period in which case it is like a plain TimeLock.* It also supports revocation to be used for vesting schedules.** The contract supports receiving extra funds than the managed tokens ones that can be* withdrawn by the beneficiary at any time.** A releaseStartTime parameter is included to override the default release schedule and
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.3;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "./IGraphTokenLock.sol";interface IGraphTokenLockManager {// -- Factory --function setMasterCopy(address _masterCopy) external;function createTokenLockWallet(address _owner,address _beneficiary,uint256 _managedAmount,uint256 _startTime,uint256 _endTime,uint256 _periods,uint256 _releaseStartTime,uint256 _vestingCliffTime,IGraphTokenLock.Revocability _revocable) external;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.3;/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** The owner account will be passed on initialization of the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/contract Ownable {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.*/function initialize(address owner) internal {_owner = owner;
123456789// SPDX-License-Identifier: MITpragma solidity ^0.7.3;library MathUtils {function min(uint256 a, uint256 b) internal pure returns (uint256) {return a < b ? a : b;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.3;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";interface IGraphTokenLock {enum Revocability { NotSet, Enabled, Disabled }// -- Balances --function currentBalance() external view returns (uint256);// -- Time & Periods --function currentTime() external view returns (uint256);function duration() external view returns (uint256);function sinceStartTime() external view returns (uint256);function amountPerPeriod() external view returns (uint256);function periodDuration() external view returns (uint256);
12345678910111213141516171819{"optimizer": {"enabled": false,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","abi"]}},"metadata": {"useLiteralContent": true},"libraries": {}}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_oldManager","type":"address"},{"indexed":true,"internalType":"address","name":"_newManager","type":"address"}],"name":"ManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"TokenDestinationsApproved","type":"event"},{"anonymous":false,"inputs":[],"name":"TokenDestinationsRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensWithdrawn","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"amountPerPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approveProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_managedAmount","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"},{"internalType":"uint256","name":"_periods","type":"uint256"},{"internalType":"uint256","name":"_releaseStartTime","type":"uint256"},{"internalType":"uint256","name":"_vestingCliffTime","type":"uint256"},{"internalType":"enum IGraphTokenLock.Revocability","name":"_revocable","type":"uint8"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"contract IGraphTokenLockManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"passedPeriods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releasableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releasedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revocable","outputs":[{"internalType":"enum IGraphTokenLock.Revocability","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeProtocol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newManager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinceStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surplusAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalOutstandingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingCliffTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.