Contract
0x9f93424D9a771DAD05a71267ec47a85291F5dC58
2
Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
SocClaimCheese
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-04-15 */ // SPDX-License-Identifier: MIT // Cheese Claim with Merkle Tree by xrpant // File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (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.1 (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; 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 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; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/claim.sol pragma solidity 0.8.2; interface ICheese { function airdropCheese(address to, uint amount) external; function transferOwnership(address newOwner) external; } contract SocClaimCheese is Ownable { address public BURRATA_CONTRACT = 0xc8b11B6Ed6328F4a405D3923B90075DeEC16631A; address public DOLCE_CONTRACT = 0xcc2aECd665461ddaE6bd7C611A5F9e7E352910E0; address public PARM_CONTRACT = 0x922dB6eCD9ba5d04D770Db027F33E5e63A1e1926; uint public BURRATA_RATIO = 10; uint public DOLCE_RATIO = 10; uint public PARM_RATIO = 5; bool public paused = false; bytes32 public merkleRoot; mapping(address => uint8) public whitelistContracts; mapping(address => uint8) public whitelistClaimed; constructor() {} event ClaimedCheese(address claimer, uint cheeseType); function claimBurrata(address _contract, bytes32[] calldata _merkleProof) public { require(_claimable(msg.sender, _merkleProof, _contract), "You've got no fromage!"); ICheese c = ICheese(BURRATA_CONTRACT); c.airdropCheese(msg.sender, BURRATA_RATIO); whitelistClaimed[msg.sender] = 1; emit ClaimedCheese(msg.sender, 1); } function claimDolcelatte(address _contract, bytes32[] calldata _merkleProof) public { require(_claimable(msg.sender, _merkleProof, _contract), "You've got no fromage!"); ICheese c = ICheese(DOLCE_CONTRACT); c.airdropCheese(msg.sender, DOLCE_RATIO); whitelistClaimed[msg.sender] = 1; emit ClaimedCheese(msg.sender, 2); } function claimParmesan(address _contract, bytes32[] calldata _merkleProof) public { require(_claimable(msg.sender, _merkleProof, _contract), "You've got no fromage!"); ICheese c = ICheese(PARM_CONTRACT); c.airdropCheese(msg.sender, PARM_RATIO); whitelistClaimed[msg.sender] = 1; emit ClaimedCheese(msg.sender, 3); } function _claimable(address _claimer, bytes32[] calldata _merkleProof, address _contract) internal view returns (bool){ require(!paused, "Claiming is paused!"); require(whitelistContracts[_contract] == 1, "Invalid whitelist contract!"); require(whitelistClaimed[_claimer] == 0, "You've already claimed your cheese!"); bytes32 leaf = keccak256(abi.encodePacked(_claimer)); require(MerkleProof.verify(_merkleProof, merkleRoot, leaf), "Invalid proof!"); IERC721 nft = IERC721(_contract); require(nft.balanceOf(_claimer) > 0, "You don't own the required NFT!"); return true; } // <AdminStuff> function transferCheeseOwnership(address _contract, address _newOwner) public onlyOwner { ICheese c = ICheese(_contract); c.transferOwnership(_newOwner); } function setMerkleRoot(bytes32 _merkleRoot) public onlyOwner { merkleRoot = _merkleRoot; } function updateWhitelistContract(address _contract, uint8 _setting) public onlyOwner { whitelistContracts[_contract] = _setting; } function updateWhitelistClaimed(address _claimer, uint8 _setting) public onlyOwner { whitelistClaimed[_claimer] = _setting; } function updateBurrataAddress(address _burr) public onlyOwner { BURRATA_CONTRACT = _burr; } function updateDolceAddress(address _dolce) public onlyOwner { DOLCE_CONTRACT = _dolce; } function updateParmAddress(address _parm) public onlyOwner { PARM_CONTRACT = _parm; } function flipPaused() public onlyOwner { paused = !paused; } function updateRatios(uint _burr, uint _dolce, uint _parm) public onlyOwner { BURRATA_RATIO = _burr; DOLCE_RATIO = _dolce; PARM_RATIO = _parm; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"cheeseType","type":"uint256"}],"name":"ClaimedCheese","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"},{"inputs":[],"name":"BURRATA_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURRATA_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOLCE_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOLCE_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PARM_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PARM_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claimBurrata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claimDolcelatte","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claimParmesan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferCheeseOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_burr","type":"address"}],"name":"updateBurrataAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_dolce","type":"address"}],"name":"updateDolceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_parm","type":"address"}],"name":"updateParmAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burr","type":"uint256"},{"internalType":"uint256","name":"_dolce","type":"uint256"},{"internalType":"uint256","name":"_parm","type":"uint256"}],"name":"updateRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"},{"internalType":"uint8","name":"_setting","type":"uint8"}],"name":"updateWhitelistClaimed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint8","name":"_setting","type":"uint8"}],"name":"updateWhitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistClaimed","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistContracts","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600180546001600160a01b031990811673c8b11b6ed6328f4a405d3923b90075deec16631a1790915560028054821673cc2aecd665461ddae6bd7c611a5f9e7e352910e01790556003805490911673922db6ecd9ba5d04d770db027f33e5e63a1e1926179055600a600481905560059081556006556007805460ff1916905534801561008f57600080fd5b506100993361009e565b6100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fbc806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063802b4f9e116100de578063ba6adb0f11610097578063c3527aa411610071578063c3527aa41461032a578063db4bec441461033d578063e657668814610360578063f2fde38b1461036957610173565b8063ba6adb0f146102f1578063ba73dc1714610304578063bd4ca9cf1461031757610173565b8063802b4f9e146102695780638da5cb5b1461027c578063a5e421f01461028d578063af5a6c7e146102a0578063b349bfe8146102d5578063b898045c146102de57610173565b806338c66bf41161013057806338c66bf4146102025780635c975abb14610215578063715018a61461023257806373fec3831461023a57806374e07c6b146102435780637cb647591461025657610173565b80630a585f4b1461017857806314e209811461018d5780632575afe6146101bd5780632eb4a7ab146101d057806330d0a66c146101e7578063333171bb146101fa575b600080fd5b61018b610186366004610d91565b61037c565b005b6003546101a0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61018b6101cb366004610d91565b6103d1565b6101d960085481565b6040519081526020016101b4565b61018b6101f5366004610ecf565b61041d565b61018b610455565b61018b610210366004610de4565b610493565b6007546102229060ff1681565b60405190151581526020016101b4565b61018b610581565b6101d960065481565b61018b610251366004610de4565b6105b7565b61018b610264366004610e9f565b61069b565b61018b610277366004610db2565b6106ca565b6000546001600160a01b03166101a0565b61018b61029b366004610d91565b610757565b6102c36102ae366004610d91565b60096020526000908152604090205460ff1681565b60405160ff90911681526020016101b4565b6101d960045481565b6001546101a0906001600160a01b031681565b61018b6102ff366004610e64565b6107a3565b6002546101a0906001600160a01b031681565b61018b610325366004610de4565b6107fa565b61018b610338366004610e64565b6108df565b6102c361034b366004610d91565b600a6020526000908152604090205460ff1681565b6101d960055481565b61018b610377366004610d91565b610936565b6000546001600160a01b031633146103af5760405162461bcd60e51b81526004016103a690610efa565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146103fb5760405162461bcd60e51b81526004016103a690610efa565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104475760405162461bcd60e51b81526004016103a690610efa565b600492909255600555600655565b6000546001600160a01b0316331461047f5760405162461bcd60e51b81526004016103a690610efa565b6007805460ff19811660ff90911615179055565b61049f338383866109d1565b6104bb5760405162461bcd60e51b81526004016103a690610f2f565b6003546006546040516319d3635360e01b815233600482015260248101919091526001600160a01b039091169081906319d3635390604401600060405180830381600087803b15801561050d57600080fd5b505af1158015610521573d6000803e3d6000fd5b5050336000818152600a6020908152604091829020805460ff1916600117905581519283526003908301527f3bec5738226f2e0c00cd8db8a5565df3ef8074143b8b500ffb8a0f3185eab11293500190505b60405180910390a150505050565b6000546001600160a01b031633146105ab5760405162461bcd60e51b81526004016103a690610efa565b6105b56000610c8d565b565b6105c3338383866109d1565b6105df5760405162461bcd60e51b81526004016103a690610f2f565b6002546005546040516319d3635360e01b815233600482015260248101919091526001600160a01b039091169081906319d3635390604401600060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b5050336000818152600a6020908152604091829020805460ff1916600117905581519283526002908301527f3bec5738226f2e0c00cd8db8a5565df3ef8074143b8b500ffb8a0f3185eab1129350019050610573565b6000546001600160a01b031633146106c55760405162461bcd60e51b81526004016103a690610efa565b600855565b6000546001600160a01b031633146106f45760405162461bcd60e51b81526004016103a690610efa565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283919082169063f2fde38b90602401600060405180830381600087803b15801561073a57600080fd5b505af115801561074e573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031633146107815760405162461bcd60e51b81526004016103a690610efa565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107cd5760405162461bcd60e51b81526004016103a690610efa565b6001600160a01b03919091166000908152600960205260409020805460ff191660ff909216919091179055565b610806338383866109d1565b6108225760405162461bcd60e51b81526004016103a690610f2f565b600154600480546040516319d3635360e01b8152339281019290925260248201526001600160a01b039091169081906319d3635390604401600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b5050336000818152600a6020908152604091829020805460ff191660019081179091558251938452908301527f3bec5738226f2e0c00cd8db8a5565df3ef8074143b8b500ffb8a0f3185eab1129350019050610573565b6000546001600160a01b031633146109095760405162461bcd60e51b81526004016103a690610efa565b6001600160a01b03919091166000908152600a60205260409020805460ff191660ff909216919091179055565b6000546001600160a01b031633146109605760405162461bcd60e51b81526004016103a690610efa565b6001600160a01b0381166109c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103a6565b6109ce81610c8d565b50565b60075460009060ff1615610a1d5760405162461bcd60e51b8152602060048201526013602482015272436c61696d696e67206973207061757365642160681b60448201526064016103a6565b6001600160a01b03821660009081526009602052604090205460ff16600114610a885760405162461bcd60e51b815260206004820152601b60248201527f496e76616c69642077686974656c69737420636f6e747261637421000000000060448201526064016103a6565b6001600160a01b0385166000908152600a602052604090205460ff1615610afd5760405162461bcd60e51b815260206004820152602360248201527f596f7527766520616c726561647920636c61696d656420796f7572206368656560448201526273652160e81b60648201526084016103a6565b6040516bffffffffffffffffffffffff19606087901b166020820152600090603401604051602081830303815290604052805190602001209050610b78858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506008549150849050610cdd565b610bb55760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642070726f6f662160901b60448201526064016103a6565b6040516370a0823160e01b81526001600160a01b03878116600483015284916000918316906370a082319060240160206040518083038186803b158015610bfb57600080fd5b505afa158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c339190610eb7565b11610c805760405162461bcd60e51b815260206004820152601f60248201527f596f7520646f6e2774206f776e20746865207265717569726564204e4654210060448201526064016103a6565b5060019695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600082610cea8584610cf3565b14949350505050565b600081815b8451811015610d6d576000858281518110610d2357634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610d495760008381526020829052604090209250610d5a565b600081815260208490526040902092505b5080610d6581610f5f565b915050610cf8565b509392505050565b80356001600160a01b0381168114610d8c57600080fd5b919050565b600060208284031215610da2578081fd5b610dab82610d75565b9392505050565b60008060408385031215610dc4578081fd5b610dcd83610d75565b9150610ddb60208401610d75565b90509250929050565b600080600060408486031215610df8578081fd5b610e0184610d75565b9250602084013567ffffffffffffffff80821115610e1d578283fd5b818601915086601f830112610e30578283fd5b813581811115610e3e578384fd5b8760208083028501011115610e51578384fd5b6020830194508093505050509250925092565b60008060408385031215610e76578182fd5b610e7f83610d75565b9150602083013560ff81168114610e94578182fd5b809150509250929050565b600060208284031215610eb0578081fd5b5035919050565b600060208284031215610ec8578081fd5b5051919050565b600080600060608486031215610ee3578283fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260169082015275596f7527766520676f74206e6f2066726f6d6167652160501b604082015260600190565b6000600019821415610f7f57634e487b7160e01b81526011600452602481fd5b506001019056fea264697066735822122058c99fa48c865d1b92c8ef3d226a33f39cd016b62a82da90ac0cd3ba1c0857a064736f6c63430008020033
Deployed ByteCode Sourcemap
11887:3677:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15194:99;;;;;;:::i;:::-;;:::i;:::-;;12095:73;;;;;-1:-1:-1;;;;;12095:73:0;;;;;;-1:-1:-1;;;;;2904:32:1;;;2886:51;;2874:2;2859:18;12095:73:0;;;;;;;;15083:103;;;;;;:::i;:::-;;:::i;12319:25::-;;;;;;;;;4426::1;;;4414:2;4399:18;12319:25:0;4381:76:1;15383:176:0;;;;;;:::i;:::-;;:::i;15301:74::-;;;:::i;13314:367::-;;;;;;:::i;:::-;;:::i;12284:26::-;;;;;;;;;;;;4253:14:1;;4246:22;4228:41;;4216:2;4201:18;12284:26:0;4183:92:1;10853:103:0;;;:::i;12249:26::-;;;;;;12935:371;;;;;;:::i;:::-;;:::i;14555:104::-;;;;;;:::i;:::-;;:::i;14369:178::-;;;;;;:::i;:::-;;:::i;10202:87::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;10202:87;;14970:105;;;;;;:::i;:::-;;:::i;12353:51::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7746:4:1;7734:17;;;7716:36;;7704:2;7689:18;12353:51:0;7671:87:1;12177:30:0;;;;;;11931:76;;;;;-1:-1:-1;;;;;11931:76:0;;;14667:144;;;;;;:::i;:::-;;:::i;12014:74::-;;;;;-1:-1:-1;;;;;12014:74:0;;;12555:372;;;;;;:::i;:::-;;:::i;14823:139::-;;;;;;:::i;:::-;;:::i;12411:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12214:28;;;;;;11111:201;;;;;;:::i;:::-;;:::i;15194:99::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;;;;;;;;;15264:13:::1;:21:::0;;-1:-1:-1;;;;;;15264:21:0::1;-1:-1:-1::0;;;;;15264:21:0;;;::::1;::::0;;;::::1;::::0;;15194:99::o;15083:103::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;15155:14:::1;:23:::0;;-1:-1:-1;;;;;;15155:23:0::1;-1:-1:-1::0;;;;;15155:23:0;;;::::1;::::0;;;::::1;::::0;;15083:103::o;15383:176::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;15470:13:::1;:21:::0;;;;15502:11:::1;:20:::0;15533:10:::1;:18:::0;15383:176::o;15301:74::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;15361:6:::1;::::0;;-1:-1:-1;;15351:16:0;::::1;15361:6;::::0;;::::1;15360:7;15351:16;::::0;;15301:74::o;13314:367::-;13415:47;13426:10;13438:12;;13452:9;13415:10;:47::i;:::-;13407:82;;;;-1:-1:-1;;;13407:82:0;;;;;;;:::i;:::-;13520:13;;13575:10;;13547:39;;-1:-1:-1;;;13547:39:0;;13563:10;13547:39;;;3130:51:1;3197:18;;;3190:34;;;;-1:-1:-1;;;;;13520:13:0;;;;;;13547:15;;3103:18:1;;13547:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13614:10:0;13597:28;;;;:16;:28;;;;;;;;;:32;;-1:-1:-1;;13597:32:0;13628:1;13597:32;;;13645:28;;3130:51:1;;;13671:1:0;3197:18:1;;;3190:34;13645:28:0;;-1:-1:-1;3103:18:1;;-1:-1:-1;13645:28:0;;;;;;;;13314:367;;;;:::o;10853:103::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;10918:30:::1;10945:1;10918:18;:30::i;:::-;10853:103::o:0;12935:371::-;13038:47;13049:10;13061:12;;13075:9;13038:10;:47::i;:::-;13030:82;;;;-1:-1:-1;;;13030:82:0;;;;;;;:::i;:::-;13143:14;;13199:11;;13171:40;;-1:-1:-1;;;13171:40:0;;13187:10;13171:40;;;3130:51:1;3197:18;;;3190:34;;;;-1:-1:-1;;;;;13143:14:0;;;;;;13171:15;;3103:18:1;;13171:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13239:10:0;13222:28;;;;:16;:28;;;;;;;;;:32;;-1:-1:-1;;13222:32:0;13253:1;13222:32;;;13270:28;;3130:51:1;;;13296:1:0;3197:18:1;;;3190:34;13270:28:0;;-1:-1:-1;3103:18:1;;-1:-1:-1;13270:28:0;3085:145:1;14555:104:0;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;14627:10:::1;:24:::0;14555:104::o;14369:178::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;14509:30:::1;::::0;-1:-1:-1;;;14509:30:0;;-1:-1:-1;;;;;2904:32:1;;;14509:30:0::1;::::0;::::1;2886:51:1::0;14488:9:0;;14509:19;;::::1;::::0;::::1;::::0;2859:18:1;;14509:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10493:1;14369:178:::0;;:::o;14970:105::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;15043:16:::1;:24:::0;;-1:-1:-1;;;;;;15043:24:0::1;-1:-1:-1::0;;;;;15043:24:0;;;::::1;::::0;;;::::1;::::0;;14970:105::o;14667:144::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14763:29:0;;;::::1;;::::0;;;:18:::1;:29;::::0;;;;:40;;-1:-1:-1;;14763:40:0::1;;::::0;;::::1;::::0;;;::::1;::::0;;14667:144::o;12555:372::-;12655:47;12666:10;12678:12;;12692:9;12655:10;:47::i;:::-;12647:82;;;;-1:-1:-1;;;12647:82:0;;;;;;;:::i;:::-;12760:16;;12818:13;;;12790:42;;-1:-1:-1;;;12790:42:0;;12806:10;12790:42;;;3130:51:1;;;;3197:18;;;3190:34;-1:-1:-1;;;;;12760:16:0;;;;;;12790:15;;3103:18:1;;12790:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12860:10:0;12843:28;;;;:16;:28;;;;;;;;;:32;;-1:-1:-1;;12843:32:0;12874:1;12843:32;;;;;;12891:28;;3130:51:1;;;3197:18;;;3190:34;12891:28:0;;-1:-1:-1;3103:18:1;;-1:-1:-1;12891:28:0;3085:145:1;14823:139:0;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14917:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:37;;-1:-1:-1;;14917:37:0::1;;::::0;;::::1;::::0;;;::::1;::::0;;14823:139::o;11111:201::-;10248:7;10275:6;-1:-1:-1;;;;;10275:6:0;9006:10;10422:23;10414:68;;;;-1:-1:-1;;;10414:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11200:22:0;::::1;11192:73;;;::::0;-1:-1:-1;;;11192:73:0;;5367:2:1;11192:73:0::1;::::0;::::1;5349:21:1::0;5406:2;5386:18;;;5379:30;5445:34;5425:18;;;5418:62;-1:-1:-1;;;5496:18:1;;;5489:36;5542:19;;11192:73:0::1;5339:228:1::0;11192:73:0::1;11276:28;11295:8;11276:18;:28::i;:::-;11111:201:::0;:::o;13689:651::-;13827:6;;13802:4;;13827:6;;13826:7;13818:39;;;;-1:-1:-1;;;13818:39:0;;6534:2:1;13818:39:0;;;6516:21:1;6573:2;6553:18;;;6546:30;-1:-1:-1;;;6592:18:1;;;6585:49;6651:18;;13818:39:0;6506:169:1;13818:39:0;-1:-1:-1;;;;;13876:29:0;;;;;;:18;:29;;;;;;;;;:34;13868:74;;;;-1:-1:-1;;;13868:74:0;;5774:2:1;13868:74:0;;;5756:21:1;5813:2;5793:18;;;5786:30;5852:29;5832:18;;;5825:57;5899:18;;13868:74:0;5746:177:1;13868:74:0;-1:-1:-1;;;;;13961:26:0;;;;;;:16;:26;;;;;;;;:31;13953:79;;;;-1:-1:-1;;;13953:79:0;;6130:2:1;13953:79:0;;;6112:21:1;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;-1:-1:-1;;;6259:18:1;;;6252:33;6302:19;;13953:79:0;6102:225:1;13953:79:0;14068:26;;-1:-1:-1;;2655:2:1;2651:15;;;2647:53;14068:26:0;;;2635:66:1;14043:12:0;;2717::1;;14068:26:0;;;;;;;;;;;;14058:37;;;;;;14043:52;;14114:50;14133:12;;14114:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14147:10:0;;;-1:-1:-1;14159:4:0;;-1:-1:-1;14114:18:0;:50::i;:::-;14106:77;;;;-1:-1:-1;;;14106:77:0;;5024:2:1;14106:77:0;;;5006:21:1;5063:2;5043:18;;;5036:30;-1:-1:-1;;;5082:18:1;;;5075:44;5136:18;;14106:77:0;4996:164:1;14106:77:0;14245:23;;-1:-1:-1;;;14245:23:0;;-1:-1:-1;;;;;2904:32:1;;;14245:23:0;;;2886:51:1;14216:9:0;;14194:11;;14245:13;;;;;2859:18:1;;14245:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;14237:71;;;;-1:-1:-1;;;14237:71:0;;4664:2:1;14237:71:0;;;4646:21:1;4703:2;4683:18;;;4676:30;4742:33;4722:18;;;4715:61;4793:18;;14237:71:0;4636:181:1;14237:71:0;-1:-1:-1;14328:4:0;;13689:651;-1:-1:-1;;;;;;13689:651:0:o;11472:191::-;11546:16;11565:6;;-1:-1:-1;;;;;11582:17:0;;;-1:-1:-1;;;;;;11582:17:0;;;;;;11615:40;;11565:6;;;;;;;11615:40;;11546:16;11615:40;11472:191;;:::o;1002:190::-;1127:4;1180;1151:25;1164:5;1171:4;1151:12;:25::i;:::-;:33;;1002:190;-1:-1:-1;;;;1002:190:0:o;1554:675::-;1637:7;1680:4;1637:7;1695:497;1719:5;:12;1715:1;:16;1695:497;;;1753:20;1776:5;1782:1;1776:8;;;;;;-1:-1:-1;;;1776:8:0;;;;;;;;;;;;;;;1753:31;;1819:12;1803;:28;1799:382;;2305:13;2355:15;;;2391:4;2384:15;;;2438:4;2422:21;;1931:57;;1799:382;;;2305:13;2355:15;;;2391:4;2384:15;;;2438:4;2422:21;;2108:57;;1799:382;-1:-1:-1;1733:3:0;;;;:::i;:::-;;;;1695:497;;;-1:-1:-1;2209:12:0;1554:675;-1:-1:-1;;;1554:675:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:1:o;393:270::-;;;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:740::-;;;;832:2;820:9;811:7;807:23;803:32;800:2;;;853:6;845;838:22;800:2;881:29;900:9;881:29;:::i;:::-;871:39;;961:2;950:9;946:18;933:32;984:18;1025:2;1017:6;1014:14;1011:2;;;1046:6;1038;1031:22;1011:2;1089:6;1078:9;1074:22;1064:32;;1134:7;1127:4;1123:2;1119:13;1115:27;1105:2;;1161:6;1153;1146:22;1105:2;1206;1193:16;1232:2;1224:6;1221:14;1218:2;;;1253:6;1245;1238:22;1218:2;1312:7;1307:2;1301;1293:6;1289:15;1285:2;1281:24;1277:33;1274:46;1271:2;;;1338:6;1330;1323:22;1271:2;1374;1370;1366:11;1356:21;;1396:6;1386:16;;;;;790:618;;;;;:::o;1413:363::-;;;1540:2;1528:9;1519:7;1515:23;1511:32;1508:2;;;1561:6;1553;1546:22;1508:2;1589:29;1608:9;1589:29;:::i;:::-;1579:39;;1668:2;1657:9;1653:18;1640:32;1712:4;1705:5;1701:16;1694:5;1691:27;1681:2;;1737:6;1729;1722:22;1681:2;1765:5;1755:15;;;1498:278;;;;;:::o;1781:190::-;;1893:2;1881:9;1872:7;1868:23;1864:32;1861:2;;;1914:6;1906;1899:22;1861:2;-1:-1:-1;1942:23:1;;1851:120;-1:-1:-1;1851:120:1:o;1976:194::-;;2099:2;2087:9;2078:7;2074:23;2070:32;2067:2;;;2120:6;2112;2105:22;2067:2;-1:-1:-1;2148:16:1;;2057:113;-1:-1:-1;2057:113:1:o;2175:326::-;;;;2321:2;2309:9;2300:7;2296:23;2292:32;2289:2;;;2342:6;2334;2327:22;2289:2;-1:-1:-1;;2370:23:1;;;2440:2;2425:18;;2412:32;;-1:-1:-1;2491:2:1;2476:18;;;2463:32;;2279:222;-1:-1:-1;2279:222:1:o;6680:356::-;6882:2;6864:21;;;6901:18;;;6894:30;6960:34;6955:2;6940:18;;6933:62;7027:2;7012:18;;6854:182::o;7041:346::-;7243:2;7225:21;;;7282:2;7262:18;;;7255:30;-1:-1:-1;;;7316:2:1;7301:18;;7294:52;7378:2;7363:18;;7215:172::o;7763:236::-;;-1:-1:-1;;7823:17:1;;7820:2;;;-1:-1:-1;;;7863:33:1;;7919:4;7916:1;7909:15;7949:4;7870:3;7937:17;7820:2;-1:-1:-1;7991:1:1;7980:13;;7810:189::o
Swarm Source
ipfs://58c99fa48c865d1b92c8ef3d226a33f39cd016b62a82da90ac0cd3ba1c0857a0
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.