More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 77 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 16628132 | 609 days ago | IN | 0 ETH | 0.00242423 | ||||
Set Winner | 16624449 | 610 days ago | IN | 0 ETH | 0.00067339 | ||||
Lottery | 16624425 | 610 days ago | IN | 0 ETH | 0.00087232 | ||||
Request Random W... | 16623809 | 610 days ago | IN | 0 ETH | 0.00496886 | ||||
Request Random W... | 16623755 | 610 days ago | IN | 0 ETH | 0.00674449 | ||||
Set Ticket Url | 16623752 | 610 days ago | IN | 0 ETH | 0.00229307 | ||||
Claim | 16601137 | 613 days ago | IN | 0 ETH | 0.00240854 | ||||
Set Winner | 16574368 | 617 days ago | IN | 0 ETH | 0.00105393 | ||||
Lottery | 16574358 | 617 days ago | IN | 0 ETH | 0.00143506 | ||||
Request Random W... | 16573758 | 617 days ago | IN | 0 ETH | 0.00674804 | ||||
Set Ticket Url | 16573617 | 617 days ago | IN | 0 ETH | 0.00345982 | ||||
Claim | 16527359 | 623 days ago | IN | 0 ETH | 0.00333124 | ||||
Set Winner | 16524244 | 624 days ago | IN | 0 ETH | 0.00075373 | ||||
Lottery | 16524233 | 624 days ago | IN | 0 ETH | 0.00086326 | ||||
Request Random W... | 16523565 | 624 days ago | IN | 0 ETH | 0.00541498 | ||||
Set Ticket Url | 16523552 | 624 days ago | IN | 0 ETH | 0.00225616 | ||||
Claim | 16476603 | 631 days ago | IN | 0 ETH | 0.00115917 | ||||
Set Winner | 16474143 | 631 days ago | IN | 0 ETH | 0.00036696 | ||||
Set Winner | 16474142 | 631 days ago | IN | 0 ETH | 0.00068212 | ||||
Lottery | 16474084 | 631 days ago | IN | 0 ETH | 0.00091692 | ||||
Request Random W... | 16473389 | 631 days ago | IN | 0 ETH | 0.00463296 | ||||
Set Ticket Url | 16473386 | 631 days ago | IN | 0 ETH | 0.00222127 | ||||
Claim | 16430007 | 637 days ago | IN | 0 ETH | 0.00201601 | ||||
Set Winner | 16423976 | 638 days ago | IN | 0 ETH | 0.00065102 | ||||
Lottery | 16423963 | 638 days ago | IN | 0 ETH | 0.00085543 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MegaSerumLottery
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense pragma solidity ^0.8.9; import "@chainlink/contracts/src/v0.8/ConfirmedOwner.sol"; import "@chainlink/contracts/src/v0.8/VRFV2WrapperConsumerBase.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol"; interface DogcSerumInterface { function balanceOf(address account, uint256 id) external view returns (uint256); function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) external; } contract MegaSerumLottery is VRFV2WrapperConsumerBase, ConfirmedOwner, ReentrancyGuard, ERC1155Holder { DogcSerumInterface public immutable serum; event RequestSent(uint256 requestId, uint32 numWords); event RequestFulfilled( uint256 requestId, uint256[] randomWords, uint256 payment ); event LotteryResults(uint16[] results); event ClaimSerum(uint256 _phase); struct RequestStatus { uint256 paid; // amount paid in link bool fulfilled; // whether the request has been successfully fulfilled uint256[] randomWords; } mapping(uint256 => RequestStatus) public s_requests; /* requestId --> requestStatus */ uint256[] public requestIds; uint256 public lastRequestId; address public linkAddress; address public wrapperAddress; uint32 private callbackGasLimit = 100000; uint16 private requestConfirmations = 3; uint32 private numWords = 1; uint16[] public results; struct PhaseInfo { string ticketUrl; uint256 ticketsAmount; address winner; } mapping(uint256 => PhaseInfo) public phaseInfo; mapping(uint256 => bool) public claimed; constructor(address _linkAddress, address _wrapperAddress, address _serum) ConfirmedOwner(msg.sender) VRFV2WrapperConsumerBase(_linkAddress, _wrapperAddress) { linkAddress = _linkAddress; wrapperAddress = _wrapperAddress; serum = DogcSerumInterface(_serum); } function requestRandomWords() external onlyOwner returns (uint256 requestId) { requestId = requestRandomness( callbackGasLimit, requestConfirmations, numWords ); s_requests[requestId] = RequestStatus({ paid: VRF_V2_WRAPPER.calculateRequestPrice(callbackGasLimit), randomWords: new uint256[](0), fulfilled: false }); requestIds.push(requestId); lastRequestId = requestId; emit RequestSent(requestId, numWords); return requestId; } function fulfillRandomWords(uint256 _requestId, uint256[] memory _randomWords) internal override { require(s_requests[_requestId].paid > 0, "request not found"); s_requests[_requestId].fulfilled = true; s_requests[_requestId].randomWords = _randomWords; emit RequestFulfilled( _requestId, _randomWords, s_requests[_requestId].paid ); } function getRequestStatus(uint256 _requestId) external view returns ( uint256 paid, bool fulfilled, uint256[] memory randomWords ) { require(s_requests[_requestId].paid > 0, "request not found"); RequestStatus memory request = s_requests[_requestId]; return (request.paid, request.fulfilled, request.randomWords); } function withdrawLink() public onlyOwner { LinkTokenInterface link = LinkTokenInterface(linkAddress); require( link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer" ); } function lottery(uint256 _phase) external onlyOwner returns (uint16[] memory) { require(phaseInfo[_phase].ticketsAmount > 0, "Haven't set participants number"); require(s_requests[lastRequestId].fulfilled, "Haven't got randomness"); uint256 random = s_requests[lastRequestId].randomWords[0]; uint16 result = uint16(random % phaseInfo[_phase].ticketsAmount); results.push(result); emit LotteryResults(results); return results; } function setTicketUrl(uint256 _phase, string memory _baseuri, uint256 _ticketsAmount) external onlyOwner { phaseInfo[_phase] = PhaseInfo(_baseuri, _ticketsAmount, address(0)); } function setWinner(uint256 _phase, address _winner) external onlyOwner { phaseInfo[_phase].winner = _winner; } function balance(uint256 id) public view returns (uint256) { return serum.balanceOf(address(this), id); } function claim(uint256 _phase) external { require(!claimed[_phase], 'Already claimed the mega serum'); require(msg.sender == phaseInfo[_phase].winner, 'Not the winner'); require(balance(3) >= 1, "Insufficient remains"); claimed[_phase] = true; serum.safeTransferFrom(address(this), msg.sender, 3, 1, ""); emit ClaimSerum(_phase); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ConfirmedOwnerWithProposal.sol"; /** * @title The ConfirmedOwner contract * @notice A contract with helpers for basic contract ownership. */ contract ConfirmedOwner is ConfirmedOwnerWithProposal { constructor(address newOwner) ConfirmedOwnerWithProposal(newOwner, address(0)) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/OwnableInterface.sol"; /** * @title The ConfirmedOwner contract * @notice A contract with helpers for basic contract ownership. */ contract ConfirmedOwnerWithProposal is OwnableInterface { address private s_owner; address private s_pendingOwner; event OwnershipTransferRequested(address indexed from, address indexed to); event OwnershipTransferred(address indexed from, address indexed to); constructor(address newOwner, address pendingOwner) { require(newOwner != address(0), "Cannot set owner to zero"); s_owner = newOwner; if (pendingOwner != address(0)) { _transferOwnership(pendingOwner); } } /** * @notice Allows an owner to begin transferring ownership to a new address, * pending. */ function transferOwnership(address to) public override onlyOwner { _transferOwnership(to); } /** * @notice Allows an ownership transfer to be completed by the recipient. */ function acceptOwnership() external override { require(msg.sender == s_pendingOwner, "Must be proposed owner"); address oldOwner = s_owner; s_owner = msg.sender; s_pendingOwner = address(0); emit OwnershipTransferred(oldOwner, msg.sender); } /** * @notice Get the current owner */ function owner() public view override returns (address) { return s_owner; } /** * @notice validate, transfer ownership, and emit relevant events */ function _transferOwnership(address to) private { require(to != msg.sender, "Cannot transfer to self"); s_pendingOwner = to; emit OwnershipTransferRequested(s_owner, to); } /** * @notice validate access */ function _validateOwnership() internal view { require(msg.sender == s_owner, "Only callable by owner"); } /** * @notice Reverts if called by anyone other than the contract owner. */ modifier onlyOwner() { _validateOwnership(); _; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface LinkTokenInterface { function allowance(address owner, address spender) external view returns (uint256 remaining); function approve(address spender, uint256 value) external returns (bool success); function balanceOf(address owner) external view returns (uint256 balance); function decimals() external view returns (uint8 decimalPlaces); function decreaseApproval(address spender, uint256 addedValue) external returns (bool success); function increaseApproval(address spender, uint256 subtractedValue) external; function name() external view returns (string memory tokenName); function symbol() external view returns (string memory tokenSymbol); function totalSupply() external view returns (uint256 totalTokensIssued); function transfer(address to, uint256 value) external returns (bool success); function transferAndCall( address to, uint256 value, bytes calldata data ) external returns (bool success); function transferFrom( address from, address to, uint256 value ) external returns (bool success); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface OwnableInterface { function owner() external returns (address); function transferOwnership(address recipient) external; function acceptOwnership() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface VRFV2WrapperInterface { /** * @return the request ID of the most recent VRF V2 request made by this wrapper. This should only * be relied option within the same transaction that the request was made. */ function lastRequestId() external view returns (uint256); /** * @notice Calculates the price of a VRF request with the given callbackGasLimit at the current * @notice block. * * @dev This function relies on the transaction gas price which is not automatically set during * @dev simulation. To estimate the price at a specific gas price, use the estimatePrice function. * * @param _callbackGasLimit is the gas limit used to estimate the price. */ function calculateRequestPrice(uint32 _callbackGasLimit) external view returns (uint256); /** * @notice Estimates the price of a VRF request with a specific gas limit and gas price. * * @dev This is a convenience function that can be called in simulation to better understand * @dev pricing. * * @param _callbackGasLimit is the gas limit used to estimate the price. * @param _requestGasPriceWei is the gas price in wei used for the estimation. */ function estimateRequestPrice(uint32 _callbackGasLimit, uint256 _requestGasPriceWei) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/LinkTokenInterface.sol"; import "./interfaces/VRFV2WrapperInterface.sol"; /** ******************************************************************************* * @notice Interface for contracts using VRF randomness through the VRF V2 wrapper * ******************************************************************************** * @dev PURPOSE * * @dev Create VRF V2 requests without the need for subscription management. Rather than creating * @dev and funding a VRF V2 subscription, a user can use this wrapper to create one off requests, * @dev paying up front rather than at fulfillment. * * @dev Since the price is determined using the gas price of the request transaction rather than * @dev the fulfillment transaction, the wrapper charges an additional premium on callback gas * @dev usage, in addition to some extra overhead costs associated with the VRFV2Wrapper contract. * ***************************************************************************** * @dev USAGE * * @dev Calling contracts must inherit from VRFV2WrapperConsumerBase. The consumer must be funded * @dev with enough LINK to make the request, otherwise requests will revert. To request randomness, * @dev call the 'requestRandomness' function with the desired VRF parameters. This function handles * @dev paying for the request based on the current pricing. * * @dev Consumers must implement the fullfillRandomWords function, which will be called during * @dev fulfillment with the randomness result. */ abstract contract VRFV2WrapperConsumerBase { LinkTokenInterface internal immutable LINK; VRFV2WrapperInterface internal immutable VRF_V2_WRAPPER; /** * @param _link is the address of LinkToken * @param _vrfV2Wrapper is the address of the VRFV2Wrapper contract */ constructor(address _link, address _vrfV2Wrapper) { LINK = LinkTokenInterface(_link); VRF_V2_WRAPPER = VRFV2WrapperInterface(_vrfV2Wrapper); } /** * @dev Requests randomness from the VRF V2 wrapper. * * @param _callbackGasLimit is the gas limit that should be used when calling the consumer's * fulfillRandomWords function. * @param _requestConfirmations is the number of confirmations to wait before fulfilling the * request. A higher number of confirmations increases security by reducing the likelihood * that a chain re-org changes a published randomness outcome. * @param _numWords is the number of random words to request. * * @return requestId is the VRF V2 request ID of the newly created randomness request. */ function requestRandomness( uint32 _callbackGasLimit, uint16 _requestConfirmations, uint32 _numWords ) internal returns (uint256 requestId) { LINK.transferAndCall( address(VRF_V2_WRAPPER), VRF_V2_WRAPPER.calculateRequestPrice(_callbackGasLimit), abi.encode(_callbackGasLimit, _requestConfirmations, _numWords) ); return VRF_V2_WRAPPER.lastRequestId(); } /** * @notice fulfillRandomWords handles the VRF V2 wrapper response. The consuming contract must * @notice implement it. * * @param _requestId is the VRF V2 request ID. * @param _randomWords is the randomness result. */ function fulfillRandomWords(uint256 _requestId, uint256[] memory _randomWords) internal virtual; function rawFulfillRandomWords(uint256 _requestId, uint256[] memory _randomWords) external { require(msg.sender == address(VRF_V2_WRAPPER), "only VRF V2 wrapper can fulfill"); fulfillRandomWords(_requestId, _randomWords); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/utils/ERC1155Holder.sol) pragma solidity ^0.8.0; import "./ERC1155Receiver.sol"; /** * Simple implementation of `ERC1155Receiver` that will allow a contract to hold ERC1155 tokens. * * IMPORTANT: When inheriting this contract, you must include a way to use the received tokens, otherwise they will be * stuck. * * @dev _Available since v3.1._ */ contract ERC1155Holder is ERC1155Receiver { function onERC1155Received( address, address, uint256, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] memory, uint256[] memory, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155BatchReceived.selector; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC1155/utils/ERC1155Receiver.sol) pragma solidity ^0.8.0; import "../IERC1155Receiver.sol"; import "../../../utils/introspection/ERC165.sol"; /** * @dev _Available since v3.1._ */ abstract contract ERC1155Receiver is ERC165, IERC1155Receiver { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // 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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_linkAddress","type":"address"},{"internalType":"address","name":"_wrapperAddress","type":"address"},{"internalType":"address","name":"_serum","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_phase","type":"uint256"}],"name":"ClaimSerum","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16[]","name":"results","type":"uint16[]"}],"name":"LotteryResults","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"randomWords","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"RequestFulfilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"numWords","type":"uint32"}],"name":"RequestSent","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_phase","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"}],"name":"getRequestStatus","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"bool","name":"fulfilled","type":"bool"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRequestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"linkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_phase","type":"uint256"}],"name":"lottery","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phaseInfo","outputs":[{"internalType":"string","name":"ticketUrl","type":"string"},{"internalType":"uint256","name":"ticketsAmount","type":"uint256"},{"internalType":"address","name":"winner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"},{"internalType":"uint256[]","name":"_randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestRandomWords","outputs":[{"internalType":"uint256","name":"requestId","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"results","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"s_requests","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"},{"internalType":"bool","name":"fulfilled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"serum","outputs":[{"internalType":"contract DogcSerumInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_phase","type":"uint256"},{"internalType":"string","name":"_baseuri","type":"string"},{"internalType":"uint256","name":"_ticketsAmount","type":"uint256"}],"name":"setTicketUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_phase","type":"uint256"},{"internalType":"address","name":"_winner","type":"address"}],"name":"setWinner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawLink","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrapperAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405260078054600160a01b600160f01b03191665080018000c3560a51b1790553480156200002f57600080fd5b5060405162002073380380620020738339810160408190526200005291620001fa565b6001600160a01b03808416608052821660a0523380600081620000bc5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000ef57620000ef8162000131565b5050600160025550600680546001600160a01b03199081166001600160a01b039586161790915560078054909116928416929092179091551660c05262000244565b6001600160a01b0381163314156200018c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620000b3565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620001f557600080fd5b919050565b6000806000606084860312156200021057600080fd5b6200021b84620001dd565b92506200022b60208501620001dd565b91506200023b60408501620001dd565b90509250925092565b60805160a05160c051611ddc620002976000396000818161023801528181610786015261083c01526000818161059f01528181610e950152818161118201526112a9015260006111580152611ddc6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d8a4676f1161007c578063d8a4676f1461036c578063dbe7e3bd1461038e578063e0c86289146103b1578063f23a6e61146103b9578063f2fde38b146103d8578063fc2a88c3146103eb57600080fd5b80638da5cb5b146102a95780638dc654a2146102ba5780639c623683146102c2578063a168fa89146102d5578063a57d156014610314578063bc197c811461033457600080fd5b8063379607f511610115578063379607f5146102205780633af486251461023357806347bb89f01461025a57806379ba50971461027b5780637df8b802146102835780638796ba8c1461029657600080fd5b806301ffc9a71461015d57806304c3ea74146101855780631a4b0a251461019a5780631b0c27da146101bc5780631fe543e3146101e2578063235cea98146101f5575b600080fd5b61017061016b3660046114bd565b6103f4565b60405190151581526020015b60405180910390f35b61019861019336600461158d565b61042b565b005b6101ad6101a83660046115f1565b6104a8565b60405161017c93929190611657565b6101cf6101ca3660046115f1565b61055c565b60405161ffff909116815260200161017c565b6101986101f036600461170a565b610594565b600654610208906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b61019861022e3660046115f1565b61061f565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b61026d6102683660046115f1565b61081e565b60405190815260200161017c565b6101986108bd565b600754610208906001600160a01b031681565b61026d6102a43660046115f1565b610967565b6000546001600160a01b0316610208565b610198610988565b6101986102d0366004611768565b610ad9565b6102ff6102e33660046115f1565b6003602052600090815260409020805460019091015460ff1682565b6040805192835290151560208301520161017c565b6103276103223660046115f1565b610b12565b60405161017c9190611794565b6103536103423660046117fc565b63bc197c8160e01b95945050505050565b6040516001600160e01b0319909116815260200161017c565b61037f61037a3660046115f1565b610d3a565b60405161017c939291906118e1565b61017061039c3660046115f1565b600a6020526000908152604090205460ff1681565b61026d610e28565b6103536103c736600461190b565b63f23a6e6160e01b95945050505050565b6101986103e6366004611970565b610ff9565b61026d60055481565b60006001600160e01b03198216630271189760e51b148061042557506301ffc9a760e01b6001600160e01b03198316145b92915050565b61043361100a565b60408051606081018252838152602080820184905260008284018190528681526009825292909220815180519293919261047092849201906113ea565b5060208201516001820155604090910151600290910180546001600160a01b0319166001600160a01b03909216919091179055505050565b6009602052600090815260409020805481906104c39061198b565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef9061198b565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b6008818154811061056c57600080fd5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106115760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c0060448201526064015b60405180910390fd5b61061b828261105f565b5050565b6000818152600a602052604090205460ff161561067e5760405162461bcd60e51b815260206004820152601e60248201527f416c726561647920636c61696d656420746865206d65676120736572756d00006044820152606401610608565b6000818152600960205260409020600201546001600160a01b031633146106d85760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a3432903bb4b73732b960911b6044820152606401610608565b60016106e4600361081e565b10156107295760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742072656d61696e7360601b6044820152606401610608565b6000818152600a6020526040808220805460ff191660019081179091559051637921219560e11b815230600482015233602482015260036044820152606481019190915260a0608482015260a48101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9060c401600060405180830381600087803b1580156107ca57600080fd5b505af11580156107de573d6000803e3d6000fd5b505050507f288bc11ed9dc15e51a1944d3856fa7c043e2a6f1d164bc68fd629e5c5b93913c8160405161081391815260200190565b60405180910390a150565b604051627eeac760e11b8152306004820152602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062fdd58e9060440160206040518083038186803b15801561088557600080fd5b505afa158015610899573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042591906119c6565b6001546001600160a01b031633146109105760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610608565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6004818154811061097757600080fd5b600091825260209091200154905081565b61099061100a565b6006546040516370a0823160e01b81523060048201526001600160a01b0390911690819063a9059cbb90339083906370a082319060240160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1791906119c6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a5d57600080fd5b505af1158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9591906119df565b610ad65760405162461bcd60e51b81526020600482015260126024820152712ab730b13632903a37903a3930b739b332b960711b6044820152606401610608565b50565b610ae161100a565b60009182526009602052604090912060020180546001600160a01b0319166001600160a01b03909216919091179055565b6060610b1c61100a565b600082815260096020526040902060010154610b7a5760405162461bcd60e51b815260206004820152601f60248201527f486176656e277420736574207061727469636970616e7473206e756d626572006044820152606401610608565b60055460009081526003602052604090206001015460ff16610bd75760405162461bcd60e51b8152602060048201526016602482015275486176656e277420676f742072616e646f6d6e65737360501b6044820152606401610608565b600554600090815260036020526040812060020180548290610bfb57610bfb611a01565b600091825260208083209091015485835260099091526040822060010154909250610c269083611a17565b6008805460018101825560008290527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee360108204018054600f9092166002026101000a61ffff81810219909316928516029190911790556040519192507faf6d5756963048df4e487b5e4b4953c79456415b6a1cc2317543ba4bc124c64e91610caf9190611a39565b60405180910390a16008805480602002602001604051908101604052809291908181526020018280548015610d2b57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cf25790505b5050505050925050505b919050565b6000818152600360205260408120548190606090610d8e5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b6044820152606401610608565b6000848152600360209081526040808320815160608101835281548152600182015460ff16151581850152600282018054845181870281018701865281815292959394860193830182828015610e0357602002820191906000526020600020905b815481526020019060010190808311610def575b5050509190925250508151602083015160409093015190989297509550909350505050565b6000610e3261100a565b600754610e629063ffffffff600160a01b820481169161ffff600160c01b82041691600160d01b90910416611132565b6040805160608101918290526007546310c1b4d560e21b909252600160a01b90910463ffffffff166064820152909150807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634306d3546084830160206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906119c6565b815260006020808301829052604080518381528083018252938101939093528482526003815290829020835181558382015160018201805460ff1916911515919091179055918301518051610f71926002850192019061146e565b5050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0182905550600581905560075460408051838152600160d01b90920463ffffffff1660208301527fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee910160405180910390a190565b61100161100a565b610ad681611340565b6000546001600160a01b0316331461105d5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610608565b565b6000828152600360205260409020546110ae5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b6044820152606401610608565b60008281526003602090815260409091206001818101805460ff1916909117905582516110e39260029092019184019061146e565b50600082815260036020526040908190205490517f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db51916111269185918591611d56565b60405180910390a15050565b6040516310c1b4d560e21b815263ffffffff841660048201526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691634000aea0917f00000000000000000000000000000000000000000000000000000000000000009190821690634306d3549060240160206040518083038186803b1580156111c757600080fd5b505afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff91906119c6565b6040805163ffffffff808b16602083015261ffff8a169282019290925290871660608201526080016040516020818303038152906040526040518463ffffffff1660e01b815260040161125493929190611d7f565b602060405180830381600087803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a691906119df565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fc2a88c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561130057600080fd5b505afa158015611314573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133891906119c6565b949350505050565b6001600160a01b0381163314156113995760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610608565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8280546113f69061198b565b90600052602060002090601f016020900481019282611418576000855561145e565b82601f1061143157805160ff191683800117855561145e565b8280016001018555821561145e579182015b8281111561145e578251825591602001919060010190611443565b5061146a9291506114a8565b5090565b82805482825590600052602060002090810192821561145e579160200282018281111561145e578251825591602001919060010190611443565b5b8082111561146a57600081556001016114a9565b6000602082840312156114cf57600080fd5b81356001600160e01b0319811681146114e757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561152d5761152d6114ee565b604052919050565b600067ffffffffffffffff83111561154f5761154f6114ee565b611562601f8401601f1916602001611504565b905082815283838301111561157657600080fd5b828260208301376000602084830101529392505050565b6000806000606084860312156115a257600080fd5b83359250602084013567ffffffffffffffff8111156115c057600080fd5b8401601f810186136115d157600080fd5b6115e086823560208401611535565b925050604084013590509250925092565b60006020828403121561160357600080fd5b5035919050565b6000815180845260005b8181101561163057602081850181015186830182015201611614565b81811115611642576000602083870101525b50601f01601f19169290920160200192915050565b60608152600061166a606083018661160a565b6020830194909452506001600160a01b0391909116604090910152919050565b600082601f83011261169b57600080fd5b8135602067ffffffffffffffff8211156116b7576116b76114ee565b8160051b6116c6828201611504565b92835284810182019282810190878511156116e057600080fd5b83870192505b848310156116ff578235825291830191908301906116e6565b979650505050505050565b6000806040838503121561171d57600080fd5b82359150602083013567ffffffffffffffff81111561173b57600080fd5b6117478582860161168a565b9150509250929050565b80356001600160a01b0381168114610d3557600080fd5b6000806040838503121561177b57600080fd5b8235915061178b60208401611751565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156117d057835161ffff16835292840192918401916001016117b0565b50909695505050505050565b600082601f8301126117ed57600080fd5b6114e783833560208501611535565b600080600080600060a0868803121561181457600080fd5b61181d86611751565b945061182b60208701611751565b9350604086013567ffffffffffffffff8082111561184857600080fd5b61185489838a0161168a565b9450606088013591508082111561186a57600080fd5b61187689838a0161168a565b9350608088013591508082111561188c57600080fd5b50611899888289016117dc565b9150509295509295909350565b600081518084526020808501945080840160005b838110156118d6578151875295820195908201906001016118ba565b509495945050505050565b838152821515602082015260606040820152600061190260608301846118a6565b95945050505050565b600080600080600060a0868803121561192357600080fd5b61192c86611751565b945061193a60208701611751565b93506040860135925060608601359150608086013567ffffffffffffffff81111561196457600080fd5b611899888289016117dc565b60006020828403121561198257600080fd5b6114e782611751565b600181811c9082168061199f57607f821691505b602082108114156119c057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156119d857600080fd5b5051919050565b6000602082840312156119f157600080fd5b815180151581146114e757600080fd5b634e487b7160e01b600052603260045260246000fd5b600082611a3457634e487b7160e01b600052601260045260246000fd5b500690565b60006020808301818452808554611a54818490815260200190565b60008881526020812094509092505b81600f82011015611baa57835461ffff8082168552601082901c8116878601526040611a9881870183858b1c1661ffff169052565b6060611aae818801848660301c1661ffff169052565b6080611ac38189018587861c1661ffff169052565b60a09250611adb838901858760501c1661ffff169052565b60c0611af0818a018688861c1661ffff169052565b60e09250611b08838a01868860701c1661ffff169052565b61ffff86831c8616166101008a0152611b2d6101208a01868860901c1661ffff169052565b61ffff86851c8616166101408a0152611b526101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a01525050611b796101a08801848660d01c1661ffff169052565b83901c9190911661ffff166101c08601525060f01c6101e08401526001939093019261020090920191601001611a63565b92549281811015611bc45761ffff84168352918401916001015b81811015611bdf57601084901c61ffff168352918401916001015b81811015611bf85783851c61ffff168352918401916001015b81811015611c1357603084901c61ffff168352918401916001015b81811015611c2e57604084901c61ffff168352918401916001015b81811015611c4957605084901c61ffff168352918401916001015b81811015611c6457606084901c61ffff168352918401916001015b81811015611c7f57607084901c61ffff168352918401916001015b81811015611c9a57608084901c61ffff168352918401916001015b81811015611cb557609084901c61ffff168352918401916001015b81811015611cd05760a084901c61ffff168352918401916001015b81811015611ceb5760b084901c61ffff168352918401916001015b81811015611d065760c084901c61ffff168352918401916001015b81811015611d215760d084901c61ffff168352918401916001015b81811015611d3c5760e084901c61ffff168352918401916001015b818110156117d057505060f09190911c8152019392505050565b838152606060208201526000611d6f60608301856118a6565b9050826040830152949350505050565b60018060a01b0384168152826020820152606060408201526000611902606083018461160a56fea2646970667358221220f6adc309f0d3da392db5b90b4ac3a9dc0e8b57e56b76d2fcfe0d9c222cbb2bff64736f6c63430008090033000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c4762
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c80638da5cb5b116100c3578063d8a4676f1161007c578063d8a4676f1461036c578063dbe7e3bd1461038e578063e0c86289146103b1578063f23a6e61146103b9578063f2fde38b146103d8578063fc2a88c3146103eb57600080fd5b80638da5cb5b146102a95780638dc654a2146102ba5780639c623683146102c2578063a168fa89146102d5578063a57d156014610314578063bc197c811461033457600080fd5b8063379607f511610115578063379607f5146102205780633af486251461023357806347bb89f01461025a57806379ba50971461027b5780637df8b802146102835780638796ba8c1461029657600080fd5b806301ffc9a71461015d57806304c3ea74146101855780631a4b0a251461019a5780631b0c27da146101bc5780631fe543e3146101e2578063235cea98146101f5575b600080fd5b61017061016b3660046114bd565b6103f4565b60405190151581526020015b60405180910390f35b61019861019336600461158d565b61042b565b005b6101ad6101a83660046115f1565b6104a8565b60405161017c93929190611657565b6101cf6101ca3660046115f1565b61055c565b60405161ffff909116815260200161017c565b6101986101f036600461170a565b610594565b600654610208906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b61019861022e3660046115f1565b61061f565b6102087f000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c476281565b61026d6102683660046115f1565b61081e565b60405190815260200161017c565b6101986108bd565b600754610208906001600160a01b031681565b61026d6102a43660046115f1565b610967565b6000546001600160a01b0316610208565b610198610988565b6101986102d0366004611768565b610ad9565b6102ff6102e33660046115f1565b6003602052600090815260409020805460019091015460ff1682565b6040805192835290151560208301520161017c565b6103276103223660046115f1565b610b12565b60405161017c9190611794565b6103536103423660046117fc565b63bc197c8160e01b95945050505050565b6040516001600160e01b0319909116815260200161017c565b61037f61037a3660046115f1565b610d3a565b60405161017c939291906118e1565b61017061039c3660046115f1565b600a6020526000908152604090205460ff1681565b61026d610e28565b6103536103c736600461190b565b63f23a6e6160e01b95945050505050565b6101986103e6366004611970565b610ff9565b61026d60055481565b60006001600160e01b03198216630271189760e51b148061042557506301ffc9a760e01b6001600160e01b03198316145b92915050565b61043361100a565b60408051606081018252838152602080820184905260008284018190528681526009825292909220815180519293919261047092849201906113ea565b5060208201516001820155604090910151600290910180546001600160a01b0319166001600160a01b03909216919091179055505050565b6009602052600090815260409020805481906104c39061198b565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef9061198b565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505060018301546002909301549192916001600160a01b0316905083565b6008818154811061056c57600080fd5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b336001600160a01b037f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df616146106115760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c0060448201526064015b60405180910390fd5b61061b828261105f565b5050565b6000818152600a602052604090205460ff161561067e5760405162461bcd60e51b815260206004820152601e60248201527f416c726561647920636c61696d656420746865206d65676120736572756d00006044820152606401610608565b6000818152600960205260409020600201546001600160a01b031633146106d85760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a3432903bb4b73732b960911b6044820152606401610608565b60016106e4600361081e565b10156107295760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742072656d61696e7360601b6044820152606401610608565b6000818152600a6020526040808220805460ff191660019081179091559051637921219560e11b815230600482015233602482015260036044820152606481019190915260a0608482015260a48101919091526001600160a01b037f000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c4762169063f242432a9060c401600060405180830381600087803b1580156107ca57600080fd5b505af11580156107de573d6000803e3d6000fd5b505050507f288bc11ed9dc15e51a1944d3856fa7c043e2a6f1d164bc68fd629e5c5b93913c8160405161081391815260200190565b60405180910390a150565b604051627eeac760e11b8152306004820152602481018290526000907f000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c47626001600160a01b03169062fdd58e9060440160206040518083038186803b15801561088557600080fd5b505afa158015610899573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042591906119c6565b6001546001600160a01b031633146109105760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610608565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6004818154811061097757600080fd5b600091825260209091200154905081565b61099061100a565b6006546040516370a0823160e01b81523060048201526001600160a01b0390911690819063a9059cbb90339083906370a082319060240160206040518083038186803b1580156109df57600080fd5b505afa1580156109f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1791906119c6565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610a5d57600080fd5b505af1158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9591906119df565b610ad65760405162461bcd60e51b81526020600482015260126024820152712ab730b13632903a37903a3930b739b332b960711b6044820152606401610608565b50565b610ae161100a565b60009182526009602052604090912060020180546001600160a01b0319166001600160a01b03909216919091179055565b6060610b1c61100a565b600082815260096020526040902060010154610b7a5760405162461bcd60e51b815260206004820152601f60248201527f486176656e277420736574207061727469636970616e7473206e756d626572006044820152606401610608565b60055460009081526003602052604090206001015460ff16610bd75760405162461bcd60e51b8152602060048201526016602482015275486176656e277420676f742072616e646f6d6e65737360501b6044820152606401610608565b600554600090815260036020526040812060020180548290610bfb57610bfb611a01565b600091825260208083209091015485835260099091526040822060010154909250610c269083611a17565b6008805460018101825560008290527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee360108204018054600f9092166002026101000a61ffff81810219909316928516029190911790556040519192507faf6d5756963048df4e487b5e4b4953c79456415b6a1cc2317543ba4bc124c64e91610caf9190611a39565b60405180910390a16008805480602002602001604051908101604052809291908181526020018280548015610d2b57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cf25790505b5050505050925050505b919050565b6000818152600360205260408120548190606090610d8e5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b6044820152606401610608565b6000848152600360209081526040808320815160608101835281548152600182015460ff16151581850152600282018054845181870281018701865281815292959394860193830182828015610e0357602002820191906000526020600020905b815481526020019060010190808311610def575b5050509190925250508151602083015160409093015190989297509550909350505050565b6000610e3261100a565b600754610e629063ffffffff600160a01b820481169161ffff600160c01b82041691600160d01b90910416611132565b6040805160608101918290526007546310c1b4d560e21b909252600160a01b90910463ffffffff166064820152909150807f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df66001600160a01b0316634306d3546084830160206040518083038186803b158015610ede57600080fd5b505afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906119c6565b815260006020808301829052604080518381528083018252938101939093528482526003815290829020835181558382015160018201805460ff1916911515919091179055918301518051610f71926002850192019061146e565b5050600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0182905550600581905560075460408051838152600160d01b90920463ffffffff1660208301527fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee910160405180910390a190565b61100161100a565b610ad681611340565b6000546001600160a01b0316331461105d5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610608565b565b6000828152600360205260409020546110ae5760405162461bcd60e51b81526020600482015260116024820152701c995c5d595cdd081b9bdd08199bdd5b99607a1b6044820152606401610608565b60008281526003602090815260409091206001818101805460ff1916909117905582516110e39260029092019184019061146e565b50600082815260036020526040908190205490517f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db51916111269185918591611d56565b60405180910390a15050565b6040516310c1b4d560e21b815263ffffffff841660048201526000906001600160a01b037f000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca811691634000aea0917f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df69190821690634306d3549060240160206040518083038186803b1580156111c757600080fd5b505afa1580156111db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ff91906119c6565b6040805163ffffffff808b16602083015261ffff8a169282019290925290871660608201526080016040516020818303038152906040526040518463ffffffff1660e01b815260040161125493929190611d7f565b602060405180830381600087803b15801561126e57600080fd5b505af1158015611282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a691906119df565b507f0000000000000000000000005a861794b927983406fce1d062e00b9368d97df66001600160a01b031663fc2a88c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561130057600080fd5b505afa158015611314573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133891906119c6565b949350505050565b6001600160a01b0381163314156113995760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610608565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b8280546113f69061198b565b90600052602060002090601f016020900481019282611418576000855561145e565b82601f1061143157805160ff191683800117855561145e565b8280016001018555821561145e579182015b8281111561145e578251825591602001919060010190611443565b5061146a9291506114a8565b5090565b82805482825590600052602060002090810192821561145e579160200282018281111561145e578251825591602001919060010190611443565b5b8082111561146a57600081556001016114a9565b6000602082840312156114cf57600080fd5b81356001600160e01b0319811681146114e757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561152d5761152d6114ee565b604052919050565b600067ffffffffffffffff83111561154f5761154f6114ee565b611562601f8401601f1916602001611504565b905082815283838301111561157657600080fd5b828260208301376000602084830101529392505050565b6000806000606084860312156115a257600080fd5b83359250602084013567ffffffffffffffff8111156115c057600080fd5b8401601f810186136115d157600080fd5b6115e086823560208401611535565b925050604084013590509250925092565b60006020828403121561160357600080fd5b5035919050565b6000815180845260005b8181101561163057602081850181015186830182015201611614565b81811115611642576000602083870101525b50601f01601f19169290920160200192915050565b60608152600061166a606083018661160a565b6020830194909452506001600160a01b0391909116604090910152919050565b600082601f83011261169b57600080fd5b8135602067ffffffffffffffff8211156116b7576116b76114ee565b8160051b6116c6828201611504565b92835284810182019282810190878511156116e057600080fd5b83870192505b848310156116ff578235825291830191908301906116e6565b979650505050505050565b6000806040838503121561171d57600080fd5b82359150602083013567ffffffffffffffff81111561173b57600080fd5b6117478582860161168a565b9150509250929050565b80356001600160a01b0381168114610d3557600080fd5b6000806040838503121561177b57600080fd5b8235915061178b60208401611751565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156117d057835161ffff16835292840192918401916001016117b0565b50909695505050505050565b600082601f8301126117ed57600080fd5b6114e783833560208501611535565b600080600080600060a0868803121561181457600080fd5b61181d86611751565b945061182b60208701611751565b9350604086013567ffffffffffffffff8082111561184857600080fd5b61185489838a0161168a565b9450606088013591508082111561186a57600080fd5b61187689838a0161168a565b9350608088013591508082111561188c57600080fd5b50611899888289016117dc565b9150509295509295909350565b600081518084526020808501945080840160005b838110156118d6578151875295820195908201906001016118ba565b509495945050505050565b838152821515602082015260606040820152600061190260608301846118a6565b95945050505050565b600080600080600060a0868803121561192357600080fd5b61192c86611751565b945061193a60208701611751565b93506040860135925060608601359150608086013567ffffffffffffffff81111561196457600080fd5b611899888289016117dc565b60006020828403121561198257600080fd5b6114e782611751565b600181811c9082168061199f57607f821691505b602082108114156119c057634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156119d857600080fd5b5051919050565b6000602082840312156119f157600080fd5b815180151581146114e757600080fd5b634e487b7160e01b600052603260045260246000fd5b600082611a3457634e487b7160e01b600052601260045260246000fd5b500690565b60006020808301818452808554611a54818490815260200190565b60008881526020812094509092505b81600f82011015611baa57835461ffff8082168552601082901c8116878601526040611a9881870183858b1c1661ffff169052565b6060611aae818801848660301c1661ffff169052565b6080611ac38189018587861c1661ffff169052565b60a09250611adb838901858760501c1661ffff169052565b60c0611af0818a018688861c1661ffff169052565b60e09250611b08838a01868860701c1661ffff169052565b61ffff86831c8616166101008a0152611b2d6101208a01868860901c1661ffff169052565b61ffff86851c8616166101408a0152611b526101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a01525050611b796101a08801848660d01c1661ffff169052565b83901c9190911661ffff166101c08601525060f01c6101e08401526001939093019261020090920191601001611a63565b92549281811015611bc45761ffff84168352918401916001015b81811015611bdf57601084901c61ffff168352918401916001015b81811015611bf85783851c61ffff168352918401916001015b81811015611c1357603084901c61ffff168352918401916001015b81811015611c2e57604084901c61ffff168352918401916001015b81811015611c4957605084901c61ffff168352918401916001015b81811015611c6457606084901c61ffff168352918401916001015b81811015611c7f57607084901c61ffff168352918401916001015b81811015611c9a57608084901c61ffff168352918401916001015b81811015611cb557609084901c61ffff168352918401916001015b81811015611cd05760a084901c61ffff168352918401916001015b81811015611ceb5760b084901c61ffff168352918401916001015b81811015611d065760c084901c61ffff168352918401916001015b81811015611d215760d084901c61ffff168352918401916001015b81811015611d3c5760e084901c61ffff168352918401916001015b818110156117d057505060f09190911c8152019392505050565b838152606060208201526000611d6f60608301856118a6565b9050826040830152949350505050565b60018060a01b0384168152826020820152606060408201526000611902606083018461160a56fea2646970667358221220f6adc309f0d3da392db5b90b4ac3a9dc0e8b57e56b76d2fcfe0d9c222cbb2bff64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c4762
-----Decoded View---------------
Arg [0] : _linkAddress (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA
Arg [1] : _wrapperAddress (address): 0x5A861794B927983406fCE1D062e00b9368d97Df6
Arg [2] : _serum (address): 0xa3De26661e786d7555493ECA6D40d07Ce14c4762
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [1] : 0000000000000000000000005a861794b927983406fce1d062e00b9368d97df6
Arg [2] : 000000000000000000000000a3de26661e786d7555493eca6d40d07ce14c4762
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $11.47 | 1.8011 | $20.66 |
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.