Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vas3kTokenLottery
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract Vas3kTokenLottery is Ownable {
IERC20 public immutable vas3kToken;
address[] public participants;
bool public winnerPicked;
address public winner;
event Entered(address indexed participant);
event WinnerSelected(address indexed winner, uint256 reward);
constructor() Ownable(msg.sender) {
// VAS3K token on Sepolia
vas3kToken = IERC20(0xE738d3d4C6847C7a26d12715Ab0Daf9A8569A37d);
}
function enter() external {
require(!winnerPicked, "Lottery ended");
require(!_hasEntered(msg.sender), "Already entered");
require(
vas3kToken.transferFrom(msg.sender, address(this), 1 ether),
"Token transfer failed"
);
participants.push(msg.sender);
emit Entered(msg.sender);
}
function pickWinner() external onlyOwner {
require(!winnerPicked, "Winner already picked");
require(participants.length > 0, "No participants");
uint256 index = uint256(
keccak256(
abi.encodePacked(
block.timestamp,
block.prevrandao,
participants.length
)
)
) % participants.length;
winner = participants[index];
uint256 balance = vas3kToken.balanceOf(address(this));
vas3kToken.transfer(winner, balance);
winnerPicked = true;
emit WinnerSelected(winner, balance);
}
function revealWinner() external view returns (address) {
require(winnerPicked, "Winner not picked yet");
return winner;
}
function _hasEntered(address user) internal view returns (bool) {
for (uint256 i = 0; i < participants.length; i++) {
if (participants[i] == user) return true;
}
return false;
}
function getParticipants() external view returns (address[] memory) {
return participants;
}
}// 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.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
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;
}
}{
"evmVersion": "paris",
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"participant","type":"address"}],"name":"Entered","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":true,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"WinnerSelected","type":"event"},{"inputs":[],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getParticipants","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"participants","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pickWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealWinner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vas3kToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"winnerPicked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100845760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161007b91906101e6565b60405180910390fd5b610093816100e160201b60201c565b5073e738d3d4c6847c7a26d12715ab0daf9a8569a37d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050610201565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101d0826101a5565b9050919050565b6101e0816101c5565b82525050565b60006020820190506101fb60008301846101d7565b92915050565b60805161137261023160003960008181610416015281816104b2015281816106b8015261079b01526113726000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a6146101425780638da5cb5b1461014c578063ad23ad3a1461016a578063dfbf53ae14610188578063e97dcb62146101a6578063f2fde38b146101b0576100a9565b806335c1d349146100ae5780634f4b5085146100de5780635aa68ac0146100fc5780635d495aea1461011a5780636c69990514610124575b600080fd5b6100c860048036038101906100c39190610be4565b6101cc565b6040516100d59190610c52565b60405180910390f35b6100e661020b565b6040516100f39190610c88565b60405180910390f35b61010461021e565b6040516101119190610d61565b60405180910390f35b6101226102ac565b005b61012c610600565b6040516101399190610c52565b60405180910390f35b61014a610679565b005b61015461068d565b6040516101619190610c52565b60405180910390f35b6101726106b6565b60405161017f9190610de2565b60405180910390f35b6101906106da565b60405161019d9190610c52565b60405180910390f35b6101ae610700565b005b6101ca60048036038101906101c59190610e29565b610928565b005b600181815481106101dc57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b606060018054806020026020016040519081016040528092919081815260200182805480156102a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610258575b5050505050905090565b6102b46109ae565b600260009054906101000a900460ff1615610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fb90610eb3565b60405180910390fd5b60006001805490501161034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034390610f1f565b60405180910390fd5b6000600180549050424460018054905060405160200161036e93929190610f60565b6040516020818303038152906040528051906020012060001c6103919190610fcc565b9050600181815481106103a7576103a6610ffd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161046d9190610c52565b602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190611041565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161052d92919061107d565b6020604051808303816000875af115801561054c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057091906110d2565b506001600260006101000a81548160ff021916908315150217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f75060f9e79552df167b73353fee6237a75bb5ba8ea022f77224e32f152138bcb826040516105f491906110ff565b60405180910390a25050565b6000600260009054906101000a900460ff16610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064890611166565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106816109ae565b61068b6000610a35565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1615610750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610747906111d2565b60405180910390fd5b61075933610af9565b15610799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107909061123e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330670de0b6b3a76400006040518463ffffffff1660e01b81526004016107fe93929190611299565b6020604051808303816000875af115801561081d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084191906110d2565b610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061131c565b60405180910390fd5b6001339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9d8f2d54c1a8ffb26973551e72794da9bd5b8529f24c494a6f1590d35d5e8ecf60405160405180910390a2565b6109306109ae565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109a25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109999190610c52565b60405180910390fd5b6109ab81610a35565b50565b6109b6610ba1565b73ffffffffffffffffffffffffffffffffffffffff166109d461068d565b73ffffffffffffffffffffffffffffffffffffffff1614610a33576109f7610ba1565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a2a9190610c52565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600090505b600180549050811015610b96578273ffffffffffffffffffffffffffffffffffffffff1660018281548110610b3957610b38610ffd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b89576001915050610b9c565b8080600101915050610b01565b50600090505b919050565b600033905090565b600080fd5b6000819050919050565b610bc181610bae565b8114610bcc57600080fd5b50565b600081359050610bde81610bb8565b92915050565b600060208284031215610bfa57610bf9610ba9565b5b6000610c0884828501610bcf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3c82610c11565b9050919050565b610c4c81610c31565b82525050565b6000602082019050610c676000830184610c43565b92915050565b60008115159050919050565b610c8281610c6d565b82525050565b6000602082019050610c9d6000830184610c79565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610cd881610c31565b82525050565b6000610cea8383610ccf565b60208301905092915050565b6000602082019050919050565b6000610d0e82610ca3565b610d188185610cae565b9350610d2383610cbf565b8060005b83811015610d54578151610d3b8882610cde565b9750610d4683610cf6565b925050600181019050610d27565b5085935050505092915050565b60006020820190508181036000830152610d7b8184610d03565b905092915050565b6000819050919050565b6000610da8610da3610d9e84610c11565b610d83565b610c11565b9050919050565b6000610dba82610d8d565b9050919050565b6000610dcc82610daf565b9050919050565b610ddc81610dc1565b82525050565b6000602082019050610df76000830184610dd3565b92915050565b610e0681610c31565b8114610e1157600080fd5b50565b600081359050610e2381610dfd565b92915050565b600060208284031215610e3f57610e3e610ba9565b5b6000610e4d84828501610e14565b91505092915050565b600082825260208201905092915050565b7f57696e6e657220616c7265616479207069636b65640000000000000000000000600082015250565b6000610e9d601583610e56565b9150610ea882610e67565b602082019050919050565b60006020820190508181036000830152610ecc81610e90565b9050919050565b7f4e6f207061727469636970616e74730000000000000000000000000000000000600082015250565b6000610f09600f83610e56565b9150610f1482610ed3565b602082019050919050565b60006020820190508181036000830152610f3881610efc565b9050919050565b6000819050919050565b610f5a610f5582610bae565b610f3f565b82525050565b6000610f6c8286610f49565b602082019150610f7c8285610f49565b602082019150610f8c8284610f49565b602082019150819050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610fd782610bae565b9150610fe283610bae565b925082610ff257610ff1610f9d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061103b81610bb8565b92915050565b60006020828403121561105757611056610ba9565b5b60006110658482850161102c565b91505092915050565b61107781610bae565b82525050565b60006040820190506110926000830185610c43565b61109f602083018461106e565b9392505050565b6110af81610c6d565b81146110ba57600080fd5b50565b6000815190506110cc816110a6565b92915050565b6000602082840312156110e8576110e7610ba9565b5b60006110f6848285016110bd565b91505092915050565b6000602082019050611114600083018461106e565b92915050565b7f57696e6e6572206e6f74207069636b6564207965740000000000000000000000600082015250565b6000611150601583610e56565b915061115b8261111a565b602082019050919050565b6000602082019050818103600083015261117f81611143565b9050919050565b7f4c6f747465727920656e64656400000000000000000000000000000000000000600082015250565b60006111bc600d83610e56565b91506111c782611186565b602082019050919050565b600060208201905081810360008301526111eb816111af565b9050919050565b7f416c726561647920656e74657265640000000000000000000000000000000000600082015250565b6000611228600f83610e56565b9150611233826111f2565b602082019050919050565b600060208201905081810360008301526112578161121b565b9050919050565b6000819050919050565b600061128361127e6112798461125e565b610d83565b610bae565b9050919050565b61129381611268565b82525050565b60006060820190506112ae6000830186610c43565b6112bb6020830185610c43565b6112c8604083018461128a565b949350505050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b6000611306601583610e56565b9150611311826112d0565b602082019050919050565b60006020820190508181036000830152611335816112f9565b905091905056fea264697066735822122076305a2fee2ceb3a8ed7bfd15aeb9e69163804f68ef3a5442e503ed31e2526dc64736f6c634300081c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a6146101425780638da5cb5b1461014c578063ad23ad3a1461016a578063dfbf53ae14610188578063e97dcb62146101a6578063f2fde38b146101b0576100a9565b806335c1d349146100ae5780634f4b5085146100de5780635aa68ac0146100fc5780635d495aea1461011a5780636c69990514610124575b600080fd5b6100c860048036038101906100c39190610be4565b6101cc565b6040516100d59190610c52565b60405180910390f35b6100e661020b565b6040516100f39190610c88565b60405180910390f35b61010461021e565b6040516101119190610d61565b60405180910390f35b6101226102ac565b005b61012c610600565b6040516101399190610c52565b60405180910390f35b61014a610679565b005b61015461068d565b6040516101619190610c52565b60405180910390f35b6101726106b6565b60405161017f9190610de2565b60405180910390f35b6101906106da565b60405161019d9190610c52565b60405180910390f35b6101ae610700565b005b6101ca60048036038101906101c59190610e29565b610928565b005b600181815481106101dc57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1681565b606060018054806020026020016040519081016040528092919081815260200182805480156102a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610258575b5050505050905090565b6102b46109ae565b600260009054906101000a900460ff1615610304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102fb90610eb3565b60405180910390fd5b60006001805490501161034c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034390610f1f565b60405180910390fd5b6000600180549050424460018054905060405160200161036e93929190610f60565b6040516020818303038152906040528051906020012060001c6103919190610fcc565b9050600181815481106103a7576103a6610ffd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060007f000000000000000000000000e738d3d4c6847c7a26d12715ab0daf9a8569a37d73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161046d9190610c52565b602060405180830381865afa15801561048a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ae9190611041565b90507f000000000000000000000000e738d3d4c6847c7a26d12715ab0daf9a8569a37d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161052d92919061107d565b6020604051808303816000875af115801561054c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057091906110d2565b506001600260006101000a81548160ff021916908315150217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f75060f9e79552df167b73353fee6237a75bb5ba8ea022f77224e32f152138bcb826040516105f491906110ff565b60405180910390a25050565b6000600260009054906101000a900460ff16610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064890611166565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106816109ae565b61068b6000610a35565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000e738d3d4c6847c7a26d12715ab0daf9a8569a37d81565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900460ff1615610750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610747906111d2565b60405180910390fd5b61075933610af9565b15610799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107909061123e565b60405180910390fd5b7f000000000000000000000000e738d3d4c6847c7a26d12715ab0daf9a8569a37d73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330670de0b6b3a76400006040518463ffffffff1660e01b81526004016107fe93929190611299565b6020604051808303816000875af115801561081d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084191906110d2565b610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061131c565b60405180910390fd5b6001339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f9d8f2d54c1a8ffb26973551e72794da9bd5b8529f24c494a6f1590d35d5e8ecf60405160405180910390a2565b6109306109ae565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109a25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109999190610c52565b60405180910390fd5b6109ab81610a35565b50565b6109b6610ba1565b73ffffffffffffffffffffffffffffffffffffffff166109d461068d565b73ffffffffffffffffffffffffffffffffffffffff1614610a33576109f7610ba1565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a2a9190610c52565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600090505b600180549050811015610b96578273ffffffffffffffffffffffffffffffffffffffff1660018281548110610b3957610b38610ffd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610b89576001915050610b9c565b8080600101915050610b01565b50600090505b919050565b600033905090565b600080fd5b6000819050919050565b610bc181610bae565b8114610bcc57600080fd5b50565b600081359050610bde81610bb8565b92915050565b600060208284031215610bfa57610bf9610ba9565b5b6000610c0884828501610bcf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3c82610c11565b9050919050565b610c4c81610c31565b82525050565b6000602082019050610c676000830184610c43565b92915050565b60008115159050919050565b610c8281610c6d565b82525050565b6000602082019050610c9d6000830184610c79565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610cd881610c31565b82525050565b6000610cea8383610ccf565b60208301905092915050565b6000602082019050919050565b6000610d0e82610ca3565b610d188185610cae565b9350610d2383610cbf565b8060005b83811015610d54578151610d3b8882610cde565b9750610d4683610cf6565b925050600181019050610d27565b5085935050505092915050565b60006020820190508181036000830152610d7b8184610d03565b905092915050565b6000819050919050565b6000610da8610da3610d9e84610c11565b610d83565b610c11565b9050919050565b6000610dba82610d8d565b9050919050565b6000610dcc82610daf565b9050919050565b610ddc81610dc1565b82525050565b6000602082019050610df76000830184610dd3565b92915050565b610e0681610c31565b8114610e1157600080fd5b50565b600081359050610e2381610dfd565b92915050565b600060208284031215610e3f57610e3e610ba9565b5b6000610e4d84828501610e14565b91505092915050565b600082825260208201905092915050565b7f57696e6e657220616c7265616479207069636b65640000000000000000000000600082015250565b6000610e9d601583610e56565b9150610ea882610e67565b602082019050919050565b60006020820190508181036000830152610ecc81610e90565b9050919050565b7f4e6f207061727469636970616e74730000000000000000000000000000000000600082015250565b6000610f09600f83610e56565b9150610f1482610ed3565b602082019050919050565b60006020820190508181036000830152610f3881610efc565b9050919050565b6000819050919050565b610f5a610f5582610bae565b610f3f565b82525050565b6000610f6c8286610f49565b602082019150610f7c8285610f49565b602082019150610f8c8284610f49565b602082019150819050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610fd782610bae565b9150610fe283610bae565b925082610ff257610ff1610f9d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061103b81610bb8565b92915050565b60006020828403121561105757611056610ba9565b5b60006110658482850161102c565b91505092915050565b61107781610bae565b82525050565b60006040820190506110926000830185610c43565b61109f602083018461106e565b9392505050565b6110af81610c6d565b81146110ba57600080fd5b50565b6000815190506110cc816110a6565b92915050565b6000602082840312156110e8576110e7610ba9565b5b60006110f6848285016110bd565b91505092915050565b6000602082019050611114600083018461106e565b92915050565b7f57696e6e6572206e6f74207069636b6564207965740000000000000000000000600082015250565b6000611150601583610e56565b915061115b8261111a565b602082019050919050565b6000602082019050818103600083015261117f81611143565b9050919050565b7f4c6f747465727920656e64656400000000000000000000000000000000000000600082015250565b60006111bc600d83610e56565b91506111c782611186565b602082019050919050565b600060208201905081810360008301526111eb816111af565b9050919050565b7f416c726561647920656e74657265640000000000000000000000000000000000600082015250565b6000611228600f83610e56565b9150611233826111f2565b602082019050919050565b600060208201905081810360008301526112578161121b565b9050919050565b6000819050919050565b600061128361127e6112798461125e565b610d83565b610bae565b9050919050565b61129381611268565b82525050565b60006060820190506112ae6000830186610c43565b6112bb6020830185610c43565b6112c8604083018461128a565b949350505050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b6000611306601583610e56565b9150611311826112d0565b602082019050919050565b60006020820190508181036000830152611335816112f9565b905091905056fea264697066735822122076305a2fee2ceb3a8ed7bfd15aeb9e69163804f68ef3a5442e503ed31e2526dc64736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.