Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
NounsVisionBatchTransfer
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-19 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; interface ERC721Like { function transferFrom( address from, address to, uint256 tokenId ) external; function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function setApprovalForAll(address operator, bool approved) external; } contract NounsVisionBatchTransfer { /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ CONSTANTS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ ERC721Like public constant NOUNS_VISION = ERC721Like(0xd8e6b954f7d3F42570D3B0adB516f2868729eC4D); address public constant NOUNS_DAO = 0x0BC3807Ec262cB779b38D65b38158acC3bfedE10; /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ STORAGE VARIABLES ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ // Number of allowed Nouns Vision Glasses receiver address can transfer mapping(address => uint256) public allowanceFor; /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ERRORS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ error NotNounsDAO(); error NotEnoughOwned(); error NotEnoughAllowance(); /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ MODIFIERS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ modifier onlyNounsDAO() { if (msg.sender != NOUNS_DAO) revert NotNounsDAO(); _; } /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ VIEW FUNCTIONS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ /// @notice Calculate the first Nouns Vision Glasses token ID owned by Nouns DAO /// @dev Will revert NotEnoughOwned() if Nouns DAO has no balance /// @return startId The first token ID owned by Nouns DAO function getStartId() public view returns (uint256 startId) { if (NOUNS_VISION.balanceOf(NOUNS_DAO) == 0) { revert NotEnoughOwned(); } // Nouns DAO was sent 500 Nouns Vision Glasses starting at token ID 751 for (startId = 751; startId <= 1250; startId++) { try NOUNS_VISION.ownerOf(startId) returns (address owner) { if (owner != NOUNS_DAO) continue; break; } catch {} } } /// @notice Calculate the first Nouns Vision Glasses token ID owned by Nouns DAO and the maximum batch amount possible from this ID for a receiver /// @dev Will revert: /// - NotEnoughOwned() if Nouns DAO has no balance /// - NotEnoughAllowance() if receiver has no allowance /// @param receiver Address to calculate maximum batch amount /// @return startId The first token ID owned by Nouns DAO /// @return amount The maximum batch amount from the startId for this receiver function getStartIdAndBatchAmount(address receiver) public view returns (uint256 startId, uint256 amount) { if (allowanceFor[receiver] == 0) { revert NotEnoughAllowance(); } startId = getStartId(); uint256 maxAmount = _min( allowanceFor[receiver], NOUNS_VISION.balanceOf(NOUNS_DAO) ); // If we get this far, Nouns DAO owns at least 1 Nouns Vision Glasses for (amount = 1; amount < maxAmount; amount++) { try NOUNS_VISION.ownerOf(startId + amount) returns (address owner) { if (owner != NOUNS_DAO) break; } catch { break; } } } /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ OWNER FUNCTIONS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ /// @notice Add an allowance for receiver address to batch send an amount of Nouns Vision Glasses /// @param receiver Address to allow /// @param amount Batch amount allowed function addAllowance(address receiver, uint256 amount) external onlyNounsDAO { allowanceFor[receiver] += amount; } /// @notice Removes all allowance for the receiver address /// @param receiver Address to disallow function disallow(address receiver) external onlyNounsDAO { delete allowanceFor[receiver]; } /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ receiver FUNCTIONS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ /// @notice Send `msg.sender` a batch `amount` of Nouns Vision Glasses from `startId.` Use `getStartIdAndBatchAmount(address)` to determine these values /// @dev See `_subtractFromAllowanceOrRevert(uint256)` for revert cases /// @param startId The starting ID of the batch token transfer /// @param amount The batch amount of Glasses to be transfered function claimGlasses(uint256 startId, uint256 amount) public { _subtractFromAllowanceOrRevert(amount); for (uint256 i; i < amount; i++) { NOUNS_VISION.transferFrom(NOUNS_DAO, msg.sender, startId + i); } } /// @notice Sends a `recipient` Nouns Vision Glasses. Use `getStartId()` to determine the `startId` /// @dev See `_subtractFromAllowanceOrRevert(uint256)` for revert cases /// @param startId The starting ID of the token transfer /// @param recipient Address to receive Nouns Vision Glasses function sendGlasses(uint256 startId, address recipient) public { _subtractFromAllowanceOrRevert(1); NOUNS_VISION.transferFrom(NOUNS_DAO, recipient, startId); } /// @notice Sends a group of `recipients` Nouns Vision Glasses. Use `getStartId()` to determine the `startId` /// @dev See `_subtractFromAllowanceOrRevert(uint256)` for revert cases /// @param startId The starting ID of the token transfer /// @param recipients Addresses to receive Nouns Vision Glasses function sendManyGlasses(uint256 startId, address[] calldata recipients) public { uint256 amount = recipients.length; _subtractFromAllowanceOrRevert(amount); for (uint256 i; i < amount; i++) { NOUNS_VISION.transferFrom(NOUNS_DAO, recipients[i], startId + i); } } /** ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ INTERNAL FUNCTIONS ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ **/ /// @notice Checks `msg.sender` allowance against an amount and either subtracts or reverts /// @dev Will revert: /// - NotEnoughAllowance(): `msg.sender` has not been granted enough allowance /// - NotEnoughOwned(): Nouns DAO balance is less than the amount /// @param amount Amount that should be removed from `msg.sender` allowance function _subtractFromAllowanceOrRevert(uint256 amount) internal { uint256 allowance = allowanceFor[msg.sender]; if (amount > allowance) { revert NotEnoughAllowance(); } if (amount > NOUNS_VISION.balanceOf(NOUNS_DAO)) { revert NotEnoughOwned(); } allowanceFor[msg.sender] = allowance - amount; } /// @notice Returns the smaller of two numbers function _min(uint256 a, uint256 b) internal pure returns (uint256) { if (a < b) return a; return b; } receive() external payable { revert(); } fallback() external payable { revert(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"NotEnoughAllowance","type":"error"},{"inputs":[],"name":"NotEnoughOwned","type":"error"},{"inputs":[],"name":"NotNounsDAO","type":"error"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"NOUNS_DAO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NOUNS_VISION","outputs":[{"internalType":"contract ERC721Like","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowanceFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimGlasses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"disallow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getStartId","outputs":[{"internalType":"uint256","name":"startId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"getStartIdAndBatchAmount","outputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sendGlasses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startId","type":"uint256"},{"internalType":"address[]","name":"recipients","type":"address[]"}],"name":"sendManyGlasses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50610e18806100206000396000f3fe6080604052600436106100b55760003560e01c8063a295203b11610069578063a9ed9cb81161004e578063a9ed9cb814610210578063f3c40c4b14610230578063f9e9dd441461025057600080fd5b8063a295203b146101d0578063a985014f146101f057600080fd5b8063453947ed1161009a578063453947ed1461014b57806375f33a781461016d57806398119562146101a857600080fd5b80633e4440fb146100c45780634156445f146100fe57600080fd5b366100bf57600080fd5b600080fd5b3480156100d057600080fd5b506100e46100df366004610bcf565b610265565b604080519283526020830191909152015b60405180910390f35b34801561010a57600080fd5b50610126730bc3807ec262cb779b38d65b38158acc3bfede1081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f5565b34801561015757600080fd5b5061016b610166366004610bf3565b61049f565b005b34801561017957600080fd5b5061019a610188366004610bcf565b60006020819052908152604090205481565b6040519081526020016100f5565b3480156101b457600080fd5b5061012673d8e6b954f7d3f42570d3b0adb516f2868729ec4d81565b3480156101dc57600080fd5b5061016b6101eb366004610c15565b610591565b3480156101fc57600080fd5b5061016b61020b366004610c94565b6106ac565b34801561021c57600080fd5b5061016b61022b366004610bcf565b61076e565b34801561023c57600080fd5b5061016b61024b366004610cc4565b6107e2565b34801561025c57600080fd5b5061019a61086d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812054819081036102c5576040517f4fd3af0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102cd61086d565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081905260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015292945090916103a2919073d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d9190610cf0565b610a4f565b9050600191505b808210156104995773d8e6b954f7d3f42570d3b0adb516f2868729ec4d636352211e6103d58486610d38565b6040518263ffffffff1660e01b81526004016103f391815260200190565b602060405180830381865afa92505050801561044a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261044791810190610d4b565b60015b156104995773ffffffffffffffffffffffffffffffffffffffff8116730bc3807ec262cb779b38d65b38158acc3bfede10146104865750610499565b508161049181610d68565b9250506103a9565b50915091565b6104a881610a69565b60005b8181101561058c5773d8e6b954f7d3f42570d3b0adb516f2868729ec4d6323b872dd730bc3807ec262cb779b38d65b38158acc3bfede10336104ed8588610d38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801561056157600080fd5b505af1158015610575573d6000803e3d6000fd5b50505050808061058490610d68565b9150506104ab565b505050565b8061059b81610a69565b60005b818110156106a55773d8e6b954f7d3f42570d3b0adb516f2868729ec4d6323b872dd730bc3807ec262cb779b38d65b38158acc3bfede108686858181106105e7576105e7610da0565b90506020020160208101906105fc9190610bcf565b610606858a610d38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b50505050808061069d90610d68565b91505061059e565b5050505050565b6106b66001610a69565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044810183905273d8e6b954f7d3f42570d3b0adb516f2868729ec4d906323b872dd90606401600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b505050505050565b33730bc3807ec262cb779b38d65b38158acc3bfede10146107bb576040517f18c0c68800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040812055565b33730bc3807ec262cb779b38d65b38158acc3bfede101461082f576040517f18c0c68800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610864908490610d38565b90915550505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015260009073d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190610cf0565b600003610949576040517ff24b172900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506102ef5b6104e28111610a4c576040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810182905273d8e6b954f7d3f42570d3b0adb516f2868729ec4d90636352211e90602401602060405180830381865afa9250505080156109fa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109f791810190610d4b565b60015b15610a3a5773ffffffffffffffffffffffffffffffffffffffff8116730bc3807ec262cb779b38d65b38158acc3bfede1014610a365750610a3a565b5090565b80610a4481610d68565b91505061094e565b90565b600081831015610a60575081610a63565b50805b92915050565b3360009081526020819052604090205480821115610ab3576040517f4fd3af0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015273d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190610cf0565b821115610b8c576040517ff24b172900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b968282610dcf565b336000908152602081905260409020555050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bcc57600080fd5b50565b600060208284031215610be157600080fd5b8135610bec81610baa565b9392505050565b60008060408385031215610c0657600080fd5b50508035926020909101359150565b600080600060408486031215610c2a57600080fd5b83359250602084013567ffffffffffffffff80821115610c4957600080fd5b818601915086601f830112610c5d57600080fd5b813581811115610c6c57600080fd5b8760208260051b8501011115610c8157600080fd5b6020830194508093505050509250925092565b60008060408385031215610ca757600080fd5b823591506020830135610cb981610baa565b809150509250929050565b60008060408385031215610cd757600080fd5b8235610ce281610baa565b946020939093013593505050565b600060208284031215610d0257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a6357610a63610d09565b600060208284031215610d5d57600080fd5b8151610bec81610baa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d9957610d99610d09565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610a6357610a63610d0956fea2646970667358221220523623bf8846327371eb3b4107c667d0cc00df30d45338b2204551bdb1f27f9264736f6c63430008110033
Deployed Bytecode
0x6080604052600436106100b55760003560e01c8063a295203b11610069578063a9ed9cb81161004e578063a9ed9cb814610210578063f3c40c4b14610230578063f9e9dd441461025057600080fd5b8063a295203b146101d0578063a985014f146101f057600080fd5b8063453947ed1161009a578063453947ed1461014b57806375f33a781461016d57806398119562146101a857600080fd5b80633e4440fb146100c45780634156445f146100fe57600080fd5b366100bf57600080fd5b600080fd5b3480156100d057600080fd5b506100e46100df366004610bcf565b610265565b604080519283526020830191909152015b60405180910390f35b34801561010a57600080fd5b50610126730bc3807ec262cb779b38d65b38158acc3bfede1081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f5565b34801561015757600080fd5b5061016b610166366004610bf3565b61049f565b005b34801561017957600080fd5b5061019a610188366004610bcf565b60006020819052908152604090205481565b6040519081526020016100f5565b3480156101b457600080fd5b5061012673d8e6b954f7d3f42570d3b0adb516f2868729ec4d81565b3480156101dc57600080fd5b5061016b6101eb366004610c15565b610591565b3480156101fc57600080fd5b5061016b61020b366004610c94565b6106ac565b34801561021c57600080fd5b5061016b61022b366004610bcf565b61076e565b34801561023c57600080fd5b5061016b61024b366004610cc4565b6107e2565b34801561025c57600080fd5b5061019a61086d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812054819081036102c5576040517f4fd3af0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102cd61086d565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081905260408082205490517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015292945090916103a2919073d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa158015610379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039d9190610cf0565b610a4f565b9050600191505b808210156104995773d8e6b954f7d3f42570d3b0adb516f2868729ec4d636352211e6103d58486610d38565b6040518263ffffffff1660e01b81526004016103f391815260200190565b602060405180830381865afa92505050801561044a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261044791810190610d4b565b60015b156104995773ffffffffffffffffffffffffffffffffffffffff8116730bc3807ec262cb779b38d65b38158acc3bfede10146104865750610499565b508161049181610d68565b9250506103a9565b50915091565b6104a881610a69565b60005b8181101561058c5773d8e6b954f7d3f42570d3b0adb516f2868729ec4d6323b872dd730bc3807ec262cb779b38d65b38158acc3bfede10336104ed8588610d38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801561056157600080fd5b505af1158015610575573d6000803e3d6000fd5b50505050808061058490610d68565b9150506104ab565b505050565b8061059b81610a69565b60005b818110156106a55773d8e6b954f7d3f42570d3b0adb516f2868729ec4d6323b872dd730bc3807ec262cb779b38d65b38158acc3bfede108686858181106105e7576105e7610da0565b90506020020160208101906105fc9190610bcf565b610606858a610d38565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b50505050808061069d90610d68565b91505061059e565b5050505050565b6106b66001610a69565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044810183905273d8e6b954f7d3f42570d3b0adb516f2868729ec4d906323b872dd90606401600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b505050505050565b33730bc3807ec262cb779b38d65b38158acc3bfede10146107bb576040517f18c0c68800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040812055565b33730bc3807ec262cb779b38d65b38158acc3bfede101461082f576040517f18c0c68800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610864908490610d38565b90915550505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015260009073d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190610cf0565b600003610949576040517ff24b172900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506102ef5b6104e28111610a4c576040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810182905273d8e6b954f7d3f42570d3b0adb516f2868729ec4d90636352211e90602401602060405180830381865afa9250505080156109fa575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109f791810190610d4b565b60015b15610a3a5773ffffffffffffffffffffffffffffffffffffffff8116730bc3807ec262cb779b38d65b38158acc3bfede1014610a365750610a3a565b5090565b80610a4481610d68565b91505061094e565b90565b600081831015610a60575081610a63565b50805b92915050565b3360009081526020819052604090205480821115610ab3576040517f4fd3af0700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a08231000000000000000000000000000000000000000000000000000000008152730bc3807ec262cb779b38d65b38158acc3bfede10600482015273d8e6b954f7d3f42570d3b0adb516f2868729ec4d906370a0823190602401602060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b539190610cf0565b821115610b8c576040517ff24b172900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b968282610dcf565b336000908152602081905260409020555050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bcc57600080fd5b50565b600060208284031215610be157600080fd5b8135610bec81610baa565b9392505050565b60008060408385031215610c0657600080fd5b50508035926020909101359150565b600080600060408486031215610c2a57600080fd5b83359250602084013567ffffffffffffffff80821115610c4957600080fd5b818601915086601f830112610c5d57600080fd5b813581811115610c6c57600080fd5b8760208260051b8501011115610c8157600080fd5b6020830194508093505050509250925092565b60008060408385031215610ca757600080fd5b823591506020830135610cb981610baa565b809150509250929050565b60008060408385031215610cd757600080fd5b8235610ce281610baa565b946020939093013593505050565b600060208284031215610d0257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a6357610a63610d09565b600060208284031215610d5d57600080fd5b8151610bec81610baa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d9957610d99610d09565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610a6357610a63610d0956fea2646970667358221220523623bf8846327371eb3b4107c667d0cc00df30d45338b2204551bdb1f27f9264736f6c63430008110033
Deployed Bytecode Sourcemap
450:7828:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8259:8;;;450:7828;;;;;;;;;;;8259:8;;;450:7828;;;;;;;;;;;;;;;;;;;;;8259:8;;;450:7828;;;;;;;;;;;8259:8;;;450:7828;;;;8196:8;;;450:7828;8259:8;;;3396:753;;;;;;;;;;-1:-1:-1;3396:753:0;;;;;:::i;:::-;;:::i;:::-;;;;599:25:1;;;655:2;640:18;;633:34;;;;572:18;3396:753:0;;;;;;;;828:87;;;;;;;;;;;;873:42;828:87;;;;;854:42:1;842:55;;;824:74;;812:2;797:18;828:87:0;678:226:1;5561:252:0;;;;;;;;;;-1:-1:-1;5561:252:0;;;;;:::i;:::-;;:::i;:::-;;1232:47;;;;;;;;;;-1:-1:-1;1232:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1308:25:1;;;1296:2;1281:18;1232:47:0;1162:177:1;714:105:0;;;;;;;;;;;;776:42;714:105;;6647:332;;;;;;;;;;-1:-1:-1;6647:332:0;;;;;:::i;:::-;;:::i;6131:185::-;;;;;;;;;;-1:-1:-1;6131:185:0;;;;;:::i;:::-;;:::i;4844:106::-;;;;;;;;;;-1:-1:-1;4844:106:0;;;;;:::i;:::-;;:::i;4575:152::-;;;;;;;;;;-1:-1:-1;4575:152:0;;;;;:::i;:::-;;:::i;2381:497::-;;;;;;;;;;;;;:::i;3396:753::-;3549:22;;;3496:15;3549:22;;;;;;;;;;;3496:15;;3549:27;;3545:87;;3600:20;;;;;;;;;;;;;;3545:87;3654:12;:10;:12::i;:::-;3718:22;;;3679:17;3718:22;;;;;;;;;;;;3755:33;;;;;873:42;3755:33;;;824:74:1;3644:22:0;;-1:-1:-1;3679:17:0;;3699:100;;3718:22;776:42;;3755:22;;797:18:1;;3755:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3699:4;:100::i;:::-;3679:120;;3905:1;3896:10;;3891:251;3917:9;3908:6;:18;3891:251;;;776:42;3957:20;3978:16;3988:6;3978:7;:16;:::i;:::-;3957:38;;;;;;;;;;;;;1308:25:1;;1296:2;1281:18;;1162:177;3957:38:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;3957:38:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3953:178;4110:5;3953:178;4043:18;;;873:42;4043:18;4039:29;;4063:5;;;4039:29;3996:88;3928:8;;;;:::i;:::-;;;;3891:251;;;3534:615;3396:753;;;:::o;5561:252::-;5634:38;5665:6;5634:30;:38::i;:::-;5690:9;5685:121;5705:6;5701:1;:10;5685:121;;;776:42;5733:25;873:42;5770:10;5782:11;5792:1;5782:7;:11;:::i;:::-;5733:61;;;;;;;;;;4096:42:1;4165:15;;;5733:61:0;;;4147:34:1;4217:15;;;;4197:18;;;4190:43;4249:18;;;4242:34;4059:18;;5733:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5713:3;;;;;:::i;:::-;;;;5685:121;;;;5561:252;;:::o;6647:332::-;6769:10;6797:38;6769:10;6797:30;:38::i;:::-;6853:9;6848:124;6868:6;6864:1;:10;6848:124;;;776:42;6896:25;873:42;6933:10;;6944:1;6933:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;6948:11;6958:1;6948:7;:11;:::i;:::-;6896:64;;;;;;;;;;4096:42:1;4165:15;;;6896:64:0;;;4147:34:1;4217:15;;;;4197:18;;;4190:43;4249:18;;;4242:34;4059:18;;6896:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6876:3;;;;;:::i;:::-;;;;6848:124;;;;6741:238;6647:332;;;:::o;6131:185::-;6206:33;6237:1;6206:30;:33::i;:::-;6252:56;;;;;873:42;6252:56;;;4147:34:1;4096:42;4217:15;;4197:18;;;4190:43;4249:18;;;4242:34;;;776:42:0;;6252:25;;4059:18:1;;6252:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6131:185;;:::o;4844:106::-;1860:10;873:42;1860:23;1856:49;;1892:13;;;;;;;;;;;;;;1856:49;4920:22:::1;;:12;:22:::0;;;::::1;::::0;;;;;;4913:29;4844:106::o;4575:152::-;1860:10;873:42;1860:23;1856:49;;1892:13;;;;;;;;;;;;;;1856:49;4687:22:::1;::::0;::::1;:12;:22:::0;;;::::1;::::0;;;;;;:32;;4713:6;;4687:12;:32:::1;::::0;4713:6;;4687:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;4575:152:0:o;2381:497::-;2456:33;;;;;873:42;2456:33;;;824:74:1;2424:15:0;;776:42;;2456:22;;797:18:1;;2456:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2493:1;2456:38;2452:94;;2518:16;;;;;;;;;;;;;;2452:94;-1:-1:-1;2654:3:0;2639:232;2670:4;2659:7;:15;2639:232;;2706:29;;;;;;;;1308:25:1;;;776:42:0;;2706:20;;1281:18:1;;2706:29:0;;;;;;;;;;;;;;;;;;-1:-1:-1;2706:29:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;2702:158;;;2783:18;;;873:42;2783:18;2779:32;;2803:8;;;2779:32;2830:5;2381:497;:::o;2702:158::-;2676:9;;;;:::i;:::-;;;;2639:232;;;2381:497;:::o;8025:125::-;8084:7;8112:1;8108;:5;8104:19;;;-1:-1:-1;8122:1:0;8115:8;;8104:19;-1:-1:-1;8141:1:0;8025:125;;;;;:::o;7579:386::-;7688:10;7655:17;7675:24;;;;;;;;;;;7716:18;;;7712:78;;;7758:20;;;;;;;;;;;;;;7712:78;7815:33;;;;;873:42;7815:33;;;824:74:1;776:42:0;;7815:22;;797:18:1;;7815:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7806:6;:42;7802:98;;;7872:16;;;;;;;;;;;;;;7802:98;7939:18;7951:6;7939:9;:18;:::i;:::-;7925:10;7912:12;:24;;;;;;;;;;:45;-1:-1:-1;;7579:386:0:o;14:154:1:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:247::-;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;:::-;409:5;173:247;-1:-1:-1;;;173:247:1:o;909:248::-;977:6;985;1038:2;1026:9;1017:7;1013:23;1009:32;1006:52;;;1054:1;1051;1044:12;1006:52;-1:-1:-1;;1077:23:1;;;1147:2;1132:18;;;1119:32;;-1:-1:-1;909:248:1:o;1592:683::-;1687:6;1695;1703;1756:2;1744:9;1735:7;1731:23;1727:32;1724:52;;;1772:1;1769;1762:12;1724:52;1808:9;1795:23;1785:33;;1869:2;1858:9;1854:18;1841:32;1892:18;1933:2;1925:6;1922:14;1919:34;;;1949:1;1946;1939:12;1919:34;1987:6;1976:9;1972:22;1962:32;;2032:7;2025:4;2021:2;2017:13;2013:27;2003:55;;2054:1;2051;2044:12;2003:55;2094:2;2081:16;2120:2;2112:6;2109:14;2106:34;;;2136:1;2133;2126:12;2106:34;2189:7;2184:2;2174:6;2171:1;2167:14;2163:2;2159:23;2155:32;2152:45;2149:65;;;2210:1;2207;2200:12;2149:65;2241:2;2237;2233:11;2223:21;;2263:6;2253:16;;;;;1592:683;;;;;:::o;2280:315::-;2348:6;2356;2409:2;2397:9;2388:7;2384:23;2380:32;2377:52;;;2425:1;2422;2415:12;2377:52;2461:9;2448:23;2438:33;;2521:2;2510:9;2506:18;2493:32;2534:31;2559:5;2534:31;:::i;:::-;2584:5;2574:15;;;2280:315;;;;;:::o;2600:::-;2668:6;2676;2729:2;2717:9;2708:7;2704:23;2700:32;2697:52;;;2745:1;2742;2735:12;2697:52;2784:9;2771:23;2803:31;2828:5;2803:31;:::i;:::-;2853:5;2905:2;2890:18;;;;2877:32;;-1:-1:-1;;;2600:315:1:o;2920:184::-;2990:6;3043:2;3031:9;3022:7;3018:23;3014:32;3011:52;;;3059:1;3056;3049:12;3011:52;-1:-1:-1;3082:16:1;;2920:184;-1:-1:-1;2920:184:1:o;3109:::-;3161:77;3158:1;3151:88;3258:4;3255:1;3248:15;3282:4;3279:1;3272:15;3298:125;3363:9;;;3384:10;;;3381:36;;;3397:18;;:::i;3428:251::-;3498:6;3551:2;3539:9;3530:7;3526:23;3522:32;3519:52;;;3567:1;3564;3557:12;3519:52;3599:9;3593:16;3618:31;3643:5;3618:31;:::i;3684:195::-;3723:3;3754:66;3747:5;3744:77;3741:103;;3824:18;;:::i;:::-;-1:-1:-1;3871:1:1;3860:13;;3684:195::o;4287:184::-;4339:77;4336:1;4329:88;4436:4;4433:1;4426:15;4460:4;4457:1;4450:15;4476:128;4543:9;;;4564:11;;;4561:37;;;4578:18;;:::i
Swarm Source
ipfs://523623bf8846327371eb3b4107c667d0cc00df30d45338b2204551bdb1f27f92
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.