ETH Price: $1,498.51 (-8.25%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint155803962022-09-21 7:46:23932 days ago1663746383IN
0x45D866a5...8b0137D6f
0 ETH0.0003693
Mint152744232022-08-04 6:59:12980 days ago1659596352IN
0x45D866a5...8b0137D6f
0 ETH0.0022124117.50372155
Mint145549832022-04-10 1:21:461096 days ago1649553706IN
0x45D866a5...8b0137D6f
0 ETH0.0037145229.38774484
Mint143363722022-03-06 23:53:071130 days ago1646610787IN
0x45D866a5...8b0137D6f
0 ETH0.0050427640.99776432
Mint141591432022-02-07 13:17:571158 days ago1644239877IN
0x45D866a5...8b0137D6f
0 ETH0.0083036867.50910519
Mint140999202022-01-29 9:39:341167 days ago1643449174IN
0x45D866a5...8b0137D6f
0 ETH0.0121469100.38677683
Mint139210942022-01-01 18:17:501194 days ago1641061070IN
0x45D866a5...8b0137D6f
0 ETH0.0098999278.32408164
Mint137339512021-12-03 13:53:361224 days ago1638539616IN
0x45D866a5...8b0137D6f
0 ETH0.0156629888.76276049
Mint136453572021-11-19 11:36:231238 days ago1637321783IN
0x45D866a5...8b0137D6f
0 ETH0.0182225683
Mint135682302021-11-07 8:10:331250 days ago1636272633IN
0x45D866a5...8b0137D6f
0 ETH0.0142616671.11738435
Mint135490922021-11-04 8:16:161253 days ago1636013776IN
0x45D866a5...8b0137D6f
0 ETH0.02267767105.16597326
Mint134634372021-10-21 21:33:331266 days ago1634852013IN
0x45D866a5...8b0137D6f
0 ETH0.0122049559.84789028
Mint134409312021-10-18 9:08:391270 days ago1634548119IN
0x45D866a5...8b0137D6f
0 ETH0.0103239252
Mint134020102021-10-12 6:16:091276 days ago1634019369IN
0x45D866a5...8b0137D6f
0 ETH0.0139125174.46499879
Mint132809062021-09-23 8:28:381295 days ago1632385718IN
0x45D866a5...8b0137D6f
0 ETH0.0081523243.63430317
Mint132706532021-09-21 18:00:451296 days ago1632247245IN
0x45D866a5...8b0137D6f
0 ETH0.0179963895.34762369
Mint132502192021-09-18 14:35:121300 days ago1631975712IN
0x45D866a5...8b0137D6f
0 ETH0.0091736949.10105919
Mint132168122021-09-13 10:25:281305 days ago1631528728IN
0x45D866a5...8b0137D6f
0 ETH0.0097023944.99412819
Mint131936372021-09-09 20:11:551308 days ago1631218315IN
0x45D866a5...8b0137D6f
0 ETH0.02721428133.44716437
Mint131633882021-09-05 3:45:521313 days ago1630813552IN
0x45D866a5...8b0137D6f
0 ETH0.0188711694.10316714
Mint131193982021-08-29 8:47:311320 days ago1630226851IN
0x45D866a5...8b0137D6f
0 ETH0.012182855.97763641
Mint130753552021-08-22 13:16:411327 days ago1629638201IN
0x45D866a5...8b0137D6f
0 ETH0.0055475227.66334377
Mint130747122021-08-22 11:01:421327 days ago1629630102IN
0x45D866a5...8b0137D6f
0 ETH0.004135119
Mint130727062021-08-22 3:30:241327 days ago1629603024IN
0x45D866a5...8b0137D6f
0 ETH0.0034914617.41056076
Mint130637422021-08-20 18:32:301328 days ago1629484350IN
0x45D866a5...8b0137D6f
0 ETH0.0085575841.96270811
View all transactions

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
File 1 of 5 : ONXStrategy.sol
// 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);
	}
}

File 2 of 5 : TransferHelper.sol
//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");
	}
}

File 3 of 5 : SafeMath.sol
// 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;
	}
}

File 4 of 5 : BaseShareField.sol
// 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;
	}
}

File 5 of 5 : Initializable.sol
// 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;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.