Source Code
Latest 25 from a total of 41,480,086 transactions (+5 Pending)
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| 0x61689478891b22df62797615a1d93ab4730cba6490ad33f117117ea791e92973 | - | (pending) | less than 1 sec ago | IN | 0 POL | (Pending) | |||
| 0x5ccbd797cb34bde3fc83805d8243a4519b29d42c918b399e79d659582191a29f | - | (pending) | less than 1 sec ago | IN | 0 POL | (Pending) | |||
| 0x15be58178ce2dfa3b6edd9d01db599c5f61f47c1fed5a0981c3cc3908394cf2a | - | (pending) | less than 1 sec ago | IN | 0 POL | (Pending) | |||
| 0x694ba1538e2943ac8f1a4d7a3296b6f2c8c2195273b344fa19878417145b363f | - | (pending) | less than 1 sec ago | IN | 0 POL | (Pending) | |||
| 0xc23e483d78820e8cf012ebac31911f1a88619718383d38527c746faa9ec0b790 | - | (pending) | less than 1 sec ago | IN | 0 POL | (Pending) | |||
| Unstake | 84050542 | 12 secs ago | IN | 0 POL | 0.03626679 | ||||
| Unstake | 84050542 | 12 secs ago | IN | 0 POL | 0.03933785 | ||||
| Claim | 84050542 | 12 secs ago | IN | 0 POL | 0.02993564 | ||||
| Claim | 84050542 | 12 secs ago | IN | 0 POL | 0.03569583 | ||||
| Unstake | 84050542 | 12 secs ago | IN | 0 POL | 0.24984965 | ||||
| Unstake | 84050542 | 12 secs ago | IN | 0 POL | 0.25026862 | ||||
| Claim | 84050542 | 12 secs ago | IN | 0 POL | 0.19041957 | ||||
| Claim | 84050542 | 12 secs ago | IN | 0 POL | 0.19041957 | ||||
| Unstake | 84050542 | 12 secs ago | IN | 0 POL | 0.25036313 | ||||
| Claim | 84050541 | 14 secs ago | IN | 0 POL | 0.02144829 | ||||
| Unstake | 84050541 | 14 secs ago | IN | 0 POL | 0.03489996 | ||||
| Unstake | 84050541 | 14 secs ago | IN | 0 POL | 0.03704557 | ||||
| Claim | 84050541 | 14 secs ago | IN | 0 POL | 0.19045581 | ||||
| Claim | 84050540 | 16 secs ago | IN | 0 POL | 0.03401067 | ||||
| Claim | 84050540 | 16 secs ago | IN | 0 POL | 0.19013269 | ||||
| Unstake | 84050540 | 16 secs ago | IN | 0 POL | 0.24989158 | ||||
| Unstake | 84050539 | 18 secs ago | IN | 0 POL | 0.02728281 | ||||
| Claim | 84050539 | 18 secs ago | IN | 0 POL | 0.02647547 | ||||
| Claim | 84050539 | 18 secs ago | IN | 0 POL | 0.02647547 | ||||
| Unstake | 84050539 | 18 secs ago | IN | 0 POL | 0.04311654 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/**
*Submitted for verification at polygonscan.com on 2026-03-09
*/
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity 0.7.5;
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;
}
}
interface IERC20 {
function decimals() external view returns (uint8);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.3._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.3._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
function addressToString(address _address) internal pure returns(string memory) {
bytes32 _bytes = bytes32(uint256(_address));
bytes memory HEX = "0123456789abcdef";
bytes memory _addr = new bytes(42);
_addr[0] = '0';
_addr[1] = 'x';
for(uint256 i = 0; i < 20; i++) {
_addr[2+i*2] = HEX[uint8(_bytes[i + 12] >> 4)];
_addr[3+i*2] = HEX[uint8(_bytes[i + 12] & 0x0f)];
}
return string(_addr);
}
}
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
interface IOwnable {
function manager() external view returns (address);
function renounceManagement() external;
function pushManagement( address newOwner_ ) external;
function pullManagement() external;
}
contract Ownable is IOwnable {
address internal _owner;
address internal _newOwner;
event OwnershipPushed(address indexed previousOwner, address indexed newOwner);
event OwnershipPulled(address indexed previousOwner, address indexed newOwner);
constructor () {
_owner = msg.sender;
emit OwnershipPushed( address(0), _owner );
}
function manager() public view override returns (address) {
return _owner;
}
modifier onlyManager() {
require( _owner == msg.sender, "Ownable: caller is not the owner" );
_;
}
function renounceManagement() public virtual override onlyManager() {
emit OwnershipPushed( _owner, address(0) );
_owner = address(0);
}
function pushManagement( address newOwner_ ) public virtual override onlyManager() {
require( newOwner_ != address(0), "Ownable: new owner is the zero address");
emit OwnershipPushed( _owner, newOwner_ );
_newOwner = newOwner_;
}
function pullManagement() public virtual override {
require( msg.sender == _newOwner, "Ownable: must be new owner to pull");
emit OwnershipPulled( _owner, _newOwner );
_owner = _newOwner;
}
}
interface IsOHM {
function rebase( uint256 ohmProfit_, uint epoch_) external returns (uint256);
function circulatingSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function gonsForBalance( uint amount ) external view returns ( uint );
function balanceForGons( uint gons ) external view returns ( uint );
function index() external view returns ( uint );
}
interface IWarmup {
function retrieve( address staker_, uint amount_ ) external;
}
interface IDistributor {
function distribute() external returns ( bool );
}
contract Staking is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
address public immutable OHM;
address public immutable sOHM;
event Staked ( address indexed staker, uint256 amount );
struct Epoch {
uint length;
uint number;
uint endBlock;
uint distribute;
}
Epoch public epoch;
address public distributor;
address public locker;
uint public totalBonus;
address public warmupContract;
uint public warmupPeriod;
constructor (
address _OHM,
address _sOHM,
uint _epochLength,
uint _firstEpochNumber,
uint _firstEpochBlock
) {
require( _OHM != address(0) );
OHM = _OHM;
require( _sOHM != address(0) );
sOHM = _sOHM;
epoch = Epoch({
length: _epochLength,
number: _firstEpochNumber,
endBlock: _firstEpochBlock,
distribute: 0
});
}
struct Claim {
uint deposit;
uint gons;
uint expiry;
bool lock; // prevents malicious delays
}
mapping( address => Claim ) public warmupInfo;
/**
@notice stake OHM to enter warmup
@param _amount uint
@return bool
*/
function stake( uint _amount, address _recipient ) external returns ( bool ) {
rebase();
IERC20( OHM ).safeTransferFrom( msg.sender, address(this), _amount );
Claim memory info = warmupInfo[ _recipient ];
require( !info.lock, "Deposits for account are locked" );
warmupInfo[ _recipient ] = Claim ({
deposit: info.deposit.add( _amount ),
gons: info.gons.add( IsOHM( sOHM ).gonsForBalance( _amount ) ),
expiry: epoch.number.add( warmupPeriod ),
lock: false
});
IERC20( sOHM ).safeTransfer( warmupContract, _amount );
emit Staked( _recipient, _amount );
return true;
}
/**
@notice retrieve sOHM from warmup
@param _recipient address
*/
function claim ( address _recipient ) public {
Claim memory info = warmupInfo[ _recipient ];
if ( epoch.number >= info.expiry && info.expiry != 0 ) {
delete warmupInfo[ _recipient ];
IWarmup( warmupContract ).retrieve( _recipient, IsOHM( sOHM ).balanceForGons( info.gons ) );
}
}
/**
@notice forfeit sOHM in warmup and retrieve OHM
*/
function forfeit() external {
Claim memory info = warmupInfo[ msg.sender ];
delete warmupInfo[ msg.sender ];
IWarmup( warmupContract ).retrieve( address(this), IsOHM( sOHM ).balanceForGons( info.gons ) );
IERC20( OHM ).safeTransfer( msg.sender, info.deposit );
}
/**
@notice prevent new deposits to address (protection from malicious activity)
*/
function toggleDepositLock() external {
warmupInfo[ msg.sender ].lock = !warmupInfo[ msg.sender ].lock;
}
/**
@notice redeem sOHM for OHM
@param _amount uint
@param _trigger bool
*/
function unstake( uint _amount, bool _trigger ) external {
if ( _trigger ) {
rebase();
}
IERC20( sOHM ).safeTransferFrom( msg.sender, address(this), _amount );
IERC20( OHM ).safeTransfer( msg.sender, _amount );
}
/**
@notice returns the sOHM index, which tracks rebase growth
@return uint
*/
function index() public view returns ( uint ) {
return IsOHM( sOHM ).index();
}
/**
@notice trigger rebase if epoch over
*/
function rebase() public {
if( epoch.endBlock <= block.number ) {
IsOHM( sOHM ).rebase( epoch.distribute, epoch.number );
epoch.endBlock = epoch.endBlock.add( epoch.length );
epoch.number++;
if ( distributor != address(0) ) {
IDistributor( distributor ).distribute();
}
uint balance = contractBalance();
uint staked = IsOHM( sOHM ).circulatingSupply();
if( balance <= staked ) {
epoch.distribute = 0;
} else {
epoch.distribute = balance.sub( staked );
}
}
}
/**
@notice returns contract OHM holdings, including bonuses provided
@return uint
*/
function contractBalance() public view returns ( uint ) {
return IERC20( OHM ).balanceOf( address(this) ).add( totalBonus );
}
/**
@notice provide bonus to locked staking contract
@param _amount uint
*/
function giveLockBonus( uint _amount ) external {
require( msg.sender == locker );
totalBonus = totalBonus.add( _amount );
IERC20( sOHM ).safeTransfer( locker, _amount );
}
/**
@notice reclaim bonus from locked staking contract
@param _amount uint
*/
function returnLockBonus( uint _amount ) external {
require( msg.sender == locker );
totalBonus = totalBonus.sub( _amount );
IERC20( sOHM ).safeTransferFrom( locker, address(this), _amount );
}
enum CONTRACTS { DISTRIBUTOR, WARMUP, LOCKER }
/**
@notice sets the contract address for LP staking
@param _contract address
*/
function setContract( CONTRACTS _contract, address _address ) external onlyManager() {
if( _contract == CONTRACTS.DISTRIBUTOR ) { // 0
distributor = _address;
} else if ( _contract == CONTRACTS.WARMUP ) { // 1
require( warmupContract == address( 0 ), "Warmup cannot be set more than once" );
warmupContract = _address;
} else if ( _contract == CONTRACTS.LOCKER ) { // 2
require( locker == address(0), "Locker cannot be set more than once" );
locker = _address;
}
}
/**
* @notice set warmup period for new stakers
* @param _warmupPeriod uint
*/
function setWarmup( uint _warmupPeriod ) external onlyManager() {
warmupPeriod = _warmupPeriod;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_OHM","type":"address"},{"internalType":"address","name":"_sOHM","type":"address"},{"internalType":"uint256","name":"_epochLength","type":"uint256"},{"internalType":"uint256","name":"_firstEpochNumber","type":"uint256"},{"internalType":"uint256","name":"_firstEpochBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"inputs":[],"name":"OHM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"uint256","name":"distribute","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forfeit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"giveLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"returnLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sOHM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum Staking.CONTRACTS","name":"_contract","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_warmupPeriod","type":"uint256"}],"name":"setWarmup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleDepositLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_trigger","type":"bool"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"warmupContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"warmupInfo","outputs":[{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"gons","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"lock","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warmupPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561001057600080fd5b50604051611a10380380611a10833981810160405260a081101561003357600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916331780825593519596949592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0385166100af57600080fd5b6001600160601b0319606086901b166080526001600160a01b0384166100d457600080fd5b6001600160601b0319606094851b1660a0526040805160808101825284815260208101849052908101829052600094018490526002929092556003556004556005555060805160601c60a05160601c61188a6101866000398061040b52806104d052806105c952806106aa5280610a0f5280610b1b5280610e015280610e925280610fed52806111b452806112fc5250806109195280610d115280610e365280610e5f528061129b525061188a6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638f077b83116100de578063bfe1092811610097578063deac361a11610071578063deac361a1461039e578063ed4acaa8146103a6578063f3d86e4a146103ae578063f62ae76a146103b657610173565b8063bfe1092814610371578063c9f464ff14610379578063d7b96d4e1461039657610173565b80638f077b83146102fe578063900cf0cf146103065780639ebea88c14610334578063a6c41fec14610359578063a8dd07dc14610361578063af14052c1461036957610173565b8063481c6a7511610130578063481c6a75146102295780635a96ac0a146102315780636746f4c2146102395780637acb775714610287578063865e6fd3146102c75780638b7afe2e146102f657610173565b806303c2367014610178578063089208d814610197578063150799251461019f5780631e83409a146101c35780632986c0e5146101e957806346f68ee914610203575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d3565b005b610195610437565b6101a76104ce565b604080516001600160a01b039092168252519081900360200190f35b610195600480360360208110156101d957600080fd5b50356001600160a01b03166104f2565b6101f16106a6565b60408051918252519081900360200190f35b6101956004803603602081101561021957600080fd5b50356001600160a01b0316610732565b6101a761081f565b61019561082e565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b03166108d8565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102b36004803603604081101561029d57600080fd5b50803590602001356001600160a01b0316610902565b604080519115158252519081900360200190f35b610195600480360360408110156102dd57600080fd5b50803560ff1690602001356001600160a01b0316610b8d565b6101f1610d07565b610195610db3565b61030e610dd7565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101956004803603604081101561034a57600080fd5b50803590602001351515610de6565b6101a7610e5d565b6101f1610e81565b610195610e87565b6101a7611095565b6101956004803603602081101561038f57600080fd5b50356110a4565b6101a76110f6565b6101f1611105565b6101a761110b565b61019561111a565b610195600480360360208110156103cc57600080fd5b50356112c4565b6007546001600160a01b031633146103ea57600080fd5b6008546103f79082611326565b600855600754610434906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683611387565b50565b6000546001600160a01b03163314610484576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6104fa611752565b506001600160a01b0381166000908152600b6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260039081015460ff16151560608301525490911180159061055e5750604081015115155b156106a2576001600160a01b038083166000908152600b602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600954848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b15801561060f57600080fd5b505afa158015610623573d6000803e3d6000fd5b505050506040513d602081101561063957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b505050505b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b15801561070157600080fd5b505afa158015610715573d6000803e3d6000fd5b505050506040513d602081101561072b57600080fd5b5051905090565b6000546001600160a01b0316331461077f576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107c45760405162461bcd60e51b81526004018080602001828103825260268152602001806117a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b031633146108775760405162461bcd60e51b81526004018080602001828103825260228152602001806117e96022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b600061090c610e87565b6109416001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866113de565b610949611752565b506001600160a01b0382166000908152600b602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109ec576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610a059087611326565b8152602001610aa87f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b505050506040513d6020811015610a9b57600080fd5b5051602085015190611326565b8152600a54600354602090920191610abf91611326565b8152600060209182018190526001600160a01b038681168252600b8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600954610b44917f00000000000000000000000000000000000000000000000000000000000000008116911686611387565b6040805185815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25060019392505050565b6000546001600160a01b03163314610bda576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6000826002811115610be857fe5b1415610c0e57600680546001600160a01b0319166001600160a01b0383161790556106a2565b6001826002811115610c1c57fe5b1415610c8a576009546001600160a01b031615610c6a5760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b600980546001600160a01b0319166001600160a01b0383161790556106a2565b6002826002811115610c9857fe5b14156106a2576007546001600160a01b031615610ce65760405162461bcd60e51b815260040180806020018281038252602381526020018061177d6023913960400191505060405180910390fd5b600780546001600160a01b0383166001600160a01b03199091161790555050565b6000610dae6008547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d6020811015610da657600080fd5b505190611326565b905090565b336000908152600b60205260409020600301805460ff19811660ff90911615179055565b60025460035460045460055484565b8015610df457610df4610e87565b610e296001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856113de565b6106a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384611387565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085481565b6004544310611093577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663058ecdb46002600301546002600101546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b505050506040513d6020811015610f3257600080fd5b5050600254600454610f4391611326565b6004556003805460010190556006546001600160a01b031615610fdd57600660009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fb057600080fd5b505af1158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b50505b6000610fe7610d07565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505190508082116110835760006005556106a2565b61108d828261143e565b60055550505b565b6006546001600160a01b031681565b6000546001600160a01b031633146110f1576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600a55565b6007546001600160a01b031681565b600a5481565b6009546001600160a01b031681565b611122611752565b50336000818152600b602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560095492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b1580156111fa57600080fd5b505afa15801561120e573d6000803e3d6000fd5b505050506040513d602081101561122457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b5050825161043492506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691503390611387565b6007546001600160a01b031633146112db57600080fd5b6008546112e8908261143e565b600855600754610434906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911630846113de565b600082820183811015611380576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113d9908490611480565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611438908590611480565b50505050565b600061138083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611531565b60606114d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115c89092919063ffffffff16565b8051909150156113d9578080602001905160208110156114f457600080fd5b50516113d95760405162461bcd60e51b815260040180806020018281038252602a81526020018061182b602a913960400191505060405180910390fd5b600081848411156115c05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158557818101518382015260200161156d565b50505050905090810190601f1680156115b25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606115d784846000856115df565b949350505050565b60606115ea8561174c565b61163b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061167a5780518252601f19909201916020918201910161165b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116dc576040519150601f19603f3d011682016040523d82523d6000602084013e6116e1565b606091505b509150915081156116f55791506115d79050565b8051156117055780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561158557818101518382015260200161156d565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220939ee224999459fc07fc7b41ee526dcd400f7942afabbecde8f7440331a9e36a64736f6c63430007050033000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f0100000000000000000000000099a57e6c8558bc6689f894e068733adf83c197250000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033d2948
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80638f077b83116100de578063bfe1092811610097578063deac361a11610071578063deac361a1461039e578063ed4acaa8146103a6578063f3d86e4a146103ae578063f62ae76a146103b657610173565b8063bfe1092814610371578063c9f464ff14610379578063d7b96d4e1461039657610173565b80638f077b83146102fe578063900cf0cf146103065780639ebea88c14610334578063a6c41fec14610359578063a8dd07dc14610361578063af14052c1461036957610173565b8063481c6a7511610130578063481c6a75146102295780635a96ac0a146102315780636746f4c2146102395780637acb775714610287578063865e6fd3146102c75780638b7afe2e146102f657610173565b806303c2367014610178578063089208d814610197578063150799251461019f5780631e83409a146101c35780632986c0e5146101e957806346f68ee914610203575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d3565b005b610195610437565b6101a76104ce565b604080516001600160a01b039092168252519081900360200190f35b610195600480360360208110156101d957600080fd5b50356001600160a01b03166104f2565b6101f16106a6565b60408051918252519081900360200190f35b6101956004803603602081101561021957600080fd5b50356001600160a01b0316610732565b6101a761081f565b61019561082e565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b03166108d8565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102b36004803603604081101561029d57600080fd5b50803590602001356001600160a01b0316610902565b604080519115158252519081900360200190f35b610195600480360360408110156102dd57600080fd5b50803560ff1690602001356001600160a01b0316610b8d565b6101f1610d07565b610195610db3565b61030e610dd7565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101956004803603604081101561034a57600080fd5b50803590602001351515610de6565b6101a7610e5d565b6101f1610e81565b610195610e87565b6101a7611095565b6101956004803603602081101561038f57600080fd5b50356110a4565b6101a76110f6565b6101f1611105565b6101a761110b565b61019561111a565b610195600480360360208110156103cc57600080fd5b50356112c4565b6007546001600160a01b031633146103ea57600080fd5b6008546103f79082611326565b600855600754610434906001600160a01b037f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197258116911683611387565b50565b6000546001600160a01b03163314610484576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b7f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c1972581565b6104fa611752565b506001600160a01b0381166000908152600b6020908152604091829020825160808101845281548152600182015492810192909252600281015492820183905260039081015460ff16151560608301525490911180159061055e5750604081015115155b156106a2576001600160a01b038083166000908152600b602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600954848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c1972590921692637965d56d92602480840193919291829003018186803b15801561060f57600080fd5b505afa158015610623573d6000803e3d6000fd5b505050506040513d602081101561063957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561068957600080fd5b505af115801561069d573d6000803e3d6000fd5b505050505b5050565b60007f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197256001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b15801561070157600080fd5b505afa158015610715573d6000803e3d6000fd5b505050506040513d602081101561072b57600080fd5b5051905090565b6000546001600160a01b0316331461077f576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107c45760405162461bcd60e51b81526004018080602001828103825260268152602001806117a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b031633146108775760405162461bcd60e51b81526004018080602001828103825260228152602001806117e96022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b600061090c610e87565b6109416001600160a01b037f000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f01163330866113de565b610949611752565b506001600160a01b0382166000908152600b602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109ec576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610a059087611326565b8152602001610aa87f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197256001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a7157600080fd5b505afa158015610a85573d6000803e3d6000fd5b505050506040513d6020811015610a9b57600080fd5b5051602085015190611326565b8152600a54600354602090920191610abf91611326565b8152600060209182018190526001600160a01b038681168252600b8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600954610b44917f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197258116911686611387565b6040805185815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25060019392505050565b6000546001600160a01b03163314610bda576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b6000826002811115610be857fe5b1415610c0e57600680546001600160a01b0319166001600160a01b0383161790556106a2565b6001826002811115610c1c57fe5b1415610c8a576009546001600160a01b031615610c6a5760405162461bcd60e51b81526004018080602001828103825260238152602001806117c66023913960400191505060405180910390fd5b600980546001600160a01b0319166001600160a01b0383161790556106a2565b6002826002811115610c9857fe5b14156106a2576007546001600160a01b031615610ce65760405162461bcd60e51b815260040180806020018281038252602381526020018061177d6023913960400191505060405180910390fd5b600780546001600160a01b0383166001600160a01b03199091161790555050565b6000610dae6008547f000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f016001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d6020811015610da657600080fd5b505190611326565b905090565b336000908152600b60205260409020600301805460ff19811660ff90911615179055565b60025460035460045460055484565b8015610df457610df4610e87565b610e296001600160a01b037f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c19725163330856113de565b6106a26001600160a01b037f000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f01163384611387565b7f000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f0181565b60085481565b6004544310611093577f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197256001600160a01b031663058ecdb46002600301546002600101546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610f0857600080fd5b505af1158015610f1c573d6000803e3d6000fd5b505050506040513d6020811015610f3257600080fd5b5050600254600454610f4391611326565b6004556003805460010190556006546001600160a01b031615610fdd57600660009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fb057600080fd5b505af1158015610fc4573d6000803e3d6000fd5b505050506040513d6020811015610fda57600080fd5b50505b6000610fe7610d07565b905060007f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197256001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d602081101561106e57600080fd5b505190508082116110835760006005556106a2565b61108d828261143e565b60055550505b565b6006546001600160a01b031681565b6000546001600160a01b031633146110f1576040805162461bcd60e51b8152602060048201819052602482015260008051602061180b833981519152604482015290519081900360640190fd5b600a55565b6007546001600160a01b031681565b600a5481565b6009546001600160a01b031681565b611122611752565b50336000818152600b602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560095492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c1972590921692637965d56d92602480840193919291829003018186803b1580156111fa57600080fd5b505afa15801561120e573d6000803e3d6000fd5b505050506040513d602081101561122457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b5050825161043492506001600160a01b037f000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f011691503390611387565b6007546001600160a01b031633146112db57600080fd5b6008546112e8908261143e565b600855600754610434906001600160a01b037f00000000000000000000000099a57e6c8558bc6689f894e068733adf83c197258116911630846113de565b600082820183811015611380576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113d9908490611480565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611438908590611480565b50505050565b600061138083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611531565b60606114d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166115c89092919063ffffffff16565b8051909150156113d9578080602001905160208110156114f457600080fd5b50516113d95760405162461bcd60e51b815260040180806020018281038252602a81526020018061182b602a913960400191505060405180910390fd5b600081848411156115c05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158557818101518382015260200161156d565b50505050905090810190601f1680156115b25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606115d784846000856115df565b949350505050565b60606115ea8561174c565b61163b576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061167a5780518252601f19909201916020918201910161165b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116dc576040519150601f19603f3d011682016040523d82523d6000602084013e6116e1565b606091505b509150915081156116f55791506115d79050565b8051156117055780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561158557818101518382015260200161156d565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220939ee224999459fc07fc7b41ee526dcd400f7942afabbecde8f7440331a9e36a64736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f0100000000000000000000000099a57e6c8558bc6689f894e068733adf83c197250000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033d2948
-----Decoded View---------------
Arg [0] : _OHM (address): 0xeB51D9A39AD5EEF215dC0Bf39a8821ff804A0F01
Arg [1] : _sOHM (address): 0x99a57E6C8558BC6689f894e068733ADf83C19725
Arg [2] : _epochLength (uint256): 14400
Arg [3] : _firstEpochNumber (uint256): 0
Arg [4] : _firstEpochBlock (uint256): 54339912
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb51d9a39ad5eef215dc0bf39a8821ff804a0f01
Arg [1] : 00000000000000000000000099a57e6c8558bc6689f894e068733adf83c19725
Arg [2] : 0000000000000000000000000000000000000000000000000000000000003840
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 00000000000000000000000000000000000000000000000000000000033d2948
Deployed Bytecode Sourcemap
20805:6378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25669:204;;;;;;;;;;;;;;;;-1:-1:-1;25669:204:0;;:::i;:::-;;19498:159;;;:::i;20945:29::-;;;:::i;:::-;;;;-1:-1:-1;;;;;20945:29:0;;;;;;;;;;;;;;22985:337;;;;;;;;;;;;;;;;-1:-1:-1;22985:337:0;-1:-1:-1;;;;;22985:337:0;;:::i;24445:93::-;;;:::i;:::-;;;;;;;;;;;;;;;;19665:261;;;;;;;;;;;;;;;;-1:-1:-1;19665:261:0;-1:-1:-1;;;;;19665:261:0;;:::i;19271:90::-;;;:::i;19938:221::-;;;:::i;22004:45::-;;;;;;;;;;;;;;;;-1:-1:-1;22004:45:0;-1:-1:-1;;;;;22004:45:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22170:711;;;;;;;;;;;;;;;;-1:-1:-1;22170:711:0;;;;;;-1:-1:-1;;;;;22170:711:0;;:::i;:::-;;;;;;;;;;;;;;;;;;26385:570;;;;;;;;;;;;;;;;-1:-1:-1;26385:570:0;;;;;;;;-1:-1:-1;;;;;26385:570:0;;:::i;25416:140::-;;;:::i;23822:119::-;;;:::i;21166:18::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24063:266;;;;;;;;;;;;;;;;-1:-1:-1;24063:266:0;;;;;;;;;:::i;20910:28::-;;;:::i;21260:22::-;;;:::i;24610:683::-;;;:::i;21193:26::-;;;:::i;27069:111::-;;;;;;;;;;;;;;;;-1:-1:-1;27069:111:0;;:::i;21232:21::-;;;:::i;21331:24::-;;;:::i;21295:29::-;;;:::i;23405:305::-;;;:::i;25988:225::-;;;;;;;;;;;;;;;;-1:-1:-1;25988:225:0;;:::i;25669:204::-;25751:6;;-1:-1:-1;;;;;25751:6:0;25737:10;:20;25728:31;;;;;;25783:10;;:25;;25799:7;25783:14;:25::i;:::-;25770:10;:38;25848:6;;25819:46;;-1:-1:-1;;;;;25827:4:0;25819:27;;;25848:6;25856:7;25819:27;:46::i;:::-;25669:204;:::o;19498:159::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;19615:1:::1;19599:6:::0;;19582:37:::1;::::0;-1:-1:-1;;;;;19599:6:0;;::::1;::::0;19582:37:::1;::::0;19615:1;;19582:37:::1;19647:1;19630:19:::0;;-1:-1:-1;;;;;;19630:19:0::1;::::0;;19498:159::o;20945:29::-;;;:::o;22985:337::-;23041:17;;:::i;:::-;-1:-1:-1;;;;;;23061:24:0;;;;;;:10;:24;;;;;;;;;23041:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23101:12;23041:44;;-1:-1:-1;23101:27:0;;;:47;;-1:-1:-1;23132:11:0;;;;:16;;23101:47;23096:219;;;-1:-1:-1;;;;;23173:24:0;;;;;;;:10;:24;;;;;;;;23166:31;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23166:31:0;;;23221:14;;23290:9;;;;23260:41;;-1:-1:-1;;;23260:41:0;;;;;;;;;;;23221:14;;;;23212:34;;23185:10;;23267:4;23260:28;;;;;;:41;;;;;23173:24;;23260:41;;;;;;:28;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23260:41:0;23212:91;;;-1:-1:-1;;;;;;23212:91:0;;;;;;;-1:-1:-1;;;;;23212:91:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23212:91:0;;;;;;;-1:-1:-1;23212:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23096:219;22985:337;;:::o;24445:93::-;24484:4;24516;-1:-1:-1;;;;;24509:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24509:21:0;;-1:-1:-1;24445:93:0;:::o;19665:261::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19768:23:0;::::1;19759:75;;;;-1:-1:-1::0;;;19759:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19867:6;::::0;;19850:36:::1;::::0;-1:-1:-1;;;;;19850:36:0;;::::1;::::0;19867:6;::::1;::::0;19850:36:::1;::::0;::::1;19897:9;:21:::0;;-1:-1:-1;;;;;;19897:21:0::1;-1:-1:-1::0;;;;;19897:21:0;;;::::1;::::0;;;::::1;::::0;;19665:261::o;19271:90::-;19320:7;19347:6;-1:-1:-1;;;;;19347:6:0;19271:90;:::o;19938:221::-;20022:9;;-1:-1:-1;;;;;20022:9:0;20008:10;:23;19999:71;;;;-1:-1:-1;;;19999:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20111:9;;;20103:6;;20086:36;;-1:-1:-1;;;;;20111:9:0;;;;20103:6;;;;20086:36;;;20142:9;;;20133:18;;-1:-1:-1;;;;;;20133:18:0;-1:-1:-1;;;;;20142:9:0;;;20133:18;;;;;;19938:221::o;22004:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22170:711::-;22240:4;22258:8;:6;:8::i;:::-;22279:68;-1:-1:-1;;;;;22287:3:0;22279:30;22311:10;22331:4;22338:7;22279:30;:68::i;:::-;22360:17;;:::i;:::-;-1:-1:-1;;;;;;22380:24:0;;;;;;:10;:24;;;;;;;;;22360:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22415:56;;;;;-1:-1:-1;;;22415:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22511:228;;;;;;;;;22542:12;;22511:228;;22542:27;;22560:7;22542:16;:27::i;:::-;22511:228;;;;22590:56;22612:4;-1:-1:-1;;;;;22605:28:0;;22635:7;22605:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22605:39:0;;22590:9;;;;:13;:56::i;:::-;22511:228;;22687:12;;22669;;22511:228;;;;;22669:32;;:16;:32::i;:::-;22511:228;;22722:5;22511:228;;;;;;;-1:-1:-1;;;;;22484:24:0;;;;;:10;:24;;;;;;;:255;;;;;;;;22511:228;22484:255;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22484:255:0;;;;;;;;;;22781:14;;22752:54;;22760:4;22752:27;;;22781:14;22797:7;22752:27;:54::i;:::-;22822:29;;;;;;;;-1:-1:-1;;;;;22822:29:0;;;;;;;;;;;;;-1:-1:-1;22869:4:0;;22170:711;-1:-1:-1;;;22170:711:0:o;26385:570::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;26498:21:::1;26485:9;:34;;;;;;;;;26481:467;;;26542:11;:22:::0;;-1:-1:-1;;;;;;26542:22:0::1;-1:-1:-1::0;;;;;26542:22:0;::::1;;::::0;;26481:467:::1;;;26600:16;26587:9;:29;;;;;;;;;26582:366;;;26648:14;::::0;-1:-1:-1;;;;;26648:14:0::1;:30:::0;26639:80:::1;;;;-1:-1:-1::0;;;26639:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26734:14;:25:::0;;-1:-1:-1;;;;;;26734:25:0::1;-1:-1:-1::0;;;;;26734:25:0;::::1;;::::0;;26582:366:::1;;;26795:16;26782:9;:29;;;;;;;;;26777:171;;;26843:6;::::0;-1:-1:-1;;;;;26843:6:0::1;:20:::0;26834:70:::1;;;;-1:-1:-1::0;;;26834:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26919:6;:17:::0;;-1:-1:-1;;;;;26919:17:0;::::1;-1:-1:-1::0;;;;;;26919:17:0;;::::1;;::::0;;26385:570;;:::o;25416:140::-;25465:4;25490:58;25536:10;;25498:3;-1:-1:-1;;;;;25490:23:0;;25523:4;25490:40;;;;;;;;;;;;;-1:-1:-1;;;;;25490:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25490:40:0;;:44;:58::i;:::-;25483:65;;25416:140;:::o;23822:119::-;23916:10;23904:24;;;;:10;:24;;;;;:29;;;;-1:-1:-1;;23871:62:0;;23904:29;;;;23903:30;23871:62;;;23822:119::o;21166:18::-;;;;;;;;;;:::o;24063:266::-;24136:8;24131:51;;;24162:8;:6;:8::i;:::-;24192:69;-1:-1:-1;;;;;24200:4:0;24192:31;24225:10;24245:4;24252:7;24192:31;:69::i;:::-;24272:49;-1:-1:-1;;;;;24280:3:0;24272:26;24300:10;24312:7;24272:26;:49::i;20910:28::-;;;:::o;21260:22::-;;;;:::o;24610:683::-;24650:14;;24668:12;-1:-1:-1;24646:640:0;;24707:4;-1:-1:-1;;;;;24700:20:0;;24722:5;:16;;;24740:5;:12;;;24700:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24808:5:0;:12;24788:14;;:34;;:18;:34::i;:::-;24771:14;:51;24837:12;:14;;:12;:14;;;24885:11;;-1:-1:-1;;;;;24885:11:0;:25;24880:108;;24946:11;;;;;;;;;-1:-1:-1;;;;;24946:11:0;-1:-1:-1;;;;;24932:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24880:108:0;25004:12;25019:17;:15;:17::i;:::-;25004:32;;25051:11;25072:4;-1:-1:-1;;;;;25065:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25065:33:0;;-1:-1:-1;25119:17:0;;;25115:160;;25177:1;25158:16;:20;25115:160;;;25238:21;:7;25251:6;25238:11;:21::i;:::-;25219:16;:40;24646:640;;;24610:683::o;21193:26::-;;;-1:-1:-1;;;;;21193:26:0;;:::o;27069:111::-;19412:6;;-1:-1:-1;;;;;19412:6:0;19422:10;19412:20;19403:67;;;;;-1:-1:-1;;;19403:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19403:67:0;;;;;;;;;;;;;;;27144:12:::1;:28:::0;27069:111::o;21232:21::-;;;-1:-1:-1;;;;;21232:21:0;;:::o;21331:24::-;;;;:::o;21295:29::-;;;-1:-1:-1;;;;;21295:29:0;;:::o;23405:305::-;23444:17;;:::i;:::-;-1:-1:-1;23476:10:0;23464:24;;;;:10;:24;;;;;;;;23444:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23506:24;;;;;;23499:31;;;;;;;;;;;;-1:-1:-1;;23499:31:0;;;;;;23552:14;;23624:9;;23594:41;;-1:-1:-1;;;23594:41:0;;;;;;;;;;;-1:-1:-1;;;;;23552:14:0;;;;23543:34;;23587:4;;23601;23594:28;;;;;;:41;;;;;23464:24;;23594:41;;;;;;:28;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23594:41:0;23543:94;;;-1:-1:-1;;;;;;23543:94:0;;;;;;;-1:-1:-1;;;;;23543:94:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23543:94:0;;;;;;;-1:-1:-1;23543:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23688:12:0;;23648:54;;-1:-1:-1;;;;;;23656:3:0;23648:26;;-1:-1:-1;23676:10:0;;23648:26;:54::i;25988:225::-;26072:6;;-1:-1:-1;;;;;26072:6:0;26058:10;:20;26049:31;;;;;;26104:10;;:25;;26120:7;26104:14;:25::i;:::-;26091:10;:38;26173:6;;26140:65;;-1:-1:-1;;;;;26148:4:0;26140:31;;;26173:6;26189:4;26196:7;26140:31;:65::i;336:181::-;394:7;426:5;;;450:6;;;;442:46;;;;;-1:-1:-1;;;442:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:1;336:181;-1:-1:-1;;;336:181:0:o;15577:177::-;15687:58;;;-1:-1:-1;;;;;15687:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15687:58:0;-1:-1:-1;;;15687:58:0;;;15660:86;;15680:5;;15660:19;:86::i;:::-;15577:177;;;:::o;15762:205::-;15890:68;;;-1:-1:-1;;;;;15890:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15890:68:0;-1:-1:-1;;;15890:68:0;;;15863:96;;15883:5;;15863:19;:96::i;:::-;15762:205;;;;:::o;800:136::-;858:7;885:43;889:1;892;885:43;;;;;;;;;;;;;;;;;:3;:43::i;17882:761::-;18306:23;18332:69;18360:4;18332:69;;;;;;;;;;;;;;;;;18340:5;-1:-1:-1;;;;;18332:27:0;;;:69;;;;;:::i;:::-;18416:17;;18306:95;;-1:-1:-1;18416:21:0;18412:224;;18558:10;18547:30;;;;;;;;;;;;;;;-1:-1:-1;18547:30:0;18539:85;;;;-1:-1:-1;;;18539:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1239:192;1325:7;1361:12;1353:6;;;;1345:29;;;;-1:-1:-1;;;1345:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1397:5:0;;;1239:192::o;9648:196::-;9751:12;9783:53;9806:6;9814:4;9820:1;9823:12;9783:22;:53::i;:::-;9776:60;9648:196;-1:-1:-1;;;;9648:196:0:o;11239:979::-;11369:12;11402:18;11413:6;11402:10;:18::i;:::-;11394:60;;;;;-1:-1:-1;;;11394:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11528:12;11542:23;11569:6;-1:-1:-1;;;;;11569:11:0;11589:8;11600:4;11569:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11569:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11527:78;;;;11620:7;11616:595;;;11651:10;-1:-1:-1;11644:17:0;;-1:-1:-1;11644:17:0;11616:595;11765:17;;:21;11761:439;;12028:10;12022:17;12089:15;12076:10;12072:2;12068:19;12061:44;11976:148;12164:20;;-1:-1:-1;;;12164:20:0;;;;;;;;;;;;;;;;;12171:12;;12164:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6730:422;7097:20;7136:8;;;6730:422::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://939ee224999459fc07fc7b41ee526dcd400f7942afabbecde8f7440331a9e36a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$7,459,260,739.70
Net Worth in POL
Token Allocations
LGNS
100.00%
USDT0
0.00%
BSC-USD
0.00%
Others
0.00%
Multichain Portfolio | 33 Chains
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.