More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 210 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Release Tokens | 132013279 | 3 days ago | IN | 0 ETH | 0.000000293917 | ||||
Release Tokens | 131668896 | 11 days ago | IN | 0 ETH | 0.000001116185 | ||||
Release Tokens | 130843463 | 30 days ago | IN | 0 ETH | 0.000000430361 | ||||
Release Tokens | 128635955 | 81 days ago | IN | 0 ETH | 0.000000147159 | ||||
Release Tokens | 128505131 | 84 days ago | IN | 0 ETH | 0.000002552921 | ||||
Release Tokens | 127829062 | 100 days ago | IN | 0 ETH | 0.000000453252 | ||||
Release Tokens | 123969848 | 189 days ago | IN | 0 ETH | 0.000000110683 | ||||
Release Tokens | 123429279 | 202 days ago | IN | 0 ETH | 0.000000300698 | ||||
Release Tokens | 122113267 | 232 days ago | IN | 0 ETH | 0.000000325988 | ||||
Release Tokens | 120922678 | 260 days ago | IN | 0 ETH | 0.000009154906 | ||||
Release Tokens | 120580025 | 268 days ago | IN | 0 ETH | 0.000171490515 | ||||
Release Tokens | 118572564 | 314 days ago | IN | 0 ETH | 0.00000563291 | ||||
Release Tokens | 117795393 | 332 days ago | IN | 0 ETH | 0.000001124991 | ||||
Release Tokens | 117591708 | 337 days ago | IN | 0 ETH | 0.000001266981 | ||||
Release Tokens | 116465037 | 363 days ago | IN | 0 ETH | 0.00014762372 | ||||
Release Tokens | 116431247 | 364 days ago | IN | 0 ETH | 0.000100332986 | ||||
Release Tokens | 116111874 | 371 days ago | IN | 0 ETH | 0.00004900736 | ||||
Release Tokens | 115834060 | 378 days ago | IN | 0 ETH | 0.000042382271 | ||||
Release Tokens | 115158037 | 393 days ago | IN | 0 ETH | 0.000025908382 | ||||
Release Tokens | 114757866 | 402 days ago | IN | 0 ETH | 0.000031057097 | ||||
Release Tokens | 114527594 | 408 days ago | IN | 0 ETH | 0.000065799834 | ||||
Release Tokens | 113930665 | 422 days ago | IN | 0 ETH | 0.000035571143 | ||||
Release Tokens | 113477239 | 432 days ago | IN | 0 ETH | 0.000087637364 | ||||
Release Tokens | 113353468 | 435 days ago | IN | 0 ETH | 0.00008148984 | ||||
Release Tokens | 111891808 | 469 days ago | IN | 0 ETH | 0.000076473385 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
132013279 | 3 days ago | 0.000023687930216 ETH | ||||
132013279 | 3 days ago | 0.000023687930216 ETH | ||||
131668896 | 11 days ago | 0.000112163509471 ETH | ||||
131668896 | 11 days ago | 0.000112163509471 ETH | ||||
130843463 | 30 days ago | 0.000001495513459 ETH | ||||
130843463 | 30 days ago | 0.000001495513459 ETH | ||||
128505131 | 84 days ago | 0.00005748226733 ETH | ||||
128505131 | 84 days ago | 0.00005748226733 ETH | ||||
127829062 | 100 days ago | 0.00000372364546 ETH | ||||
127829062 | 100 days ago | 0.00000372364546 ETH | ||||
123969848 | 189 days ago | 0.000088605 ETH | ||||
123969848 | 189 days ago | 0.000088605 ETH | ||||
122113267 | 232 days ago | 0.000001123672474 ETH | ||||
122113267 | 232 days ago | 0.000001123672474 ETH | ||||
120580025 | 268 days ago | 0.002897765828961 ETH | ||||
120580025 | 268 days ago | 0.002897765828961 ETH | ||||
117795393 | 332 days ago | 0.000109119350842 ETH | ||||
117795393 | 332 days ago | 0.000109119350842 ETH | ||||
117591708 | 337 days ago | 0.000010481101665 ETH | ||||
117591708 | 337 days ago | 0.000010481101665 ETH | ||||
116431247 | 364 days ago | 0.000069238896462 ETH | ||||
116431247 | 364 days ago | 0.000069238896462 ETH | ||||
116111874 | 371 days ago | 0.000000112737987 ETH | ||||
116111874 | 371 days ago | 0.000000112737987 ETH | ||||
115834060 | 378 days ago | 0.000039434514628 ETH |
Loading...
Loading
Contract Name:
FeeSplitter
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 5000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.11; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./interfaces/external/IWETH.sol"; /// @title Manage the fees between shareholders /// @notice Receives fees collected by the NestedFactory, and splits the income among /// shareholders (the NFT owners, Nested treasury and a NST buybacker contract). contract FeeSplitter is Ownable, ReentrancyGuard { /* ------------------------------ EVENTS ------------------------------ */ /// @dev Emitted when a payment is released /// @param to The address receiving the payment /// @param token The token transfered /// @param amount The amount paid event PaymentReleased(address to, address token, uint256 amount); /// @dev Emitted when a payment is received /// @param from The address sending the tokens /// @param token The token received /// @param amount The amount received event PaymentReceived(address from, address token, uint256 amount); /// @dev Emitted when the royalties weight is updated /// @param weight The new weight event RoyaltiesWeightUpdated(uint256 weight); /// @dev Emitted when a new shareholder is added /// @param account The new shareholder account /// @param weight The shareholder weight event ShareholdersAdded(address account, uint256 weight); /// @dev Emitted when a shareholder weight is updated /// @param account The shareholder address /// @param weight The new weight event ShareholderUpdated(address account, uint256 weight); /// @dev Emitted when royalties are claim released /// @param to The address claiming the royalties /// @param token The token received /// @param value The amount received event RoyaltiesReceived(address to, address token, uint256 value); /* ------------------------------ STRUCTS ------------------------------ */ /// @dev Represent a shareholder /// @param account Shareholders address that can receive income /// @param weight Determines share allocation struct Shareholder { address account; uint96 weight; } /// @dev Registers shares and amount release for a specific token or ETH struct TokenRecords { uint256 totalShares; uint256 totalReleased; mapping(address => uint256) shares; mapping(address => uint256) released; } /* ----------------------------- VARIABLES ----------------------------- */ /// @dev Map of tokens with the tokenRecords mapping(address => TokenRecords) private tokenRecords; /// @dev All the shareholders (array) Shareholder[] private shareholders; /// @dev Royalties part weights when applicable uint256 public royaltiesWeight; uint256 public totalWeights; address public immutable weth; /* ---------------------------- CONSTRUCTOR ---------------------------- */ constructor( address[] memory _accounts, uint96[] memory _weights, uint256 _royaltiesWeight, address _weth ) { require(_weth != address(0), "FS: INVALID_ADDRESS"); // Initial shareholders addresses and weights setShareholders(_accounts, _weights); setRoyaltiesWeight(_royaltiesWeight); weth = _weth; } /// @dev Receive ether after a WETH withdraw call receive() external payable { require(msg.sender == weth, "FS: ETH_SENDER_NOT_WETH"); } /* -------------------------- OWNER FUNCTIONS -------------------------- */ /// @notice Sets the weight assigned to the royalties part for the fee /// @param _weight The new royalties weight function setRoyaltiesWeight(uint256 _weight) public onlyOwner { require(_weight != 0, "FS: WEIGHT_ZERO"); totalWeights = totalWeights + _weight - royaltiesWeight; royaltiesWeight = _weight; emit RoyaltiesWeightUpdated(_weight); } /// @notice Sets a new list of shareholders /// @param _accounts Shareholders accounts list /// @param _weights Weight for each shareholder. Determines part of the payment allocated to them function setShareholders(address[] memory _accounts, uint96[] memory _weights) public onlyOwner { delete shareholders; uint256 accountsLength = _accounts.length; require(accountsLength != 0, "FS: EMPTY_ARRAY"); require(accountsLength == _weights.length, "FS: INPUTS_LENGTH_MUST_MATCH"); totalWeights = royaltiesWeight; for (uint256 i = 0; i < accountsLength; i++) { _addShareholder(_accounts[i], _weights[i]); } } /// @notice Updates weight for a shareholder /// @param _accountIndex Account to change the weight of /// @param _weight The new weight function updateShareholder(uint256 _accountIndex, uint96 _weight) external onlyOwner { require(_weight != 0, "FS: INVALID_WEIGHT"); require(_accountIndex < shareholders.length, "FS: INVALID_ACCOUNT_INDEX"); Shareholder storage _shareholder = shareholders[_accountIndex]; totalWeights = totalWeights + _weight - _shareholder.weight; require(totalWeights != 0, "FS: TOTAL_WEIGHTS_ZERO"); _shareholder.weight = _weight; emit ShareholderUpdated(_shareholder.account, _weight); } /* -------------------------- USERS FUNCTIONS -------------------------- */ /// @notice Release multiple tokens and handle ETH unwrapping /// @param _tokens ERC20 tokens to release function releaseTokens(IERC20[] calldata _tokens) external nonReentrant { uint256 amount; for (uint256 i = 0; i < _tokens.length; i++) { amount = _releaseToken(_msgSender(), _tokens[i]); if (address(_tokens[i]) == weth) { IWETH(weth).withdraw(amount); (bool success, ) = _msgSender().call{ value: amount }(""); require(success, "FS: ETH_TRANFER_ERROR"); } else { SafeERC20.safeTransfer(_tokens[i], _msgSender(), amount); } emit PaymentReleased(_msgSender(), address(_tokens[i]), amount); } } /// @notice Release multiple tokens without ETH unwrapping /// @param _tokens ERC20 tokens to release function releaseTokensNoETH(IERC20[] calldata _tokens) external nonReentrant { uint256 amount; for (uint256 i = 0; i < _tokens.length; i++) { amount = _releaseToken(_msgSender(), _tokens[i]); SafeERC20.safeTransfer(_tokens[i], _msgSender(), amount); emit PaymentReleased(_msgSender(), address(_tokens[i]), amount); } } /// @notice Sends a fee to this contract for splitting, as an ERC20 token. No royalties are expected. /// @param _token Currency for the fee as an ERC20 token /// @param _amount Amount of token as fee to be claimed by this contract function sendFees(IERC20 _token, uint256 _amount) external nonReentrant { uint256 weights; unchecked { weights = totalWeights - royaltiesWeight; } uint256 balanceBeforeTransfer = _token.balanceOf(address(this)); SafeERC20.safeTransferFrom(_token, _msgSender(), address(this), _amount); _sendFees(_token, _token.balanceOf(address(this)) - balanceBeforeTransfer, weights); } /// @notice Sends a fee to this contract for splitting, as an ERC20 token /// @param _royaltiesTarget The account that can claim royalties /// @param _token Currency for the fee as an ERC20 token /// @param _amount Amount of token as fee to be claimed by this contract function sendFeesWithRoyalties( address _royaltiesTarget, IERC20 _token, uint256 _amount ) external nonReentrant { require(_royaltiesTarget != address(0), "FS: INVALID_ROYALTIES_TARGET"); uint256 balanceBeforeTransfer = _token.balanceOf(address(this)); SafeERC20.safeTransferFrom(_token, _msgSender(), address(this), _amount); uint256 amountReceived = _token.balanceOf(address(this)) - balanceBeforeTransfer; uint256 _totalWeights = totalWeights; uint256 royaltiesAmount = (amountReceived * royaltiesWeight) / _totalWeights; _sendFees(_token, amountReceived, _totalWeights); _addShares(_royaltiesTarget, royaltiesAmount, address(_token)); emit RoyaltiesReceived(_royaltiesTarget, address(_token), royaltiesAmount); } /* ------------------------------- VIEWS ------------------------------- */ /// @notice Returns the amount due to an account. Call releaseToken to withdraw the amount. /// @param _account Account address to check the amount due for /// @param _token ERC20 payment token address /// @return The total amount due for the requested currency function getAmountDue(address _account, IERC20 _token) public view returns (uint256) { TokenRecords storage _tokenRecords = tokenRecords[address(_token)]; uint256 _totalShares = _tokenRecords.totalShares; if (_totalShares == 0) return 0; uint256 totalReceived = _tokenRecords.totalReleased + _token.balanceOf(address(this)); return (totalReceived * _tokenRecords.shares[_account]) / _totalShares - _tokenRecords.released[_account]; } /// @notice Getter for the total shares held by shareholders. /// @param _token Payment token address /// @return The total shares count function totalShares(address _token) external view returns (uint256) { return tokenRecords[_token].totalShares; } /// @notice Getter for the total amount of token already released. /// @param _token Payment token address /// @return The total amount release to shareholders function totalReleased(address _token) external view returns (uint256) { return tokenRecords[_token].totalReleased; } /// @notice Getter for the amount of shares held by an account. /// @param _account Account the shares belong to /// @param _token Payment token address /// @return The shares owned by the account function shares(address _account, address _token) external view returns (uint256) { return tokenRecords[_token].shares[_account]; } /// @notice Getter for the amount of Ether already released to a shareholders. /// @param _account The target account for this request /// @param _token Payment token address /// @return The amount already released to this account function released(address _account, address _token) external view returns (uint256) { return tokenRecords[_token].released[_account]; } /// @notice Finds a shareholder and return its index /// @param _account Account to find /// @return The shareholder index in the storage array function findShareholder(address _account) external view returns (uint256) { for (uint256 i = 0; i < shareholders.length; i++) { if (shareholders[i].account == _account) return i; } revert("FS: SHAREHOLDER_NOT_FOUND"); } /* ------------------------- PRIVATE FUNCTIONS ------------------------- */ /// @notice Transfers a fee to this contract /// @dev This method calculates the amount received, to support deflationary tokens /// @param _token Currency for the fee /// @param _amount Amount of token sent /// @param _totalWeights Total weights to determine the share count to allocate function _sendFees( IERC20 _token, uint256 _amount, uint256 _totalWeights ) private { Shareholder[] memory shareholdersCache = shareholders; for (uint256 i = 0; i < shareholdersCache.length; i++) { _addShares( shareholdersCache[i].account, (_amount * shareholdersCache[i].weight) / _totalWeights, address(_token) ); } emit PaymentReceived(_msgSender(), address(_token), _amount); } /// @dev Increase the shares of a shareholder /// @param _account The shareholder address /// @param _shares The shares of the holder /// @param _token The updated token function _addShares( address _account, uint256 _shares, address _token ) private { TokenRecords storage _tokenRecords = tokenRecords[_token]; _tokenRecords.shares[_account] += _shares; _tokenRecords.totalShares += _shares; } function _releaseToken(address _account, IERC20 _token) private returns (uint256) { uint256 amountToRelease = getAmountDue(_account, _token); require(amountToRelease != 0, "FS: NO_PAYMENT_DUE"); TokenRecords storage _tokenRecords = tokenRecords[address(_token)]; _tokenRecords.released[_account] += amountToRelease; _tokenRecords.totalReleased += amountToRelease; return amountToRelease; } function _addShareholder(address _account, uint96 _weight) private { require(_weight != 0, "FS: ZERO_WEIGHT"); require(_account != address(0), "FS: INVALID_ADDRESS"); for (uint256 i = 0; i < shareholders.length; i++) { require(shareholders[i].account != _account, "FS: ALREADY_SHAREHOLDER"); } shareholders.push(Shareholder(_account, _weight)); totalWeights += _weight; emit ShareholdersAdded(_account, _weight); } }
// SPDX-License-Identifier: MIT pragma solidity ^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); /** * @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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); }
// SPDX-License-Identifier: MIT 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC20.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 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 { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.11; interface IWETH { function deposit() external payable; function withdraw(uint256) external; function totalSupply() external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT 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: MIT pragma solidity ^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) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 5000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint96[]","name":"_weights","type":"uint96[]"},{"internalType":"uint256","name":"_royaltiesWeight","type":"uint256"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RoyaltiesReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"RoyaltiesWeightUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"ShareholderUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"ShareholdersAdded","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"findShareholder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"getAmountDue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"_tokens","type":"address[]"}],"name":"releaseTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"_tokens","type":"address[]"}],"name":"releaseTokensNoETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltiesWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sendFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltiesTarget","type":"address"},{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sendFeesWithRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weight","type":"uint256"}],"name":"setRoyaltiesWeight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint96[]","name":"_weights","type":"uint96[]"}],"name":"setShareholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWeights","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":[{"internalType":"uint256","name":"_accountIndex","type":"uint256"},{"internalType":"uint96","name":"_weight","type":"uint96"}],"name":"updateShareholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002b6338038062002b638339810160408190526200003491620006d0565b6200003f33620000c2565b600180556001600160a01b038116620000955760405162461bcd60e51b815260206004820152601360248201527246533a20494e56414c49445f4144445245535360681b60448201526064015b60405180910390fd5b620000a1848462000112565b620000ac8262000277565b6001600160a01b0316608052506200083b915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200015d5760405162461bcd60e51b8152602060048201819052602482015260008051602062002b4383398151915260448201526064016200008c565b6200016b600360006200057c565b815180620001ae5760405162461bcd60e51b815260206004820152600f60248201526e46533a20454d5054595f415252415960881b60448201526064016200008c565b81518114620002005760405162461bcd60e51b815260206004820152601c60248201527f46533a20494e505554535f4c454e4754485f4d5553545f4d415443480000000060448201526064016200008c565b60045460055560005b8181101562000271576200025c8482815181106200022b576200022b620007bc565b6020026020010151848381518110620002485762000248620007bc565b60200260200101516200036060201b60201c565b806200026881620007e8565b91505062000209565b50505050565b6000546001600160a01b03163314620002c25760405162461bcd60e51b8152602060048201819052602482015260008051602062002b4383398151915260448201526064016200008c565b80620003035760405162461bcd60e51b815260206004820152600f60248201526e46533a205745494748545f5a45524f60881b60448201526064016200008c565b6004548160055462000316919062000806565b62000322919062000821565b60055560048190556040518181527f16326b748bc59ea9b379269f3d88165d7540f9761e4a100e0be7e21c90a15b829060200160405180910390a150565b6001600160601b038116620003aa5760405162461bcd60e51b815260206004820152600f60248201526e1194ce8816915493d7d5d15251d215608a1b60448201526064016200008c565b6001600160a01b038216620003f85760405162461bcd60e51b815260206004820152601360248201527246533a20494e56414c49445f4144445245535360681b60448201526064016200008c565b60005b600354811015620004a057826001600160a01b031660038281548110620004265762000426620007bc565b6000918252602090912001546001600160a01b031614156200048b5760405162461bcd60e51b815260206004820152601760248201527f46533a20414c52454144595f5348415245484f4c44455200000000000000000060448201526064016200008c565b806200049781620007e8565b915050620003fb565b50604080518082019091526001600160a01b0380841682526001600160601b038084166020840181815260038054600181018255600091825295519151909316600160a01b029316929092177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093019290925560058054919290916200052990849062000806565b9091555050604080516001600160a01b03841681526001600160601b03831660208201527f6beafc8ad282580ef154ba4a63a0a743acc9d351060b89cf09cfbd3fd621c878910160405180910390a15050565b50805460008255906000526020600020908101906200059c91906200059f565b50565b5b80821115620005b65760008155600101620005a0565b5090565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620005fb57620005fb620005ba565b604052919050565b60006001600160401b038211156200061f576200061f620005ba565b5060051b60200190565b80516001600160a01b03811681146200064157600080fd5b919050565b600082601f8301126200065857600080fd5b81516020620006716200066b8362000603565b620005d0565b82815260059290921b840181019181810190868411156200069157600080fd5b8286015b84811015620006c55780516001600160601b0381168114620006b75760008081fd5b835291830191830162000695565b509695505050505050565b60008060008060808587031215620006e757600080fd5b84516001600160401b0380821115620006ff57600080fd5b818701915087601f8301126200071457600080fd5b81516020620007276200066b8362000603565b82815260059290921b8401810191818101908b8411156200074757600080fd5b948201945b838610156200077057620007608662000629565b825294820194908201906200074c565b918a01519198509093505050808211156200078a57600080fd5b50620007998782880162000646565b93505060408501519150620007b16060860162000629565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415620007ff57620007ff620007d2565b5060010190565b600082198211156200081c576200081c620007d2565b500190565b600082821015620008365762000836620007d2565b500390565b6080516122d76200086c600039600081816101580152818161025601528181610a190152610aa601526122d76000f3fe6080604052600436106101485760003560e01c80637d2a47b9116100c0578063bf6b874e11610074578063d79779b211610059578063d79779b214610462578063d804d3461461049b578063f2fde38b146104b157600080fd5b8063bf6b874e1461040c578063d6b274a51461044257600080fd5b80638da5cb5b116100a55780638da5cb5b146103b8578063926323d5146103d6578063b76ae9ca146103ec57600080fd5b80637d2a47b9146103505780637df446471461037057600080fd5b8063406072a9116101175780636d9634b7116100fc5780636d9634b7146102fb578063715018a61461031b5780637bb1cbc51461033057600080fd5b8063406072a91461029057806355698aa1146102db57600080fd5b80631024187b146101d157806319276d35146101f157806321a95657146102245780633fc8cef31461024457600080fd5b366101cc57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101ca5760405162461bcd60e51b815260206004820152601760248201527f46533a204554485f53454e4445525f4e4f545f5745544800000000000000000060448201526064015b60405180910390fd5b005b600080fd5b3480156101dd57600080fd5b506101ca6101ec366004611e6e565b6104d1565b3480156101fd57600080fd5b5061021161020c366004611f30565b61063b565b6040519081526020015b60405180910390f35b34801561023057600080fd5b506101ca61023f366004611f69565b610751565b34801561025057600080fd5b506102787f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161021b565b34801561029c57600080fd5b506102116102ab366004611f30565b6001600160a01b038082166000908152600260209081526040808320938616835260039093019052205492915050565b3480156102e757600080fd5b506101ca6102f6366004611f82565b610851565b34801561030757600080fd5b506101ca610316366004611f82565b6109a8565b34801561032757600080fd5b506101ca610c53565b34801561033c57600080fd5b506101ca61034b366004611ff7565b610cb9565b34801561035c57600080fd5b5061021161036b366004612038565b610f1d565b34801561037c57600080fd5b5061021161038b366004611f30565b6001600160a01b039081166000908152600260208181526040808420959094168352930190925290205490565b3480156103c457600080fd5b506000546001600160a01b0316610278565b3480156103e257600080fd5b5061021160055481565b3480156103f857600080fd5b506101ca610407366004612055565b610fc4565b34801561041857600080fd5b50610211610427366004612038565b6001600160a01b031660009081526002602052604090205490565b34801561044e57600080fd5b506101ca61045d366004612081565b6111fe565b34801561046e57600080fd5b5061021161047d366004612038565b6001600160a01b031660009081526002602052604090206001015490565b3480156104a757600080fd5b5061021160045481565b3480156104bd57600080fd5b506101ca6104cc366004612038565b61138c565b6000546001600160a01b0316331461052b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b61053760036000611d10565b8151806105865760405162461bcd60e51b815260206004820152600f60248201527f46533a20454d5054595f4152524159000000000000000000000000000000000060448201526064016101c1565b815181146105d65760405162461bcd60e51b815260206004820152601c60248201527f46533a20494e505554535f4c454e4754485f4d5553545f4d415443480000000060448201526064016101c1565b60045460055560005b81811015610635576106238482815181106105fc576105fc6120ad565b6020026020010151848381518110610616576106166120ad565b602002602001015161146e565b8061062d8161210b565b9150506105df565b50505050565b6001600160a01b03811660009081526002602052604081208054806106655760009250505061074b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190612144565b83600101546106f8919061215d565b6001600160a01b038716600090815260038501602090815260408083205460028801909252909120549192509083906107319084612175565b61073b91906121b2565b61074591906121ed565b93505050505b92915050565b6000546001600160a01b031633146107ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b806107f85760405162461bcd60e51b815260206004820152600f60248201527f46533a205745494748545f5a45524f000000000000000000000000000000000060448201526064016101c1565b60045481600554610809919061215d565b61081391906121ed565b60055560048190556040518181527f16326b748bc59ea9b379269f3d88165d7540f9761e4a100e0be7e21c90a15b829060200160405180910390a150565b600260015414156108a45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556000805b8281101561099e576108e6335b8585848181106108cc576108cc6120ad565b90506020020160208101906108e19190612038565b6116b3565b91506109198484838181106108fd576108fd6120ad565b90506020020160208101906109129190612038565b3384611772565b7f8ac5b3c2902b21b6bbb4d99ec195e28a242cb6a1777804db10b84d91e20064293385858481811061094d5761094d6120ad565b90506020020160208101906109629190612038565b604080516001600160a01b039384168152929091166020830152810184905260600160405180910390a1806109968161210b565b9150506108ad565b5050600180555050565b600260015414156109fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556000805b8281101561099e57610a15336108ba565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316848483818110610a5357610a536120ad565b9050602002016020810190610a689190612038565b6001600160a01b03161415610bb9576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050506000610b133390565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114610b5d576040519150601f19603f3d011682016040523d82523d6000602084013e610b62565b606091505b5050905080610bb35760405162461bcd60e51b815260206004820152601560248201527f46533a204554485f5452414e4645525f4552524f52000000000000000000000060448201526064016101c1565b50610bce565b610bce8484838181106108fd576108fd6120ad565b7f8ac5b3c2902b21b6bbb4d99ec195e28a242cb6a1777804db10b84d91e200642933858584818110610c0257610c026120ad565b9050602002016020810190610c179190612038565b604080516001600160a01b039384168152929091166020830152810184905260600160405180910390a180610c4b8161210b565b915050610a04565b6000546001600160a01b03163314610cad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b610cb76000611820565b565b60026001541415610d0c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556001600160a01b038316610d675760405162461bcd60e51b815260206004820152601c60248201527f46533a20494e56414c49445f524f59414c544945535f5441524745540000000060448201526064016101c1565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190612144565b9050610df983333085611888565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612144565b610e8991906121ed565b90506000600554905060008160045484610ea39190612175565b610ead91906121b2565b9050610eba8684846118d9565b610ec5878288611a3e565b604080516001600160a01b03808a168252881660208201529081018290527f58ca863eaccdde65fd836b5be0c27c260459f63059e82a3c3338748ea5e686809060600160405180910390a15050600180555050505050565b6000805b600354811015610f7b57826001600160a01b031660038281548110610f4857610f486120ad565b6000918252602090912001546001600160a01b03161415610f695792915050565b80610f738161210b565b915050610f21565b5060405162461bcd60e51b815260206004820152601960248201527f46533a205348415245484f4c4445525f4e4f545f464f554e440000000000000060448201526064016101c1565b6000546001600160a01b0316331461101e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b6bffffffffffffffffffffffff81166110795760405162461bcd60e51b815260206004820152601260248201527f46533a20494e56414c49445f574549474854000000000000000000000000000060448201526064016101c1565b60035482106110ca5760405162461bcd60e51b815260206004820152601960248201527f46533a20494e56414c49445f4143434f554e545f494e4445580000000000000060448201526064016101c1565b6000600383815481106110df576110df6120ad565b600091825260209091200180546005549192506bffffffffffffffffffffffff740100000000000000000000000000000000000000009091048116916111279185169061215d565b61113191906121ed565b60058190556111825760405162461bcd60e51b815260206004820152601660248201527f46533a20544f54414c5f574549474854535f5a45524f0000000000000000000060448201526064016101c1565b80546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff851690810282811785556040805194909116909217835260208301527f06945c82029753372decfeace485696553ab08354f682b4fa8e08d277e254985910160405180910390a1505050565b600260015414156112515760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b6002600155600480546005546040517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935203906000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e59190612144565b90506112f384333086611888565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261099e90859083906001600160a01b038316906370a0823190602401602060405180830381865afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c9190612144565b61138691906121ed565b846118d9565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b6001600160a01b0381166114625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101c1565b61146b81611820565b50565b6bffffffffffffffffffffffff81166114c95760405162461bcd60e51b815260206004820152600f60248201527f46533a205a45524f5f574549474854000000000000000000000000000000000060448201526064016101c1565b6001600160a01b03821661151f5760405162461bcd60e51b815260206004820152601360248201527f46533a20494e56414c49445f414444524553530000000000000000000000000060448201526064016101c1565b60005b6003548110156115be57826001600160a01b031660038281548110611549576115496120ad565b6000918252602090912001546001600160a01b031614156115ac5760405162461bcd60e51b815260206004820152601760248201527f46533a20414c52454144595f5348415245484f4c44455200000000000000000060448201526064016101c1565b806115b68161210b565b915050611522565b50604080518082019091526001600160a01b0380841682526bffffffffffffffffffffffff808416602084018181526003805460018101825560009182529551915190931674010000000000000000000000000000000000000000029316929092177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930192909255600580549192909161165b90849061215d565b9091555050604080516001600160a01b03841681526bffffffffffffffffffffffff831660208201527f6beafc8ad282580ef154ba4a63a0a743acc9d351060b89cf09cfbd3fd621c878910160405180910390a15050565b6000806116c0848461063b565b90508061170f5760405162461bcd60e51b815260206004820152601260248201527f46533a204e4f5f5041594d454e545f445545000000000000000000000000000060448201526064016101c1565b6001600160a01b0380841660009081526002602090815260408083209388168352600384019091528120805484929061174990849061215d565b9250508190555081816001016000828254611764919061215d565b909155509195945050505050565b6040516001600160a01b03831660248201526044810182905261181b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a9a565b505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526106359085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016117b7565b60006003805480602002602001604051908101604052809291908181526020016000905b8282101561196257600084815260209081902060408051808201909152908401546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16818301528252600190920191016118fd565b50505050905060005b81518110156119ef576119dd828281518110611989576119896120ad565b602002602001015160000151848484815181106119a8576119a86120ad565b6020026020010151602001516bffffffffffffffffffffffff16876119cd9190612175565b6119d791906121b2565b87611a3e565b806119e78161210b565b91505061196b565b50604080513381526001600160a01b038616602082015280820185905290517f45fdc265dc29885b9a485766b03e70978440d38c7c328ee0a14fa40c76c6af549181900360600190a150505050565b6001600160a01b0380821660009081526002602081815260408084209488168452918401905281208054859290611a7690849061215d565b9091555050805483908290600090611a8f90849061215d565b909155505050505050565b6000611aef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b7f9092919063ffffffff16565b80519091501561181b5780806020019051810190611b0d9190612204565b61181b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101c1565b6060611b8e8484600085611b98565b90505b9392505050565b606082471015611c105760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101c1565b843b611c5e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101c1565b600080866001600160a01b03168587604051611c7a9190612252565b60006040518083038185875af1925050503d8060008114611cb7576040519150601f19603f3d011682016040523d82523d6000602084013e611cbc565b606091505b5091509150611ccc828286611cd7565b979650505050505050565b60608315611ce6575081611b91565b825115611cf65782518084602001fd5b8160405162461bcd60e51b81526004016101c1919061226e565b508054600082559060005260206000209081019061146b91905b80821115611d3e5760008155600101611d2a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d9a57611d9a611d42565b604052919050565b600067ffffffffffffffff821115611dbc57611dbc611d42565b5060051b60200190565b6001600160a01b038116811461146b57600080fd5b80356bffffffffffffffffffffffff81168114611df757600080fd5b919050565b600082601f830112611e0d57600080fd5b81356020611e22611e1d83611da2565b611d71565b82815260059290921b84018101918181019086841115611e4157600080fd5b8286015b84811015611e6357611e5681611ddb565b8352918301918301611e45565b509695505050505050565b60008060408385031215611e8157600080fd5b823567ffffffffffffffff80821115611e9957600080fd5b818501915085601f830112611ead57600080fd5b81356020611ebd611e1d83611da2565b82815260059290921b84018101918181019089841115611edc57600080fd5b948201945b83861015611f03578535611ef481611dc6565b82529482019490820190611ee1565b96505086013592505080821115611f1957600080fd5b50611f2685828601611dfc565b9150509250929050565b60008060408385031215611f4357600080fd5b8235611f4e81611dc6565b91506020830135611f5e81611dc6565b809150509250929050565b600060208284031215611f7b57600080fd5b5035919050565b60008060208385031215611f9557600080fd5b823567ffffffffffffffff80821115611fad57600080fd5b818501915085601f830112611fc157600080fd5b813581811115611fd057600080fd5b8660208260051b8501011115611fe557600080fd5b60209290920196919550909350505050565b60008060006060848603121561200c57600080fd5b833561201781611dc6565b9250602084013561202781611dc6565b929592945050506040919091013590565b60006020828403121561204a57600080fd5b8135611b9181611dc6565b6000806040838503121561206857600080fd5b8235915061207860208401611ddb565b90509250929050565b6000806040838503121561209457600080fd5b823561209f81611dc6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561213d5761213d6120dc565b5060010190565b60006020828403121561215657600080fd5b5051919050565b60008219821115612170576121706120dc565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156121ad576121ad6120dc565b500290565b6000826121e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156121ff576121ff6120dc565b500390565b60006020828403121561221657600080fd5b81518015158114611b9157600080fd5b60005b83811015612241578181015183820152602001612229565b838111156106355750506000910152565b60008251612264818460208701612226565b9190910192915050565b602081526000825180602084015261228d816040850160208701612226565b601f01601f1916919091016040019291505056fea264697066735822122011b8f9c28be98fcd53f3f53a52e12b47e4f0ee67393976e7676157fc90ea569864736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000014000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b928f82d2e3371420136de930f2dcd7928b2e6100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014
Deployed Bytecode
0x6080604052600436106101485760003560e01c80637d2a47b9116100c0578063bf6b874e11610074578063d79779b211610059578063d79779b214610462578063d804d3461461049b578063f2fde38b146104b157600080fd5b8063bf6b874e1461040c578063d6b274a51461044257600080fd5b80638da5cb5b116100a55780638da5cb5b146103b8578063926323d5146103d6578063b76ae9ca146103ec57600080fd5b80637d2a47b9146103505780637df446471461037057600080fd5b8063406072a9116101175780636d9634b7116100fc5780636d9634b7146102fb578063715018a61461031b5780637bb1cbc51461033057600080fd5b8063406072a91461029057806355698aa1146102db57600080fd5b80631024187b146101d157806319276d35146101f157806321a95657146102245780633fc8cef31461024457600080fd5b366101cc57336001600160a01b037f000000000000000000000000420000000000000000000000000000000000000616146101ca5760405162461bcd60e51b815260206004820152601760248201527f46533a204554485f53454e4445525f4e4f545f5745544800000000000000000060448201526064015b60405180910390fd5b005b600080fd5b3480156101dd57600080fd5b506101ca6101ec366004611e6e565b6104d1565b3480156101fd57600080fd5b5061021161020c366004611f30565b61063b565b6040519081526020015b60405180910390f35b34801561023057600080fd5b506101ca61023f366004611f69565b610751565b34801561025057600080fd5b506102787f000000000000000000000000420000000000000000000000000000000000000681565b6040516001600160a01b03909116815260200161021b565b34801561029c57600080fd5b506102116102ab366004611f30565b6001600160a01b038082166000908152600260209081526040808320938616835260039093019052205492915050565b3480156102e757600080fd5b506101ca6102f6366004611f82565b610851565b34801561030757600080fd5b506101ca610316366004611f82565b6109a8565b34801561032757600080fd5b506101ca610c53565b34801561033c57600080fd5b506101ca61034b366004611ff7565b610cb9565b34801561035c57600080fd5b5061021161036b366004612038565b610f1d565b34801561037c57600080fd5b5061021161038b366004611f30565b6001600160a01b039081166000908152600260208181526040808420959094168352930190925290205490565b3480156103c457600080fd5b506000546001600160a01b0316610278565b3480156103e257600080fd5b5061021160055481565b3480156103f857600080fd5b506101ca610407366004612055565b610fc4565b34801561041857600080fd5b50610211610427366004612038565b6001600160a01b031660009081526002602052604090205490565b34801561044e57600080fd5b506101ca61045d366004612081565b6111fe565b34801561046e57600080fd5b5061021161047d366004612038565b6001600160a01b031660009081526002602052604090206001015490565b3480156104a757600080fd5b5061021160045481565b3480156104bd57600080fd5b506101ca6104cc366004612038565b61138c565b6000546001600160a01b0316331461052b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b61053760036000611d10565b8151806105865760405162461bcd60e51b815260206004820152600f60248201527f46533a20454d5054595f4152524159000000000000000000000000000000000060448201526064016101c1565b815181146105d65760405162461bcd60e51b815260206004820152601c60248201527f46533a20494e505554535f4c454e4754485f4d5553545f4d415443480000000060448201526064016101c1565b60045460055560005b81811015610635576106238482815181106105fc576105fc6120ad565b6020026020010151848381518110610616576106166120ad565b602002602001015161146e565b8061062d8161210b565b9150506105df565b50505050565b6001600160a01b03811660009081526002602052604081208054806106655760009250505061074b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa1580156106c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190612144565b83600101546106f8919061215d565b6001600160a01b038716600090815260038501602090815260408083205460028801909252909120549192509083906107319084612175565b61073b91906121b2565b61074591906121ed565b93505050505b92915050565b6000546001600160a01b031633146107ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b806107f85760405162461bcd60e51b815260206004820152600f60248201527f46533a205745494748545f5a45524f000000000000000000000000000000000060448201526064016101c1565b60045481600554610809919061215d565b61081391906121ed565b60055560048190556040518181527f16326b748bc59ea9b379269f3d88165d7540f9761e4a100e0be7e21c90a15b829060200160405180910390a150565b600260015414156108a45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556000805b8281101561099e576108e6335b8585848181106108cc576108cc6120ad565b90506020020160208101906108e19190612038565b6116b3565b91506109198484838181106108fd576108fd6120ad565b90506020020160208101906109129190612038565b3384611772565b7f8ac5b3c2902b21b6bbb4d99ec195e28a242cb6a1777804db10b84d91e20064293385858481811061094d5761094d6120ad565b90506020020160208101906109629190612038565b604080516001600160a01b039384168152929091166020830152810184905260600160405180910390a1806109968161210b565b9150506108ad565b5050600180555050565b600260015414156109fb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556000805b8281101561099e57610a15336108ba565b91507f00000000000000000000000042000000000000000000000000000000000000066001600160a01b0316848483818110610a5357610a536120ad565b9050602002016020810190610a689190612038565b6001600160a01b03161415610bb9576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000042000000000000000000000000000000000000066001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050506000610b133390565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114610b5d576040519150601f19603f3d011682016040523d82523d6000602084013e610b62565b606091505b5050905080610bb35760405162461bcd60e51b815260206004820152601560248201527f46533a204554485f5452414e4645525f4552524f52000000000000000000000060448201526064016101c1565b50610bce565b610bce8484838181106108fd576108fd6120ad565b7f8ac5b3c2902b21b6bbb4d99ec195e28a242cb6a1777804db10b84d91e200642933858584818110610c0257610c026120ad565b9050602002016020810190610c179190612038565b604080516001600160a01b039384168152929091166020830152810184905260600160405180910390a180610c4b8161210b565b915050610a04565b6000546001600160a01b03163314610cad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b610cb76000611820565b565b60026001541415610d0c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b60026001556001600160a01b038316610d675760405162461bcd60e51b815260206004820152601c60248201527f46533a20494e56414c49445f524f59414c544945535f5441524745540000000060448201526064016101c1565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190612144565b9050610df983333085611888565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612144565b610e8991906121ed565b90506000600554905060008160045484610ea39190612175565b610ead91906121b2565b9050610eba8684846118d9565b610ec5878288611a3e565b604080516001600160a01b03808a168252881660208201529081018290527f58ca863eaccdde65fd836b5be0c27c260459f63059e82a3c3338748ea5e686809060600160405180910390a15050600180555050505050565b6000805b600354811015610f7b57826001600160a01b031660038281548110610f4857610f486120ad565b6000918252602090912001546001600160a01b03161415610f695792915050565b80610f738161210b565b915050610f21565b5060405162461bcd60e51b815260206004820152601960248201527f46533a205348415245484f4c4445525f4e4f545f464f554e440000000000000060448201526064016101c1565b6000546001600160a01b0316331461101e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b6bffffffffffffffffffffffff81166110795760405162461bcd60e51b815260206004820152601260248201527f46533a20494e56414c49445f574549474854000000000000000000000000000060448201526064016101c1565b60035482106110ca5760405162461bcd60e51b815260206004820152601960248201527f46533a20494e56414c49445f4143434f554e545f494e4445580000000000000060448201526064016101c1565b6000600383815481106110df576110df6120ad565b600091825260209091200180546005549192506bffffffffffffffffffffffff740100000000000000000000000000000000000000009091048116916111279185169061215d565b61113191906121ed565b60058190556111825760405162461bcd60e51b815260206004820152601660248201527f46533a20544f54414c5f574549474854535f5a45524f0000000000000000000060448201526064016101c1565b80546001600160a01b03908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff851690810282811785556040805194909116909217835260208301527f06945c82029753372decfeace485696553ab08354f682b4fa8e08d277e254985910160405180910390a1505050565b600260015414156112515760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c1565b6002600155600480546005546040517f70a08231000000000000000000000000000000000000000000000000000000008152309381019390935203906000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e59190612144565b90506112f384333086611888565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261099e90859083906001600160a01b038316906370a0823190602401602060405180830381865afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c9190612144565b61138691906121ed565b846118d9565b6000546001600160a01b031633146113e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c1565b6001600160a01b0381166114625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101c1565b61146b81611820565b50565b6bffffffffffffffffffffffff81166114c95760405162461bcd60e51b815260206004820152600f60248201527f46533a205a45524f5f574549474854000000000000000000000000000000000060448201526064016101c1565b6001600160a01b03821661151f5760405162461bcd60e51b815260206004820152601360248201527f46533a20494e56414c49445f414444524553530000000000000000000000000060448201526064016101c1565b60005b6003548110156115be57826001600160a01b031660038281548110611549576115496120ad565b6000918252602090912001546001600160a01b031614156115ac5760405162461bcd60e51b815260206004820152601760248201527f46533a20414c52454144595f5348415245484f4c44455200000000000000000060448201526064016101c1565b806115b68161210b565b915050611522565b50604080518082019091526001600160a01b0380841682526bffffffffffffffffffffffff808416602084018181526003805460018101825560009182529551915190931674010000000000000000000000000000000000000000029316929092177fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930192909255600580549192909161165b90849061215d565b9091555050604080516001600160a01b03841681526bffffffffffffffffffffffff831660208201527f6beafc8ad282580ef154ba4a63a0a743acc9d351060b89cf09cfbd3fd621c878910160405180910390a15050565b6000806116c0848461063b565b90508061170f5760405162461bcd60e51b815260206004820152601260248201527f46533a204e4f5f5041594d454e545f445545000000000000000000000000000060448201526064016101c1565b6001600160a01b0380841660009081526002602090815260408083209388168352600384019091528120805484929061174990849061215d565b9250508190555081816001016000828254611764919061215d565b909155509195945050505050565b6040516001600160a01b03831660248201526044810182905261181b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a9a565b505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526106359085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016117b7565b60006003805480602002602001604051908101604052809291908181526020016000905b8282101561196257600084815260209081902060408051808201909152908401546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16818301528252600190920191016118fd565b50505050905060005b81518110156119ef576119dd828281518110611989576119896120ad565b602002602001015160000151848484815181106119a8576119a86120ad565b6020026020010151602001516bffffffffffffffffffffffff16876119cd9190612175565b6119d791906121b2565b87611a3e565b806119e78161210b565b91505061196b565b50604080513381526001600160a01b038616602082015280820185905290517f45fdc265dc29885b9a485766b03e70978440d38c7c328ee0a14fa40c76c6af549181900360600190a150505050565b6001600160a01b0380821660009081526002602081815260408084209488168452918401905281208054859290611a7690849061215d565b9091555050805483908290600090611a8f90849061215d565b909155505050505050565b6000611aef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b7f9092919063ffffffff16565b80519091501561181b5780806020019051810190611b0d9190612204565b61181b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101c1565b6060611b8e8484600085611b98565b90505b9392505050565b606082471015611c105760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101c1565b843b611c5e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101c1565b600080866001600160a01b03168587604051611c7a9190612252565b60006040518083038185875af1925050503d8060008114611cb7576040519150601f19603f3d011682016040523d82523d6000602084013e611cbc565b606091505b5091509150611ccc828286611cd7565b979650505050505050565b60608315611ce6575081611b91565b825115611cf65782518084602001fd5b8160405162461bcd60e51b81526004016101c1919061226e565b508054600082559060005260206000209081019061146b91905b80821115611d3e5760008155600101611d2a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d9a57611d9a611d42565b604052919050565b600067ffffffffffffffff821115611dbc57611dbc611d42565b5060051b60200190565b6001600160a01b038116811461146b57600080fd5b80356bffffffffffffffffffffffff81168114611df757600080fd5b919050565b600082601f830112611e0d57600080fd5b81356020611e22611e1d83611da2565b611d71565b82815260059290921b84018101918181019086841115611e4157600080fd5b8286015b84811015611e6357611e5681611ddb565b8352918301918301611e45565b509695505050505050565b60008060408385031215611e8157600080fd5b823567ffffffffffffffff80821115611e9957600080fd5b818501915085601f830112611ead57600080fd5b81356020611ebd611e1d83611da2565b82815260059290921b84018101918181019089841115611edc57600080fd5b948201945b83861015611f03578535611ef481611dc6565b82529482019490820190611ee1565b96505086013592505080821115611f1957600080fd5b50611f2685828601611dfc565b9150509250929050565b60008060408385031215611f4357600080fd5b8235611f4e81611dc6565b91506020830135611f5e81611dc6565b809150509250929050565b600060208284031215611f7b57600080fd5b5035919050565b60008060208385031215611f9557600080fd5b823567ffffffffffffffff80821115611fad57600080fd5b818501915085601f830112611fc157600080fd5b813581811115611fd057600080fd5b8660208260051b8501011115611fe557600080fd5b60209290920196919550909350505050565b60008060006060848603121561200c57600080fd5b833561201781611dc6565b9250602084013561202781611dc6565b929592945050506040919091013590565b60006020828403121561204a57600080fd5b8135611b9181611dc6565b6000806040838503121561206857600080fd5b8235915061207860208401611ddb565b90509250929050565b6000806040838503121561209457600080fd5b823561209f81611dc6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561213d5761213d6120dc565b5060010190565b60006020828403121561215657600080fd5b5051919050565b60008219821115612170576121706120dc565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156121ad576121ad6120dc565b500290565b6000826121e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000828210156121ff576121ff6120dc565b500390565b60006020828403121561221657600080fd5b81518015158114611b9157600080fd5b60005b83811015612241578181015183820152602001612229565b838111156106355750506000910152565b60008251612264818460208701612226565b9190910192915050565b602081526000825180602084015261228d816040850160208701612226565b601f01601f1916919091016040019291505056fea264697066735822122011b8f9c28be98fcd53f3f53a52e12b47e4f0ee67393976e7676157fc90ea569864736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000014000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b928f82d2e3371420136de930f2dcd7928b2e6100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014
-----Decoded View---------------
Arg [0] : _accounts (address[]): 0x0b928f82d2E3371420136DE930f2dCd7928b2e61
Arg [1] : _weights (uint96[]): 20
Arg [2] : _royaltiesWeight (uint256): 20
Arg [3] : _weth (address): 0x4200000000000000000000000000000000000006
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [3] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000b928f82d2e3371420136de930f2dcd7928b2e61
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000014
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 99.68% | $2.64 | 3,314,983.6889 | $8,751,556.94 | |
POL | 0.14% | $0.999806 | 11,909.6374 | $11,907.33 | |
POL | 0.01% | $0.301403 | 3,079.7509 | $928.25 | |
POL | <0.01% | $2,679.24 | 0.2221 | $595.08 | |
POL | <0.01% | $251.02 | 1.4097 | $353.87 | |
POL | <0.01% | $0.999435 | 313.8646 | $313.69 | |
POL | <0.01% | $168.84 | 1.2765 | $215.52 | |
POL | <0.01% | $17.78 | 9.5827 | $170.38 | |
POL | <0.01% | $95,378 | 0.00149305 | $142.4 | |
POL | <0.01% | $7.31 | 16.0847 | $117.58 | |
POL | <0.01% | $4.16 | 18.529 | $77.08 | |
POL | <0.01% | $52.76 | 1.4512 | $76.56 | |
POL | <0.01% | $23.35 | 2.1329 | $49.8 | |
POL | <0.01% | $0.999431 | 37.3252 | $37.3 | |
POL | <0.01% | $1.56 | 23.3198 | $36.38 | |
POL | <0.01% | $0.505564 | 59.3714 | $30.02 | |
POL | <0.01% | $1.77 | 14.7071 | $26.03 | |
POL | <0.01% | $0.356488 | 62.8485 | $22.4 | |
POL | <0.01% | $0.132322 | 154.2086 | $20.41 | |
POL | <0.01% | $1.06 | 15.4935 | $16.5 | |
POL | <0.01% | $9.58 | 1.7163 | $16.44 | |
POL | <0.01% | $0.862044 | 17.015 | $14.67 | |
POL | <0.01% | $0.343957 | 29.985 | $10.31 | |
POL | <0.01% | $0.871061 | 11.6817 | $10.18 | |
POL | <0.01% | $1.88 | 4.7388 | $8.91 | |
POL | <0.01% | $0.085353 | 94.8694 | $8.1 | |
POL | <0.01% | $0.357945 | 20.8463 | $7.46 | |
POL | <0.01% | $101.71 | 0.0713 | $7.25 | |
POL | <0.01% | $240.82 | 0.0298 | $7.18 | |
POL | <0.01% | $0.017458 | 361.7358 | $6.32 | |
POL | <0.01% | $0.039565 | 159.0078 | $6.29 | |
POL | <0.01% | $0.961554 | 5.9422 | $5.71 | |
POL | <0.01% | $0.004648 | 1,078.8464 | $5.01 | |
POL | <0.01% | $0.002213 | 2,201.3957 | $4.87 | |
POL | <0.01% | $0.531918 | 8.886 | $4.73 | |
POL | <0.01% | $2.2 | 2.0083 | $4.42 | |
POL | <0.01% | $0.263889 | 16.5498 | $4.37 | |
POL | <0.01% | $0.48225 | 8.7201 | $4.21 | |
POL | <0.01% | $0.007965 | 511.0512 | $4.07 | |
POL | <0.01% | $0.34492 | 11.1286 | $3.84 | |
POL | <0.01% | $5.63 | 0.6558 | $3.69 | |
POL | <0.01% | $0.022281 | 155.1219 | $3.46 | |
POL | <0.01% | $0.222083 | 11 | $2.44 | |
POL | <0.01% | $271.67 | 0.00874628 | $2.38 | |
POL | <0.01% | $0.3358 | 6.766 | $2.27 | |
POL | <0.01% | $0.654268 | 3.4261 | $2.24 | |
POL | <0.01% | $0.023765 | 88.3383 | $2.1 | |
POL | <0.01% | $1.75 | 1.1102 | $1.94 | |
POL | <0.01% | $0.999806 | 1.9373 | $1.94 | |
POL | <0.01% | $0.009848 | 187.21 | $1.84 | |
POL | <0.01% | $3,019.79 | 0.00059521 | $1.8 | |
POL | <0.01% | $0.99499 | 1.6175 | $1.61 | |
POL | <0.01% | $1 | 1.5788 | $1.58 | |
POL | <0.01% | $1 | 1.5121 | $1.51 | |
POL | <0.01% | $0.000243 | 5,762.6236 | $1.4 | |
POL | <0.01% | $0.172084 | 7.6784 | $1.32 | |
POL | <0.01% | $0.103152 | 12.6287 | $1.3 | |
POL | <0.01% | $1.94 | 0.6053 | $1.17 | |
POL | <0.01% | $0.005368 | 216.7216 | $1.16 | |
POL | <0.01% | $1.05 | 1.0993 | $1.15 | |
POL | <0.01% | $62.9 | 0.0177 | $1.12 | |
POL | <0.01% | $20.76 | 0.0502 | $1.04 | |
POL | <0.01% | $186.74 | 0.00548575 | $1.02 | |
POL | <0.01% | $0.999962 | 0.979 | $0.9789 | |
POL | <0.01% | $3,198.14 | 0.00024944 | $0.7977 | |
POL | <0.01% | $0.158355 | 4.8071 | $0.7612 | |
POL | <0.01% | $0.007735 | 92.6398 | $0.7165 | |
POL | <0.01% | $0.266974 | 2.4605 | $0.6568 | |
POL | <0.01% | $8.74 | 0.0729 | $0.6368 | |
POL | <0.01% | $3.05 | 0.1869 | $0.57 | |
POL | <0.01% | $0.000453 | 1,223.8913 | $0.555 | |
POL | <0.01% | $0.312637 | 1.7624 | $0.5509 | |
POL | <0.01% | $0.002892 | 189.4475 | $0.5479 | |
POL | <0.01% | $0.000163 | 3,300 | $0.5378 | |
POL | <0.01% | $6,121.76 | 0.00008727 | $0.5342 | |
POL | <0.01% | $0.025061 | 20.5089 | $0.5139 | |
POL | <0.01% | $95,840 | 0.0000047 | $0.4504 | |
POL | <0.01% | $0.119553 | 3.5905 | $0.4292 | |
POL | <0.01% | $0.999097 | 0.4183 | $0.4179 | |
POL | <0.01% | $0.105935 | 3.8554 | $0.4084 | |
POL | <0.01% | $0.004801 | 76.633 | $0.3678 | |
POL | <0.01% | $89,466.98 | 0.00000399 | $0.3569 | |
POL | <0.01% | <$0.000001 | 59,407,530.8464 | $0.3445 | |
POL | <0.01% | $0.075748 | 4.4893 | $0.34 | |
POL | <0.01% | $0.018294 | 16.7138 | $0.3057 | |
POL | <0.01% | <$0.000001 | 33,114,854.5622 | $0.3046 | |
POL | <0.01% | $0.17781 | 1.5948 | $0.2835 | |
POL | <0.01% | $0.000993 | 282.9304 | $0.281 | |
POL | <0.01% | $0.011131 | 24.9025 | $0.2771 | |
POL | <0.01% | $0.671504 | 0.4002 | $0.2687 | |
POL | <0.01% | $0.128831 | 1.9884 | $0.2561 | |
POL | <0.01% | $1,175.19 | 0.00020334 | $0.2389 | |
POL | <0.01% | $0.067766 | 3.4343 | $0.2327 | |
POL | <0.01% | $0.000402 | 560.0416 | $0.2249 | |
POL | <0.01% | $17.8 | 0.012 | $0.2133 | |
POL | <0.01% | $2,673.37 | 0.00007555 | $0.2019 | |
POL | <0.01% | $0.016307 | 11.4712 | $0.187 | |
POL | <0.01% | $0.003545 | 51.1608 | $0.1813 | |
POL | <0.01% | $0.572607 | 0.3112 | $0.1781 | |
POL | <0.01% | $0.040868 | 4.2584 | $0.174 | |
POL | <0.01% | $2,675.76 | 0.00006159 | $0.1647 | |
POL | <0.01% | <$0.000001 | 794,260.741 | $0.1505 | |
POL | <0.01% | $0.346474 | 0.4227 | $0.1464 | |
POL | <0.01% | $0.062908 | 2.3005 | $0.1447 | |
POL | <0.01% | $0.024565 | 5.2501 | $0.1289 | |
POL | <0.01% | $0.000184 | 691.6394 | $0.1274 | |
POL | <0.01% | $0.32663 | 0.3851 | $0.1257 | |
POL | <0.01% | $12.14 | 0.00990426 | $0.1202 | |
POL | <0.01% | $0.379499 | 0.3097 | $0.1175 | |
POL | <0.01% | $0.096267 | 1.1681 | $0.1124 | |
BSC | 0.03% | $647.08 | 4.2872 | $2,774.15 | |
BSC | 0.02% | $0.999419 | 1,825.1131 | $1,824.05 | |
BSC | 0.01% | $0.99987 | 1,228.9267 | $1,228.77 | |
BSC | 0.01% | $1.01 | 1,171.9749 | $1,181.51 | |
BSC | <0.01% | $95,646.28 | 0.00465734 | $445.46 | |
BSC | <0.01% | $169.19 | 2.1901 | $370.55 | |
BSC | <0.01% | $8.45 | 27.0765 | $228.78 | |
BSC | <0.01% | $2,689.2 | 0.0391 | $105.21 | |
BSC | <0.01% | $17.86 | 5.1822 | $92.58 | |
BSC | <0.01% | $132.4 | 0.5917 | $78.34 | |
BSC | <0.01% | $0.000093 | 607,541.0906 | $56.26 | |
BSC | <0.01% | $1.02 | 50.7375 | $51.61 | |
BSC | <0.01% | $23.45 | 1.8671 | $43.78 | |
BSC | <0.01% | $0.998623 | 42.4149 | $42.36 | |
BSC | <0.01% | $0.999887 | 39.3878 | $39.38 | |
BSC | <0.01% | $4.18 | 8.5711 | $35.83 | |
BSC | <0.01% | $252.05 | 0.1252 | $31.57 | |
BSC | <0.01% | $0.757028 | 40.9948 | $31.03 | |
BSC | <0.01% | $0.609125 | 40.043 | $24.39 | |
BSC | <0.01% | $0.0239 | 994.6706 | $23.77 | |
BSC | <0.01% | $2.56 | 8.8727 | $22.73 | |
BSC | <0.01% | $0.13937 | 160.7612 | $22.41 | |
BSC | <0.01% | $13.83 | 1.5546 | $21.5 | |
BSC | <0.01% | $0.303032 | 69.058 | $20.93 | |
BSC | <0.01% | $4.58 | 3.9686 | $18.17 | |
BSC | <0.01% | <$0.000001 | 128,174,332.1163 | $15.68 | |
BSC | <0.01% | $2.53 | 5.9363 | $15.02 | |
BSC | <0.01% | $0.308153 | 39.8542 | $12.28 | |
BSC | <0.01% | $3.68 | 2.9277 | $10.77 | |
BSC | <0.01% | $3.13 | 3.0347 | $9.51 | |
BSC | <0.01% | $708.5 | 0.013 | $9.21 | |
BSC | <0.01% | $0.252277 | 28.2516 | $7.13 | |
BSC | <0.01% | $4.77 | 1.3893 | $6.63 | |
BSC | <0.01% | $1.44 | 4.5786 | $6.59 | |
BSC | <0.01% | $0.001767 | 3,394.9221 | $6 | |
BSC | <0.01% | $4.18 | 1.3719 | $5.73 | |
BSC | <0.01% | $9.6 | 0.5681 | $5.45 | |
BSC | <0.01% | $0.264409 | 19.5475 | $5.17 | |
BSC | <0.01% | $1.3 | 3.8454 | $5.01 | |
BSC | <0.01% | $9.74 | 0.5136 | $5 | |
BSC | <0.01% | $0.002647 | 1,835.7869 | $4.86 | |
BSC | <0.01% | $0.75206 | 5.802 | $4.36 | |
BSC | <0.01% | $0.001281 | 3,219.3856 | $4.12 | |
BSC | <0.01% | $2,683.73 | 0.00137378 | $3.69 | |
BSC | <0.01% | $0.065405 | 54.6031 | $3.57 | |
BSC | <0.01% | $3.25 | 1.0891 | $3.54 | |
BSC | <0.01% | $3.24 | 1.0906 | $3.54 | |
BSC | <0.01% | $0.003154 | 1,069.366 | $3.37 | |
BSC | <0.01% | $0.020916 | 158.7713 | $3.32 | |
BSC | <0.01% | $0.000661 | 4,897.7213 | $3.24 | |
BSC | <0.01% | $0.035424 | 90.3595 | $3.2 | |
BSC | <0.01% | $0.69062 | 4.3143 | $2.98 | |
BSC | <0.01% | $0.078706 | 37.6285 | $2.96 | |
BSC | <0.01% | $0.641361 | 4.2743 | $2.74 | |
BSC | <0.01% | $0.001118 | 2,382.1157 | $2.66 | |
BSC | <0.01% | $0.036952 | 65.992 | $2.44 | |
BSC | <0.01% | $0.000779 | 3,109.8848 | $2.42 | |
BSC | <0.01% | $0.0002 | 11,571.8956 | $2.31 | |
BSC | <0.01% | $0.243995 | 9.437 | $2.3 | |
BSC | <0.01% | $0.426382 | 4.6143 | $1.97 | |
BSC | <0.01% | $1.23 | 1.5862 | $1.95 | |
BSC | <0.01% | $30 | 0.0637 | $1.91 | |
BSC | <0.01% | $0.022299 | 84.7988 | $1.89 | |
BSC | <0.01% | $0.000209 | 8,239.972 | $1.72 | |
BSC | <0.01% | $0.998627 | 1.6656 | $1.66 | |
BSC | <0.01% | $2.2 | 0.6751 | $1.49 | |
BSC | <0.01% | <$0.000001 | 7,283,100,687.3492 | $1.46 | |
BSC | <0.01% | $0.093059 | 15.4735 | $1.44 | |
BSC | <0.01% | $0.229603 | 5.7419 | $1.32 | |
BSC | <0.01% | $0.119901 | 10.4523 | $1.25 | |
BSC | <0.01% | $0.079448 | 15.3936 | $1.22 | |
BSC | <0.01% | $40.88 | 0.0298 | $1.22 | |
BSC | <0.01% | $0.00016 | 7,396.8681 | $1.18 | |
BSC | <0.01% | $0.384778 | 2.8886 | $1.11 | |
BSC | <0.01% | $1.75 | 0.6074 | $1.06 | |
BSC | <0.01% | $0.002666 | 385.3369 | $1.03 | |
BSC | <0.01% | $0.139066 | 6.4469 | $0.8965 | |
BSC | <0.01% | $695.42 | 0.00126788 | $0.8817 | |
BSC | <0.01% | $0.267584 | 3.1711 | $0.8485 | |
BSC | <0.01% | $0.061664 | 13.4975 | $0.8323 | |
BSC | <0.01% | $0.037842 | 21.2992 | $0.806 | |
BSC | <0.01% | $0.000003 | 211,806.3943 | $0.7307 | |
BSC | <0.01% | $0.999752 | 0.7159 | $0.7157 | |
BSC | <0.01% | $0.002138 | 329.4611 | $0.7043 | |
BSC | <0.01% | $241.9 | 0.00289629 | $0.7006 | |
BSC | <0.01% | $0.498153 | 1.3649 | $0.6799 | |
BSC | <0.01% | $0.029813 | 22.2864 | $0.6644 | |
BSC | <0.01% | $0.000661 | 983.451 | $0.6502 | |
BSC | <0.01% | $0.024016 | 26.1443 | $0.6278 | |
BSC | <0.01% | $0.000328 | 1,799.2729 | $0.5896 | |
BSC | <0.01% | $1.04 | 0.5198 | $0.5405 | |
BSC | <0.01% | $0.021576 | 24.0762 | $0.5194 | |
BSC | <0.01% | $0.008467 | 61.2725 | $0.5187 | |
BSC | <0.01% | $0.615435 | 0.8396 | $0.5167 | |
BSC | <0.01% | $0.000003 | 170,376.473 | $0.4957 | |
BSC | <0.01% | $0.000011 | 43,239.8498 | $0.4851 | |
BSC | <0.01% | $0.220083 | 2.1043 | $0.4631 | |
BSC | <0.01% | $0.202824 | 2.2379 | $0.4538 | |
BSC | <0.01% | $0.055062 | 7.8172 | $0.4304 | |
BSC | <0.01% | $0.002434 | 174.0987 | $0.4238 | |
BSC | <0.01% | $0.003184 | 128.7281 | $0.4099 | |
BSC | <0.01% | $0.000609 | 669.8428 | $0.4077 | |
BSC | <0.01% | $0.065701 | 6.0466 | $0.3972 | |
BSC | <0.01% | $0.094996 | 3.9657 | $0.3767 | |
BSC | <0.01% | $0.000116 | 3,230.4251 | $0.3736 | |
BSC | <0.01% | $0.007032 | 53.1259 | $0.3735 | |
BSC | <0.01% | $0.347247 | 1.0385 | $0.3606 | |
BSC | <0.01% | $0.066779 | 5.2555 | $0.3509 | |
BSC | <0.01% | $0.174111 | 1.9852 | $0.3456 | |
BSC | <0.01% | $0.117684 | 2.8693 | $0.3376 | |
BSC | <0.01% | $0.019838 | 16.2042 | $0.3214 | |
BSC | <0.01% | $0.004648 | 64.4861 | $0.2997 | |
BSC | <0.01% | $0.000078 | 3,707.3978 | $0.2889 | |
BSC | <0.01% | $0.014711 | 19.3219 | $0.2842 | |
BSC | <0.01% | $0.003071 | 92.1649 | $0.283 | |
BSC | <0.01% | $0.021673 | 13.0514 | $0.2828 | |
BSC | <0.01% | $0.002189 | 125.849 | $0.2755 | |
BSC | <0.01% | $0.240406 | 1.0206 | $0.2453 | |
BSC | <0.01% | $0.001991 | 123.0409 | $0.2449 | |
BSC | <0.01% | $0.044871 | 5.3085 | $0.2381 | |
BSC | <0.01% | $0.008696 | 27.3307 | $0.2376 | |
BSC | <0.01% | $0.018465 | 12.5407 | $0.2315 | |
BSC | <0.01% | $0.571364 | 0.403 | $0.2302 | |
BSC | <0.01% | $0.005216 | 40.2331 | $0.2098 | |
BSC | <0.01% | $0.65221 | 0.3114 | $0.2031 | |
BSC | <0.01% | $0.000153 | 1,308.1701 | $0.1996 | |
BSC | <0.01% | $0.124722 | 1.5489 | $0.1931 | |
BSC | <0.01% | $0.017854 | 10.0479 | $0.1794 | |
BSC | <0.01% | $0.019821 | 8.6764 | $0.1719 | |
BSC | <0.01% | $0.112879 | 1.4861 | $0.1677 | |
BSC | <0.01% | $0.001308 | 123.0489 | $0.1608 | |
BSC | <0.01% | $0.006357 | 25.2865 | $0.1607 | |
BSC | <0.01% | $0.022143 | 7.1751 | $0.1588 | |
BSC | <0.01% | $0.000334 | 457.8465 | $0.153 | |
BSC | <0.01% | $0.054969 | 2.694 | $0.148 | |
BSC | <0.01% | $0.006637 | 21.201 | $0.1407 | |
BSC | <0.01% | $0.00112 | 124.3195 | $0.1392 | |
BSC | <0.01% | $0.020009 | 6.7415 | $0.1348 | |
BSC | <0.01% | $0.342756 | 0.3748 | $0.1284 | |
BSC | <0.01% | $9.87 | 0.0125 | $0.123 | |
BSC | <0.01% | $0.002589 | 47.2712 | $0.1223 | |
BSC | <0.01% | $0.000971 | 116.1538 | $0.1127 | |
BSC | <0.01% | $0.003047 | 36.8911 | $0.1124 | |
BSC | <0.01% | $0.005522 | 20.2884 | $0.112 | |
BSC | <0.01% | $0.00324 | 34.5217 | $0.1118 | |
BSC | <0.01% | $0.000639 | 173.6475 | $0.1108 | |
OP | <0.01% | $95,412 | 0.00758407 | $723.61 | |
OP | <0.01% | $2,682.23 | 0.2483 | $665.93 | |
OP | <0.01% | $0.070619 | 3,567.9798 | $251.97 | |
OP | <0.01% | $0.999863 | 212.6685 | $212.64 | |
OP | <0.01% | $0.999605 | 189.1777 | $189.1 | |
OP | <0.01% | $3,201.75 | 0.0247 | $78.95 | |
OP | <0.01% | $17.82 | 4.2218 | $75.23 | |
OP | <0.01% | $1.09 | 67.7694 | $73.91 | |
OP | <0.01% | $1.76 | 41.6634 | $73.33 | |
OP | <0.01% | $0.999422 | 73.2841 | $73.24 | |
OP | <0.01% | $0.070619 | 992.6269 | $70.1 | |
OP | <0.01% | $0.264002 | 203.903 | $53.83 | |
OP | <0.01% | $0.436368 | 122.9598 | $53.66 | |
OP | <0.01% | $251.7 | 0.2131 | $53.65 | |
OP | <0.01% | $2,679.85 | 0.0196 | $52.62 | |
OP | <0.01% | $0.459909 | 90.6751 | $41.7 | |
OP | <0.01% | $9.59 | 4.1742 | $40.03 | |
OP | <0.01% | $0.998404 | 34.3758 | $34.32 | |
OP | <0.01% | $0.976627 | 31.9597 | $31.21 | |
OP | <0.01% | $3,022.58 | 0.00732372 | $22.14 | |
OP | <0.01% | $0.965934 | 20.4788 | $19.78 | |
OP | <0.01% | $0.007744 | 2,231.1425 | $17.28 | |
OP | <0.01% | $2,984.21 | 0.00519714 | $15.51 | |
OP | <0.01% | $0.999863 | 14.7649 | $14.76 | |
OP | <0.01% | $0.414878 | 27.8862 | $11.57 | |
OP | <0.01% | $0.031793 | 312.4769 | $9.93 | |
OP | <0.01% | $0.158498 | 60.5628 | $9.6 | |
OP | <0.01% | $0.030119 | 189.3464 | $5.7 | |
OP | <0.01% | $0.505989 | 9.2692 | $4.69 | |
OP | <0.01% | $0.011094 | 331.7706 | $3.68 | |
OP | <0.01% | $2,617.65 | 0.00124479 | $3.26 | |
OP | <0.01% | $12.84 | 0.2437 | $3.13 | |
OP | <0.01% | $0.340495 | 6.8586 | $2.34 | |
OP | <0.01% | $0.999936 | 1.5258 | $1.53 | |
OP | <0.01% | $1 | 1.5179 | $1.52 | |
OP | <0.01% | $0.995109 | 1.3637 | $1.36 | |
OP | <0.01% | $0.128827 | 6.7874 | $0.8744 | |
OP | <0.01% | $0.001247 | 589.1849 | $0.7348 | |
OP | <0.01% | $0.060161 | 8.7237 | $0.5248 | |
OP | <0.01% | $0.001338 | 342.4602 | $0.4582 | |
OP | <0.01% | $0.000811 | 405.2025 | $0.3285 | |
OP | <0.01% | $102.9 | 0.0031767 | $0.3268 | |
OP | <0.01% | $0.999743 | 0.3003 | $0.3002 | |
OP | <0.01% | $0.347281 | 0.689 | $0.2392 | |
OP | <0.01% | $0.976555 | 0.2403 | $0.2346 | |
OP | <0.01% | $1.01 | 0.2192 | $0.2209 | |
OP | <0.01% | $1.94 | 0.1104 | $0.2141 | |
OP | <0.01% | $3.03 | 0.0621 | $0.188 | |
OP | <0.01% | $0.076418 | 1.8159 | $0.1387 | |
AVAX | <0.01% | $0.999863 | 105.1856 | $105.17 | |
AVAX | <0.01% | $23.36 | 4.0183 | $93.85 | |
AVAX | <0.01% | $251.7 | 0.3624 | $91.21 | |
AVAX | <0.01% | $17.78 | 4.7347 | $84.17 | |
AVAX | <0.01% | $95,412 | 0.00067551 | $64.45 | |
AVAX | <0.01% | $2,682.23 | 0.0197 | $52.77 | |
AVAX | <0.01% | $19.57 | 1.9978 | $39.1 | |
AVAX | <0.01% | $3.24 | 10.8332 | $35.05 | |
AVAX | <0.01% | $0.999863 | 25.8727 | $25.87 | |
AVAX | <0.01% | $0.999863 | 17.7739 | $17.77 | |
AVAX | <0.01% | $27.82 | 0.4369 | $12.16 | |
AVAX | <0.01% | $0.999458 | 8.1496 | $8.15 | |
AVAX | <0.01% | $0.999458 | 7.3209 | $7.32 | |
AVAX | <0.01% | $0.709129 | 7.0201 | $4.98 | |
AVAX | <0.01% | $0.186822 | 24.7823 | $4.63 | |
AVAX | <0.01% | $0.998965 | 3.3776 | $3.37 | |
AVAX | <0.01% | $0.119081 | 23.7744 | $2.83 | |
AVAX | <0.01% | $0.009189 | 301.6085 | $2.77 | |
AVAX | <0.01% | $9.59 | 0.201 | $1.93 | |
AVAX | <0.01% | $0.229239 | 6.6079 | $1.51 | |
AVAX | <0.01% | $0.264002 | 4.5903 | $1.21 | |
AVAX | <0.01% | $0.346077 | 2.7265 | $0.9435 | |
AVAX | <0.01% | $240.93 | 0.00323943 | $0.7804 | |
AVAX | <0.01% | $370.37 | 0.00157719 | $0.5841 | |
AVAX | <0.01% | $0.017479 | 29.343 | $0.5128 | |
AVAX | <0.01% | $0.040305 | 11.5714 | $0.4663 | |
AVAX | <0.01% | $0.862522 | 0.511 | $0.4407 | |
AVAX | <0.01% | $0.000925 | 453.0038 | $0.4189 | |
AVAX | <0.01% | $3.05 | 0.1328 | $0.4049 | |
AVAX | <0.01% | $1.01 | 0.3873 | $0.3892 | |
AVAX | <0.01% | $0.000275 | 1,024.2513 | $0.2816 | |
AVAX | <0.01% | $1.75 | 0.1326 | $0.2316 | |
AVAX | <0.01% | $0.001237 | 160.4465 | $0.1984 | |
AVAX | <0.01% | $0.285018 | 0.5946 | $0.1694 | |
AVAX | <0.01% | $0.267109 | 0.6292 | $0.168 | |
AVAX | <0.01% | $95,549 | 0.00000168 | $0.1605 | |
AVAX | <0.01% | $0.995466 | 0.1483 | $0.1476 | |
AVAX | <0.01% | $0.018243 | 6.9459 | $0.1267 | |
BASE | <0.01% | <$0.000001 | 295,774,647 | $5.92 | |
BASE | <0.01% | $0.001339 | 3,000 | $4.02 |
[ 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.