Source Code
Multichain Info
N/A
Latest 12 from a total of 12 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 32722185 | 30 hrs ago | IN | 0 APE | 0.0029189 | ||||
| Transfer Ownersh... | 32722107 | 30 hrs ago | IN | 0 APE | 0.0029189 | ||||
| Withdraw | 32721939 | 30 hrs ago | IN | 0 APE | 0.00579266 | ||||
| Buy Batch | 32687021 | 2 days ago | IN | 0 APE | 0.00711728 | ||||
| Buy Batch | 32686974 | 2 days ago | IN | 0 APE | 0.00711728 | ||||
| Buy Batch | 32686282 | 2 days ago | IN | 0 APE | 0.00885605 | ||||
| Buy Batch | 32685590 | 2 days ago | IN | 0 APE | 0.00711728 | ||||
| Buy Batch | 32685320 | 2 days ago | IN | 0 APE | 0.00711728 | ||||
| Buy | 32681915 | 2 days ago | IN | 0 APE | 0.00712846 | ||||
| Buy | 32681883 | 2 days ago | IN | 0 APE | 0.00712846 | ||||
| Buy | 32681870 | 2 days ago | IN | 0 APE | 0.00712846 | ||||
| Buy | 32681785 | 2 days ago | IN | 0 APE | 0.01234479 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EmoGeezPayment
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 1 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/**
* @title EmoGeezPayment
* @dev Payment contract for EmoGeez code purchases
*
* Features:
* - Fixed price per item in PNutz tokens
* - Support for single and batch purchases
* - Owner can withdraw collected tokens
* - Tracks purchase history per address
* - Emits events for backend verification
*/
contract EmoGeezPayment is Ownable, ReentrancyGuard {
// PNutz token contract
IERC20 public immutable pnutzToken;
// Price per item (in PNutz token's smallest unit, 18 decimals)
// 56 PNutz = 56 * 10^18
uint256 public pricePerItem;
// Max quantity per transaction
uint256 public constant MAX_QUANTITY = 10;
// Track total purchases per address
mapping(address => uint256) public purchases;
// Total items sold
uint256 public totalSold;
// Events
event Purchase(address indexed buyer, uint256 quantity, uint256 totalPrice);
event PriceUpdated(uint256 oldPrice, uint256 newPrice);
event Withdrawal(address indexed to, uint256 amount);
/**
* @dev Constructor
* @param _pnutzToken Address of PNutz ERC20 token
* @param _pricePerItem Initial price per item
*/
constructor(address _pnutzToken, uint256 _pricePerItem) {
require(_pnutzToken != address(0), "Invalid token address");
require(_pricePerItem > 0, "Price must be greater than 0");
pnutzToken = IERC20(_pnutzToken);
pricePerItem = _pricePerItem;
}
/**
* @dev Buy single item
* @param quantity Number of items to purchase
*/
function buy(uint256 quantity) external nonReentrant {
require(quantity > 0, "Quantity must be greater than 0");
require(quantity <= MAX_QUANTITY, "Exceeds max quantity per transaction");
uint256 totalPrice = pricePerItem * quantity;
// Transfer PNutz from buyer to contract
require(
pnutzToken.transferFrom(msg.sender, address(this), totalPrice),
"Payment failed"
);
// Update tracking
purchases[msg.sender] += quantity;
totalSold += quantity;
// Emit event for backend to track
emit Purchase(msg.sender, quantity, totalPrice);
}
/**
* @dev Buy multiple items (alias for buy function for consistency)
* @param quantity Number of items to purchase
*/
function buyBatch(uint256 quantity) external nonReentrant {
require(quantity > 0, "Quantity must be greater than 0");
require(quantity <= MAX_QUANTITY, "Exceeds max quantity per transaction");
uint256 totalPrice = pricePerItem * quantity;
// Transfer PNutz from buyer to contract
require(
pnutzToken.transferFrom(msg.sender, address(this), totalPrice),
"Payment failed"
);
// Update tracking
purchases[msg.sender] += quantity;
totalSold += quantity;
// Emit event for backend to track
emit Purchase(msg.sender, quantity, totalPrice);
}
/**
* @dev Update price per item (owner only)
* @param _newPrice New price per item
*/
function updatePrice(uint256 _newPrice) external onlyOwner {
require(_newPrice > 0, "Price must be greater than 0");
uint256 oldPrice = pricePerItem;
pricePerItem = _newPrice;
emit PriceUpdated(oldPrice, _newPrice);
}
/**
* @dev Withdraw collected PNutz tokens (owner only)
* @param to Address to send tokens to
* @param amount Amount to withdraw (0 for all)
*/
function withdraw(address to, uint256 amount) external onlyOwner {
require(to != address(0), "Invalid recipient");
uint256 balance = pnutzToken.balanceOf(address(this));
require(balance > 0, "No tokens to withdraw");
uint256 withdrawAmount = amount == 0 ? balance : amount;
require(withdrawAmount <= balance, "Insufficient balance");
require(pnutzToken.transfer(to, withdrawAmount), "Transfer failed");
emit Withdrawal(to, withdrawAmount);
}
/**
* @dev Get contract balance
*/
function getBalance() external view returns (uint256) {
return pnutzToken.balanceOf(address(this));
}
/**
* @dev Get purchase count for an address
* @param buyer Address to check
*/
function getPurchaseCount(address buyer) external view returns (uint256) {
return purchases[buyer];
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../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.
*
* By default, the owner account will be the one that deploys the contract. 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;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @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 {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_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 v4.9.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @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;
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
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// 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 v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @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 amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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": 1
},
"viaIR": true,
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pnutzToken","type":"address"},{"internalType":"uint256","name":"_pricePerItem","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalPrice","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"MAX_QUANTITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"buyBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"getPurchaseCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pnutzToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerItem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"purchases","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a03461016c57601f610b7538819003918201601f19168301916001600160401b0383118484101761017157808492604094855283398101031261016c5780516001600160a01b038116919082900361016c576020015160008054336001600160a01b03198216811783556040519394939290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360018055811561012a575081156100e5576080526002556040516109ed90816101888239608051818181610104015281816105be0152818161061601526107620152f35b60405162461bcd60e51b815260206004820152601c60248201527f5072696365206d7573742062652067726561746572207468616e2030000000006044820152606490fd5b62461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e206164647265737300000000000000000000006044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608080604052600436101561001357600080fd5b60003560e01c90816312065fe0146105ed575080631670fd29146105a857806331bbf55514610509578063382d9b7d1461058a578063715018a614610543578063746d1e57146103f9578063842a77d3146105095780638d6cc56d1461046a5780638da5cb5b146104415780639106d7ba14610423578063d96a094a146103f9578063e41ee46a146103dd578063f2fde38b146103285763f3fef3a3146100b957600080fd5b34610323576040366003190112610323576100d261068c565b602435906100de6108e9565b6001600160a01b03169081156102ea576040516370a0823160e01b8152306004820152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602083602481855afa928315610228576000936102b3575b50821561027657806102705750815b821161023457602060009160446040518094819363a9059cbb60e01b83528860048401528760248401525af1908115610228576000916101f9575b50156101c25760207f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6591604051908152a2005b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b61021b915060203d602011610221575b61021381836106a2565b8101906106db565b3861018f565b503d610209565b6040513d6000823e3d90fd5b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606490fd5b91610154565b60405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606490fd5b90926020823d6020116102e2575b816102ce602093836106a2565b810103126102df5750519138610145565b80fd5b3d91506102c1565b60405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b600080fd5b346103235760203660031901126103235761034161068c565b6103496108e9565b6001600160a01b0316801561038957600080546001600160a01b03198116831782556001600160a01b0316906000805160206109988339815191529080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610323576000366003190112610323576020604051600a8152f35b3461032357602036600319011261032357610412610941565b61041d600435610716565b60018055005b34610323576000366003190112610323576020600454604051908152f35b34610323576000366003190112610323576000546040516001600160a01b039091168152602090f35b34610323576020366003190112610323576004356104866108e9565b80156104c55760407f945c1c4e99aa89f648fbfe3df471b916f719e16d960fcec0737d4d56bd69683891600254908060025582519182526020820152a1005b60405162461bcd60e51b815260206004820152601c60248201527b05072696365206d7573742062652067726561746572207468616e20360241b6044820152606490fd5b34610323576020366003190112610323576001600160a01b0361052a61068c565b1660005260036020526020604060002054604051908152f35b346103235760003660031901126103235761055c6108e9565b600080546001600160a01b0319811682556001600160a01b03166000805160206109988339815191528280a3005b34610323576000366003190112610323576020600254604051908152f35b34610323576000366003190112610323576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610323576000366003190112610323576370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561022857600090610659575b602090604051908152f35b506020813d602011610684575b81610673602093836106a2565b81010312610323576020905161064e565b3d9150610666565b600435906001600160a01b038216820361032357565b601f909101601f19168101906001600160401b038211908210176106c557604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610323575180151581036103235790565b9190820180921161070057565b634e487b7160e01b600052601160045260246000fd5b80156108a457600a81116108535760025481810290808204831490151715610700576040516323b872dd60e01b81523360048201523060248201526044810182905260208160648160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af190811561022857600091610834575b50156107fe5733600052600360205260406000206107ba8382546106f3565b90556107c8826004546106f3565b60045560405191825260208201527f12cb4648cf3058b17ceeb33e579f8b0bc269fe0843f3900b8e24b6c54871703c60403392a2565b60405162461bcd60e51b815260206004820152600e60248201526d14185e5b595b9d0819985a5b195960921b6044820152606490fd5b61084d915060203d6020116102215761021381836106a2565b3861079b565b60405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178207175616e7469747920706572207472616e7361636044820152633a34b7b760e11b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606490fd5b6000546001600160a01b031633036108fd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600260015414610952576002600155565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220bbfdb50bf18fe833a8ae45e1752fc5453a7e07bedad2300511be7c04387ee9b464736f6c634300081c003300000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b00000000000000000000000000000000000000000000000000038d7ea4c68000
Deployed Bytecode
0x608080604052600436101561001357600080fd5b60003560e01c90816312065fe0146105ed575080631670fd29146105a857806331bbf55514610509578063382d9b7d1461058a578063715018a614610543578063746d1e57146103f9578063842a77d3146105095780638d6cc56d1461046a5780638da5cb5b146104415780639106d7ba14610423578063d96a094a146103f9578063e41ee46a146103dd578063f2fde38b146103285763f3fef3a3146100b957600080fd5b34610323576040366003190112610323576100d261068c565b602435906100de6108e9565b6001600160a01b03169081156102ea576040516370a0823160e01b8152306004820152907f00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b6001600160a01b031690602083602481855afa928315610228576000936102b3575b50821561027657806102705750815b821161023457602060009160446040518094819363a9059cbb60e01b83528860048401528760248401525af1908115610228576000916101f9575b50156101c25760207f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6591604051908152a2005b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b61021b915060203d602011610221575b61021381836106a2565b8101906106db565b3861018f565b503d610209565b6040513d6000823e3d90fd5b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606490fd5b91610154565b60405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606490fd5b90926020823d6020116102e2575b816102ce602093836106a2565b810103126102df5750519138610145565b80fd5b3d91506102c1565b60405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b600080fd5b346103235760203660031901126103235761034161068c565b6103496108e9565b6001600160a01b0316801561038957600080546001600160a01b03198116831782556001600160a01b0316906000805160206109988339815191529080a3005b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610323576000366003190112610323576020604051600a8152f35b3461032357602036600319011261032357610412610941565b61041d600435610716565b60018055005b34610323576000366003190112610323576020600454604051908152f35b34610323576000366003190112610323576000546040516001600160a01b039091168152602090f35b34610323576020366003190112610323576004356104866108e9565b80156104c55760407f945c1c4e99aa89f648fbfe3df471b916f719e16d960fcec0737d4d56bd69683891600254908060025582519182526020820152a1005b60405162461bcd60e51b815260206004820152601c60248201527b05072696365206d7573742062652067726561746572207468616e20360241b6044820152606490fd5b34610323576020366003190112610323576001600160a01b0361052a61068c565b1660005260036020526020604060002054604051908152f35b346103235760003660031901126103235761055c6108e9565b600080546001600160a01b0319811682556001600160a01b03166000805160206109988339815191528280a3005b34610323576000366003190112610323576020600254604051908152f35b34610323576000366003190112610323576040517f00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b6001600160a01b03168152602090f35b34610323576000366003190112610323576370a0823160e01b81523060048201526020816024817f00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b6001600160a01b03165afa801561022857600090610659575b602090604051908152f35b506020813d602011610684575b81610673602093836106a2565b81010312610323576020905161064e565b3d9150610666565b600435906001600160a01b038216820361032357565b601f909101601f19168101906001600160401b038211908210176106c557604052565b634e487b7160e01b600052604160045260246000fd5b90816020910312610323575180151581036103235790565b9190820180921161070057565b634e487b7160e01b600052601160045260246000fd5b80156108a457600a81116108535760025481810290808204831490151715610700576040516323b872dd60e01b81523360048201523060248201526044810182905260208160648160007f00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b6001600160a01b03165af190811561022857600091610834575b50156107fe5733600052600360205260406000206107ba8382546106f3565b90556107c8826004546106f3565b60045560405191825260208201527f12cb4648cf3058b17ceeb33e579f8b0bc269fe0843f3900b8e24b6c54871703c60403392a2565b60405162461bcd60e51b815260206004820152600e60248201526d14185e5b595b9d0819985a5b195960921b6044820152606490fd5b61084d915060203d6020116102215761021381836106a2565b3861079b565b60405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178207175616e7469747920706572207472616e7361636044820152633a34b7b760e11b6064820152608490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5175616e74697479206d7573742062652067726561746572207468616e2030006044820152606490fd5b6000546001600160a01b031633036108fd57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b600260015414610952576002600155565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fdfe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220bbfdb50bf18fe833a8ae45e1752fc5453a7e07bedad2300511be7c04387ee9b464736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b00000000000000000000000000000000000000000000000000038d7ea4c68000
-----Decoded View---------------
Arg [0] : _pnutzToken (address): 0x54A70516e9c0223F4a92bE3a4832a06f546e783B
Arg [1] : _pricePerItem (uint256): 1000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000054a70516e9c0223f4a92be3a4832a06f546e783b
Arg [1] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.