Polygon Sponsored slots available. Book your slot here!
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 9,421 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Leave | 66331840 | 69 days ago | IN | 0 POL | 0.00269607 | ||||
Approve | 64279069 | 121 days ago | IN | 0 POL | 0.00622604 | ||||
Approve | 63748321 | 134 days ago | IN | 0 POL | 0.00237005 | ||||
Leave | 63033241 | 152 days ago | IN | 0 POL | 0.0071941 | ||||
Approve | 59433119 | 242 days ago | IN | 0 POL | 0.00072516 | ||||
Leave | 57141644 | 300 days ago | IN | 0 POL | 0.00302124 | ||||
Leave | 56649920 | 313 days ago | IN | 0 POL | 0.0019308 | ||||
Leave | 55612924 | 341 days ago | IN | 0 POL | 0.00786442 | ||||
Leave | 55566365 | 342 days ago | IN | 0 POL | 0.00488558 | ||||
Leave | 55108534 | 354 days ago | IN | 0 POL | 0.00395798 | ||||
Leave | 55108528 | 354 days ago | IN | 0 POL | 0.00841591 | ||||
Approve | 55092731 | 354 days ago | IN | 0 POL | 0.00084078 | ||||
Approve | 54867679 | 361 days ago | IN | 0 POL | 0.00247108 | ||||
Leave | 54821293 | 362 days ago | IN | 0 POL | 0.0027513 | ||||
Leave | 54762481 | 363 days ago | IN | 0 POL | 0.00432699 | ||||
Leave | 54665043 | 366 days ago | IN | 0 POL | 0.00725281 | ||||
Leave | 54625744 | 367 days ago | IN | 0 POL | 0.00618498 | ||||
Leave | 54538321 | 369 days ago | IN | 0 POL | 0.00453607 | ||||
Leave | 54501152 | 370 days ago | IN | 0 POL | 0.00623571 | ||||
Leave | 54387915 | 373 days ago | IN | 0 POL | 0.00426138 | ||||
Leave | 54387913 | 373 days ago | IN | 0 POL | 0.00927166 | ||||
Leave | 54337567 | 374 days ago | IN | 0 POL | 0.0270233 | ||||
Leave | 54327734 | 374 days ago | IN | 0 POL | 0.01119583 | ||||
Leave | 53997827 | 383 days ago | IN | 0 POL | 0.00249252 | ||||
Leave | 53957607 | 384 days ago | IN | 0 POL | 0.00275286 |
Loading...
Loading
Contract Name:
AlgebraTokenStaking
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 0 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity =0.7.6; import './base/FreezableToken.sol'; // This contract handles swapping to and from xALGB, Algebra's staking token. contract AlgebraTokenStaking is FreezableToken { using SafeMath for uint256; uint256 public freezeTime = 1800; address public owner; IERC20Minimal public ALGB; event Entered(address staker, uint256 ALGBAmount, uint256 xALGBAmount); event Left(address staker, uint256 xALGBAmount, uint256 ALGBAmount); modifier onlyOwner() { require(msg.sender == owner, 'only owner can call this'); _; } // Define the ALGB token contract constructor(IERC20Minimal _ALGB) ERC20('Algebra Staking Token', 'xALGB') { ALGB = _ALGB; owner = msg.sender; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal override { (uint64 release, uint256 balance) = getFreezing(from, 0); if (release < block.timestamp && balance > 0) { releaseAll(from); } } // Enter the bar. Pay some ALGBSs. Earn some shares. // Locks ALGB and mints xALGB function enter(uint256 _amount) external { // Gets the amount of ALGB locked in the contract uint256 totalALGB = ALGB.balanceOf(address(this)); // Gets the amount of xALGB in existence uint256 totalShares = totalSupply(); uint256 what; // If no xALGB exists, mint it 1:1 to the amount put in if (totalShares == 0 || totalALGB == 0) { what = _amount; mintAndFreeze(msg.sender, _amount, uint64(block.timestamp + freezeTime)); } // Calculate and mint the amount of xALGB the ALGB is worth. The ratio will change overtime, as xALGB is burned/minted and ALGB deposited + gained from fees / withdrawn. else { what = _amount.mul(totalShares).div(totalALGB); mintAndFreeze(msg.sender, what, uint64(block.timestamp + freezeTime)); } // Lock the ALGB in the contract ALGB.transferFrom(msg.sender, address(this), _amount); emit Entered(msg.sender, _amount, what); } // Leave the bar. Claim back your ALGBs. // Unlocks the staked + gained ALGB and burns xALGB function leave(uint256 _share) external { // Gets the amount of xALGB in existence uint256 totalShares = totalSupply(); // Calculates the amount of ALGB the xALGB is worth uint256 what = _share.mul(ALGB.balanceOf(address(this))).div(totalShares); _burn(msg.sender, _share); ALGB.transfer(msg.sender, what); emit Left(msg.sender, _share, what); } function currentBalance(uint256 _amount) external view returns (uint256) { uint256 totalShares = totalSupply(); return _amount.mul(ALGB.balanceOf(address(this))).div(totalShares); } function setFreezeTime(uint256 _freezeTime) external onlyOwner { require(_freezeTime <= 3600, 'freezeTime is to big'); freezeTime = _freezeTime; } function transferOwner(address _newOwner) external onlyOwner { require(_newOwner != address(0), 'cannot be 0 address'); owner = _newOwner; } }
pragma solidity =0.7.6; import "../base/ERC20.sol"; abstract contract FreezableToken is ERC20{ using SafeMath for uint256; // freezing chains mapping (bytes32 => uint64) internal chains; // freezing amounts for each chain mapping (bytes32 => uint) internal freezings; // total freezing balance per address mapping (address => uint) internal freezingBalance; event Freezed(address indexed to, uint64 release, uint amount); event Released(address indexed owner, uint amount); /** * @dev Gets the balance of the specified address include freezing tokens. * @param _owner The address to query the the balance of. * @return balance An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view override returns (uint256 balance) { return super.balanceOf(_owner) + freezingBalance[_owner]; } /** * @dev Gets the balance of the specified address without freezing tokens. * @param _owner The address to query the the balance of. * @return balance n uint256 representing the amount owned by the passed address. */ function actualBalanceOf(address _owner) public view returns (uint256 balance) { return super.balanceOf(_owner); } function freezingBalanceOf(address _owner) public view returns (uint256 balance) { return freezingBalance[_owner]; } /** * @dev gets freezing end date and freezing balance for the freezing portion specified by index. * @param _addr Address of freeze tokens owner. * @param _index Freezing portion index. It ordered by release date descending. */ function getFreezing(address _addr, uint _index) internal view returns (uint64 _release, uint _balance) { for (uint i = 0; i < _index + 1; i++) { _release = chains[toKey(_addr, _release)]; if (_release == 0) { return (0,0); } } _balance = freezings[toKey(_addr, _release)]; } /** * @dev release first available freezing tokens. */ function releaseOnce(address account) internal { bytes32 headKey = toKey(account, 0); uint64 head = chains[headKey]; require(head != 0); require(uint64(block.timestamp) > head); bytes32 currentKey = toKey(account, head); uint64 next = chains[currentKey]; uint256 amount = freezings[currentKey]; delete freezings[currentKey]; _balances[account] = _balances[account].add(amount); freezingBalance[account] = freezingBalance[account].sub(amount); if (next == 0) { delete chains[headKey]; } else { chains[headKey] = next; delete chains[currentKey]; } emit Released(account, amount); } /** * @dev release all available for release freezing tokens. Gas usage is not deterministic! * @return tokens how many tokens was released */ function releaseAll(address account) internal returns (uint256 tokens) { uint256 release; uint256 balance; (release, balance) = getFreezing(account, 0); while (release != 0 && block.timestamp > release) { releaseOnce(account); tokens += balance; (release, balance) = getFreezing(account, 0); } } function toKey(address _addr, uint _release) internal pure returns (bytes32 result) { // increase entropy result = 0x5749534800000000000000000000000000000000000000000000000000000000; assembly { result := or(result, mul(_addr, 0x10000000000000000)) result := or(result, and(_release, 0xffffffffffffffff)) } } function freeze(address _to, uint64 _until) internal { require(_until > block.timestamp); bytes32 key = toKey(_to, _until); bytes32 parentKey = toKey(_to, uint64(0)); uint64 next = chains[parentKey]; if (next == 0) { chains[parentKey] = _until; return; } bytes32 nextKey = toKey(_to, next); uint parent; while (next != 0 && _until > next) { parent = next; parentKey = nextKey; next = chains[nextKey]; nextKey = toKey(_to, next); } if (_until == next) { return; } if (next != 0) { chains[key] = next; } chains[parentKey] = _until; } /** * @dev Mint the specified amount of token to the specified address and freeze it until the specified date. * Be careful, gas usage is not deterministic, * and depends on how many freezes _to address already has. * @param _to Address to which token will be freeze. * @param _amount Amount of token to mint and freeze. * @param _until Release date, must be in future. * @return A boolean that indicates if the operation was successful. */ function mintAndFreeze(address _to, uint _amount, uint64 _until) internal returns (bool) { _totalSupply = _totalSupply.add(_amount); bytes32 currentKey = toKey(_to, _until); freezings[currentKey] = freezings[currentKey].add(_amount); freezingBalance[_to] = freezingBalance[_to].add(_amount); freeze(_to, _until); emit Freezed(_to, _until, _amount); emit Transfer(address(0), _to, _amount); return true; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; import 'algebra/contracts/interfaces/IERC20Minimal.sol'; import "@openzeppelin/contracts/math/SafeMath.sol"; contract ERC20 is IERC20Minimal { using SafeMath for uint256; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 internal _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title Minimal ERC20 interface for Algebra /// @notice Contains a subset of the full ERC20 interface that is used in Algebra interface IERC20Minimal { /// @notice Returns the balance of a token /// @param account The account for which to look up the number of tokens it has, i.e. its balance /// @return The number of tokens held by the account function balanceOf(address account) external view returns (uint256); /// @notice Transfers the amount of token from the `msg.sender` to the recipient /// @param recipient The account that will receive the amount transferred /// @param amount The number of tokens to send from the sender to the recipient /// @return Returns true for a successful transfer, false for an unsuccessful transfer function transfer(address recipient, uint256 amount) external returns (bool); /// @notice Returns the current allowance given to a spender by an owner /// @param owner The account of the token owner /// @param spender The account of the token spender /// @return The current allowance granted by `owner` to `spender` function allowance(address owner, address spender) external view returns (uint256); /// @notice Sets the allowance of a spender from the `msg.sender` to the value `amount` /// @param spender The account which will be allowed to spend a given amount of the owners tokens /// @param amount The amount of tokens allowed to be used by `spender` /// @return Returns true for a successful approval, false for unsuccessful function approve(address spender, uint256 amount) external returns (bool); /// @notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender` /// @param sender The account from which the transfer will be initiated /// @param recipient The recipient of the transfer /// @param amount The amount of the transfer /// @return Returns true for a successful transfer, false for unsuccessful function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /// @notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`. /// @param from The account from which the tokens were sent, i.e. the balance decreased /// @param to The account to which the tokens were sent, i.e. the balance increased /// @param value The amount of tokens that were transferred event Transfer(address indexed from, address indexed to, uint256 value); /// @notice Event emitted when the approval amount for the spender of a given owner's tokens changes. /// @param owner The account that approved spending of its tokens /// @param spender The account for which the spending allowance was modified /// @param value The new allowance from the owner to the spender event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.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, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } }
{ "optimizer": { "enabled": true, "runs": 0 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20Minimal","name":"_ALGB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"ALGBAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"xALGBAmount","type":"uint256"}],"name":"Entered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint64","name":"release","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"xALGBAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ALGBAmount","type":"uint256"}],"name":"Left","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ALGB","outputs":[{"internalType":"contract IERC20Minimal","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"actualBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"currentBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freezeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"freezingBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_share","type":"uint256"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_freezeTime","type":"uint256"}],"name":"setFreezeTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526107086009553480156200001757600080fd5b5060405162001a0138038062001a01833981810160405260208110156200003d57600080fd5b5051604080518082018252601581527f416c6765627261205374616b696e6720546f6b656e00000000000000000000006020828101918252835180850190945260058452643c20a623a160d91b908401528151919291620000a191600391620000f6565b508051620000b7906004906020840190620000f6565b50506005805460ff1916601217905550600b80546001600160a01b039092166001600160a01b0319928316179055600a805490911633179055620001a2565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200012e576000855562000179565b82601f106200014957805160ff191683800117855562000179565b8280016001018555821562000179579182015b82811115620001795782518255916020019190600101906200015c565b50620001879291506200018b565b5090565b5b808211156200018757600081556001016200018c565b61184f80620001b26000396000f3fe608060405234801561001057600080fd5b50600436106101065760003560e01c8062e4dca71461010b57806306fdde031461012f578063095ea7b3146101ac57806317a950ac146101ec57806318160ddd1461022457806323b872dd1461022c578063313ce5671461026257806339509351146102805780634fb2e45d146102ac5780635ccdd971146102d457806367dfd4c9146102f157806370a082311461030e5780638da5cb5b1461033457806395d89b411461033c578063a457c2d714610344578063a59f3e0c14610370578063a9059cbb1461038d578063aafc057f146103b9578063d8aeedf5146103d6578063dd62ed3e146103fc578063fd7e1bee1461042a575b600080fd5b610113610432565b604080516001600160a01b039092168252519081900360200190f35b610137610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610171578181015183820152602001610159565b50505050905090810190601f16801561019e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d8600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356104d7565b604080519115158252519081900360200190f35b6102126004803603602081101561020257600080fd5b50356001600160a01b03166104ee565b60408051918252519081900360200190f35b6102126104f9565b6101d86004803603606081101561024257600080fd5b506001600160a01b038135811691602081013590911690604001356104ff565b61026a610568565b6040805160ff9092168252519081900360200190f35b6101d86004803603604081101561029657600080fd5b506001600160a01b038135169060200135610571565b6102d2600480360360208110156102c257600080fd5b50356001600160a01b03166105a7565b005b610212600480360360208110156102ea57600080fd5b5035610674565b6102d26004803603602081101561030757600080fd5b5035610717565b6102126004803603602081101561032457600080fd5b50356001600160a01b031661084d565b610113610876565b610137610885565b6101d86004803603604081101561035a57600080fd5b506001600160a01b0381351690602001356108e6565b6102d26004803603602081101561038657600080fd5b5035610935565b6101d8600480360360408110156103a357600080fd5b506001600160a01b038135169060200135610ad1565b6102d2600480360360208110156103cf57600080fd5b5035610ade565b610212600480360360208110156103ec57600080fd5b50356001600160a01b0316610b8b565b6102126004803603604081101561041257600080fd5b506001600160a01b0381358116916020013516610ba6565b610212610bd1565b600b546001600160a01b031681565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104cd5780601f106104a2576101008083540402835291602001916104cd565b820191906000526020600020905b8154815290600101906020018083116104b057829003601f168201915b5050505050905090565b60006104e4338484610bd7565b5060015b92915050565b60006104e882610cc3565b60025490565b600061050c848484610cde565b61055e84336105598560405180606001604052806028815260200161176c602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610e27565b610bd7565b5060019392505050565b60055460ff1690565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104e49185906105599086610ebe565b600a546001600160a01b03163314610601576040805162461bcd60e51b81526020600482015260186024820152776f6e6c79206f776e65722063616e2063616c6c207468697360401b604482015290519081900360640190fd5b6001600160a01b038116610652576040805162461bcd60e51b815260206004820152601360248201527263616e6e6f742062652030206164647265737360681b604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061067f6104f9565b600b54604080516370a0823160e01b8152306004820152905192935061071092849261070a926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156106d757600080fd5b505afa1580156106eb573d6000803e3d6000fd5b505050506040513d602081101561070157600080fd5b50518690610f16565b90610f6f565b9392505050565b60006107216104f9565b600b54604080516370a0823160e01b8152306004820152905192935060009261077c92859261070a926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106d757600080fd5b90506107883384610fd3565b600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107dc57600080fd5b505af11580156107f0573d6000803e3d6000fd5b505050506040513d602081101561080657600080fd5b5050604080513381526020810185905280820183905290517f563475272d35e53c9fa5f84075356ba4f6d3add3ef25d748ad19629487b634429181900360600190a1505050565b6001600160a01b03811660009081526008602052604081205461086f83610cc3565b0192915050565b600a546001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104cd5780601f106104a2576101008083540402835291602001916104cd565b60006104e433846105598560405180606001604052806025815260200161181e602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610e27565b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d60208110156109aa57600080fd5b5051905060006109b86104f9565b905060008115806109c7575082155b156109e4578390506109de338560095442016110bd565b50610a05565b6109f28361070a8685610f16565b9050610a03338260095442016110bd565b505b600b54604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d6020811015610a8957600080fd5b5050604080513381526020810186905280820183905290517f089d0daa5e8466fdfdab1113e8fdd98c06ef26711cafc429dabce354d007364e9181900360600190a150505050565b60006104e4338484610cde565b600a546001600160a01b03163314610b38576040805162461bcd60e51b81526020600482015260186024820152776f6e6c79206f776e65722063616e2063616c6c207468697360401b604482015290519081900360640190fd5b610e10811115610b86576040805162461bcd60e51b8152602060048201526014602482015273667265657a6554696d6520697320746f2062696760601b604482015290519081900360640190fd5b600955565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60095481565b6001600160a01b038316610c1c5760405162461bcd60e51b81526004018080602001828103825260248152602001806117fa6024913960400191505060405180910390fd5b6001600160a01b038216610c615760405162461bcd60e51b81526004018080602001828103825260228152602001806117036022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b038316610d235760405162461bcd60e51b81526004018080602001828103825260258152602001806117d56025913960400191505060405180910390fd5b6001600160a01b038216610d685760405162461bcd60e51b81526004018080602001828103825260238152602001806116be6023913960400191505060405180910390fd5b610d738383836111db565b610db081604051806060016040528060268152602001611725602691396001600160a01b0386166000908152602081905260409020549190610e27565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610ddf9082610ebe565b6001600160a01b0380841660008181526020818152604091829020949094558051858152905191939287169260008051602061179483398151915292918290030190a3505050565b60008184841115610eb65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7b578181015183820152602001610e63565b50505050905090810190601f168015610ea85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610710576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600082610f25575060006104e8565b82820282848281610f3257fe5b04146107105760405162461bcd60e51b815260040180806020018281038252602181526020018061174b6021913960400191505060405180910390fd5b6000808211610fc2576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b818381610fcb57fe5b049392505050565b6001600160a01b0382166110185760405162461bcd60e51b81526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b611024826000836111db565b611061816040518060600160405280602281526020016116e1602291396001600160a01b0385166000908152602081905260409020549190610e27565b6001600160a01b038316600090815260208190526040902055600254611087908261121c565b6002556040805182815290516000916001600160a01b038516916000805160206117948339815191529181900360200190a35050565b6002546000906110cd9084610ebe565b60025560006110e5856001600160401b038516611279565b6000818152600760205260409020549091506111019085610ebe565b6000828152600760209081526040808320939093556001600160a01b03881682526008905220546111329085610ebe565b6001600160a01b0386166000908152600860205260409020556111558584611298565b604080516001600160401b03851681526020810186905281516001600160a01b038816927f2ecd071e4d10ed2221b04636ed0724cce66a873aa98c1a31b4bb0e6846d3aab4928290030190a26040805185815290516001600160a01b038716916000916000805160206117948339815191529181900360200190a3506001949350505050565b6000806111e9856000611424565b9150915042826001600160401b03161080156112055750600081115b1561121557611213856114b3565b505b5050505050565b600082821115611273576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160401b0316600160401b9190910217630ae92a6960e31b1790565b42816001600160401b0316116112ad57600080fd5b60006112c283836001600160401b0316611279565b905060006112d08482611279565b6000818152600660205260409020549091506001600160401b03168061131e5750600090815260066020526040902080546001600160401b0319166001600160401b03841617905550611420565b600061133386836001600160401b0316611279565b905060005b6001600160401b038316158015906113615750826001600160401b0316866001600160401b0316115b1561139957506000818152600660205260409020549092506001600160401b03908116918391166113928784611279565b9150611338565b826001600160401b0316866001600160401b031614156113bd575050505050611420565b6001600160401b038316156113f457600085815260066020526040902080546001600160401b0319166001600160401b0385161790555b505050600090815260066020526040902080546001600160401b0319166001600160401b038416179055505b5050565b60008060005b83600101811015611482576006600061144c87866001600160401b0316611279565b81526020810191909152604001600020546001600160401b031692508261147a5760008092509250506114ac565b60010161142a565b506007600061149a86856001600160401b0316611279565b81526020019081526020016000205490505b9250929050565b60008060006114c3846000611424565b6001600160401b03909116925090505b81158015906114e157508142115b15611512576114ef84611519565b918201916114fe846000611424565b6001600160401b03909116925090506114d3565b5050919050565b6000611526826000611279565b6000818152600660205260409020549091506001600160401b03168061154b57600080fd5b806001600160401b0316426001600160401b03161161156957600080fd5b600061157e84836001600160401b0316611279565b600081815260066020908152604080832054600783528184208054908590556001600160a01b038a168552928490529220549293506001600160401b03909116916115c99082610ebe565b6001600160a01b038716600090815260208181526040808320939093556008905220546115f6908261121c565b6001600160a01b0387166000908152600860205260409020556001600160401b03821661163e57600085815260066020526040902080546001600160401b0319169055611676565b60008581526006602052604080822080546001600160401b0386166001600160401b0319918216179091558583529120805490911690555b6040805182815290516001600160a01b038816917fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e919081900360200190a250505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a0000000000000000000000000169ec1f8f639b32eec6d923e24c2a2ff45b9dd6
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101065760003560e01c8062e4dca71461010b57806306fdde031461012f578063095ea7b3146101ac57806317a950ac146101ec57806318160ddd1461022457806323b872dd1461022c578063313ce5671461026257806339509351146102805780634fb2e45d146102ac5780635ccdd971146102d457806367dfd4c9146102f157806370a082311461030e5780638da5cb5b1461033457806395d89b411461033c578063a457c2d714610344578063a59f3e0c14610370578063a9059cbb1461038d578063aafc057f146103b9578063d8aeedf5146103d6578063dd62ed3e146103fc578063fd7e1bee1461042a575b600080fd5b610113610432565b604080516001600160a01b039092168252519081900360200190f35b610137610441565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610171578181015183820152602001610159565b50505050905090810190601f16801561019e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d8600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356104d7565b604080519115158252519081900360200190f35b6102126004803603602081101561020257600080fd5b50356001600160a01b03166104ee565b60408051918252519081900360200190f35b6102126104f9565b6101d86004803603606081101561024257600080fd5b506001600160a01b038135811691602081013590911690604001356104ff565b61026a610568565b6040805160ff9092168252519081900360200190f35b6101d86004803603604081101561029657600080fd5b506001600160a01b038135169060200135610571565b6102d2600480360360208110156102c257600080fd5b50356001600160a01b03166105a7565b005b610212600480360360208110156102ea57600080fd5b5035610674565b6102d26004803603602081101561030757600080fd5b5035610717565b6102126004803603602081101561032457600080fd5b50356001600160a01b031661084d565b610113610876565b610137610885565b6101d86004803603604081101561035a57600080fd5b506001600160a01b0381351690602001356108e6565b6102d26004803603602081101561038657600080fd5b5035610935565b6101d8600480360360408110156103a357600080fd5b506001600160a01b038135169060200135610ad1565b6102d2600480360360208110156103cf57600080fd5b5035610ade565b610212600480360360208110156103ec57600080fd5b50356001600160a01b0316610b8b565b6102126004803603604081101561041257600080fd5b506001600160a01b0381358116916020013516610ba6565b610212610bd1565b600b546001600160a01b031681565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104cd5780601f106104a2576101008083540402835291602001916104cd565b820191906000526020600020905b8154815290600101906020018083116104b057829003601f168201915b5050505050905090565b60006104e4338484610bd7565b5060015b92915050565b60006104e882610cc3565b60025490565b600061050c848484610cde565b61055e84336105598560405180606001604052806028815260200161176c602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610e27565b610bd7565b5060019392505050565b60055460ff1690565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104e49185906105599086610ebe565b600a546001600160a01b03163314610601576040805162461bcd60e51b81526020600482015260186024820152776f6e6c79206f776e65722063616e2063616c6c207468697360401b604482015290519081900360640190fd5b6001600160a01b038116610652576040805162461bcd60e51b815260206004820152601360248201527263616e6e6f742062652030206164647265737360681b604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60008061067f6104f9565b600b54604080516370a0823160e01b8152306004820152905192935061071092849261070a926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156106d757600080fd5b505afa1580156106eb573d6000803e3d6000fd5b505050506040513d602081101561070157600080fd5b50518690610f16565b90610f6f565b9392505050565b60006107216104f9565b600b54604080516370a0823160e01b8152306004820152905192935060009261077c92859261070a926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106d757600080fd5b90506107883384610fd3565b600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107dc57600080fd5b505af11580156107f0573d6000803e3d6000fd5b505050506040513d602081101561080657600080fd5b5050604080513381526020810185905280820183905290517f563475272d35e53c9fa5f84075356ba4f6d3add3ef25d748ad19629487b634429181900360600190a1505050565b6001600160a01b03811660009081526008602052604081205461086f83610cc3565b0192915050565b600a546001600160a01b031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104cd5780601f106104a2576101008083540402835291602001916104cd565b60006104e433846105598560405180606001604052806025815260200161181e602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610e27565b600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561098057600080fd5b505afa158015610994573d6000803e3d6000fd5b505050506040513d60208110156109aa57600080fd5b5051905060006109b86104f9565b905060008115806109c7575082155b156109e4578390506109de338560095442016110bd565b50610a05565b6109f28361070a8685610f16565b9050610a03338260095442016110bd565b505b600b54604080516323b872dd60e01b81523360048201523060248201526044810187905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d6020811015610a8957600080fd5b5050604080513381526020810186905280820183905290517f089d0daa5e8466fdfdab1113e8fdd98c06ef26711cafc429dabce354d007364e9181900360600190a150505050565b60006104e4338484610cde565b600a546001600160a01b03163314610b38576040805162461bcd60e51b81526020600482015260186024820152776f6e6c79206f776e65722063616e2063616c6c207468697360401b604482015290519081900360640190fd5b610e10811115610b86576040805162461bcd60e51b8152602060048201526014602482015273667265657a6554696d6520697320746f2062696760601b604482015290519081900360640190fd5b600955565b6001600160a01b031660009081526008602052604090205490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60095481565b6001600160a01b038316610c1c5760405162461bcd60e51b81526004018080602001828103825260248152602001806117fa6024913960400191505060405180910390fd5b6001600160a01b038216610c615760405162461bcd60e51b81526004018080602001828103825260228152602001806117036022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b038316610d235760405162461bcd60e51b81526004018080602001828103825260258152602001806117d56025913960400191505060405180910390fd5b6001600160a01b038216610d685760405162461bcd60e51b81526004018080602001828103825260238152602001806116be6023913960400191505060405180910390fd5b610d738383836111db565b610db081604051806060016040528060268152602001611725602691396001600160a01b0386166000908152602081905260409020549190610e27565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610ddf9082610ebe565b6001600160a01b0380841660008181526020818152604091829020949094558051858152905191939287169260008051602061179483398151915292918290030190a3505050565b60008184841115610eb65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e7b578181015183820152602001610e63565b50505050905090810190601f168015610ea85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610710576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600082610f25575060006104e8565b82820282848281610f3257fe5b04146107105760405162461bcd60e51b815260040180806020018281038252602181526020018061174b6021913960400191505060405180910390fd5b6000808211610fc2576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b818381610fcb57fe5b049392505050565b6001600160a01b0382166110185760405162461bcd60e51b81526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b611024826000836111db565b611061816040518060600160405280602281526020016116e1602291396001600160a01b0385166000908152602081905260409020549190610e27565b6001600160a01b038316600090815260208190526040902055600254611087908261121c565b6002556040805182815290516000916001600160a01b038516916000805160206117948339815191529181900360200190a35050565b6002546000906110cd9084610ebe565b60025560006110e5856001600160401b038516611279565b6000818152600760205260409020549091506111019085610ebe565b6000828152600760209081526040808320939093556001600160a01b03881682526008905220546111329085610ebe565b6001600160a01b0386166000908152600860205260409020556111558584611298565b604080516001600160401b03851681526020810186905281516001600160a01b038816927f2ecd071e4d10ed2221b04636ed0724cce66a873aa98c1a31b4bb0e6846d3aab4928290030190a26040805185815290516001600160a01b038716916000916000805160206117948339815191529181900360200190a3506001949350505050565b6000806111e9856000611424565b9150915042826001600160401b03161080156112055750600081115b1561121557611213856114b3565b505b5050505050565b600082821115611273576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160401b0316600160401b9190910217630ae92a6960e31b1790565b42816001600160401b0316116112ad57600080fd5b60006112c283836001600160401b0316611279565b905060006112d08482611279565b6000818152600660205260409020549091506001600160401b03168061131e5750600090815260066020526040902080546001600160401b0319166001600160401b03841617905550611420565b600061133386836001600160401b0316611279565b905060005b6001600160401b038316158015906113615750826001600160401b0316866001600160401b0316115b1561139957506000818152600660205260409020549092506001600160401b03908116918391166113928784611279565b9150611338565b826001600160401b0316866001600160401b031614156113bd575050505050611420565b6001600160401b038316156113f457600085815260066020526040902080546001600160401b0319166001600160401b0385161790555b505050600090815260066020526040902080546001600160401b0319166001600160401b038416179055505b5050565b60008060005b83600101811015611482576006600061144c87866001600160401b0316611279565b81526020810191909152604001600020546001600160401b031692508261147a5760008092509250506114ac565b60010161142a565b506007600061149a86856001600160401b0316611279565b81526020019081526020016000205490505b9250929050565b60008060006114c3846000611424565b6001600160401b03909116925090505b81158015906114e157508142115b15611512576114ef84611519565b918201916114fe846000611424565b6001600160401b03909116925090506114d3565b5050919050565b6000611526826000611279565b6000818152600660205260409020549091506001600160401b03168061154b57600080fd5b806001600160401b0316426001600160401b03161161156957600080fd5b600061157e84836001600160401b0316611279565b600081815260066020908152604080832054600783528184208054908590556001600160a01b038a168552928490529220549293506001600160401b03909116916115c99082610ebe565b6001600160a01b038716600090815260208181526040808320939093556008905220546115f6908261121c565b6001600160a01b0387166000908152600860205260409020556001600160401b03821661163e57600085815260066020526040902080546001600160401b0319169055611676565b60008581526006602052604080822080546001600160401b0386166001600160401b0319918216179091558583529120805490911690555b6040805182815290516001600160a01b038816917fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e919081900360200190a250505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000169ec1f8f639b32eec6d923e24c2a2ff45b9dd6
-----Decoded View---------------
Arg [0] : _ALGB (address): 0x0169eC1f8f639B32Eec6D923e24C2A2ff45B9DD6
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000169ec1f8f639b32eec6d923e24c2a2ff45b9dd6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.000042 | 2,261,167.0214 | $94.38 |
[ 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.