Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Plugin | 19011835 | 359 days ago | IN | 0 ETH | 0.00057605 | ||||
Set Plugin | 19011802 | 359 days ago | IN | 0 ETH | 0.00109647 | ||||
Set Addresses | 18491134 | 432 days ago | IN | 0 ETH | 0.00149124 | ||||
Set Plugins | 18491134 | 432 days ago | IN | 0 ETH | 0.00167733 | ||||
Set Plugin | 18476951 | 434 days ago | IN | 0 ETH | 0.00087325 | ||||
Set Addresses | 18432826 | 440 days ago | IN | 0 ETH | 0.0059391 | ||||
Set Plugin | 18432826 | 440 days ago | IN | 0 ETH | 0.00086238 | ||||
Set Plugin | 18432826 | 440 days ago | IN | 0 ETH | 0.00086238 | ||||
Set Max Distribu... | 18432826 | 440 days ago | IN | 0 ETH | 0.00084153 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract contains unverified libraries: Trade
Contract Name:
Operator
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.17; import {Errors} from "src/libraries/Errors.sol"; /// @title Operator /// @notice Contract to manage all the state variables for STFX and OZO contract Operator { /*////////////////////////////////////////////////////////////// STATE VARIABLES //////////////////////////////////////////////////////////////*/ uint256 public maxDistributeIndex; mapping(string => address) public addressValues; mapping(address => address) public traderAccount; mapping(address => bool) public whitelistedPlugins; /// @notice manager address -> subscriber address -> amount per stv mapping(address => mapping(address => uint96)) public subscriptionAmount; /// @notice manager address -> subscribers mapping(address => address[]) public subscribers; /// @notice manager address -> total subscribed amount mapping(address => uint96) public totalSubscriptionAmount; /// @notice manager address -> subscriber address -> unique field in the array mapping(address => mapping(address => bool)) public isUniqueSubscriber; /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event SetAddress(string adapter, address indexed addressValue); event SetAddresses(string[] adapter, address[] indexed addressValues); event SetPlugin(address indexed plugin, bool isWhitelisted); event SetPlugins(address[] indexed plugins, bool[] isWhitelisted); event SetMaxDistributeIndex(uint256 maxDistributeIndex); /*////////////////////////////////////////////////////////////// CONSTRUCTOR/MODIFIERS //////////////////////////////////////////////////////////////*/ constructor() { addressValues["OWNER"] = msg.sender; emit SetAddress("OWNER", msg.sender); } modifier onlyOwner() { if (msg.sender != addressValues["OWNER"]) revert Errors.NoAccess(); _; } modifier onlyQ() { if (msg.sender != addressValues["Q"]) revert Errors.NoAccess(); _; } modifier onlySubscriptions() { if (msg.sender != addressValues["SUBSCRIPTIONS"]) revert Errors.NoAccess(); _; } /*////////////////////////////////////////////////////////////// VIEW FUNCTIONS //////////////////////////////////////////////////////////////*/ /// @notice get the address of the trader's Account contract /// @param trader address of the trader /// @return address of the trader's Account contract function getTraderAccount(address trader) external view returns (address) { return traderAccount[trader]; } /// @notice gettter to check if the address is a plugin or not /// @param plugin address of the plugin /// @return bool to check if the address is a plugin function getPlugin(address plugin) external view returns (bool) { return whitelistedPlugins[plugin]; } /// @notice gettter to check if the addresses are a plugin or not /// @param plugins addresses of the plugins /// @return bool to check if the addresses are plugins function getPlugins(address[] calldata plugins) external view returns (bool[] memory) { uint256 length = plugins.length; bool[] memory isPlugin = new bool[](length); uint256 i; for (; i < length;) { isPlugin[i] = whitelistedPlugins[plugins[i]]; unchecked { ++i; } } return isPlugin; } /// @notice get the address of an adapter /// @param adapter name of the contract /// @return address of the adapter function getAddress(string calldata adapter) external view returns (address) { return addressValues[adapter]; } /// @notice get the addresses of the given adapters /// @param adapters name of the contracts /// @return address of the adapter function getAddresses(string[] calldata adapters) external view returns (address[] memory) { uint256 length = adapters.length; address[] memory addresses = new address[](length); uint256 i; for (; i < length;) { addresses[i] = addressValues[adapters[i]]; unchecked { ++i; } } return addresses; } function getAllSubscribers(address manager) external view returns (address[] memory) { return subscribers[manager]; } function getIsSubscriber(address manager, address subscriber) external view returns (bool) { return subscriptionAmount[manager][subscriber] > 0; } function getSubscriptionAmount(address manager, address subscriber) external view returns (uint96) { return subscriptionAmount[manager][subscriber]; } function getTotalSubscribedAmountPerManager(address manager) external view returns (uint96) { return totalSubscriptionAmount[manager]; } /// @notice get maxDistributeIndex for StvAccount distribution Loop function getMaxDistributeIndex() external view returns (uint256) { return maxDistributeIndex; } /*////////////////////////////////////////////////////////////// EXTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ /// @notice set a new plugin or update an existing plugin /// @dev can only be called by the `owner` /// @param plugin address of the plugin /// @param isPlugin bool to set if the address is a plugin or not function setPlugin(address plugin, bool isPlugin) external onlyOwner { _setPlugin(plugin, isPlugin); emit SetPlugin(plugin, isPlugin); } /// @notice set multiple new plugins or update existing plugins /// @dev can only be called by the `owner` /// @param plugins addresses of the plugin /// @param isPlugin bool to set if the addresses are a plugin or not function setPlugins(address[] calldata plugins, bool[] calldata isPlugin) external onlyOwner { if (plugins.length != isPlugin.length) revert Errors.LengthMismatch(); uint256 i; for (; i < plugins.length;) { if (plugins[i] == address(0)) revert Errors.ZeroAddress(); _setPlugin(plugins[i], isPlugin[i]); unchecked { ++i; } } emit SetPlugins(plugins, isPlugin); } /// @notice set a new adapter or update an existing adapter /// @dev can only be called by the `owner` /// @param adapter name of the adapter /// @param addr address of the adapter function setAddress(string calldata adapter, address addr) external onlyOwner { _setAddress(adapter, addr); emit SetAddress(adapter, addr); } /// @notice set multiple new adapters or update existing adapters /// @dev can only be called by the `owner` /// @param adapters name of the adapters /// @param addresses addresses of the adapters function setAddresses(string[] calldata adapters, address[] calldata addresses) external onlyOwner { if (adapters.length != addresses.length) revert Errors.LengthMismatch(); uint256 i; for (; i < adapters.length;) { if (addresses[i] == address(0)) revert Errors.ZeroAddress(); _setAddress(adapters[i], addresses[i]); unchecked { ++i; } } emit SetAddresses(adapters, addresses); } /// @notice set the Account contract of a trader /// @dev can only be called by `Q` contract /// @param trader address of the trader /// @param account address of the account function setTraderAccount(address trader, address account) external onlyQ { traderAccount[trader] = account; } function setSubscribe(address manager, address subscriber, uint96 maxLimit) external onlySubscriptions { if (subscriptionAmount[manager][subscriber] > 0) revert Errors.AlreadySubscribed(); subscriptionAmount[manager][subscriber] = maxLimit; totalSubscriptionAmount[manager] += maxLimit; if (!isUniqueSubscriber[manager][subscriber]) { subscribers[manager].push(subscriber); isUniqueSubscriber[manager][subscriber] = true; } } function setUnsubscribe(address manager, address subscriber) external onlySubscriptions { if (subscriptionAmount[manager][subscriber] == 0) revert Errors.NotASubscriber(); totalSubscriptionAmount[manager] -= subscriptionAmount[manager][subscriber]; subscriptionAmount[manager][subscriber] = 0; } /// @notice set a new maxDistributeIndex for StvAccount distribution Loop /// @dev can only be called by the `owner` /// @param _maxDistributeIndex new maxDistributeIndex in uint256 function setMaxDistributeIndex(uint256 _maxDistributeIndex) external onlyOwner { if (_maxDistributeIndex < 1) revert Errors.ZeroAmount(); maxDistributeIndex = _maxDistributeIndex; emit SetMaxDistributeIndex(_maxDistributeIndex); } /*////////////////////////////////////////////////////////////// INTERNAL FUNCTIONS //////////////////////////////////////////////////////////////*/ function _setPlugin(address plugin, bool isPlugin) internal { if (plugin == address(0)) revert Errors.ZeroAddress(); whitelistedPlugins[plugin] = isPlugin; } function _setAddress(string calldata adapter, address addr) internal { if (addr == address(0)) revert Errors.ZeroAddress(); addressValues[adapter] = addr; } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.17; library Errors { // Zero Errors error ZeroAmount(); error ZeroAddress(); error ZeroTotalRaised(); error ZeroClaimableAmount(); // Modifier Errors error NotOwner(); error NotAdmin(); error CallerNotVault(); error CallerNotTrade(); error CallerNotVaultOwner(); error CallerNotGenerate(); error NoAccess(); error NotPlugin(); // State Errors error BelowMinFundraisingPeriod(); error AboveMaxFundraisingPeriod(); error BelowMinLeverage(); error AboveMaxLeverage(); error BelowMinEndTime(); error TradeTokenNotApplicable(); // STV errors error StvDoesNotExist(); error AlreadyOpened(); error MoreThanTotalRaised(); error MoreThanTotalReceived(); error StvNotOpen(); error StvNotClose(); error ClaimNotApplicable(); error StvStatusMismatch(); // General Errors error BalanceLessThanAmount(); error FundraisingPeriodEnded(); error TotalRaisedMoreThanCapacity(); error StillFundraising(); error CommandMisMatch(); error TradeCommandMisMatch(); error NotInitialised(); error Initialised(); error LengthMismatch(); error TransferFailed(); error DelegateCallFailed(); error CallFailed(bytes); error AccountAlreadyExists(); error SwapFailed(); error ExchangeDataMismatch(); error AccountNotExists(); error InputMismatch(); error AboveMaxDistributeIndex(); error BelowMinStvDepositAmount(); // Protocol specific errors error GmxFeesMisMatch(); error UpdateOrderRequestMisMatch(); error CancelOrderRequestMisMatch(); // Subscriptions error NotASubscriber(); error AlreadySubscribed(); error MoreThanLimit(); }
{ "remappings": [ "forge-std/=lib/forge-std/src/", "@synthetix/=src/interfaces/synthetix/", "@openzeppelin/=lib/openzeppelin-contracts/", "@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "solmate/=lib/solmate/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": { "src/Generate.sol": { "Generate": "0x74e0ca6e1ecfb462a80f3b7ab6840013ee32c1c5" }, "src/SpotTrade/SpotTrade.sol": { "SpotTrade": "0x019dfb87e218a07091c83cec604cb2d48fbdf194" }, "src/Trade.sol": { "Trade": "0x16766913fae839da226a669c76f04b2b5e2380a0" }, "src/libraries/BytesCheck.sol": { "BytesCheck": "0x3f3a5da6dbb99dc879a8ed2ec26c831da962231f" } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadySubscribed","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"NoAccess","type":"error"},{"inputs":[],"name":"NotASubscriber","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"adapter","type":"string"},{"indexed":true,"internalType":"address","name":"addressValue","type":"address"}],"name":"SetAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string[]","name":"adapter","type":"string[]"},{"indexed":true,"internalType":"address[]","name":"addressValues","type":"address[]"}],"name":"SetAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxDistributeIndex","type":"uint256"}],"name":"SetMaxDistributeIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"plugin","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"SetPlugin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"plugins","type":"address[]"},{"indexed":false,"internalType":"bool[]","name":"isWhitelisted","type":"bool[]"}],"name":"SetPlugins","type":"event"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"addressValues","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"adapter","type":"string"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"adapters","type":"string[]"}],"name":"getAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"getAllSubscribers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getIsSubscriber","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxDistributeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"}],"name":"getPlugin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"plugins","type":"address[]"}],"name":"getPlugins","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getSubscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"getTotalSubscribedAmountPerManager","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"trader","type":"address"}],"name":"getTraderAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isUniqueSubscriber","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDistributeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"adapter","type":"string"},{"internalType":"address","name":"addr","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"adapters","type":"string[]"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDistributeIndex","type":"uint256"}],"name":"setMaxDistributeIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"bool","name":"isPlugin","type":"bool"}],"name":"setPlugin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"plugins","type":"address[]"},{"internalType":"bool[]","name":"isPlugin","type":"bool[]"}],"name":"setPlugins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"uint96","name":"maxLimit","type":"uint96"}],"name":"setSubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"setTraderAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"setUnsubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"subscribers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"subscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalSubscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"traderAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedPlugins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5033600160405161002c906427aba722a960d91b815260050190565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b03199093169290921790915533907fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb96511906100a39060208082526005908201526427aba722a960d91b604082015260600190565b60405180910390a26117b7806100ba6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637d69a892116100de578063cffe244a11610097578063e034b09011610071578063e034b09014610472578063eda38edb14610485578063f9a832e2146104b9578063fba0e490146104fd57600080fd5b8063cffe244a14610439578063d312f9f51461044c578063df0762a81461045f57600080fd5b80637d69a89214610392578063803b7a30146103a557806392f10652146103b85780639b2ea4bd146103e1578063a0fc27ae146103f4578063bf40fac11461042657600080fd5b806350741dba1161014b5780635a9c0de2116101255780635a9c0de2146102f15780635f5bafcc1461032557806360862d6914610338578063708675111461036457600080fd5b806350741dba146102bf57806351cdaf4d146102d25780635674286e146102e957600080fd5b80631a9ff333146101935780632a3909be146101bc5780632c789331146101fd57806332d794cc146102575780633aad1b401461028a5780634fb33bdd1461029f575b600080fd5b6101a66101a136600461112d565b610529565b6040516101b3919061116f565b60405180910390f35b6101e56101ca3660046111d1565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b61023f61020b3660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b031690565b6040516001600160601b0390911681526020016101b3565b61027a6102653660046111d1565b60036020526000908152604090205460ff1681565b60405190151581526020016101b3565b61029d6102983660046111f3565b6105fe565b005b6102b26102ad3660046111d1565b610675565b6040516101b39190611226565b61029d6102cd366004611267565b6106eb565b6102db60005481565b6040519081526020016101b3565b6000546102db565b61023f6102ff3660046111f3565b60046020908152600092835260408084209091529082529020546001600160601b031681565b6101e5610333366004611280565b610796565b6101e56103463660046111d1565b6001600160a01b039081166000908152600260205260409020541690565b61027a6103723660046111f3565b600760209081526000928352604080842090915290825290205460ff1681565b61029d6103a03660046112aa565b6107ce565b61029d6103b33660046111f3565b61094d565b61023f6103c63660046111d1565b6006602052600090815260409020546001600160601b031681565b61029d6103ef366004611358565b610aa0565b61023f6104023660046111d1565b6001600160a01b03166000908152600660205260409020546001600160601b031690565b6101e56104343660046113ac565b610b41565b6102b261044736600461112d565b610b76565b61029d61045a3660046113e2565b610c4f565b61029d61046d366004611445565b610e0d565b61029d6104803660046112aa565b610eae565b6101e5610493366004611485565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b61027a6104c73660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b0316151590565b61027a61050b3660046111d1565b6001600160a01b031660009081526003602052604090205460ff1690565b60608160008167ffffffffffffffff8111156105475761054761146f565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b828110156105f5576003600087878481811061059457610594611536565b90506020020160208101906105a991906111d1565b6001600160a01b03168152602081019190915260400160002054825160ff909116908390839081106105dd576105dd611536565b91151560209283029190910190910152600101610576565b50949350505050565b604051605160f81b8152600190810190815260405190819003602001902054336001600160a01b03909116146106475760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156106df57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c1575b50505050509050919050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b03909116146107395760405163160d3af160e11b815260040160405180910390fd5b600181101561075b57604051631f2a200560e01b815260040160405180910390fd5b60008190556040518181527f09600168cccbcc1c95935c2db77a179aa2c1b8768c91df32dda20a5ef2cb25839060200160405180910390a150565b600560205281600052604060002081815481106107b257600080fd5b6000918252602090912001546001600160a01b03169150829050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b039091161461081c5760405163160d3af160e11b815260040160405180910390fd5b82811461083f576040516001621398b960e31b0319815260040160405180910390fd5b60005b838110156108f557600083838381811061085e5761085e611536565b905060200201602081019061087391906111d1565b6001600160a01b03160361089a5760405163d92e233d60e01b815260040160405180910390fd5b6108ed8585838181106108af576108af611536565b90506020028101906108c1919061154c565b8585858181106108d3576108d3611536565b90506020020160208101906108e891906111d1565b611021565b600101610842565b8282604051610905929190611593565b60405180910390207fc8fbc51702dcdf096312aa4fe5eec7138c1ffee1b46811b1d406099fc4425144868660405161093e9291906115fc565b60405180910390a25050505050565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b03909116146109a35760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b0380831660009081526004602090815260408083209385168352929052908120546001600160601b031690036109f3576040516303da0d0b60e51b815260040160405180910390fd5b6001600160a01b0380831660008181526004602090815260408083209486168352938152838220549282526006905291822080546001600160601b03928316939192610a41918591166116ae565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b039182166000908152600460209081526040808320939094168252919091522080546bffffffffffffffffffffffff19169055565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610aee5760405163160d3af160e11b815260040160405180910390fd5b610af9838383611021565b806001600160a01b03167fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb965118484604051610b349291906116d5565b60405180910390a2505050565b600060018383604051610b559291906116f1565b908152604051908190036020019020546001600160a01b0316905092915050565b60608160008167ffffffffffffffff811115610b9457610b9461146f565b604051908082528060200260200182016040528015610bbd578160200160208202803683370190505b50905060005b828110156105f5576001868683818110610bdf57610bdf611536565b9050602002810190610bf1919061154c565b604051610bff9291906116f1565b9081526040519081900360200190205482516001600160a01b0390911690839083908110610c2f57610c2f611536565b6001600160a01b0390921660209283029190910190910152600101610bc3565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b0390911614610ca55760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b038084166000908152600460209081526040808320938616835292905220546001600160601b031615610cf257604051632fec509960e11b815260040160405180910390fd5b6001600160a01b038381166000818152600460209081526040808320948716835293815283822080546bffffffffffffffffffffffff19166001600160601b038781169190911790915592825260069052918220805484939192610d5891859116611701565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff16610e08576001600160a01b0383811660008181526005602090815260408083208054600180820183559185528385200180546001600160a01b03191696891696871790559383526007825280832094835293905291909120805460ff191690911790555b505050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610e5b5760405163160d3af160e11b815260040160405180910390fd5b610e65828261108f565b816001600160a01b03167f59cb8348593c4f99a7a9bd46fc9e56008831ff8c46640d1bfdccf4fa1fcd731782604051610ea2911515815260200190565b60405180910390a25050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610efc5760405163160d3af160e11b815260040160405180910390fd5b828114610f1f576040516001621398b960e31b0319815260040160405180910390fd5b60005b83811015610fd8576000858583818110610f3e57610f3e611536565b9050602002016020810190610f5391906111d1565b6001600160a01b031603610f7a5760405163d92e233d60e01b815260040160405180910390fd5b610fd0858583818110610f8f57610f8f611536565b9050602002016020810190610fa491906111d1565b848484818110610fb657610fb6611536565b9050602002016020810190610fcb9190611721565b61108f565b600101610f22565b8484604051610fe8929190611593565b60405180910390207f4899afe5bb10b3699499d09e2b1748da94e8532f36ba3662add363862fd3f6f9848460405161093e92919061173c565b6001600160a01b0381166110485760405163d92e233d60e01b815260040160405180910390fd5b806001848460405161105b9291906116f1565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6001600160a01b0382166110b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b60008083601f8401126110f357600080fd5b50813567ffffffffffffffff81111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6000806020838503121561114057600080fd5b823567ffffffffffffffff81111561115757600080fd5b611163858286016110e1565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111a957835115158352928401929184019160010161118b565b50909695505050505050565b80356001600160a01b03811681146111cc57600080fd5b919050565b6000602082840312156111e357600080fd5b6111ec826111b5565b9392505050565b6000806040838503121561120657600080fd5b61120f836111b5565b915061121d602084016111b5565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156111a95783516001600160a01b031683529284019291840191600101611242565b60006020828403121561127957600080fd5b5035919050565b6000806040838503121561129357600080fd5b61129c836111b5565b946020939093013593505050565b600080600080604085870312156112c057600080fd5b843567ffffffffffffffff808211156112d857600080fd5b6112e4888389016110e1565b909650945060208701359150808211156112fd57600080fd5b5061130a878288016110e1565b95989497509550505050565b60008083601f84011261132857600080fd5b50813567ffffffffffffffff81111561134057600080fd5b60208301915083602082850101111561112657600080fd5b60008060006040848603121561136d57600080fd5b833567ffffffffffffffff81111561138457600080fd5b61139086828701611316565b90945092506113a39050602085016111b5565b90509250925092565b600080602083850312156113bf57600080fd5b823567ffffffffffffffff8111156113d657600080fd5b61116385828601611316565b6000806000606084860312156113f757600080fd5b611400846111b5565b925061140e602085016111b5565b915060408401356001600160601b038116811461142a57600080fd5b809150509250925092565b803580151581146111cc57600080fd5b6000806040838503121561145857600080fd5b611461836111b5565b915061121d60208401611435565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561149757600080fd5b813567ffffffffffffffff808211156114af57600080fd5b818401915084601f8301126114c357600080fd5b8135818111156114d5576114d561146f565b604051601f8201601f19908116603f011681019083821181831017156114fd576114fd61146f565b8160405282815287602084870101111561151657600080fd5b826020860160208301376000928101602001929092525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261156357600080fd5b83018035915067ffffffffffffffff82111561157e57600080fd5b60200191503681900382131561112657600080fd5b60008184825b858110156115c8576001600160a01b036115b2836111b5565b1683526020928301929190910190600101611599565b509095945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561168b57868403603f190183528135368a9003601e1901811261164157600080fd5b8901858101903567ffffffffffffffff81111561165d57600080fd5b80360382131561166c57600080fd5b6116778682846115d3565b95505050918401919084019060010161161b565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b038281168282160390808211156116ce576116ce611698565b5092915050565b6020815260006116e96020830184866115d3565b949350505050565b8183823760009101908152919050565b6001600160601b038181168382160190808211156116ce576116ce611698565b60006020828403121561173357600080fd5b6111ec82611435565b60208082528181018390526000908460408401835b868110156117765761176283611435565b151582529183019190830190600101611751565b50969550505050505056fea264697066735822122060354355784f5a1668f205d898484b3cb41316722ac332d05097257eea271a2164736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637d69a892116100de578063cffe244a11610097578063e034b09011610071578063e034b09014610472578063eda38edb14610485578063f9a832e2146104b9578063fba0e490146104fd57600080fd5b8063cffe244a14610439578063d312f9f51461044c578063df0762a81461045f57600080fd5b80637d69a89214610392578063803b7a30146103a557806392f10652146103b85780639b2ea4bd146103e1578063a0fc27ae146103f4578063bf40fac11461042657600080fd5b806350741dba1161014b5780635a9c0de2116101255780635a9c0de2146102f15780635f5bafcc1461032557806360862d6914610338578063708675111461036457600080fd5b806350741dba146102bf57806351cdaf4d146102d25780635674286e146102e957600080fd5b80631a9ff333146101935780632a3909be146101bc5780632c789331146101fd57806332d794cc146102575780633aad1b401461028a5780634fb33bdd1461029f575b600080fd5b6101a66101a136600461112d565b610529565b6040516101b3919061116f565b60405180910390f35b6101e56101ca3660046111d1565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b61023f61020b3660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b031690565b6040516001600160601b0390911681526020016101b3565b61027a6102653660046111d1565b60036020526000908152604090205460ff1681565b60405190151581526020016101b3565b61029d6102983660046111f3565b6105fe565b005b6102b26102ad3660046111d1565b610675565b6040516101b39190611226565b61029d6102cd366004611267565b6106eb565b6102db60005481565b6040519081526020016101b3565b6000546102db565b61023f6102ff3660046111f3565b60046020908152600092835260408084209091529082529020546001600160601b031681565b6101e5610333366004611280565b610796565b6101e56103463660046111d1565b6001600160a01b039081166000908152600260205260409020541690565b61027a6103723660046111f3565b600760209081526000928352604080842090915290825290205460ff1681565b61029d6103a03660046112aa565b6107ce565b61029d6103b33660046111f3565b61094d565b61023f6103c63660046111d1565b6006602052600090815260409020546001600160601b031681565b61029d6103ef366004611358565b610aa0565b61023f6104023660046111d1565b6001600160a01b03166000908152600660205260409020546001600160601b031690565b6101e56104343660046113ac565b610b41565b6102b261044736600461112d565b610b76565b61029d61045a3660046113e2565b610c4f565b61029d61046d366004611445565b610e0d565b61029d6104803660046112aa565b610eae565b6101e5610493366004611485565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b61027a6104c73660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b0316151590565b61027a61050b3660046111d1565b6001600160a01b031660009081526003602052604090205460ff1690565b60608160008167ffffffffffffffff8111156105475761054761146f565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b828110156105f5576003600087878481811061059457610594611536565b90506020020160208101906105a991906111d1565b6001600160a01b03168152602081019190915260400160002054825160ff909116908390839081106105dd576105dd611536565b91151560209283029190910190910152600101610576565b50949350505050565b604051605160f81b8152600190810190815260405190819003602001902054336001600160a01b03909116146106475760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156106df57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c1575b50505050509050919050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b03909116146107395760405163160d3af160e11b815260040160405180910390fd5b600181101561075b57604051631f2a200560e01b815260040160405180910390fd5b60008190556040518181527f09600168cccbcc1c95935c2db77a179aa2c1b8768c91df32dda20a5ef2cb25839060200160405180910390a150565b600560205281600052604060002081815481106107b257600080fd5b6000918252602090912001546001600160a01b03169150829050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b039091161461081c5760405163160d3af160e11b815260040160405180910390fd5b82811461083f576040516001621398b960e31b0319815260040160405180910390fd5b60005b838110156108f557600083838381811061085e5761085e611536565b905060200201602081019061087391906111d1565b6001600160a01b03160361089a5760405163d92e233d60e01b815260040160405180910390fd5b6108ed8585838181106108af576108af611536565b90506020028101906108c1919061154c565b8585858181106108d3576108d3611536565b90506020020160208101906108e891906111d1565b611021565b600101610842565b8282604051610905929190611593565b60405180910390207fc8fbc51702dcdf096312aa4fe5eec7138c1ffee1b46811b1d406099fc4425144868660405161093e9291906115fc565b60405180910390a25050505050565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b03909116146109a35760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b0380831660009081526004602090815260408083209385168352929052908120546001600160601b031690036109f3576040516303da0d0b60e51b815260040160405180910390fd5b6001600160a01b0380831660008181526004602090815260408083209486168352938152838220549282526006905291822080546001600160601b03928316939192610a41918591166116ae565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b039182166000908152600460209081526040808320939094168252919091522080546bffffffffffffffffffffffff19169055565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610aee5760405163160d3af160e11b815260040160405180910390fd5b610af9838383611021565b806001600160a01b03167fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb965118484604051610b349291906116d5565b60405180910390a2505050565b600060018383604051610b559291906116f1565b908152604051908190036020019020546001600160a01b0316905092915050565b60608160008167ffffffffffffffff811115610b9457610b9461146f565b604051908082528060200260200182016040528015610bbd578160200160208202803683370190505b50905060005b828110156105f5576001868683818110610bdf57610bdf611536565b9050602002810190610bf1919061154c565b604051610bff9291906116f1565b9081526040519081900360200190205482516001600160a01b0390911690839083908110610c2f57610c2f611536565b6001600160a01b0390921660209283029190910190910152600101610bc3565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b0390911614610ca55760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b038084166000908152600460209081526040808320938616835292905220546001600160601b031615610cf257604051632fec509960e11b815260040160405180910390fd5b6001600160a01b038381166000818152600460209081526040808320948716835293815283822080546bffffffffffffffffffffffff19166001600160601b038781169190911790915592825260069052918220805484939192610d5891859116611701565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff16610e08576001600160a01b0383811660008181526005602090815260408083208054600180820183559185528385200180546001600160a01b03191696891696871790559383526007825280832094835293905291909120805460ff191690911790555b505050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610e5b5760405163160d3af160e11b815260040160405180910390fd5b610e65828261108f565b816001600160a01b03167f59cb8348593c4f99a7a9bd46fc9e56008831ff8c46640d1bfdccf4fa1fcd731782604051610ea2911515815260200190565b60405180910390a25050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610efc5760405163160d3af160e11b815260040160405180910390fd5b828114610f1f576040516001621398b960e31b0319815260040160405180910390fd5b60005b83811015610fd8576000858583818110610f3e57610f3e611536565b9050602002016020810190610f5391906111d1565b6001600160a01b031603610f7a5760405163d92e233d60e01b815260040160405180910390fd5b610fd0858583818110610f8f57610f8f611536565b9050602002016020810190610fa491906111d1565b848484818110610fb657610fb6611536565b9050602002016020810190610fcb9190611721565b61108f565b600101610f22565b8484604051610fe8929190611593565b60405180910390207f4899afe5bb10b3699499d09e2b1748da94e8532f36ba3662add363862fd3f6f9848460405161093e92919061173c565b6001600160a01b0381166110485760405163d92e233d60e01b815260040160405180910390fd5b806001848460405161105b9291906116f1565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6001600160a01b0382166110b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b60008083601f8401126110f357600080fd5b50813567ffffffffffffffff81111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6000806020838503121561114057600080fd5b823567ffffffffffffffff81111561115757600080fd5b611163858286016110e1565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111a957835115158352928401929184019160010161118b565b50909695505050505050565b80356001600160a01b03811681146111cc57600080fd5b919050565b6000602082840312156111e357600080fd5b6111ec826111b5565b9392505050565b6000806040838503121561120657600080fd5b61120f836111b5565b915061121d602084016111b5565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156111a95783516001600160a01b031683529284019291840191600101611242565b60006020828403121561127957600080fd5b5035919050565b6000806040838503121561129357600080fd5b61129c836111b5565b946020939093013593505050565b600080600080604085870312156112c057600080fd5b843567ffffffffffffffff808211156112d857600080fd5b6112e4888389016110e1565b909650945060208701359150808211156112fd57600080fd5b5061130a878288016110e1565b95989497509550505050565b60008083601f84011261132857600080fd5b50813567ffffffffffffffff81111561134057600080fd5b60208301915083602082850101111561112657600080fd5b60008060006040848603121561136d57600080fd5b833567ffffffffffffffff81111561138457600080fd5b61139086828701611316565b90945092506113a39050602085016111b5565b90509250925092565b600080602083850312156113bf57600080fd5b823567ffffffffffffffff8111156113d657600080fd5b61116385828601611316565b6000806000606084860312156113f757600080fd5b611400846111b5565b925061140e602085016111b5565b915060408401356001600160601b038116811461142a57600080fd5b809150509250925092565b803580151581146111cc57600080fd5b6000806040838503121561145857600080fd5b611461836111b5565b915061121d60208401611435565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561149757600080fd5b813567ffffffffffffffff808211156114af57600080fd5b818401915084601f8301126114c357600080fd5b8135818111156114d5576114d561146f565b604051601f8201601f19908116603f011681019083821181831017156114fd576114fd61146f565b8160405282815287602084870101111561151657600080fd5b826020860160208301376000928101602001929092525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261156357600080fd5b83018035915067ffffffffffffffff82111561157e57600080fd5b60200191503681900382131561112657600080fd5b60008184825b858110156115c8576001600160a01b036115b2836111b5565b1683526020928301929190910190600101611599565b509095945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561168b57868403603f190183528135368a9003601e1901811261164157600080fd5b8901858101903567ffffffffffffffff81111561165d57600080fd5b80360382131561166c57600080fd5b6116778682846115d3565b95505050918401919084019060010161161b565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b038281168282160390808211156116ce576116ce611698565b5092915050565b6020815260006116e96020830184866115d3565b949350505050565b8183823760009101908152919050565b6001600160601b038181168382160190808211156116ce576116ce611698565b60006020828403121561173357600080fd5b6111ec82611435565b60208082528181018390526000908460408401835b868110156117765761176283611435565b151582529183019190830190600101611751565b50969550505050505056fea264697066735822122060354355784f5a1668f205d898484b3cb41316722ac332d05097257eea271a2164736f6c63430008130033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.