More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 222 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 15580396 | 932 days ago | IN | 0 ETH | 0.000369 | ||||
Mint | 15274423 | 980 days ago | IN | 0 ETH | 0.00221241 | ||||
Mint | 14554983 | 1096 days ago | IN | 0 ETH | 0.00371452 | ||||
Mint | 14336372 | 1130 days ago | IN | 0 ETH | 0.00504276 | ||||
Mint | 14159143 | 1158 days ago | IN | 0 ETH | 0.00830368 | ||||
Mint | 14099920 | 1167 days ago | IN | 0 ETH | 0.0121469 | ||||
Mint | 13921094 | 1194 days ago | IN | 0 ETH | 0.00989992 | ||||
Mint | 13733951 | 1224 days ago | IN | 0 ETH | 0.01566298 | ||||
Mint | 13645357 | 1238 days ago | IN | 0 ETH | 0.01822256 | ||||
Mint | 13568230 | 1250 days ago | IN | 0 ETH | 0.01426166 | ||||
Mint | 13549092 | 1253 days ago | IN | 0 ETH | 0.02267767 | ||||
Mint | 13463437 | 1266 days ago | IN | 0 ETH | 0.01220495 | ||||
Mint | 13440931 | 1270 days ago | IN | 0 ETH | 0.01032392 | ||||
Mint | 13402010 | 1276 days ago | IN | 0 ETH | 0.01391251 | ||||
Mint | 13280906 | 1295 days ago | IN | 0 ETH | 0.00815232 | ||||
Mint | 13270653 | 1296 days ago | IN | 0 ETH | 0.01799638 | ||||
Mint | 13250219 | 1300 days ago | IN | 0 ETH | 0.00917369 | ||||
Mint | 13216812 | 1305 days ago | IN | 0 ETH | 0.00970239 | ||||
Mint | 13193637 | 1308 days ago | IN | 0 ETH | 0.02721428 | ||||
Mint | 13163388 | 1313 days ago | IN | 0 ETH | 0.01887116 | ||||
Mint | 13119398 | 1320 days ago | IN | 0 ETH | 0.0121828 | ||||
Mint | 13075355 | 1327 days ago | IN | 0 ETH | 0.00554752 | ||||
Mint | 13074712 | 1327 days ago | IN | 0 ETH | 0.0041351 | ||||
Mint | 13072706 | 1327 days ago | IN | 0 ETH | 0.00349146 | ||||
Mint | 13063742 | 1328 days ago | IN | 0 ETH | 0.00855758 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x5f16b9f5...e74e98f34 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
ONXStrategy
Compiler Version
v0.6.8+commit.0bbfe453
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.5.16; import "./libraries/TransferHelper.sol"; import "./libraries/SafeMath.sol"; import "./modules/BaseShareField.sol"; import "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol"; interface IONXStrategy { function invest(address user, uint256 amount) external; function withdraw(address user, uint256 amount) external; function liquidation(address user) external; function claim(address user, uint256 amount, uint256 total) external; function query() external view returns (uint256); function mint() external; function interestToken() external view returns (address); function farmToken() external view returns (address); } interface IONXFarm { function deposit(uint256 _pid, uint256 _amount) external; function withdraw(uint256 _pid, uint256 _amount) external; function pendingOnX(uint256 _pid, address _user) external view returns (uint256); function poolInfo(uint _index) external view returns(address, uint256, uint256, uint256); } contract ONXStrategy is IONXStrategy, BaseShareField, Initializable { event Mint(address indexed user, uint256 amount); using SafeMath for uint256; address public override interestToken; address public override farmToken; address public poolAddress; address public onxFarm; uint256 public lpPoolpid; address public owner; function initialize( address _interestToken, address _farmToken, address _poolAddress, address _onxFarm, uint256 _lpPoolpid ) public initializer { owner = msg.sender; interestToken = _interestToken; farmToken = _farmToken; poolAddress = _poolAddress; onxFarm = _onxFarm; lpPoolpid = _lpPoolpid; _setShareToken(_interestToken); } function invest(address user, uint256 amount) external override { require(msg.sender == poolAddress, "INVALID CALLER"); TransferHelper.safeTransferFrom(farmToken, msg.sender, address(this), amount); IERC20(farmToken).approve(onxFarm, amount); IONXFarm(onxFarm).deposit(lpPoolpid, amount); _increaseProductivity(user, amount); } function withdraw(address user, uint256 amount) external override { require(msg.sender == poolAddress, "INVALID CALLER"); IONXFarm(onxFarm).withdraw(lpPoolpid, amount); TransferHelper.safeTransfer(farmToken, msg.sender, amount); _decreaseProductivity(user, amount); } function liquidation(address user) external override { require(msg.sender == poolAddress, "INVALID CALLER"); uint256 amount = users[user].amount; _decreaseProductivity(user, amount); uint256 reward = users[user].rewardEarn; users[msg.sender].rewardEarn = users[msg.sender].rewardEarn.add(reward); users[user].rewardEarn = 0; _increaseProductivity(msg.sender, amount); } function claim( address user, uint256 amount, uint256 total ) external override { require(msg.sender == poolAddress, "INVALID CALLER"); IONXFarm(onxFarm).withdraw(lpPoolpid, amount); TransferHelper.safeTransfer(farmToken, msg.sender, amount); _decreaseProductivity(msg.sender, amount); uint256 claimAmount = users[msg.sender].rewardEarn.mul(amount).div(total); users[user].rewardEarn = users[user].rewardEarn.add(claimAmount); users[msg.sender].rewardEarn = users[msg.sender].rewardEarn.sub(claimAmount); } function _currentReward() internal view override returns (uint256) { return mintedShare .add(IERC20(shareToken).balanceOf(address(this))) .add(IONXFarm(onxFarm).pendingOnX(lpPoolpid, address(this))) .sub(totalShare); } function query() external view override returns (uint256) { return _takeWithAddress(msg.sender); } function mint() external override { IONXFarm(onxFarm).deposit(lpPoolpid, 0); uint256 amount = _mint(msg.sender); emit Mint(msg.sender, amount); } }
//SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED"); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED"); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED"); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.6; import "../libraries/SafeMath.sol"; import "../libraries/TransferHelper.sol"; interface IERC20 { function approve(address spender, uint256 value) external returns (bool); function balanceOf(address owner) external view returns (uint256); } contract BaseShareField { using SafeMath for uint256; uint256 public totalProductivity; uint256 public accAmountPerShare; uint256 public totalShare; uint256 public mintedShare; uint256 public mintCumulation; uint256 private unlocked = 1; address public shareToken; modifier lock() { require(unlocked == 1, "Locked"); unlocked = 0; _; unlocked = 1; } struct UserInfo { uint256 amount; // How many tokens the user has provided. uint256 rewardDebt; // Reward debt. uint256 rewardEarn; // Reward earn and not minted bool initialize; // already setup. } mapping(address => UserInfo) public users; function _setShareToken(address _shareToken) internal { shareToken = _shareToken; } // Update reward variables of the given pool to be up-to-date. function _update() internal virtual { if (totalProductivity == 0) { totalShare = totalShare.add(_currentReward()); return; } uint256 reward = _currentReward(); accAmountPerShare = accAmountPerShare.add(reward.mul(1e12).div(totalProductivity)); totalShare += reward; } function _currentReward() internal view virtual returns (uint256) { return mintedShare.add(IERC20(shareToken).balanceOf(address(this))).sub(totalShare); } // Audit user's reward to be up-to-date function _audit(address user) internal virtual { UserInfo storage userInfo = users[user]; if (userInfo.amount > 0) { uint256 pending = userInfo.amount.mul(accAmountPerShare).div(1e12).sub(userInfo.rewardDebt); userInfo.rewardEarn = userInfo.rewardEarn.add(pending); mintCumulation = mintCumulation.add(pending); userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12); } } // External function call // This function increase user's productivity and updates the global productivity. // the users' actual share percentage will calculated by: // Formula: user_productivity / global_productivity function _increaseProductivity(address user, uint256 value) internal virtual returns (bool) { require(value > 0, "PRODUCTIVITY_VALUE_MUST_BE_GREATER_THAN_ZERO"); UserInfo storage userInfo = users[user]; _update(); _audit(user); totalProductivity = totalProductivity.add(value); userInfo.amount = userInfo.amount.add(value); userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12); return true; } // External function call // This function will decreases user's productivity by value, and updates the global productivity // it will record which block this is happenning and accumulates the area of (productivity * time) function _decreaseProductivity(address user, uint256 value) internal virtual returns (bool) { UserInfo storage userInfo = users[user]; require(value > 0 && userInfo.amount >= value, "INSUFFICIENT_PRODUCTIVITY"); _update(); _audit(user); userInfo.amount = userInfo.amount.sub(value); userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12); totalProductivity = totalProductivity.sub(value); return true; } function _transferTo( address user, address to, uint256 value ) internal virtual returns (bool) { UserInfo storage userInfo = users[user]; require(value > 0 && userInfo.amount >= value, "INSUFFICIENT_PRODUCTIVITY"); _update(); _audit(user); uint256 transferAmount = value.mul(userInfo.rewardEarn).div(userInfo.amount); userInfo.rewardEarn = userInfo.rewardEarn.sub(transferAmount); users[to].rewardEarn = users[to].rewardEarn.add(transferAmount); userInfo.amount = userInfo.amount.sub(value); userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12); totalProductivity = totalProductivity.sub(value); return true; } function _takeWithAddress(address user) internal view returns (uint256) { UserInfo storage userInfo = users[user]; uint256 _accAmountPerShare = accAmountPerShare; if (totalProductivity != 0) { uint256 reward = _currentReward(); _accAmountPerShare = _accAmountPerShare.add(reward.mul(1e12).div(totalProductivity)); } return userInfo.amount.mul(_accAmountPerShare).div(1e12).add(userInfo.rewardEarn).sub(userInfo.rewardDebt); } // External function call // When user calls this function, it will calculate how many token will mint to user from his productivity * time // Also it calculates global token supply from last time the user mint to this time. function _mint(address user) internal virtual lock returns (uint256) { _update(); _audit(user); require(users[user].rewardEarn > 0, "NOTHING TO MINT SHARE"); uint256 amount = users[user].rewardEarn; TransferHelper.safeTransfer(shareToken, user, amount); users[user].rewardEarn = 0; mintedShare += amount; return amount; } function _mintTo(address user, address to) internal virtual lock returns (uint256) { _update(); _audit(user); uint256 amount = users[user].rewardEarn; if (amount > 0) { TransferHelper.safeTransfer(shareToken, to, amount); } users[user].rewardEarn = 0; mintedShare += amount; return amount; } // Returns how many productivity a user has and global has. function getProductivity(address user) public view virtual returns (uint256, uint256) { return (users[user].amount, totalProductivity); } // Returns the current gorss product rate. function interestsPerBlock() public view virtual returns (uint256) { return accAmountPerShare; } }
// SPDX-License-Identifier: MIT // solhint-disable-next-line compiler-version pragma solidity >=0.4.24 <0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || _isConstructor() || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function _isConstructor() private view returns (bool) { // extcodesize checks the size of the code stored in an address, and // address returns the current address. Since the code is still not // deployed when running a constructor, any checks on its code size will // yield zero, making it an effective way to detect if a contract is // under construction or not. address self = address(this); uint256 cs; // solhint-disable-next-line no-inline-assembly assembly { cs := extcodesize(self) } return cs == 0; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[],"name":"accAmountPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farmToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getProductivity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_interestToken","type":"address"},{"internalType":"address","name":"_farmToken","type":"address"},{"internalType":"address","name":"_poolAddress","type":"address"},{"internalType":"address","name":"_onxFarm","type":"address"},{"internalType":"uint256","name":"_lpPoolpid","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"interestsPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"liquidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPoolpid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintCumulation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintedShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onxFarm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"query","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shareToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalProductivity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEarn","type":"uint256"},{"internalType":"bool","name":"initialize","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063a87430ba116100b8578063c2442f931161007c578063c2442f93146102e0578063cf675365146102e8578063d14c9641146102f0578063e33b79e1146102f8578063f3fef3a314610300578063f7013ef61461032c57610142565b8063a87430ba14610230578063b83e62bf1461027e578063b9b8c246146102a4578063bea28115146102d0578063bfc8b208146102d857610142565b80632c46b2051161010a5780632c46b205146102005780633a608032146102085780635026308e146102105780636c9fa59e14610218578063764b666c146102205780638da5cb5b1461022857610142565b8063026c4207146101475780631249c58b146101615780631755ff211461016b57806328e964e91461018f5780632bc43fd9146101ce575b600080fd5b61014f610372565b60408051918252519081900360200190f35b610169610378565b005b61017361042c565b604080516001600160a01b039092168252519081900360200190f35b6101b5600480360360208110156101a557600080fd5b50356001600160a01b031661043b565b6040805192835260208301919091528051918290030190f35b610169600480360360608110156101e457600080fd5b506001600160a01b038135169060208101359060400135610459565b61014f6105f1565b61014f610601565b610173610607565b610173610616565b610173610625565b61017361063a565b6102566004803603602081101561024657600080fd5b50356001600160a01b0316610649565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6101696004803603602081101561029457600080fd5b50356001600160a01b0316610673565b610169600480360360408110156102ba57600080fd5b506001600160a01b03813516906020013561075f565b61014f6108ca565b61014f6108d0565b6101736108d6565b61014f6108e5565b61014f6108eb565b61014f6108f1565b6101696004803603604081101561031657600080fd5b506001600160a01b0381351690602001356108f7565b610169600480360360a081101561034257600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013590911690608001356109d8565b60025481565b600b54600c5460408051631c57762b60e31b8152600481019290925260006024830181905290516001600160a01b039093169263e2bbb15892604480820193929182900301818387803b1580156103ce57600080fd5b505af11580156103e2573d6000803e3d6000fd5b5050505060006103f133610af1565b60408051828152905191925033917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859181900360200190a250565b600a546001600160a01b031681565b6001600160a01b031660009081526007602052604081205490549091565b600a546001600160a01b031633146104a9576040805162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a21021a0a62622a960911b604482015290519081900360640190fd5b600b54600c5460408051630441a3e760e41b8152600481019290925260248201859052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b15801561050057600080fd5b505af1158015610514573d6000803e3d6000fd5b505060095461053092506001600160a01b031690503384610c0b565b61053a3383610d75565b5033600090815260076020526040812060020154610570908390610564908663ffffffff610e5916565b9063ffffffff610eb916565b6001600160a01b03851660009081526007602052604090206002015490915061059f908263ffffffff610efb16565b6001600160a01b038516600090815260076020526040808220600290810193909355338252902001546105d8908263ffffffff610f5516565b3360009081526007602052604090206002015550505050565b60006105fc33610f97565b905090565b60015481565b600b546001600160a01b031681565b6006546001600160a01b031681565b6008546201000090046001600160a01b031681565b600d546001600160a01b031681565b60076020526000908152604090208054600182015460028301546003909301549192909160ff1684565b600a546001600160a01b031633146106c3576040805162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a21021a0a62622a960911b604482015290519081900360640190fd5b6001600160a01b0381166000908152600760205260409020546106e68282610d75565b506001600160a01b0382166000908152600760205260408082206002908101543384529190922090910154610721908263ffffffff610efb16565b336000818152600760205260408082206002908101949094556001600160a01b03871682528120909201919091556107599083611047565b50505050565b600a546001600160a01b031633146107af576040805162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a21021a0a62622a960911b604482015290519081900360640190fd5b6009546107c7906001600160a01b0316333084611106565b600954600b546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561082057600080fd5b505af1158015610834573d6000803e3d6000fd5b505050506040513d602081101561084a57600080fd5b5050600b54600c5460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b1580156108a357600080fd5b505af11580156108b7573d6000803e3d6000fd5b505050506108c58282611047565b505050565b60005481565b60015490565b6009546001600160a01b031681565b60045481565b60035481565b600c5481565b600a546001600160a01b03163314610947576040805162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a21021a0a62622a960911b604482015290519081900360640190fd5b600b54600c5460408051630441a3e760e41b8152600481019290925260248201849052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b50506009546109ce92506001600160a01b031690503383610c0b565b6108c58282610d75565b600854610100900460ff16806109f157506109f161125b565b806109ff575060085460ff16155b610a3a5760405162461bcd60e51b815260040180806020018281038252602e8152602001806115b4602e913960400191505060405180910390fd5b600854610100900460ff16158015610a65576008805460ff1961ff0019909116610100171660011790555b600d8054336001600160a01b0319918216179091556008805462010000600160b01b031916620100006001600160a01b038a81169190910291909117909155600980548316888316179055600a80548316878316179055600b8054909216908516179055600c829055610ad786611261565b8015610ae9576008805461ff00191690555b505050505050565b6000600554600114610b33576040805162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b604482015290519081900360640190fd5b6000600555610b40611283565b610b49826112f7565b6001600160a01b038216600090815260076020526040902060020154610bae576040805162461bcd60e51b81526020600482015260156024820152744e4f5448494e4720544f204d494e5420534841524560581b604482015290519081900360640190fd5b6001600160a01b038083166000908152600760205260409020600201546006549091610bdc91168483610c0b565b6001600160a01b0392909216600090815260076020526040812060020155506003805482019055600160055590565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310610c885780518252601f199092019160209182019101610c69565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cea576040519150601f19603f3d011682016040523d82523d6000602084013e610cef565b606091505b5091509150818015610d1d575080511580610d1d5750808060200190516020811015610d1a57600080fd5b50515b610d6e576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6001600160a01b03821660009081526007602052604081208215801590610d9d575080548311155b610dee576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f50524f44554354495649545900000000000000604482015290519081900360640190fd5b610df6611283565b610dff846112f7565b8054610e11908463ffffffff610f5516565b808255600154610e329164e8d4a5100091610564919063ffffffff610e5916565b6001820155600054610e4a908463ffffffff610f5516565b60005550600190505b92915050565b600082610e6857506000610e53565b82820282848281610e7557fe5b0414610eb25760405162461bcd60e51b81526004018080602001828103825260218152602001806115e26021913960400191505060405180910390fd5b9392505050565b6000610eb283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061139f565b600082820183811015610eb2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610eb283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611441565b6001600160a01b0381166000908152600760205260408120600154825415610ff7576000610fc361149b565b9050610ff3610fe660005461056464e8d4a5100085610e5990919063ffffffff16565b839063ffffffff610efb16565b9150505b61103f8260010154611033846002015461102764e8d4a51000610564878960000154610e5990919063ffffffff16565b9063ffffffff610efb16565b9063ffffffff610f5516565b949350505050565b60008082116110875760405162461bcd60e51b815260040180806020018281038252602c815260200180611603602c913960400191505060405180910390fd5b6001600160a01b03831660009081526007602052604090206110a7611283565b6110b0846112f7565b6000546110c3908463ffffffff610efb16565b60005580546110d8908463ffffffff610efb16565b8082556001546110f99164e8d4a5100091610564919063ffffffff610e5916565b6001918201559392505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061118b5780518252601f19909201916020918201910161116c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111ed576040519150601f19603f3d011682016040523d82523d6000602084013e6111f2565b606091505b5091509150818015611220575080511580611220575080806020019051602081101561121d57600080fd5b50515b610ae95760405162461bcd60e51b815260040180806020018281038252602481526020018061162f6024913960400191505060405180910390fd5b303b1590565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546112ac576112a461129561149b565b6002549063ffffffff610efb16565b6002556112f5565b60006112b661149b565b90506112e86112d960005461056464e8d4a5100085610e5990919063ffffffff16565b6001549063ffffffff610efb16565b6001556002805490910190555b565b6001600160a01b038116600090815260076020526040902080541561139b576000611342826001015461103364e8d4a510006105646001548760000154610e5990919063ffffffff16565b600283015490915061135a908263ffffffff610efb16565b6002830155600454611372908263ffffffff610efb16565b60045560015482546113949164e8d4a51000916105649163ffffffff610e5916565b6001830155505b5050565b6000818361142b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113f05781810151838201526020016113d8565b50505050905090810190601f16801561141d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161143757fe5b0495945050505050565b600081848411156114935760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113f05781810151838201526020016113d8565b505050900390565b600254600b54600c5460408051630284297360e51b81526004810192909252306024830152516000936105fc939092611033926001600160a01b03909216916350852e6091604480820192602092909190829003018186803b15801561150057600080fd5b505afa158015611514573d6000803e3d6000fd5b505050506040513d602081101561152a57600080fd5b5051600654604080516370a0823160e01b81523060048201529051611027926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561157857600080fd5b505afa15801561158c573d6000803e3d6000fd5b505050506040513d60208110156115a257600080fd5b50516003549063ffffffff610efb1656fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7750524f4455435449564954595f56414c55455f4d5553545f42455f475245415445525f5448414e5f5a45524f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220755e57485d67a9c8eb2330c94c2595e6f54c008aa28acfabcfc825c620b530da64736f6c63430006080033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.007455 | 10,292.3366 | $76.73 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.