Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18271162 | 736 days ago | IN | 0 ETH | 0.00080766 | ||||
Approve | 18271161 | 736 days ago | IN | 0 ETH | 0.00079829 | ||||
Approve | 15643670 | 1105 days ago | IN | 0 ETH | 0.00063231 | ||||
Approve | 15643664 | 1105 days ago | IN | 0 ETH | 0.0006225 | ||||
Transfer | 14773765 | 1243 days ago | IN | 0 ETH | 0.00477428 | ||||
Approve | 14513249 | 1284 days ago | IN | 0 ETH | 0.00218254 | ||||
Approve | 14473133 | 1291 days ago | IN | 0 ETH | 0.0011456 | ||||
Approve | 14473123 | 1291 days ago | IN | 0 ETH | 0.00127192 | ||||
Approve | 14461257 | 1292 days ago | IN | 0 ETH | 0.00088633 | ||||
Approve | 14459620 | 1293 days ago | IN | 0 ETH | 0.00145043 | ||||
Approve | 14459610 | 1293 days ago | IN | 0 ETH | 0.0016548 | ||||
Approve | 14409691 | 1300 days ago | IN | 0 ETH | 0.00188817 | ||||
Approve | 14402696 | 1301 days ago | IN | 0 ETH | 0.00152276 | ||||
Approve | 14395423 | 1303 days ago | IN | 0 ETH | 0.00116061 | ||||
Approve | 14394923 | 1303 days ago | IN | 0 ETH | 0.00147624 | ||||
Approve | 14392659 | 1303 days ago | IN | 0 ETH | 0.00252964 | ||||
Approve | 14392366 | 1303 days ago | IN | 0 ETH | 0.00249602 | ||||
Approve | 14386082 | 1304 days ago | IN | 0 ETH | 0.00150611 | ||||
Approve | 14366502 | 1307 days ago | IN | 0 ETH | 0.00215053 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
- | 14355612 | 1309 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Minimal Proxy Contract for 0x66e5d8022876a3ce95281f2e14092a35f2b87a11
Contract Name:
PT
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;import "contracts/protocol/tokens/MinterPauserClaimableERC20.sol";import "contracts/interfaces/apwine/IFutureVault.sol";/*** @title APWine interest bearing token* @notice Interest bearing token for the futures liquidity provided* @dev the value of an APWine IBT is equivalent to a fixed amount of underlying tokens of the futureVault IBT*/contract PT is MinterPauserClaimableERC20 {using SafeMathUpgradeable for uint256;IFutureVault public futureVault;/*** @dev Grants `DEFAULT_ADMIN_ROLE`, `MINTER_ROLE` and `PAUSER_ROLE` to the* futureVault** See {ERC20-constructor}.s*/function initialize(string memory name,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;import "contracts/protocol/tokens/ClaimableERC20.sol";import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";contract MinterPauserClaimableERC20 is Initializable, ContextUpgradeable, AccessControlUpgradeable, ClaimableERC20 {using SafeMathUpgradeable for uint256;bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");function initialize(string memory name, string memory symbol) public virtual initializer {__ERC20PresetMinterPauser_init(name, symbol);}function __ERC20PresetMinterPauser_init(string memory name, string memory symbol) internal initializer {__Context_init_unchained();__AccessControl_init_unchained();__ERC20_init_unchained(name, symbol);__ERC20Burnable_init_unchained();__Pausable_init_unchained();__ERC20Pausable_init_unchained();__ERC20PresetMinterPauser_init_unchained();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;import "contracts/interfaces/apwine/tokens/IPT.sol";import "contracts/interfaces/apwine/IRegistry.sol";import "contracts/interfaces/apwine/IFutureWallet.sol";interface IFutureVault {/* Events */event NewPeriodStarted(uint256 _newPeriodIndex);event FutureWalletSet(address _futureWallet);event RegistrySet(IRegistry _registry);event FundsDeposited(address _user, uint256 _amount);event FundsWithdrawn(address _user, uint256 _amount);event PTSet(IPT _pt);event LiquidityTransfersPaused();event LiquidityTransfersResumed();event DelegationCreated(address _delegator, address _receiver, uint256 _amount);event DelegationRemoved(address _delegator, address _receiver, uint256 _amount);/* Params *//*** @notice Getter for the PERIOD future parameter* @return returns the period duration of the future*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;import "@openzeppelin/contracts-upgradeable/GSN/ContextUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";import "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol";import "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";/*** @title ERC20 preset for tokens used in APWine protocol* @notice ERC20 mintable pausable* @dev allows overwriting of balanceOf function for liquid balance*/contract ClaimableERC20 is Initializable, ContextUpgradeable, IERC20Upgradeable, PausableUpgradeable {using SafeMathUpgradeable for uint256;mapping(address => uint256) private _balances;mapping(address => mapping(address => uint256)) private _allowances;uint256 private _totalSupply;string private _name;string private _symbol;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;import "../utils/EnumerableSetUpgradeable.sol";import "../utils/AddressUpgradeable.sol";import "../utils/ContextUpgradeable.sol";import "../proxy/Initializable.sol";/*** @dev Contract module that allows children to implement role-based access* control mechanisms.** Roles are referred to by their `bytes32` identifier. These should be exposed* in the external API and be unique. The best way to achieve this is by* using `public constant` hash digests:** ```* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");* ```** Roles can be used to represent a set of permissions. To restrict access to a* function call, use {hasRole}:** ```* function foo() public {
12345// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;import "../utils/ContextUpgradeable.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20Upgradeable {/*** @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;/*** @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 SafeMathUpgradeable {/*** @dev Returns the addition of two unsigned integers, with an overflow flag.** _Available since v3.4._*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// solhint-disable-next-line compiler-versionpragma solidity >=0.4.24 <0.8.0;import "../utils/AddressUpgradeable.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as* possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}.** CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.*/abstract contract Initializable {/*** @dev Indicates that the contract has been initialized.*/bool private _initialized;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;import "./ContextUpgradeable.sol";import "../proxy/Initializable.sol";/*** @dev Contract module which allows children to implement an emergency stop* mechanism that can be triggered by an authorized account.** This module is used through inheritance. It will make available the* modifiers `whenNotPaused` and `whenPaused`, which can be applied to* the functions of your contract. Note that they will not be pausable by* simply including this module, only once the modifiers are put in place.*/abstract contract PausableUpgradeable is Initializable, ContextUpgradeable {/*** @dev Emitted when the pause is triggered by `account`.*/event Paused(address account);/*** @dev Emitted when the pause is lifted by `account`.*/event Unpaused(address account);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;import "../proxy/Initializable.sol";/** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with GSN meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract ContextUpgradeable is Initializable {function __Context_init() internal initializer {__Context_init_unchained();}function __Context_init_unchained() internal initializer {}function _msgSender() internal view virtual returns (address payable) {return msg.sender;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.2 <0.8.0;/*** @dev Collection of functions related to the address type*/library AddressUpgradeable {/*** @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 Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```** As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;import "contracts/interfaces/IERC20.sol";interface IPT is IERC20 {/*** @dev Destroys `amount` tokens from the caller.** See {ERC20-_burn}.*/function burn(uint256 amount) external;/*** @dev Creates `amount` new tokens for `to`.** See {ERC20-_mint}.** Requirements:** - the caller must have the `MINTER_ROLE`.*/function mint(address to, uint256 amount) external;/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;pragma experimental ABIEncoderV2;interface IRegistry {/* Setters *//*** @notice Setter for the treasury address* @param _newTreasury the address of the new treasury*/function setTreasury(address _newTreasury) external;/*** @notice Setter for the controller address* @param _newController the address of the new controller*/function setController(address _newController) external;/*** @notice Setter for the APWine IBT logic address* @param _PTLogic the address of the new APWine IBT logic*/function setPTLogic(address _PTLogic) external;/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.7.6;interface IFutureWallet {/* Events */event YieldRedeemed(address _user, uint256 _periodIndex);event WithdrawalsPaused();event WithdrawalsResumed();/*** @notice register the yield of an expired period* @param _amount the amount of yield to be registered*/function registerExpiredFuture(uint256 _amount) external;/*** @notice redeem the yield of the underlying yield of the FYT held by the sender* @param _periodIndex the index of the period to redeem the yield from*/function redeemYield(uint256 _periodIndex) external;/*** @notice return the yield that could be redeemed by an address for a particular period* @param _periodIndex the index of the corresponding period
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.7.6;import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";interface IERC20 is IERC20Upgradeable {/*** @dev Returns the name of the token.*/function name() external returns (string memory);/*** @dev Returns the symbol of the token, usually a shorter version of the* name.*/function symbol() external returns (string memory);/*** @dev Returns the number of decimals used to get its user representation.* For example, if `decimals` equals `2`, a balance of `505` tokens should* be displayed to a user as `5,05` (`505 / 10 ** 2`).** Tokens usually opt for a value of 18, imitating the relationship between* Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is* called.
12345678910111213141516171819202122{"optimizer": {"enabled": true,"runs": 1000},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"metadata": {"useLiteralContent": true},"libraries": {}}
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"futureVault","outputs":[{"internalType":"contract IFutureVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address","name":"futureAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"recordedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.