Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ZivoeGlobals
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 10 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;
import "./libraries/FloorMath.sol";
import "../lib/openzeppelin-contracts/contracts/access/Ownable.sol";
import "../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol";
/// @notice This contract contains global variables for the Zivoe protocol.
/// This contract has the following responsibilities:
/// - Maintain accounting of all defaults within the system in aggregate.
/// - Handle ZVL AccessControl (switching to other wallets).
/// - Whitelist management for "depositors" which are allowed to deposit into staking contracts.
/// - Whitelist management for "keepers" which are allowed to execute proposals within the TLC in advance.
/// - Whitelist management for "lockers" which ZivoeDAO can push/pull to.
/// - Whitelist management for "stablecoins" which are accepted in other Zivoe contracts.
/// - View function for standardized ERC20 precision handling.
/// - View function for adjusting the supplies of tranches (accounting purposes).
contract ZivoeGlobals is Ownable {
using FloorMath for uint256;
// ---------------------
// State Variables
// ---------------------
address public DAO; /// @dev The ZivoeDAO contract.
address public ITO; /// @dev The ZivoeITO contract.
address public stJTT; /// @dev The ZivoeRewards ($stJTT) contract.
address public stSTT; /// @dev The ZivoeRewards ($stSTT) contract.
address public stZVE; /// @dev The ZivoeRewards ($stZVE) contract.
address public vestZVE; /// @dev The ZivoeRewardsVesting ($vestZVE) vesting contract.
address public YDL; /// @dev The ZivoeYDL contract.
address public zJTT; /// @dev The ZivoeTrancheToken ($zJTT) contract.
address public zSTT; /// @dev The ZivoeTrancheToken ($zSTT) contract.
address public ZVE; /// @dev The ZivoeToken ($ZVE) contract.
address public ZVL; /// @dev The Zivoe Laboratory.
address public ZVT; /// @dev The ZivoeTranches contract.
address public GOV; /// @dev The Governor contract.
address public TLC; /// @dev The TimelockController contract.
address public proposedZVL; /// @dev Interim contract for 2FA ZVL access control transfer.
uint256 public defaults; /// @dev Tracks net defaults in the system.
/// @dev Whitelist for depositors, responsible for depositing rewards.
mapping(address => bool) public isDepositor;
/// @dev Whitelist for keepers, responsible for pre-initiating actions.
mapping(address => bool) public isKeeper;
/// @dev Whitelist for lockers, for ZivoeDAO interactions and accounting accessibility.
mapping(address => bool) public isLocker;
/// @dev Whitelist for accepted stablecoins throughout Zivoe (e.g. ZVT or YDL).
mapping(address => bool) public stablecoinWhitelist;
// -----------------
// Constructor
// -----------------
/// @notice Initializes the ZivoeGlobals contract.
constructor() { }
// ------------
// Events
// ------------
/// @notice Emitted during decreaseDefaults().
/// @param locker The locker updating the default amount.
/// @param amount Amount of defaults decreased.
/// @param updatedDefaults Total default(s) in system after event.
event DefaultsDecreased(address indexed locker, uint256 amount, uint256 updatedDefaults);
/// @notice Emitted during increaseDefaults().
/// @param locker The locker updating the default amount.
/// @param amount Amount of defaults increased.
/// @param updatedDefaults Total default(s) in system after event.
event DefaultsIncreased(address indexed locker, uint256 amount, uint256 updatedDefaults);
/// @notice Emitted during initializeGlobals() and acceptZVL().
/// @param controller The address representing ZVL.
event TransferredZVL(address indexed controller);
/// @notice Emitted during updateIsDepositor().
/// @param depositor The address whose status as a despositor is being modified.
/// @param status The new status of "depositor".
event UpdatedDepositorStatus(address indexed depositor, bool status);
/// @notice Emitted during updateIsKeeper().
/// @param account The address whose status as a keeper is being modified.
/// @param status The new status of "account".
event UpdatedKeeperStatus(address indexed account, bool status);
/// @notice Emitted during updateIsLocker().
/// @param locker The locker whose status as a locker is being modified.
/// @param status The new status of "locker".
event UpdatedLockerStatus(address indexed locker, bool status);
/// @notice Emitted during updateStablecoinWhitelist().
/// @param asset The stablecoin to update.
/// @param allowed The boolean value to assign.
event UpdatedStablecoinWhitelist(address indexed asset, bool allowed);
/// @notice Emitted during updateYDL().
/// @param YDL The address of the new YDL.
event UpdatedYDL(address indexed YDL);
// ---------------
// Modifiers
// ---------------
modifier onlyZVL() {
require(_msgSender() == ZVL, "ZivoeGlobals::onlyZVL() _msgSender() != ZVL");
_;
}
// ---------------
// Functions
// ---------------
/// @notice Returns total circulating supply of zSTT and zJTT adjusted for defaults.
/// @return zSTTAdjustedSupply zSTT.totalSupply() adjusted for defaults.
/// @return zJTTAdjustedSupply zJTT.totalSupply() adjusted for defaults.
function adjustedSupplies() external view returns (uint256 zSTTAdjustedSupply, uint256 zJTTAdjustedSupply) {
// Junior tranche compresses based on defaults, to a floor of zero.
uint256 totalSupplyJTT = IERC20(zJTT).totalSupply();
zJTTAdjustedSupply = totalSupplyJTT.floorSub(defaults);
// Senior tranche compresses based on excess defaults, to a floor of zero.
if (defaults > totalSupplyJTT) {
zSTTAdjustedSupply = IERC20(zSTT).totalSupply().floorSub(defaults - totalSupplyJTT);
}
else { zSTTAdjustedSupply = IERC20(zSTT).totalSupply(); }
}
/// @notice Handles WEI standardization of a given asset amount (i.e. 6 decimal precision => 18 decimal precision).
/// @param amount The amount of a given "asset".
/// @param asset The asset (ERC-20) from which to standardize the amount to WEI.
/// @return standardizedAmount The input "amount" standardized to 18 decimals.
function standardize(uint256 amount, address asset) external view returns (uint256 standardizedAmount) {
standardizedAmount = amount;
if (IERC20Metadata(asset).decimals() < 18) {
standardizedAmount *= 10 ** (18 - IERC20Metadata(asset).decimals());
}
else if (IERC20Metadata(asset).decimals() > 18) {
standardizedAmount /= 10 ** (IERC20Metadata(asset).decimals() - 18);
}
}
/// @notice Call when a default is resolved, decreases net defaults system-wide.
/// @dev _msgSender() MUST be "true" on "isLocker" whitelist mapping.
/// @dev FloorMath should handle underflow and enforce defaults == 0 if there's an excess decrement.
/// @dev The value "amount" should be standardized to WEI (handle externally prior to calling this).
/// @param amount The amount to decrease defaults.
function decreaseDefaults(uint256 amount) external {
require(isLocker[_msgSender()], "ZivoeGlobals::decreaseDefaults() !isLocker[_msgSender()]");
defaults = defaults.floorSub(amount);
emit DefaultsDecreased(_msgSender(), amount, defaults);
}
/// @notice Call when a default occurs, increases net defaults system-wide.
/// @dev _msgSender() MUST be "true" on "isLocker" whitelist mapping.
/// @dev The value "amount" should be standardized to WEI (handle externally prior to calling this).
/// @param amount The amount to increase defaults.
function increaseDefaults(uint256 amount) external {
require(isLocker[_msgSender()], "ZivoeGlobals::increaseDefaults() !isLocker[_msgSender()]");
defaults += amount;
emit DefaultsIncreased(_msgSender(), amount, defaults);
}
/// @notice Initialze state variables (perform after all contracts have been deployed).
/// @dev This function MUST only be called once. This function MUST only be called by owner().
/// @param globals Array of addresses representing all core system contracts.
/// @param stablecoins Array of stablecoins representing initial acceptable stablecoins.
function initializeGlobals(
address[] calldata globals,
address[] calldata stablecoins
) external onlyOwner {
require(DAO == address(0), "ZivoeGlobals::initializeGlobals() DAO != address(0)");
emit TransferredZVL(globals[10]);
DAO = globals[0];
ITO = globals[1];
stJTT = globals[2];
stSTT = globals[3];
stZVE = globals[4];
vestZVE = globals[5];
YDL = globals[6];
zJTT = globals[7];
zSTT = globals[8];
ZVE = globals[9];
ZVL = globals[10];
GOV = globals[11];
TLC = globals[12];
ZVT = globals[13];
stablecoinWhitelist[stablecoins[0]] = true; // DAI
stablecoinWhitelist[stablecoins[1]] = true; // USDC
stablecoinWhitelist[stablecoins[2]] = true; // USDT
}
/// @notice Proposes ZVL access control to another account.
/// @dev This function MUST only be called by ZVL().
/// @param _proposedZVL The proposed address for ZVL.
function proposeZVL(address _proposedZVL) external onlyZVL {
proposedZVL = _proposedZVL;
}
/// @notice Accept transfer of ZVL access control.
function acceptZVL() external {
require(proposedZVL == _msgSender(), "ZivoeGlobals::acceptZVL() proposedZVL != _msgSender()");
proposedZVL = address(0);
ZVL = _msgSender();
emit TransferredZVL(_msgSender());
}
/// @notice Updates the depositor whitelist.
/// @dev This function MUST only be called by ZVL().
/// @param depositor The address of the depositor.
/// @param status The status to assign to the "depositor" (true = allowed, false = restricted).
function updateIsDepositor(address depositor, bool status) external onlyZVL {
emit UpdatedDepositorStatus(depositor, status);
isDepositor[depositor] = status;
}
/// @notice Updates the keeper whitelist.
/// @dev This function MUST only be called by ZVL().
/// @param keeper The address of the keeper.
/// @param status The status to assign to the "keeper" (true = allowed, false = restricted).
function updateIsKeeper(address keeper, bool status) external onlyZVL {
emit UpdatedKeeperStatus(keeper, status);
isKeeper[keeper] = status;
}
/// @notice Modifies the locker whitelist.
/// @dev This function MUST only be called by ZVL().
/// @param locker The locker to update.
/// @param status The status to assign to the "locker" (true = permitted, false = prohibited).
function updateIsLocker(address locker, bool status) external onlyZVL {
emit UpdatedLockerStatus(locker, status);
isLocker[locker] = status;
}
/// @notice Modifies the stablecoin whitelist.
/// @dev This function MUST only be called by ZVL().
/// @param stablecoin The stablecoin to update.
/// @param allowed The value to assign (true = permitted, false = prohibited).
function updateStablecoinWhitelist(address stablecoin, bool allowed) external onlyZVL {
emit UpdatedStablecoinWhitelist(stablecoin, allowed);
stablecoinWhitelist[stablecoin] = allowed;
}
/// @notice Modifies the YDL.
/// @dev This function MUST only be called by ZVL().
/// @param _YDL The new address of the YDL.
function updateYDL(address _YDL) external onlyZVL {
emit UpdatedYDL(_YDL);
YDL = _YDL;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @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.
*
* By default, the owner account will be the one that deploys 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.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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 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 Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;
/// @notice Specialized math functions that always return uint256 and never revert.
/// This condenses and simplifies the codebase, for example trySub() from OpenZeppelin
/// would have sufficed, however they returned tuples to include information
/// about the success of the function, which is inefficient for our purposes.
library FloorMath {
/// @notice Returns 0 if divisions results in value less than 1, or division by zero.
function floorDiv(uint256 x, uint256 y) internal pure returns (uint256) {
unchecked {
if (y == 0) return 0;
if (y > x) return 0;
return (x / y);
}
}
/// @notice The return value is if subtraction results in underflow.
/// Subtraction routine that does not revert and returns a singleton,
/// making it cheaper and more suitable for composition and use as an attribute.
/// It was made to be a cheaper version of openZepelins trySub.
function floorSub(uint256 x, uint256 y) internal pure returns (uint256) {
unchecked {
if (y > x) return 0;
return (x - y);
}
}
/// @notice Returns the smallest of two numbers.
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
}{
"optimizer": {
"enabled": true,
"runs": 10
},
"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":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"locker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedDefaults","type":"uint256"}],"name":"DefaultsDecreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"locker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updatedDefaults","type":"uint256"}],"name":"DefaultsIncreased","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":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"TransferredZVL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdatedDepositorStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdatedKeeperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"locker","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdatedLockerStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"UpdatedStablecoinWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"YDL","type":"address"}],"name":"UpdatedYDL","type":"event"},{"inputs":[],"name":"DAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ITO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TLC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"YDL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZVL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZVT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptZVL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adjustedSupplies","outputs":[{"internalType":"uint256","name":"zSTTAdjustedSupply","type":"uint256"},{"internalType":"uint256","name":"zJTTAdjustedSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"decreaseDefaults","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaults","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseDefaults","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"globals","type":"address[]"},{"internalType":"address[]","name":"stablecoins","type":"address[]"}],"name":"initializeGlobals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isKeeper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_proposedZVL","type":"address"}],"name":"proposeZVL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedZVL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stJTT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stSTT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stZVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stablecoinWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"asset","type":"address"}],"name":"standardize","outputs":[{"internalType":"uint256","name":"standardizedAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"depositor","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateIsDepositor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"keeper","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateIsKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locker","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateIsLocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stablecoin","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"updateStablecoinWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_YDL","type":"address"}],"name":"updateYDL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestZVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zJTT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zSTT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119278061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101a05760003560e01c8062096045146101a5578063010e2477146101d557806315154aff146101ea578063180cb47f146101fd5780631a30b71614610210578063201d620a146102235780632ec63d7c146102365780632f70d1ba146102695780635351d09b1461028c57806359e269ee146102a95780636ba42aaa146102bc578063715018a6146102df57806372ad4ba0146102e757806372d6724a146102fa57806379de29271461030d57806383d571fd14610320578063887efa9b146103335780638aa256521461033b5780638da5cb5b1461034e5780639699177c1461035657806398fabd3a146103695780639af6c40e1461037c578063b63ec95d1461038f578063c2948d7d146103a2578063c5f4f7b0146103b5578063c76d41c8146103c8578063c941f148146103db578063d8c58b6a146103ee578063d9fa86ed14610401578063dc3c1da514610414578063dd1db20114610435578063eae99f2414610458578063edb7a6fa1461046b578063f2fde38b14610474578063f388884b14610487575b600080fd5b600b546101b8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101e86101e336600461155a565b61049a565b005b6002546101b8906001600160a01b031681565b600d546101b8906001600160a01b031681565b6101e861021e3660046115e1565b610546565b6006546101b8906001600160a01b031681565b61025961024436600461164c565b60136020526000908152604090205460ff1681565b60405190151581526020016101cc565b61025961027736600461164c565b60116020526000908152604090205460ff1681565b610294610b21565b604080519283526020830191909152016101cc565b6101e86102b7366004611667565b610ccc565b6102596102ca36600461164c565b60126020526000908152604090205460ff1681565b6101e8610da6565b6004546101b8906001600160a01b031681565b6007546101b8906001600160a01b031681565b6101e861031b366004611667565b610dba565b6101e861032e36600461164c565b610e85565b6101e8610f0e565b600c546101b8906001600160a01b031681565b6101b8610fbd565b6008546101b8906001600160a01b031681565b6001546101b8906001600160a01b031681565b600a546101b8906001600160a01b031681565b600f546101b8906001600160a01b031681565b6101e86103b036600461155a565b610fcc565b6009546101b8906001600160a01b031681565b600e546101b8906001600160a01b031681565b6101e86103e936600461164c565b61106f565b6003546101b8906001600160a01b031681565b6005546101b8906001600160a01b031681565b610427610422366004611680565b6110c4565b6040519081526020016101cc565b61025961044336600461164c565b60146020526000908152604090205460ff1681565b6101e861046636600461155a565b6112b8565b61042760105481565b6101e861048236600461164c565b61135b565b6101e861049536600461155a565b6113d4565b600b546001600160a01b0316336001600160a01b0316146104d65760405162461bcd60e51b81526004016104cd906116ac565b60405180910390fd5b816001600160a01b03167f9d540318275b4a186731ff6b3c940919ac302883f881bec6aa20c644fc5867ac82604051610513911515815260200190565b60405180910390a26001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b61054e611477565b6001546001600160a01b0316156105c35760405162461bcd60e51b815260206004820152603360248201527f5a69766f65476c6f62616c733a3a696e697469616c697a65476c6f62616c7328604482015272292044414f20213d206164647265737328302960681b60648201526084016104cd565b8383600a8181106105d6576105d66116f7565b90506020020160208101906105eb919061164c565b6001600160a01b03166000805160206118d283398151915260405160405180910390a283836000818110610621576106216116f7565b9050602002016020810190610636919061164c565b600180546001600160a01b0319166001600160a01b039290921691909117815584908490818110610669576106696116f7565b905060200201602081019061067e919061164c565b600280546001600160a01b0319166001600160a01b0392909216919091178155849084908181106106b1576106b16116f7565b90506020020160208101906106c6919061164c565b600380546001600160a01b0319166001600160a01b0392909216919091178155849084908181106106f9576106f96116f7565b905060200201602081019061070e919061164c565b600480546001600160a01b0319166001600160a01b039290921691909117815584908490818110610741576107416116f7565b9050602002016020810190610756919061164c565b600580546001600160a01b0319166001600160a01b039290921691909117815584908490818110610789576107896116f7565b905060200201602081019061079e919061164c565b600680546001600160a01b0319166001600160a01b0392909216919091178155849084908181106107d1576107d16116f7565b90506020020160208101906107e6919061164c565b600780546001600160a01b0319166001600160a01b039290921691909117815584908490818110610819576108196116f7565b905060200201602081019061082e919061164c565b600880546001600160a01b0319166001600160a01b039290921691909117815584908490818110610861576108616116f7565b9050602002016020810190610876919061164c565b600980546001600160a01b0319166001600160a01b0392909216919091178155849084908181106108a9576108a96116f7565b90506020020160208101906108be919061164c565b600a80546001600160a01b0319166001600160a01b0392909216919091178155849084908181106108f1576108f16116f7565b9050602002016020810190610906919061164c565b600b80546001600160a01b0319166001600160a01b039290921691909117815584908490818110610939576109396116f7565b905060200201602081019061094e919061164c565b600d80546001600160a01b0319166001600160a01b03929092169190911790558383600c818110610981576109816116f7565b9050602002016020810190610996919061164c565b600e80546001600160a01b0319166001600160a01b03929092169190911790558383600d8181106109c9576109c96116f7565b90506020020160208101906109de919061164c565b600c80546001600160a01b0319166001600160a01b039290921691909117905560016014600084848281610a1457610a146116f7565b9050602002016020810190610a29919061164c565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600084846001818110610a7957610a796116f7565b9050602002016020810190610a8e919061164c565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600084846002818110610ade57610ade6116f7565b9050602002016020810190610af3919061164c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550505050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d919061170d565b9050610bb4601054826114d690919063ffffffff16565b9150806010541115610c5557610c4e81601054610bd1919061173c565b600960009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c48919061170d565b906114d6565b9250509091565b600960009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061170d565b3360009081526013602052604090205460ff16610d4c5760405162461bcd60e51b815260206004820152603860248201527f5a69766f65476c6f62616c733a3a696e63726561736544656661756c74732829604482015277202169734c6f636b65725b5f6d736753656e64657228295d60401b60648201526084016104cd565b8060106000828254610d5e919061174f565b909155505060105460408051838152602081019290925233917f63561958d0d16c609aafb244593109e7fabb18a7ede4de130298dde41293e98391015b60405180910390a250565b610dae611477565b610db860006114ee565b565b3360009081526013602052604090205460ff16610e3a5760405162461bcd60e51b815260206004820152603860248201527f5a69766f65476c6f62616c733a3a646563726561736544656661756c74732829604482015277202169734c6f636b65725b5f6d736753656e64657228295d60401b60648201526084016104cd565b601054610e4790826114d6565b601081905560408051838152602081019290925233917f2f9cc0040d5182fbebcbbe30c7efca9daef6e0c238cc8ed570fe2c468782b8309101610d9b565b600b546001600160a01b0316336001600160a01b031614610eb85760405162461bcd60e51b81526004016104cd906116ac565b6040516001600160a01b038216907f3a706212de3be7e8e49960fd898696fcaf7f7cb74ecefa1524529f5ac8e64b7090600090a2600780546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b03163314610f865760405162461bcd60e51b815260206004820152603560248201527f5a69766f65476c6f62616c733a3a6163636570745a564c28292070726f706f7360448201527465645a564c20213d205f6d736753656e646572282960581b60648201526084016104cd565b600f80546001600160a01b0319908116909155600b8054339216821790556040516000805160206118d283398151915290600090a2565b6000546001600160a01b031690565b600b546001600160a01b0316336001600160a01b031614610fff5760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167fa3986717eab59c6e6536b18cd698f5140ab289c16f0b76d3087b2cb0a4661d1f8260405161103c911515815260200190565b60405180910390a26001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600b546001600160a01b0316336001600160a01b0316146110a25760405162461bcd60e51b81526004016104cd906116ac565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60008290506012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611762565b60ff1610156111bf57816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111989190611762565b6111a390601261178c565b6111ae90600a611889565b6111b89082611898565b90506112b2565b6012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190611762565b60ff1611156112b2576012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190611762565b61129a919061178c565b6112a590600a611889565b6112af90826118af565b90505b92915050565b600b546001600160a01b0316336001600160a01b0316146112eb5760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167f3b0523417eeec1ef447f294aeed38cd67e8f3748e6da4e362a3e67a716d5766c82604051611328911515815260200190565b60405180910390a26001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b611363611477565b6001600160a01b0381166113c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cd565b6113d1816114ee565b50565b600b546001600160a01b0316336001600160a01b0316146114075760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167f3785d3e5a83b7cfed402ce1df45892a1fc7ad1e7c9de3b4bd9feec32a9eb68da82604051611444911515815260200190565b60405180910390a26001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b33611480610fbd565b6001600160a01b031614610db85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104cd565b6000828211156114e8575060006112b2565b50900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461155557600080fd5b919050565b6000806040838503121561156d57600080fd5b6115768361153e565b91506020830135801515811461158b57600080fd5b809150509250929050565b60008083601f8401126115a857600080fd5b5081356001600160401b038111156115bf57600080fd5b6020830191508360208260051b85010111156115da57600080fd5b9250929050565b600080600080604085870312156115f757600080fd5b84356001600160401b038082111561160e57600080fd5b61161a88838901611596565b9096509450602087013591508082111561163357600080fd5b5061164087828801611596565b95989497509550505050565b60006020828403121561165e57600080fd5b6112af8261153e565b60006020828403121561167957600080fd5b5035919050565b6000806040838503121561169357600080fd5b823591506116a36020840161153e565b90509250929050565b6020808252602b908201527f5a69766f65476c6f62616c733a3a6f6e6c795a564c2829205f6d736753656e6460408201526a195c8a0a48084f4816959360aa1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561171f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156112b2576112b2611726565b808201808211156112b2576112b2611726565b60006020828403121561177457600080fd5b815160ff8116811461178557600080fd5b9392505050565b60ff82811682821603908111156112b2576112b2611726565b600181815b808511156117e05781600019048211156117c6576117c6611726565b808516156117d357918102915b93841c93908002906117aa565b509250929050565b6000826117f7575060016112b2565b81611804575060006112b2565b816001811461181a576002811461182457611840565b60019150506112b2565b60ff84111561183557611835611726565b50506001821b6112b2565b5060208310610133831016604e8410600b8410161715611863575081810a6112b2565b61186d83836117a5565b806000190482111561188157611881611726565b029392505050565b60006112af60ff8416836117e8565b80820281158282048414176112b2576112b2611726565b6000826118cc57634e487b7160e01b600052601260045260246000fd5b50049056fe539c30b5ceba9d38ef20b5da340a5858cfede59c8cd3c689032fa52dfb346480a2646970667358221220179237477e9559d897abc9c61a585d66728cf999017857ccbfbce8f43ac5acb964736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a05760003560e01c8062096045146101a5578063010e2477146101d557806315154aff146101ea578063180cb47f146101fd5780631a30b71614610210578063201d620a146102235780632ec63d7c146102365780632f70d1ba146102695780635351d09b1461028c57806359e269ee146102a95780636ba42aaa146102bc578063715018a6146102df57806372ad4ba0146102e757806372d6724a146102fa57806379de29271461030d57806383d571fd14610320578063887efa9b146103335780638aa256521461033b5780638da5cb5b1461034e5780639699177c1461035657806398fabd3a146103695780639af6c40e1461037c578063b63ec95d1461038f578063c2948d7d146103a2578063c5f4f7b0146103b5578063c76d41c8146103c8578063c941f148146103db578063d8c58b6a146103ee578063d9fa86ed14610401578063dc3c1da514610414578063dd1db20114610435578063eae99f2414610458578063edb7a6fa1461046b578063f2fde38b14610474578063f388884b14610487575b600080fd5b600b546101b8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101e86101e336600461155a565b61049a565b005b6002546101b8906001600160a01b031681565b600d546101b8906001600160a01b031681565b6101e861021e3660046115e1565b610546565b6006546101b8906001600160a01b031681565b61025961024436600461164c565b60136020526000908152604090205460ff1681565b60405190151581526020016101cc565b61025961027736600461164c565b60116020526000908152604090205460ff1681565b610294610b21565b604080519283526020830191909152016101cc565b6101e86102b7366004611667565b610ccc565b6102596102ca36600461164c565b60126020526000908152604090205460ff1681565b6101e8610da6565b6004546101b8906001600160a01b031681565b6007546101b8906001600160a01b031681565b6101e861031b366004611667565b610dba565b6101e861032e36600461164c565b610e85565b6101e8610f0e565b600c546101b8906001600160a01b031681565b6101b8610fbd565b6008546101b8906001600160a01b031681565b6001546101b8906001600160a01b031681565b600a546101b8906001600160a01b031681565b600f546101b8906001600160a01b031681565b6101e86103b036600461155a565b610fcc565b6009546101b8906001600160a01b031681565b600e546101b8906001600160a01b031681565b6101e86103e936600461164c565b61106f565b6003546101b8906001600160a01b031681565b6005546101b8906001600160a01b031681565b610427610422366004611680565b6110c4565b6040519081526020016101cc565b61025961044336600461164c565b60146020526000908152604090205460ff1681565b6101e861046636600461155a565b6112b8565b61042760105481565b6101e861048236600461164c565b61135b565b6101e861049536600461155a565b6113d4565b600b546001600160a01b0316336001600160a01b0316146104d65760405162461bcd60e51b81526004016104cd906116ac565b60405180910390fd5b816001600160a01b03167f9d540318275b4a186731ff6b3c940919ac302883f881bec6aa20c644fc5867ac82604051610513911515815260200190565b60405180910390a26001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b61054e611477565b6001546001600160a01b0316156105c35760405162461bcd60e51b815260206004820152603360248201527f5a69766f65476c6f62616c733a3a696e697469616c697a65476c6f62616c7328604482015272292044414f20213d206164647265737328302960681b60648201526084016104cd565b8383600a8181106105d6576105d66116f7565b90506020020160208101906105eb919061164c565b6001600160a01b03166000805160206118d283398151915260405160405180910390a283836000818110610621576106216116f7565b9050602002016020810190610636919061164c565b600180546001600160a01b0319166001600160a01b039290921691909117815584908490818110610669576106696116f7565b905060200201602081019061067e919061164c565b600280546001600160a01b0319166001600160a01b0392909216919091178155849084908181106106b1576106b16116f7565b90506020020160208101906106c6919061164c565b600380546001600160a01b0319166001600160a01b0392909216919091178155849084908181106106f9576106f96116f7565b905060200201602081019061070e919061164c565b600480546001600160a01b0319166001600160a01b039290921691909117815584908490818110610741576107416116f7565b9050602002016020810190610756919061164c565b600580546001600160a01b0319166001600160a01b039290921691909117815584908490818110610789576107896116f7565b905060200201602081019061079e919061164c565b600680546001600160a01b0319166001600160a01b0392909216919091178155849084908181106107d1576107d16116f7565b90506020020160208101906107e6919061164c565b600780546001600160a01b0319166001600160a01b039290921691909117815584908490818110610819576108196116f7565b905060200201602081019061082e919061164c565b600880546001600160a01b0319166001600160a01b039290921691909117815584908490818110610861576108616116f7565b9050602002016020810190610876919061164c565b600980546001600160a01b0319166001600160a01b0392909216919091178155849084908181106108a9576108a96116f7565b90506020020160208101906108be919061164c565b600a80546001600160a01b0319166001600160a01b0392909216919091178155849084908181106108f1576108f16116f7565b9050602002016020810190610906919061164c565b600b80546001600160a01b0319166001600160a01b039290921691909117815584908490818110610939576109396116f7565b905060200201602081019061094e919061164c565b600d80546001600160a01b0319166001600160a01b03929092169190911790558383600c818110610981576109816116f7565b9050602002016020810190610996919061164c565b600e80546001600160a01b0319166001600160a01b03929092169190911790558383600d8181106109c9576109c96116f7565b90506020020160208101906109de919061164c565b600c80546001600160a01b0319166001600160a01b039290921691909117905560016014600084848281610a1457610a146116f7565b9050602002016020810190610a29919061164c565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600084846001818110610a7957610a796116f7565b9050602002016020810190610a8e919061164c565b6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600084846002818110610ade57610ade6116f7565b9050602002016020810190610af3919061164c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905550505050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d919061170d565b9050610bb4601054826114d690919063ffffffff16565b9150806010541115610c5557610c4e81601054610bd1919061173c565b600960009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c48919061170d565b906114d6565b9250509091565b600960009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061170d565b3360009081526013602052604090205460ff16610d4c5760405162461bcd60e51b815260206004820152603860248201527f5a69766f65476c6f62616c733a3a696e63726561736544656661756c74732829604482015277202169734c6f636b65725b5f6d736753656e64657228295d60401b60648201526084016104cd565b8060106000828254610d5e919061174f565b909155505060105460408051838152602081019290925233917f63561958d0d16c609aafb244593109e7fabb18a7ede4de130298dde41293e98391015b60405180910390a250565b610dae611477565b610db860006114ee565b565b3360009081526013602052604090205460ff16610e3a5760405162461bcd60e51b815260206004820152603860248201527f5a69766f65476c6f62616c733a3a646563726561736544656661756c74732829604482015277202169734c6f636b65725b5f6d736753656e64657228295d60401b60648201526084016104cd565b601054610e4790826114d6565b601081905560408051838152602081019290925233917f2f9cc0040d5182fbebcbbe30c7efca9daef6e0c238cc8ed570fe2c468782b8309101610d9b565b600b546001600160a01b0316336001600160a01b031614610eb85760405162461bcd60e51b81526004016104cd906116ac565b6040516001600160a01b038216907f3a706212de3be7e8e49960fd898696fcaf7f7cb74ecefa1524529f5ac8e64b7090600090a2600780546001600160a01b0319166001600160a01b0392909216919091179055565b600f546001600160a01b03163314610f865760405162461bcd60e51b815260206004820152603560248201527f5a69766f65476c6f62616c733a3a6163636570745a564c28292070726f706f7360448201527465645a564c20213d205f6d736753656e646572282960581b60648201526084016104cd565b600f80546001600160a01b0319908116909155600b8054339216821790556040516000805160206118d283398151915290600090a2565b6000546001600160a01b031690565b600b546001600160a01b0316336001600160a01b031614610fff5760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167fa3986717eab59c6e6536b18cd698f5140ab289c16f0b76d3087b2cb0a4661d1f8260405161103c911515815260200190565b60405180910390a26001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b600b546001600160a01b0316336001600160a01b0316146110a25760405162461bcd60e51b81526004016104cd906116ac565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60008290506012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611762565b60ff1610156111bf57816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111989190611762565b6111a390601261178c565b6111ae90600a611889565b6111b89082611898565b90506112b2565b6012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190611762565b60ff1611156112b2576012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190611762565b61129a919061178c565b6112a590600a611889565b6112af90826118af565b90505b92915050565b600b546001600160a01b0316336001600160a01b0316146112eb5760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167f3b0523417eeec1ef447f294aeed38cd67e8f3748e6da4e362a3e67a716d5766c82604051611328911515815260200190565b60405180910390a26001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b611363611477565b6001600160a01b0381166113c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cd565b6113d1816114ee565b50565b600b546001600160a01b0316336001600160a01b0316146114075760405162461bcd60e51b81526004016104cd906116ac565b816001600160a01b03167f3785d3e5a83b7cfed402ce1df45892a1fc7ad1e7c9de3b4bd9feec32a9eb68da82604051611444911515815260200190565b60405180910390a26001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b33611480610fbd565b6001600160a01b031614610db85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104cd565b6000828211156114e8575060006112b2565b50900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461155557600080fd5b919050565b6000806040838503121561156d57600080fd5b6115768361153e565b91506020830135801515811461158b57600080fd5b809150509250929050565b60008083601f8401126115a857600080fd5b5081356001600160401b038111156115bf57600080fd5b6020830191508360208260051b85010111156115da57600080fd5b9250929050565b600080600080604085870312156115f757600080fd5b84356001600160401b038082111561160e57600080fd5b61161a88838901611596565b9096509450602087013591508082111561163357600080fd5b5061164087828801611596565b95989497509550505050565b60006020828403121561165e57600080fd5b6112af8261153e565b60006020828403121561167957600080fd5b5035919050565b6000806040838503121561169357600080fd5b823591506116a36020840161153e565b90509250929050565b6020808252602b908201527f5a69766f65476c6f62616c733a3a6f6e6c795a564c2829205f6d736753656e6460408201526a195c8a0a48084f4816959360aa1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561171f57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156112b2576112b2611726565b808201808211156112b2576112b2611726565b60006020828403121561177457600080fd5b815160ff8116811461178557600080fd5b9392505050565b60ff82811682821603908111156112b2576112b2611726565b600181815b808511156117e05781600019048211156117c6576117c6611726565b808516156117d357918102915b93841c93908002906117aa565b509250929050565b6000826117f7575060016112b2565b81611804575060006112b2565b816001811461181a576002811461182457611840565b60019150506112b2565b60ff84111561183557611835611726565b50506001821b6112b2565b5060208310610133831016604e8410600b8410161715611863575081810a6112b2565b61186d83836117a5565b806000190482111561188157611881611726565b029392505050565b60006112af60ff8416836117e8565b80820281158282048414176112b2576112b2611726565b6000826118cc57634e487b7160e01b600052601260045260246000fd5b50049056fe539c30b5ceba9d38ef20b5da340a5858cfede59c8cd3c689032fa52dfb346480a2646970667358221220179237477e9559d897abc9c61a585d66728cf999017857ccbfbce8f43ac5acb964736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.