Source Code
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw ETH | 23496432 | 68 days ago | IN | 0 ETH | 0.0000367 | ||||
| Transfer | 23496411 | 68 days ago | IN | 0.003 ETH | 0.00005924 | ||||
| Transfer | 23466469 | 72 days ago | IN | 0.00017 ETH | 0.00005428 | ||||
| Transfer | 23466464 | 72 days ago | IN | 0.000017 ETH | 0.000055 | ||||
| Withdraw GLIP | 23465698 | 72 days ago | IN | 0 ETH | 0.00005402 | ||||
| Withdraw GLIP | 23465652 | 72 days ago | IN | 0 ETH | 0.00005347 | ||||
| Withdraw ETH | 23465643 | 72 days ago | IN | 0 ETH | 0.00003578 | ||||
| Buy | 23462186 | 73 days ago | IN | 0.00002 ETH | 0.00006338 |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GLIPSale
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/**
* @title GLIPSale
* @notice ETH -> GLIP fixed-price sale contract (prefunded).
*/
contract GLIPSale is Ownable, Pausable, ReentrancyGuard {
IERC20 public immutable glip;
uint256 public priceWeiPerToken; // price for 1 GLIP (18 decimals) in wei
event Bought(address indexed buyer, uint256 ethIn, uint256 glipOut);
event PriceUpdated(uint256 oldPrice, uint256 newPrice);
constructor(address _glip, uint256 _priceWeiPerToken) Ownable(msg.sender) {
require(_glip != address(0), "GLIP addr zero");
require(_priceWeiPerToken > 0, "price zero");
glip = IERC20(_glip);
priceWeiPerToken = _priceWeiPerToken;
}
function calcTokensForEth(uint256 ethWei) public view returns (uint256) {
return (ethWei * 1e18) / priceWeiPerToken;
}
receive() external payable { _buy(msg.sender, msg.value); }
function buy() external payable whenNotPaused nonReentrant {
_buy(msg.sender, msg.value);
}
function _buy(address buyer, uint256 ethIn) internal {
require(ethIn > 0, "no ETH");
uint256 glipOut = calcTokensForEth(ethIn);
uint256 bal = glip.balanceOf(address(this));
require(bal >= glipOut, "insufficient GLIP");
require(glip.transfer(buyer, glipOut), "GLIP transfer failed");
emit Bought(buyer, ethIn, glipOut);
}
function setPrice(uint256 newPrice) external onlyOwner {
require(newPrice > 0, "price zero");
emit PriceUpdated(priceWeiPerToken, newPrice);
priceWeiPerToken = newPrice;
}
function withdrawETH(address payable to) external onlyOwner {
uint256 bal = address(this).balance;
require(bal > 0, "no ETH");
to.transfer(bal);
}
function withdrawGLIP(address to, uint256 amount) external onlyOwner {
require(glip.transfer(to, amount), "withdraw failed");
}
function pause() external onlyOwner { _pause(); }
function unpause() external onlyOwner { _unpause(); }
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant NOT_ENTERED = 1;
uint256 private constant ENTERED = 2;
uint256 private _status;
/**
* @dev Unauthorized reentrant call.
*/
error ReentrancyGuardReentrantCall();
constructor() {
_status = NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be NOT_ENTERED
if (_status == ENTERED) {
revert ReentrancyGuardReentrantCall();
}
// Any calls to nonReentrant after this point will fail
_status = ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == ENTERED;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
bool private _paused;
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
/**
* @dev The operation failed because the contract is paused.
*/
error EnforcedPause();
/**
* @dev The operation failed because the contract is not paused.
*/
error ExpectedPause();
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
if (paused()) {
revert EnforcedPause();
}
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
if (!paused()) {
revert ExpectedPause();
}
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_glip","type":"address"},{"internalType":"uint256","name":"_priceWeiPerToken","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"glipOut","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"PriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethWei","type":"uint256"}],"name":"calcTokensForEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"glip","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceWeiPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawGLIP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a060405234801561000f575f80fd5b50604051610b9b380380610b9b83398101604081905261002e91610156565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d81610107565b505f805460ff60a01b19169055600180556001600160a01b0382166100b55760405162461bcd60e51b815260206004820152600e60248201526d474c49502061646472207a65726f60901b604482015260640161004b565b5f81116100f15760405162461bcd60e51b815260206004820152600a6024820152697072696365207a65726f60b01b604482015260640161004b565b6001600160a01b0390911660805260025561018d565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8060408385031215610167575f80fd5b82516001600160a01b038116811461017d575f80fd5b6020939093015192949293505050565b6080516109e16101ba5f395f81816101f4015281816102d2015281816103a7015261064501526109e15ff3fe6080604052600436106100c2575f3560e01c80638da5cb5b1161007c578063b24c72f611610057578063b24c72f6146101e3578063bbabeb0714610216578063dbf09d6614610235578063f2fde38b1461024a575f80fd5b80638da5cb5b1461018c57806391b7f5ed146101bc578063a6f2ae3a146101db575f80fd5b806304138e6b146100d75780633f4ba83a146101095780635c975abb1461011d578063690d832014610145578063715018a6146101645780638456cb5914610178575f80fd5b366100d3576100d13334610269565b005b5f80fd5b3480156100e2575f80fd5b506100f66100f13660046108bc565b61049e565b6040519081526020015b60405180910390f35b348015610114575f80fd5b506100d16104c5565b348015610128575f80fd5b505f54600160a01b900460ff166040519015158152602001610100565b348015610150575f80fd5b506100d161015f3660046108e7565b6104d7565b34801561016f575f80fd5b506100d161054e565b348015610183575f80fd5b506100d161055f565b348015610197575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610100565b3480156101c7575f80fd5b506100d16101d63660046108bc565b61056f565b6100d16105f4565b3480156101ee575f80fd5b506101a47f000000000000000000000000000000000000000000000000000000000000000081565b348015610221575f80fd5b506100d1610230366004610909565b610617565b348015610240575f80fd5b506100f660025481565b348015610255575f80fd5b506100d16102643660046108e7565b6106f1565b5f81116102a65760405162461bcd60e51b81526020600482015260066024820152650dcde408aa8960d31b60448201526064015b60405180910390fd5b5f6102b08261049e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610317573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033b9190610933565b9050818110156103815760405162461bcd60e51b81526020600482015260116024820152700696e73756666696369656e7420474c495607c1b604482015260640161029d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156103ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610411919061094a565b6104545760405162461bcd60e51b815260206004820152601460248201527311d31254081d1c985b9cd9995c8819985a5b195960621b604482015260640161029d565b60408051848152602081018490526001600160a01b038616917fa9a40dec7a304e5915d11358b968c1e8d365992abf20f82285d1df1b30c8e24c910160405180910390a250505050565b6002545f906104b583670de0b6b3a7640000610969565b6104bf919061098c565b92915050565b6104cd61072e565b6104d561075a565b565b6104df61072e565b47806105165760405162461bcd60e51b81526020600482015260066024820152650dcde408aa8960d31b604482015260640161029d565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610549573d5f803e3d5ffd5b505050565b61055661072e565b6104d55f6107ae565b61056761072e565b6104d56107fd565b61057761072e565b5f81116105b35760405162461bcd60e51b815260206004820152600a6024820152697072696365207a65726f60b01b604482015260640161029d565b60025460408051918252602082018390527f945c1c4e99aa89f648fbfe3df471b916f719e16d960fcec0737d4d56bd696838910160405180910390a1600255565b6105fc61083f565b610604610869565b61060e3334610269565b6104d560018055565b61061f61072e565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af115801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af919061094a565b6106ed5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161029d565b5050565b6106f961072e565b6001600160a01b03811661072257604051631e4fbdf760e01b81525f600482015260240161029d565b61072b816107ae565b50565b5f546001600160a01b031633146104d55760405163118cdaa760e01b815233600482015260240161029d565b610762610893565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61080561083f565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586107913390565b5f54600160a01b900460ff16156104d55760405163d93c066560e01b815260040160405180910390fd5b60026001540361088c57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f54600160a01b900460ff166104d557604051638dfc202b60e01b815260040160405180910390fd5b5f602082840312156108cc575f80fd5b5035919050565b6001600160a01b038116811461072b575f80fd5b5f602082840312156108f7575f80fd5b8135610902816108d3565b9392505050565b5f806040838503121561091a575f80fd5b8235610925816108d3565b946020939093013593505050565b5f60208284031215610943575f80fd5b5051919050565b5f6020828403121561095a575f80fd5b81518015158114610902575f80fd5b80820281158282048414176104bf57634e487b7160e01b5f52601160045260245ffd5b5f826109a657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220254eaa95b3ebb1a40674faec8c1015728f91f7ed1056c101548879c49094506364736f6c63430008140033000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e00000000000000000000000000000000000000000000000000000f761ef61000
Deployed Bytecode
0x6080604052600436106100c2575f3560e01c80638da5cb5b1161007c578063b24c72f611610057578063b24c72f6146101e3578063bbabeb0714610216578063dbf09d6614610235578063f2fde38b1461024a575f80fd5b80638da5cb5b1461018c57806391b7f5ed146101bc578063a6f2ae3a146101db575f80fd5b806304138e6b146100d75780633f4ba83a146101095780635c975abb1461011d578063690d832014610145578063715018a6146101645780638456cb5914610178575f80fd5b366100d3576100d13334610269565b005b5f80fd5b3480156100e2575f80fd5b506100f66100f13660046108bc565b61049e565b6040519081526020015b60405180910390f35b348015610114575f80fd5b506100d16104c5565b348015610128575f80fd5b505f54600160a01b900460ff166040519015158152602001610100565b348015610150575f80fd5b506100d161015f3660046108e7565b6104d7565b34801561016f575f80fd5b506100d161054e565b348015610183575f80fd5b506100d161055f565b348015610197575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610100565b3480156101c7575f80fd5b506100d16101d63660046108bc565b61056f565b6100d16105f4565b3480156101ee575f80fd5b506101a47f000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e81565b348015610221575f80fd5b506100d1610230366004610909565b610617565b348015610240575f80fd5b506100f660025481565b348015610255575f80fd5b506100d16102643660046108e7565b6106f1565b5f81116102a65760405162461bcd60e51b81526020600482015260066024820152650dcde408aa8960d31b60448201526064015b60405180910390fd5b5f6102b08261049e565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e16906370a0823190602401602060405180830381865afa158015610317573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033b9190610933565b9050818110156103815760405162461bcd60e51b81526020600482015260116024820152700696e73756666696369656e7420474c495607c1b604482015260640161029d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e169063a9059cbb906044016020604051808303815f875af11580156103ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610411919061094a565b6104545760405162461bcd60e51b815260206004820152601460248201527311d31254081d1c985b9cd9995c8819985a5b195960621b604482015260640161029d565b60408051848152602081018490526001600160a01b038616917fa9a40dec7a304e5915d11358b968c1e8d365992abf20f82285d1df1b30c8e24c910160405180910390a250505050565b6002545f906104b583670de0b6b3a7640000610969565b6104bf919061098c565b92915050565b6104cd61072e565b6104d561075a565b565b6104df61072e565b47806105165760405162461bcd60e51b81526020600482015260066024820152650dcde408aa8960d31b604482015260640161029d565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610549573d5f803e3d5ffd5b505050565b61055661072e565b6104d55f6107ae565b61056761072e565b6104d56107fd565b61057761072e565b5f81116105b35760405162461bcd60e51b815260206004820152600a6024820152697072696365207a65726f60b01b604482015260640161029d565b60025460408051918252602082018390527f945c1c4e99aa89f648fbfe3df471b916f719e16d960fcec0737d4d56bd696838910160405180910390a1600255565b6105fc61083f565b610604610869565b61060e3334610269565b6104d560018055565b61061f61072e565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390527f000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e169063a9059cbb906044016020604051808303815f875af115801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af919061094a565b6106ed5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b604482015260640161029d565b5050565b6106f961072e565b6001600160a01b03811661072257604051631e4fbdf760e01b81525f600482015260240161029d565b61072b816107ae565b50565b5f546001600160a01b031633146104d55760405163118cdaa760e01b815233600482015260240161029d565b610762610893565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61080561083f565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586107913390565b5f54600160a01b900460ff16156104d55760405163d93c066560e01b815260040160405180910390fd5b60026001540361088c57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f54600160a01b900460ff166104d557604051638dfc202b60e01b815260040160405180910390fd5b5f602082840312156108cc575f80fd5b5035919050565b6001600160a01b038116811461072b575f80fd5b5f602082840312156108f7575f80fd5b8135610902816108d3565b9392505050565b5f806040838503121561091a575f80fd5b8235610925816108d3565b946020939093013593505050565b5f60208284031215610943575f80fd5b5051919050565b5f6020828403121561095a575f80fd5b81518015158114610902575f80fd5b80820281158282048414176104bf57634e487b7160e01b5f52601160045260245ffd5b5f826109a657634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220254eaa95b3ebb1a40674faec8c1015728f91f7ed1056c101548879c49094506364736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e00000000000000000000000000000000000000000000000000000f761ef61000
-----Decoded View---------------
Arg [0] : _glip (address): 0xD0b86b79AE4b8D7bb88b37EBe228ce343D79794e
Arg [1] : _priceWeiPerToken (uint256): 17000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d0b86b79ae4b8d7bb88b37ebe228ce343d79794e
Arg [1] : 00000000000000000000000000000000000000000000000000000f761ef61000
Deployed Bytecode Sourcemap
439:1909:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:27;1191:10;1203:9;1186:4;:27::i;:::-;439:1909;;;;;1021:130;;;;;;;;;;-1:-1:-1;1021:130:5;;;;;:::i;:::-;;:::i;:::-;;;345:25:6;;;333:2;318:18;1021:130:5;;;;;;;;2293:53;;;;;;;;;;;;;:::i;1850:84:3:-;;;;;;;;;;-1:-1:-1;1897:4:3;1920:7;-1:-1:-1;;;1920:7:3;;;;1850:84;;546:14:6;;539:22;521:41;;509:2;494:18;1850:84:3;381:187:6;1914:174:5;;;;;;;;;;-1:-1:-1;1914:174:5;;;;;:::i;:::-;;:::i;2293:101:0:-;;;;;;;;;;;;;:::i;2239:49:5:-;;;;;;;;;;;;;:::i;1638:85:0:-;;;;;;;;;;-1:-1:-1;1684:7:0;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;;-1:-1:-1;;;;;1149:32:6;;;1131:51;;1119:2;1104:18;1638:85:0;985:203:6;1709:199:5;;;;;;;;;;-1:-1:-1;1709:199:5;;;;;:::i;:::-;;:::i;1222:103::-;;;:::i;501:28::-;;;;;;;;;;;;;;;2094:139;;;;;;;;;;-1:-1:-1;2094:139:5;;;;;:::i;:::-;;:::i;535:31::-;;;;;;;;;;;;;;;;2543:215:0;;;;;;;;;;-1:-1:-1;2543:215:0;;;;;:::i;:::-;;:::i;1331:372:5:-;1410:1;1402:5;:9;1394:28;;;;-1:-1:-1;;;1394:28:5;;2205:2:6;1394:28:5;;;2187:21:6;2244:1;2224:18;;;2217:29;-1:-1:-1;;;2262:18:6;;;2255:36;2308:18;;1394:28:5;;;;;;;;;1432:15;1450:23;1467:5;1450:16;:23::i;:::-;1497:29;;-1:-1:-1;;;1497:29:5;;1520:4;1497:29;;;1131:51:6;1432:41:5;;-1:-1:-1;1483:11:5;;-1:-1:-1;;;;;1497:4:5;:14;;;;1104:18:6;;1497:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1483:43;;1551:7;1544:3;:14;;1536:44;;;;-1:-1:-1;;;1536:44:5;;2728:2:6;1536:44:5;;;2710:21:6;2767:2;2747:18;;;2740:30;-1:-1:-1;;;2786:18:6;;;2779:47;2843:18;;1536:44:5;2526:341:6;1536:44:5;1598:29;;-1:-1:-1;;;1598:29:5;;-1:-1:-1;;;;;3064:32:6;;;1598:29:5;;;3046:51:6;3113:18;;;3106:34;;;1598:4:5;:13;;;;3019:18:6;;1598:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1590:62;;;;-1:-1:-1;;;1590:62:5;;3635:2:6;1590:62:5;;;3617:21:6;3674:2;3654:18;;;3647:30;-1:-1:-1;;;3693:18:6;;;3686:50;3753:18;;1590:62:5;3433:344:6;1590:62:5;1667:29;;;3956:25:6;;;4012:2;3997:18;;3990:34;;;-1:-1:-1;;;;;1667:29:5;;;;;3929:18:6;1667:29:5;;;;;;;1384:319;;1331:372;;:::o;1021:130::-;1128:16;;1084:7;;1111:13;:6;1120:4;1111:13;:::i;:::-;1110:34;;;;:::i;:::-;1103:41;1021:130;-1:-1:-1;;1021:130:5:o;2293:53::-;1531:13:0;:11;:13::i;:::-;2333:10:5::1;:8;:10::i;:::-;2293:53::o:0;1914:174::-;1531:13:0;:11;:13::i;:::-;1998:21:5::1;2037:7:::0;2029:26:::1;;;::::0;-1:-1:-1;;;2029:26:5;;2205:2:6;2029:26:5::1;::::0;::::1;2187:21:6::0;2244:1;2224:18;;;2217:29;-1:-1:-1;;;2262:18:6;;;2255:36;2308:18;;2029:26:5::1;2003:329:6::0;2029:26:5::1;2065:16;::::0;-1:-1:-1;;;;;2065:11:5;::::1;::::0;:16;::::1;;;::::0;2077:3;;2065:16:::1;::::0;;;2077:3;2065:11;:16;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;1974:114;1914:174:::0;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;2239:49:5:-:0;1531:13:0;:11;:13::i;:::-;2277:8:5::1;:6;:8::i;1709:199::-:0;1531:13:0;:11;:13::i;:::-;1793:1:5::1;1782:8;:12;1774:35;;;::::0;-1:-1:-1;;;1774:35:5;;4729:2:6;1774:35:5::1;::::0;::::1;4711:21:6::0;4768:2;4748:18;;;4741:30;-1:-1:-1;;;4787:18:6;;;4780:40;4837:18;;1774:35:5::1;4527:334:6::0;1774:35:5::1;1837:16;::::0;1824:40:::1;::::0;;3956:25:6;;;4012:2;3997:18;;3990:34;;;1824:40:5::1;::::0;3929:18:6;1824:40:5::1;;;;;;;1874:16;:27:::0;1709:199::o;1222:103::-;1474:19:3;:17;:19::i;:::-;2356:21:4::1;:19;:21::i;:::-;1291:27:5::2;1296:10;1308:9;1291:4;:27::i;:::-;2398:20:4::1;1713:1:::0;2924:21;;2744:208;2094:139:5;1531:13:0;:11;:13::i;:::-;2181:25:5::1;::::0;-1:-1:-1;;;2181:25:5;;-1:-1:-1;;;;;3064:32:6;;;2181:25:5::1;::::0;::::1;3046:51:6::0;3113:18;;;3106:34;;;2181:4:5::1;:13;::::0;::::1;::::0;3019:18:6;;2181:25:5::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2173:53;;;::::0;-1:-1:-1;;;2173:53:5;;5068:2:6;2173:53:5::1;::::0;::::1;5050:21:6::0;5107:2;5087:18;;;5080:30;-1:-1:-1;;;5126:18:6;;;5119:45;5181:18;;2173:53:5::1;4866:339:6::0;2173:53:5::1;2094:139:::0;;:::o;2543:215:0:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;1131:51:6::0;1104:18;;2672:31:0::1;985:203:6::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:2;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:2;1901:40:0;;;1131:51:6;1104:18;;1901:40:0;985:203:6;2710:117:3;1721:16;:14;:16::i;:::-;2778:5:::1;2768:15:::0;;-1:-1:-1;;;;2768:15:3::1;::::0;;2798:22:::1;735:10:2::0;2807:12:3::1;2798:22;::::0;-1:-1:-1;;;;;1149:32:6;;;1131:51;;1119:2;1104:18;2798:22:3::1;;;;;;;2710:117::o:0;2912:187:0:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2463:115:3:-;1474:19;:17;:19::i;:::-;2522:7:::1;:14:::0;;-1:-1:-1;;;;2522:14:3::1;-1:-1:-1::0;;;2522:14:3::1;::::0;;2551:20:::1;2558:12;735:10:2::0;;656:96;2002:128:3;1897:4;1920:7;-1:-1:-1;;;1920:7:3;;;;2063:61;;;2098:15;;-1:-1:-1;;;2098:15:3;;;;;;;;;;;2431:307:4;1755:1;2558:7;;:18;2554:86;;2599:30;;-1:-1:-1;;;2599:30:4;;;;;;;;;;;2554:86;1755:1;2714:7;:17;2431:307::o;2202:126:3:-;1897:4;1920:7;-1:-1:-1;;;1920:7:3;;;;2260:62;;2296:15;;-1:-1:-1;;;2296:15:3;;;;;;;;;;;14:180:6;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:6;;14:180;-1:-1:-1;14:180:6:o;573:139::-;-1:-1:-1;;;;;656:31:6;;646:42;;636:70;;702:1;699;692:12;717:263;784:6;837:2;825:9;816:7;812:23;808:32;805:52;;;853:1;850;843:12;805:52;892:9;879:23;911:39;944:5;911:39;:::i;:::-;969:5;717:263;-1:-1:-1;;;717:263:6:o;1415:323::-;1483:6;1491;1544:2;1532:9;1523:7;1519:23;1515:32;1512:52;;;1560:1;1557;1550:12;1512:52;1599:9;1586:23;1618:39;1651:5;1618:39;:::i;:::-;1676:5;1728:2;1713:18;;;;1700:32;;-1:-1:-1;;;1415:323:6:o;2337:184::-;2407:6;2460:2;2448:9;2439:7;2435:23;2431:32;2428:52;;;2476:1;2473;2466:12;2428:52;-1:-1:-1;2499:16:6;;2337:184;-1:-1:-1;2337:184:6:o;3151:277::-;3218:6;3271:2;3259:9;3250:7;3246:23;3242:32;3239:52;;;3287:1;3284;3277:12;3239:52;3319:9;3313:16;3372:5;3365:13;3358:21;3351:5;3348:32;3338:60;;3394:1;3391;3384:12;4035:265;4108:9;;;4139;;4156:15;;;4150:22;;4136:37;4126:168;;4216:10;4211:3;4207:20;4204:1;4197:31;4251:4;4248:1;4241:15;4279:4;4276:1;4269:15;4305:217;4345:1;4371;4361:132;;4415:10;4410:3;4406:20;4403:1;4396:31;4450:4;4447:1;4440:15;4478:4;4475:1;4468:15;4361:132;-1:-1:-1;4507:9:6;;4305:217::o
Swarm Source
ipfs://254eaa95b3ebb1a40674faec8c1015728f91f7ed1056c101548879c490945063
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $3,327.86 | 0.00464 | $15.44 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.