More Info
Private Name Tags
ContractCreator
Latest 24 from a total of 24 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20041050 | 127 days ago | IN | 0 ETH | 0.00206983 | ||||
Withdraw | 20040675 | 127 days ago | IN | 0 ETH | 0.00159108 | ||||
Withdraw | 20038418 | 127 days ago | IN | 0 ETH | 0.00104476 | ||||
Withdraw | 20033622 | 128 days ago | IN | 0 ETH | 0.00165106 | ||||
Withdraw | 20033599 | 128 days ago | IN | 0 ETH | 0.0017532 | ||||
Withdraw | 20033541 | 128 days ago | IN | 0 ETH | 0.00200256 | ||||
Withdraw | 20033524 | 128 days ago | IN | 0 ETH | 0.00180337 | ||||
Withdraw | 20031475 | 128 days ago | IN | 0 ETH | 0.00174825 | ||||
Withdraw | 20031159 | 128 days ago | IN | 0 ETH | 0.00111741 | ||||
Withdraw | 20030811 | 128 days ago | IN | 0 ETH | 0.00083819 | ||||
Withdraw | 20026365 | 129 days ago | IN | 0 ETH | 0.00178048 | ||||
Withdraw | 20025409 | 129 days ago | IN | 0 ETH | 0.00138375 | ||||
Withdraw | 20025279 | 129 days ago | IN | 0 ETH | 0.0018802 | ||||
Withdraw | 20018457 | 130 days ago | IN | 0 ETH | 0.0014259 | ||||
Withdraw | 20018174 | 130 days ago | IN | 0 ETH | 0.00076307 | ||||
Withdraw | 20018172 | 130 days ago | IN | 0 ETH | 0.0007628 | ||||
Withdraw | 20018171 | 130 days ago | IN | 0 ETH | 0.00033591 | ||||
Withdraw | 20018170 | 130 days ago | IN | 0 ETH | 0.00076498 | ||||
Withdraw | 20018081 | 130 days ago | IN | 0 ETH | 0.00079983 | ||||
Withdraw | 19981753 | 135 days ago | IN | 0 ETH | 0.00108245 | ||||
Withdraw | 19940960 | 141 days ago | IN | 0 ETH | 0.00111383 | ||||
Withdraw | 19939851 | 141 days ago | IN | 0 ETH | 0.00079447 | ||||
Withdraw | 19939842 | 141 days ago | IN | 0 ETH | 0.00129849 | ||||
0x60806040 | 19874432 | 150 days ago | IN | 0 ETH | 0.01070333 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
JokSocialRewards
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /// @title Jok Social Rewards /// @author Andre Costa @ MyWeb3Startup.com // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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; address internal _oldOwner; uint256 internal lastOwnershipTransfer; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Returns the address of the previous owner. */ function oldOwner() public view virtual returns (address) { return _oldOwner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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; _oldOwner = oldOwner_; _owner = newOwner; lastOwnershipTransfer = block.timestamp; emit OwnershipTransferred(oldOwner_, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @title JokSocialRewards * @dev A smart contract for retrieving social rewards in JOK. * The contract enables users to withdraw staked funds and claimed rewards securely using ECDSA signatures. */ contract JokSocialRewards is Ownable { // ERC-20 token used for staking IERC20 public jokToken; // Struct to represent social rewards struct SocialRewards { uint256 totalClaimed; uint256 lastClaimDay; } // Mapping to store affiliate commissions for each address mapping(address => SocialRewards) public socialRewards; // Address of the staking signer address public signer = 0x8aaBaf348B299E759D091F17100a95A0F9caD89C; // Nonce to prevent replay attacks mapping(address => uint256) public nonce; // Event emitted on successful withdrawal event Withdraw(address indexed staker, uint256 earnings); /** * @dev Constructor function to initialize the contract. */ constructor() { jokToken = IERC20(0xA728Aa2De568766E2Fa4544Ec7A77f79c0bf9F97); } /** * @dev Allows a user to withdraw staked funds and claimed rewards from the contract. * @param earnings The total amount of staking rewards to be withdrawn. * @param _v ECDSA signature parameter v. * @param _r ECDSA signature parameters r. * @param _s ECDSA signature parameters s. */ function withdraw(uint256 earnings,string memory message, uint8 _v, bytes32 _r, bytes32 _s) external { // Validate the ECDSA signature for secure withdrawal uint256 totalEarnings = earnings; require(isValidSignature(msg.sender, totalEarnings, message, _v, _r, _s), "Invalid signature!"); uint256 currentDay = getCurrentDay(); // Update affiliate commission information socialRewards[msg.sender].totalClaimed += earnings; socialRewards[msg.sender].lastClaimDay = currentDay; nonce[msg.sender]++; // Transfer JOK tokens to the user require(jokToken.transfer(msg.sender, earnings), "Token transfer failed!"); emit Withdraw(msg.sender, earnings); } // MISC /** * @dev Function to get the current day based on the contract's timestamp. * @return The current day. */ function getCurrentDay() public view returns (uint256) { return block.timestamp / 1 days; } function getMessageHash( address beneficiary, uint amount, string memory message, uint256 _nonce ) public view returns (bytes32) { return keccak256(abi.encodePacked(address(this), beneficiary, amount, message, _nonce)); } /** * @dev Internal function to validate an ECDSA signature for secure staking-related transactions. * @param beneficiary The address that will receive the transaction result. * @param amount The total amount involved in the transaction. * @param _v ECDSA signature parameter v. * @param _r ECDSA signature parameters r. * @param _s ECDSA signature parameters s. * @return A boolean indicating whether the signature is valid. */ function isValidSignature(address beneficiary, uint256 amount, string memory message, uint8 _v, bytes32 _r, bytes32 _s) internal view returns (bool) { bytes32 messageHash = getMessageHash(beneficiary, amount, message, nonce[beneficiary]); // bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash); bytes32 prefixedHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", messageHash)); address recoveredSigner = ecrecover(prefixedHash, _v, _r, _s); return recoveredSigner == signer; } // ADMIN /** * @notice Sets the address of the signer. * @dev This function updates the signer address. * @param _signer The new address of the signer. */ function setSigner(address _signer) external onlyOwner { signer = _signer; } /** * @dev Function to set the ERC-20 token used for staking. * @param _jokToken The new address of the ERC-20 token. */ function setJokToken(address _jokToken) external onlyOwner { jokToken = IERC20(_jokToken); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":true,"internalType":"address","name":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"earnings","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"getCurrentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"message","type":"string"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getMessageHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"jokToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_jokToken","type":"address"}],"name":"setJokToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_signer","type":"address"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"socialRewards","outputs":[{"internalType":"uint256","name":"totalClaimed","type":"uint256"},{"internalType":"uint256","name":"lastClaimDay","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"earnings","type":"uint256"},{"internalType":"string","name":"message","type":"string"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052738aabaf348b299e759d091f17100a95a0f9cad89c60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015610063575f80fd5b506100806100756100d960201b60201c565b6100e060201b60201c565b73a728aa2de568766e2fa4544ec7a77f79c0bf9f9760035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101e8565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426002819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611555806101f55f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063715018a61161008a578063a35f8a4011610064578063a35f8a40146101d7578063d3d7b35d14610207578063f2fde38b14610238578063f487404f14610254576100cd565b8063715018a614610193578063723f9dfe1461019d5780638da5cb5b146101b9576100cd565b80631f418dde146100d1578063238ac933146100ef5780633e6968b61461010d5780634a7e255f1461012b5780636c19e7831461014757806370ae92d214610163575b5f80fd5b6100d9610272565b6040516100e69190610bb2565b60405180910390f35b6100f7610297565b6040516101049190610beb565b60405180910390f35b6101156102bc565b6040516101229190610c1c565b60405180910390f35b61014560048036038101906101409190610c70565b6102d1565b005b610161600480360381019061015c9190610c70565b610390565b005b61017d60048036038101906101789190610c70565b61044f565b60405161018a9190610c1c565b60405180910390f35b61019b610464565b005b6101b760048036038101906101b29190610e6a565b6104eb565b005b6101c1610765565b6040516101ce9190610beb565b60405180910390f35b6101f160048036038101906101ec9190610efd565b61078c565b6040516101fe9190610f8c565b60405180910390f35b610221600480360381019061021c9190610c70565b6107c6565b60405161022f929190610fa5565b60405180910390f35b610252600480360381019061024d9190610c70565b6107e6565b005b61025c6108dc565b6040516102699190610beb565b60405180910390f35b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f62015180426102cc9190611026565b905090565b6102d9610904565b73ffffffffffffffffffffffffffffffffffffffff166102f7610765565b73ffffffffffffffffffffffffffffffffffffffff161461034d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610344906110b0565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610398610904565b73ffffffffffffffffffffffffffffffffffffffff166103b6610765565b73ffffffffffffffffffffffffffffffffffffffff161461040c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610403906110b0565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6006602052805f5260405f205f915090505481565b61046c610904565b73ffffffffffffffffffffffffffffffffffffffff1661048a610765565b73ffffffffffffffffffffffffffffffffffffffff16146104e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d7906110b0565b60405180910390fd5b6104e95f61090b565b565b5f8590506104fd338287878787610a13565b61053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053390611118565b60405180910390fd5b5f6105456102bc565b90508660045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546105959190611136565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001018190555060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061062e90611169565b919050555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33896040518363ffffffff1660e01b815260040161068f9291906111b0565b6020604051808303815f875af11580156106ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf919061120c565b61070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070590611281565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364886040516107549190610c1c565b60405180910390a250505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f30858585856040516020016107a6959493929190611356565b604051602081830303815290604052805190602001209050949350505050565b6004602052805f5260405f205f91509050805f0154908060010154905082565b6107ee610904565b73ffffffffffffffffffffffffffffffffffffffff1661080c610765565b73ffffffffffffffffffffffffffffffffffffffff1614610862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610859906110b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790611420565b60405180910390fd5b6108d98161090b565b50565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426002819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80610a5e88888860065f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461078c565b90505f81604051602001610a7291906114a8565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051610aad94939291906114dc565b6020604051602081039080840390855afa158015610acd573d5f803e3d5ffd5b50505060206040510351905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161493505050509695505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f610b7a610b75610b7084610b38565b610b57565b610b38565b9050919050565b5f610b8b82610b60565b9050919050565b5f610b9c82610b81565b9050919050565b610bac81610b92565b82525050565b5f602082019050610bc55f830184610ba3565b92915050565b5f610bd582610b38565b9050919050565b610be581610bcb565b82525050565b5f602082019050610bfe5f830184610bdc565b92915050565b5f819050919050565b610c1681610c04565b82525050565b5f602082019050610c2f5f830184610c0d565b92915050565b5f604051905090565b5f80fd5b5f80fd5b610c4f81610bcb565b8114610c59575f80fd5b50565b5f81359050610c6a81610c46565b92915050565b5f60208284031215610c8557610c84610c3e565b5b5f610c9284828501610c5c565b91505092915050565b610ca481610c04565b8114610cae575f80fd5b50565b5f81359050610cbf81610c9b565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610d1382610ccd565b810181811067ffffffffffffffff82111715610d3257610d31610cdd565b5b80604052505050565b5f610d44610c35565b9050610d508282610d0a565b919050565b5f67ffffffffffffffff821115610d6f57610d6e610cdd565b5b610d7882610ccd565b9050602081019050919050565b828183375f83830152505050565b5f610da5610da084610d55565b610d3b565b905082815260208101848484011115610dc157610dc0610cc9565b5b610dcc848285610d85565b509392505050565b5f82601f830112610de857610de7610cc5565b5b8135610df8848260208601610d93565b91505092915050565b5f60ff82169050919050565b610e1681610e01565b8114610e20575f80fd5b50565b5f81359050610e3181610e0d565b92915050565b5f819050919050565b610e4981610e37565b8114610e53575f80fd5b50565b5f81359050610e6481610e40565b92915050565b5f805f805f60a08688031215610e8357610e82610c3e565b5b5f610e9088828901610cb1565b955050602086013567ffffffffffffffff811115610eb157610eb0610c42565b5b610ebd88828901610dd4565b9450506040610ece88828901610e23565b9350506060610edf88828901610e56565b9250506080610ef088828901610e56565b9150509295509295909350565b5f805f8060808587031215610f1557610f14610c3e565b5b5f610f2287828801610c5c565b9450506020610f3387828801610cb1565b935050604085013567ffffffffffffffff811115610f5457610f53610c42565b5b610f6087828801610dd4565b9250506060610f7187828801610cb1565b91505092959194509250565b610f8681610e37565b82525050565b5f602082019050610f9f5f830184610f7d565b92915050565b5f604082019050610fb85f830185610c0d565b610fc56020830184610c0d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61103082610c04565b915061103b83610c04565b92508261104b5761104a610fcc565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61109a602083611056565b91506110a582611066565b602082019050919050565b5f6020820190508181035f8301526110c78161108e565b9050919050565b7f496e76616c6964207369676e61747572652100000000000000000000000000005f82015250565b5f611102601283611056565b915061110d826110ce565b602082019050919050565b5f6020820190508181035f83015261112f816110f6565b9050919050565b5f61114082610c04565b915061114b83610c04565b925082820190508082111561116357611162610ff9565b5b92915050565b5f61117382610c04565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111a5576111a4610ff9565b5b600182019050919050565b5f6040820190506111c35f830185610bdc565b6111d06020830184610c0d565b9392505050565b5f8115159050919050565b6111eb816111d7565b81146111f5575f80fd5b50565b5f81519050611206816111e2565b92915050565b5f6020828403121561122157611220610c3e565b5b5f61122e848285016111f8565b91505092915050565b7f546f6b656e207472616e73666572206661696c656421000000000000000000005f82015250565b5f61126b601683611056565b915061127682611237565b602082019050919050565b5f6020820190508181035f8301526112988161125f565b9050919050565b5f8160601b9050919050565b5f6112b58261129f565b9050919050565b5f6112c6826112ab565b9050919050565b6112de6112d982610bcb565b6112bc565b82525050565b5f819050919050565b6112fe6112f982610c04565b6112e4565b82525050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61133082611304565b61133a818561130e565b935061134a818560208601611318565b80840191505092915050565b5f61136182886112cd565b60148201915061137182876112cd565b60148201915061138182866112ed565b6020820191506113918285611326565b915061139d82846112ed565b6020820191508190509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61140a602683611056565b9150611415826113b0565b604082019050919050565b5f6020820190508181035f830152611437816113fe565b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f611472601c8361130e565b915061147d8261143e565b601c82019050919050565b5f819050919050565b6114a261149d82610e37565b611488565b82525050565b5f6114b282611466565b91506114be8284611491565b60208201915081905092915050565b6114d681610e01565b82525050565b5f6080820190506114ef5f830187610f7d565b6114fc60208301866114cd565b6115096040830185610f7d565b6115166060830184610f7d565b9594505050505056fea2646970667358221220fcff13d959289488a62854879a557b80acf42fa87228341f9efdf0d17d03bd9564736f6c63430008190033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063715018a61161008a578063a35f8a4011610064578063a35f8a40146101d7578063d3d7b35d14610207578063f2fde38b14610238578063f487404f14610254576100cd565b8063715018a614610193578063723f9dfe1461019d5780638da5cb5b146101b9576100cd565b80631f418dde146100d1578063238ac933146100ef5780633e6968b61461010d5780634a7e255f1461012b5780636c19e7831461014757806370ae92d214610163575b5f80fd5b6100d9610272565b6040516100e69190610bb2565b60405180910390f35b6100f7610297565b6040516101049190610beb565b60405180910390f35b6101156102bc565b6040516101229190610c1c565b60405180910390f35b61014560048036038101906101409190610c70565b6102d1565b005b610161600480360381019061015c9190610c70565b610390565b005b61017d60048036038101906101789190610c70565b61044f565b60405161018a9190610c1c565b60405180910390f35b61019b610464565b005b6101b760048036038101906101b29190610e6a565b6104eb565b005b6101c1610765565b6040516101ce9190610beb565b60405180910390f35b6101f160048036038101906101ec9190610efd565b61078c565b6040516101fe9190610f8c565b60405180910390f35b610221600480360381019061021c9190610c70565b6107c6565b60405161022f929190610fa5565b60405180910390f35b610252600480360381019061024d9190610c70565b6107e6565b005b61025c6108dc565b6040516102699190610beb565b60405180910390f35b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f62015180426102cc9190611026565b905090565b6102d9610904565b73ffffffffffffffffffffffffffffffffffffffff166102f7610765565b73ffffffffffffffffffffffffffffffffffffffff161461034d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610344906110b0565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610398610904565b73ffffffffffffffffffffffffffffffffffffffff166103b6610765565b73ffffffffffffffffffffffffffffffffffffffff161461040c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610403906110b0565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6006602052805f5260405f205f915090505481565b61046c610904565b73ffffffffffffffffffffffffffffffffffffffff1661048a610765565b73ffffffffffffffffffffffffffffffffffffffff16146104e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d7906110b0565b60405180910390fd5b6104e95f61090b565b565b5f8590506104fd338287878787610a13565b61053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053390611118565b60405180910390fd5b5f6105456102bc565b90508660045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546105959190611136565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001018190555060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061062e90611169565b919050555060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33896040518363ffffffff1660e01b815260040161068f9291906111b0565b6020604051808303815f875af11580156106ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cf919061120c565b61070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070590611281565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364886040516107549190610c1c565b60405180910390a250505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f30858585856040516020016107a6959493929190611356565b604051602081830303815290604052805190602001209050949350505050565b6004602052805f5260405f205f91509050805f0154908060010154905082565b6107ee610904565b73ffffffffffffffffffffffffffffffffffffffff1661080c610765565b73ffffffffffffffffffffffffffffffffffffffff1614610862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610859906110b0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c790611420565b60405180910390fd5b6108d98161090b565b50565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426002819055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80610a5e88888860065f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461078c565b90505f81604051602001610a7291906114a8565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051610aad94939291906114dc565b6020604051602081039080840390855afa158015610acd573d5f803e3d5ffd5b50505060206040510351905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161493505050509695505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f610b7a610b75610b7084610b38565b610b57565b610b38565b9050919050565b5f610b8b82610b60565b9050919050565b5f610b9c82610b81565b9050919050565b610bac81610b92565b82525050565b5f602082019050610bc55f830184610ba3565b92915050565b5f610bd582610b38565b9050919050565b610be581610bcb565b82525050565b5f602082019050610bfe5f830184610bdc565b92915050565b5f819050919050565b610c1681610c04565b82525050565b5f602082019050610c2f5f830184610c0d565b92915050565b5f604051905090565b5f80fd5b5f80fd5b610c4f81610bcb565b8114610c59575f80fd5b50565b5f81359050610c6a81610c46565b92915050565b5f60208284031215610c8557610c84610c3e565b5b5f610c9284828501610c5c565b91505092915050565b610ca481610c04565b8114610cae575f80fd5b50565b5f81359050610cbf81610c9b565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610d1382610ccd565b810181811067ffffffffffffffff82111715610d3257610d31610cdd565b5b80604052505050565b5f610d44610c35565b9050610d508282610d0a565b919050565b5f67ffffffffffffffff821115610d6f57610d6e610cdd565b5b610d7882610ccd565b9050602081019050919050565b828183375f83830152505050565b5f610da5610da084610d55565b610d3b565b905082815260208101848484011115610dc157610dc0610cc9565b5b610dcc848285610d85565b509392505050565b5f82601f830112610de857610de7610cc5565b5b8135610df8848260208601610d93565b91505092915050565b5f60ff82169050919050565b610e1681610e01565b8114610e20575f80fd5b50565b5f81359050610e3181610e0d565b92915050565b5f819050919050565b610e4981610e37565b8114610e53575f80fd5b50565b5f81359050610e6481610e40565b92915050565b5f805f805f60a08688031215610e8357610e82610c3e565b5b5f610e9088828901610cb1565b955050602086013567ffffffffffffffff811115610eb157610eb0610c42565b5b610ebd88828901610dd4565b9450506040610ece88828901610e23565b9350506060610edf88828901610e56565b9250506080610ef088828901610e56565b9150509295509295909350565b5f805f8060808587031215610f1557610f14610c3e565b5b5f610f2287828801610c5c565b9450506020610f3387828801610cb1565b935050604085013567ffffffffffffffff811115610f5457610f53610c42565b5b610f6087828801610dd4565b9250506060610f7187828801610cb1565b91505092959194509250565b610f8681610e37565b82525050565b5f602082019050610f9f5f830184610f7d565b92915050565b5f604082019050610fb85f830185610c0d565b610fc56020830184610c0d565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61103082610c04565b915061103b83610c04565b92508261104b5761104a610fcc565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61109a602083611056565b91506110a582611066565b602082019050919050565b5f6020820190508181035f8301526110c78161108e565b9050919050565b7f496e76616c6964207369676e61747572652100000000000000000000000000005f82015250565b5f611102601283611056565b915061110d826110ce565b602082019050919050565b5f6020820190508181035f83015261112f816110f6565b9050919050565b5f61114082610c04565b915061114b83610c04565b925082820190508082111561116357611162610ff9565b5b92915050565b5f61117382610c04565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111a5576111a4610ff9565b5b600182019050919050565b5f6040820190506111c35f830185610bdc565b6111d06020830184610c0d565b9392505050565b5f8115159050919050565b6111eb816111d7565b81146111f5575f80fd5b50565b5f81519050611206816111e2565b92915050565b5f6020828403121561122157611220610c3e565b5b5f61122e848285016111f8565b91505092915050565b7f546f6b656e207472616e73666572206661696c656421000000000000000000005f82015250565b5f61126b601683611056565b915061127682611237565b602082019050919050565b5f6020820190508181035f8301526112988161125f565b9050919050565b5f8160601b9050919050565b5f6112b58261129f565b9050919050565b5f6112c6826112ab565b9050919050565b6112de6112d982610bcb565b6112bc565b82525050565b5f819050919050565b6112fe6112f982610c04565b6112e4565b82525050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f61133082611304565b61133a818561130e565b935061134a818560208601611318565b80840191505092915050565b5f61136182886112cd565b60148201915061137182876112cd565b60148201915061138182866112ed565b6020820191506113918285611326565b915061139d82846112ed565b6020820191508190509695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61140a602683611056565b9150611415826113b0565b604082019050919050565b5f6020820190508181035f830152611437816113fe565b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f611472601c8361130e565b915061147d8261143e565b601c82019050919050565b5f819050919050565b6114a261149d82610e37565b611488565b82525050565b5f6114b282611466565b91506114be8284611491565b60208201915081905092915050565b6114d681610e01565b82525050565b5f6080820190506114ef5f830187610f7d565b6114fc60208301866114cd565b6115096040830185610f7d565b6115166060830184610f7d565b9594505050505056fea2646970667358221220fcff13d959289488a62854879a557b80acf42fa87228341f9efdf0d17d03bd9564736f6c63430008190033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
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.