More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 251 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 19262742 | 144 days ago | IN | 0 ETH | 0.00426972 | ||||
Claim | 19262214 | 145 days ago | IN | 0 ETH | 0.00341256 | ||||
Claim | 19262192 | 145 days ago | IN | 0 ETH | 0.00361381 | ||||
Claim | 19262181 | 145 days ago | IN | 0 ETH | 0.00394345 | ||||
Claim | 19262172 | 145 days ago | IN | 0 ETH | 0.00387709 | ||||
Claim | 19262107 | 145 days ago | IN | 0 ETH | 0.00428572 | ||||
Claim | 19262104 | 145 days ago | IN | 0 ETH | 0.00412025 | ||||
Make Bid | 19252420 | 146 days ago | IN | 0.001 ETH | 0.00076718 | ||||
Write Chunks | 19252224 | 146 days ago | IN | 0 ETH | 0.00396501 | ||||
Write Chunks | 19251871 | 146 days ago | IN | 0 ETH | 0.00269257 | ||||
Write Chunks | 19251868 | 146 days ago | IN | 0 ETH | 0.00222471 | ||||
Write Chunks | 19251868 | 146 days ago | IN | 0 ETH | 0.0225118 | ||||
Write Chunks | 19251417 | 146 days ago | IN | 0 ETH | 0.01901131 | ||||
Write Chunks | 19251400 | 146 days ago | IN | 0 ETH | 0.00333185 | ||||
Write Chunks | 19251231 | 146 days ago | IN | 0 ETH | 0.00467699 | ||||
Write Chunks | 19251085 | 146 days ago | IN | 0 ETH | 0.01147833 | ||||
Write Chunks | 19251079 | 146 days ago | IN | 0 ETH | 0.00926631 | ||||
Write Chunks | 19251075 | 146 days ago | IN | 0 ETH | 0.0174672 | ||||
Write Chunks | 19250242 | 146 days ago | IN | 0 ETH | 0.00208799 | ||||
Write Chunks | 19250211 | 146 days ago | IN | 0 ETH | 0.041778 | ||||
Write Chunks | 19250175 | 146 days ago | IN | 0 ETH | 0.00839895 | ||||
Write Chunks | 19250166 | 146 days ago | IN | 0 ETH | 0.0118716 | ||||
Write Chunks | 19250067 | 146 days ago | IN | 0 ETH | 0.00579399 | ||||
Write Chunks | 19250039 | 146 days ago | IN | 0 ETH | 0.02493807 | ||||
Write Chunks | 19249801 | 146 days ago | IN | 0 ETH | 0.00267628 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
19523139 | 108 days ago | 0.00122842 ETH | ||||
19512657 | 109 days ago | 0.0004165 ETH | ||||
19511248 | 110 days ago | 0.0005074 ETH | ||||
19495369 | 112 days ago | 0.00024537 ETH | ||||
19445525 | 119 days ago | 0.00085041 ETH | ||||
19393670 | 126 days ago | 0.00145402 ETH | ||||
19286185 | 141 days ago | 0.00873972 ETH | ||||
19286183 | 141 days ago | 0.00323147 ETH | ||||
19262742 | 144 days ago | 0.05402287 ETH | ||||
19262214 | 145 days ago | 21.28501199 ETH | ||||
19262192 | 145 days ago | 3.51148675 ETH | ||||
19262181 | 145 days ago | 0.48620585 ETH | ||||
19262172 | 145 days ago | 0.48620585 ETH | ||||
19262107 | 145 days ago | 0.16206861 ETH | ||||
19262104 | 145 days ago | 1.94482343 ETH | ||||
19262065 | 145 days ago | 2.91723514 ETH | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei | ||||
19260442 | 145 days ago | 1 wei |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Game
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../lib/Ownable.sol"; import "../canvas/ICanvas.sol"; import "../canvas/CanvasBounds.sol"; import "../nft/IMintableNft.sol"; import "./IGame.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; struct ChunkData { address owner; uint256 price; } struct ChunkWriteDto { uint8 x; uint8 y; uint256 data; } abstract contract GameInternal is IGame, CanvasBounds, Ownable, ReentrancyGuard { ICanvas immutable _canvas; address immutable dev; IERC20 public token; uint256 constant _tokenDecimals = 9; uint256 public constant startChunkWritePrice = 1 * (10 ** _tokenDecimals); uint256 public chunkOverridePricePercent = 10; // percent to to price to override chunk uint256 constant startGameTimer = 86400; uint256 public chunkWriteAddsGameSeconds = 60; uint256 public chunksWritenCount; uint256 _gameEndTime; ChunkData[chunksCountX * chunksCountY] _chunks; mapping(address => uint16) _ownersShare; constructor(address canvasAddress) { _canvas = ICanvas(canvasAddress); dev = msg.sender; } modifier writeEnable() { require(isWriteEnable(), "game not started"); _; } function start() external onlyOwner { _gameEndTime = block.timestamp + startGameTimer; } function isStarted() external view returns (bool) { return _gameEndTime != 0; } function gameEndTime() external view returns (uint256) { return _gameEndTime; } function isGameEnd() public view returns (bool) { return _gameEndTime > 0 && _gameEndTime <= block.timestamp; } function isWriteEnable() public view returns (bool) { return _gameEndTime > 0 && !isGameEnd(); } receive() external payable {} function setToken(address tokenAddress) external onlyOwner { require(address(token) == address(0)); token = IERC20(tokenAddress); } function canvas() external view returns (address) { return address(_canvas); } function writeChunks(ChunkWriteDto[] calldata input) external writeEnable { uint256 cost = _writeChunksPrice(input, msg.sender); token.transferFrom(msg.sender, address(this), cost); for (uint256 i = 0; i < input.length; ++i) { _writeChunk(input[i], msg.sender); } } function _writeChunk(ChunkWriteDto calldata input, address writer) private { uint16 index = chunkIndex(input.x, input.y); ChunkData storage chunk = _chunks[index]; address lastOwner = chunk.owner; if (lastOwner != address(0)) --_ownersShare[lastOwner]; else ++chunksWritenCount; ++_ownersShare[msg.sender]; chunk.price = _writeChunkPrice(chunk, writer); chunk.owner = msg.sender; _canvas.setChunkByIndex(index, input.data); _gameEndTime += chunkWriteAddsGameSeconds; } function getChunksOwners() external view returns (address[chunksCountX * chunksCountY] memory accs) { for (uint256 i = 0; i < chunksCountX * chunksCountY; ++i) { accs[i] = _chunks[i].owner; } return accs; } function _getChunk( uint8 x, uint8 y ) private view returns (ChunkData storage) { return _chunks[chunkIndex(x, y)]; } function writeChunkPrice(uint8 x, uint8 y) private view returns (uint256) { return _writeChunkPrice(_getChunk(x, y), msg.sender); } function writeChunkPriceFor( uint8 x, uint8 y, address account ) private view returns (uint256) { return _writeChunkPrice(_getChunk(x, y), account); } function writeChunksPriceFor( address account ) private view returns (uint256[] memory) { uint256 size = chunksCountX * chunksCountY; uint256[] memory prices = new uint256[](size); for (uint256 i = 0; i < size; ++i) { _writeChunkPrice(_chunks[i], account); } return prices; } function writeChunksPrice( ChunkWriteDto[] calldata input ) external view returns (uint256) { return _writeChunksPrice(input, msg.sender); } function writeChunksPriceFor( ChunkWriteDto[] calldata input, address account ) external view returns (uint256) { return _writeChunksPrice(input, account); } function _writeChunkPrice( ChunkData memory data, address writer ) private view returns (uint256) { if (data.owner == writer) return 0; if (data.price == 0) return startChunkWritePrice; return data.price + (data.price * chunkOverridePricePercent) / 100; } function _writeChunksPrice( ChunkWriteDto[] calldata data, address writer ) private view returns (uint256) { uint256 cost; for (uint256 i = 0; i < data.length; ++i) { cost += _writeChunkPrice(_getChunk(data[i].x, data[i].y), writer); } return cost; } function getChunks() external view returns (ChunkData[chunksCountX * chunksCountY] memory) { return _chunks; } function getChunkOwner( uint8 x, uint8 y ) external view inBounds(x, y) returns (address) { return _chunks[chunkIndex(x, y)].owner; } function accountShare(address acc) external view returns (uint16) { return _ownersShare[acc]; } } abstract contract Auction is GameInternal { IMintableNft public nft; uint256 constant auctionStartTimer = 86400; uint256 public constant auctionBidAddsTimer = 60; uint256 public constant auctionBidStepShare = 5; uint256 public constant auctionBidStepPrecesion = 100; address public bidAddress; uint256 public bidEther = 1e16 - 1; // starts 0.01 ether uint256 public auctionEndTime; uint256 public etherToClaimTotal; uint256 public tokenToClaimTotal; constructor(address canvasAddress) GameInternal(canvasAddress) {} modifier whenAuction() { require(isAuction(), "auction is not started"); _; } function setNft(address nftAddress) external onlyOwner { require(address(nft) == address(0)); nft = IMintableNft(nftAddress); } function isAuction() public view returns (bool) { if (!isGameEnd()) return false; return auctionEndTime == 0 || block.timestamp < auctionEndTime; } function isAuctionEnd() public view returns (bool) { return auctionEndTime > 0 && auctionEndTime <= block.timestamp; } function newBidEtherMin() public view returns (uint256) { return (bidEther * auctionBidStepShare) / auctionBidStepPrecesion; } function makeBid() external payable { require(isAuction(), "no auction time"); require(msg.value > newBidEtherMin(), "bid is too low"); if (bidAddress != address(0)) _sendEther(bidAddress, bidEther); bidAddress = msg.sender; bidEther = msg.value; if (auctionEndTime == 0) auctionEndTime = block.timestamp + auctionStartTimer; else auctionEndTime += auctionBidAddsTimer; } function _sendEther(address to, uint256 count) internal nonReentrant { if (count == 0) return; (bool sentFee, ) = payable(to).call{value: count}(""); require(sentFee, "sent fee error: ether is not sent"); } function claimNft() public { require(isAuctionEnd(), "auction still continue"); require(!isNftClaimed(), "nft already claimed"); nft.transfer(bidAddress); _sendEther(dev, bidEther / 5); etherToClaimTotal = address(this).balance; tokenToClaimTotal = token.balanceOf(address(this)); } function isNftClaimed() public view returns (bool) { return nft.isTransferred(); } } contract Game is Auction { mapping(address => bool) public isClaimed; constructor(address canvasAddress) Auction(canvasAddress) {} function claim() external { require(isAuctionEnd(), "auction still continue"); if (!isNftClaimed()) claimNft(); require(!isClaimed[msg.sender], "already claimed"); isClaimed[msg.sender] = true; uint256 share = _ownersShare[msg.sender]; require(share > 0, "account share is 0"); _sendEther(msg.sender, (etherToClaimTotal * share) / chunksWritenCount); token.transfer( address(0), //msg.sender, (tokenToClaimTotal * share) / chunksWritenCount ); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; /** * @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; /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); 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 if (_status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail _status = ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; import "./ICanvas.sol"; abstract contract CanvasBounds { modifier inBounds(uint8 x, uint8 y) { require(x < chunksCountX, "position x out of bounds"); require(y < chunksCountY, "position y out of bounds"); _; } function getChunksCount() external pure returns (uint16 x, uint16 y) { return (chunksCountX, chunksCountY); } function chunkIndex( uint8 x, uint8 y ) public pure inBounds(x, y) returns (uint16) { return chunksCountX * y + x; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; uint16 constant chunksCountX = 24; uint16 constant chunksCountY = 24; uint8 constant chunkPixelSize = 1; interface ICanvas { function getChunk(uint8 x, uint8 y) external view returns (uint256); function setChunk(uint8 x, uint8 y, uint256 chunkData) external; function setChunkByIndex(uint16 chunkIndex, uint256 chunkData) external; function getChunks() external view returns (uint256[chunksCountX * chunksCountY] memory); function getBitmap() external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; interface IGame { function isStarted() external view returns (bool); function gameEndTime() external view returns (uint256); function isGameEnd() external view returns (bool); function isWriteEnable() external view returns (bool); function isAuction() external view returns (bool); function isAuctionEnd() external view returns (bool); function isNftClaimed() external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; contract Ownable { address _owner; event RenounceOwnership(); constructor() { _owner = msg.sender; } modifier onlyOwner() { require(_owner == msg.sender, "only owner"); _; } function owner() external view virtual returns (address) { return _owner; } function ownerRenounce() public onlyOwner { _owner = address(0); emit RenounceOwnership(); } function transferOwnership(address newOwner) external onlyOwner { _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.23; interface IMintableNft { function transfer(address to) external; function isTransferred() external view returns (bool); }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "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":"canvasAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[],"name":"RenounceOwnership","type":"event"},{"inputs":[{"internalType":"address","name":"acc","type":"address"}],"name":"accountShare","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionBidAddsTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionBidStepPrecesion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionBidStepShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auctionEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bidEther","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canvas","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"}],"name":"chunkIndex","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"chunkOverridePricePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chunkWriteAddsGameSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chunksWritenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"etherToClaimTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gameEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"}],"name":"getChunkOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChunks","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct ChunkData[576]","name":"","type":"tuple[576]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChunksCount","outputs":[{"internalType":"uint16","name":"x","type":"uint16"},{"internalType":"uint16","name":"y","type":"uint16"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getChunksOwners","outputs":[{"internalType":"address[576]","name":"accs","type":"address[576]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAuction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAuctionEnd","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGameEnd","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNftClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWriteEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"makeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"newBidEtherMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IMintableNft","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerRenounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"}],"name":"setNft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startChunkWritePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenToClaimTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct ChunkWriteDto[]","name":"input","type":"tuple[]"}],"name":"writeChunks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct ChunkWriteDto[]","name":"input","type":"tuple[]"}],"name":"writeChunksPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"},{"internalType":"uint256","name":"data","type":"uint256"}],"internalType":"struct ChunkWriteDto[]","name":"input","type":"tuple[]"},{"internalType":"address","name":"account","type":"address"}],"name":"writeChunksPriceFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600a600355603c600455662386f26fc0ffff61048a5534801561002657600080fd5b50604051611c35380380611c3583398101604081905261004591610074565b600080546001600160a01b03191633908117909155600180556001600160a01b0390911660805260a0526100a4565b60006020828403121561008657600080fd5b81516001600160a01b038116811461009d57600080fd5b9392505050565b60805160a051611b656100d06000396000610ce50152600081816104f9015261145b0152611b656000f3fe6080604052600436106102555760003560e01c806397d54cf711610139578063c7e64a84116100b6578063f30e36581161007a578063f30e365814610699578063f3c13387146106a1578063f9c7894e146106c1578063fc0c546a146106d6578063fe29124c146106f6578063ffe7507f1461070b57600080fd5b8063c7e64a841461060e578063c7f21f3914610623578063e4f8a42214610638578063eaa339b614610658578063f2fde38b1461067957600080fd5b8063a78deefa116100fd578063a78deefa14610598578063b6672790146105ad578063be9a6555146105cd578063c01a9745146105e2578063c17723f9146105f957600080fd5b806397d54cf7146104d55780639b8e9b5e146104ea578063a051078a1461051d578063a384e03014610534578063a447a5c61461054a57600080fd5b80634e71d92d116101d25780637a50b787116101965780637a50b787146104255780637b5d4c23146104455780638703c0171461045a5780638cc080251461046f5780638da5cb5b146104a05780639561330a146104be57600080fd5b80634e71d92d146103ac578063544736e6146103c15780635ae2afa4146103d85780635dfcc86a146103ed578063672077381461040357600080fd5b80632f57fbf0116102195780632f57fbf014610329578063333a00721461034a57806344d9bc5f1461035f57806347ccca02146103745780634b449cba1461039557600080fd5b806301767cdb1461026157806304e418241461028357806310c91973146102c0578063144fa6d7146102e457806318916f9b1461030457600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c366004611722565b61072d565b005b34801561028f57600080fd5b506102a361029e36600461177a565b61083d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cc57600080fd5b506102d660055481565b6040519081526020016102b7565b3480156102f057600080fd5b506102816102ff3660046117c4565b610917565b34801561031057600080fd5b50610319610979565b60405190151581526020016102b7565b34801561033557600080fd5b50610489546102a3906001600160a01b031681565b34801561035657600080fd5b50610281610995565b34801561036b57600080fd5b506006546102d6565b34801561038057600080fd5b50610488546102a3906001600160a01b031681565b3480156103a157600080fd5b506102d661048b5481565b3480156103b857600080fd5b506102816109f8565b3480156103cd57600080fd5b506006541515610319565b3480156103e457600080fd5b50610281610be5565b3480156103f957600080fd5b506102d660045481565b34801561040f57600080fd5b50610418610d8b565b6040516102b791906117df565b34801561043157600080fd5b506102d6610440366004611827565b610df2565b34801561045157600080fd5b506102d6600581565b34801561046657600080fd5b506102d6610e07565b34801561047b57600080fd5b5061031961048a3660046117c4565b61048e6020526000908152604090205460ff1681565b3480156104ac57600080fd5b506000546001600160a01b03166102a3565b3480156104ca57600080fd5b506102d661048c5481565b3480156104e157600080fd5b506102d6610e21565b3480156104f657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102a3565b34801561052957600080fd5b506102d661048d5481565b34801561054057600080fd5b506102d660035481565b34801561055657600080fd5b506105856105653660046117c4565b6001600160a01b03166000908152610487602052604090205461ffff1690565b60405161ffff90911681526020016102b7565b3480156105a457600080fd5b50610319610e3f565b3480156105b957600080fd5b506105856105c836600461177a565b610e58565b3480156105d957600080fd5b50610281610f1f565b3480156105ee57600080fd5b506102d661048a5481565b34801561060557600080fd5b50610319610f5b565b34801561061a57600080fd5b506102d6603c81565b34801561062f57600080fd5b50610319610f84565b34801561064457600080fd5b506102d6610653366004611722565b610ff3565b34801561066457600080fd5b506040805160188082526020820152016102b7565b34801561068557600080fd5b506102816106943660046117c4565b611009565b610281611055565b3480156106ad57600080fd5b506102816106bc3660046117c4565b611160565b3480156106cd57600080fd5b506103196111c4565b3480156106e257600080fd5b506002546102a3906001600160a01b031681565b34801561070257600080fd5b506102d6606481565b34801561071757600080fd5b506107206111e0565b6040516102b7919061187b565b6107356111c4565b6107795760405162461bcd60e51b815260206004820152601060248201526f19d85b59481b9bdd081cdd185c9d195960821b60448201526064015b60405180910390fd5b6000610786838333611255565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156107de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080291906118ae565b5060005b828110156108375761082f848483818110610823576108236118d7565b90506060020133611305565b600101610806565b50505050565b60008282601860ff83161061088f5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2078206f7574206f6620626f756e647360401b6044820152606401610770565b601860ff8216106108dd5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2079206f7574206f6620626f756e647360401b6044820152606401610770565b60076108e98686610e58565b61ffff1661024081106108fe576108fe6118d7565b60020201546001600160a01b031692505b505092915050565b6000546001600160a01b031633146109415760405162461bcd60e51b8152600401610770906118ed565b6002546001600160a01b03161561095757600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008061048b5411801561099057504261048b5411155b905090565b6000546001600160a01b031633146109bf5760405162461bcd60e51b8152600401610770906118ed565b600080546001600160a01b03191681556040517f6e4ee811a17215345b89e3506064ff2d62f4feedff3566e9d09219cda7e8cadb9190a1565b610a00610979565b610a455760405162461bcd60e51b815260206004820152601660248201527561756374696f6e207374696c6c20636f6e74696e756560501b6044820152606401610770565b610a4d610f84565b610a5957610a59610be5565b33600090815261048e602052604090205460ff1615610aac5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b6044820152606401610770565b33600090815261048e60209081526040808320805460ff1916600117905561048790915290205461ffff1680610b195760405162461bcd60e51b815260206004820152601260248201527106163636f756e7420736861726520697320360741b6044820152606401610770565b610b3e336005548361048c54610b2f9190611927565b610b39919061193e565b6114df565b60025460055461048d546001600160a01b039092169163a9059cbb91600091610b68908690611927565b610b72919061193e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be191906118ae565b5050565b610bed610979565b610c325760405162461bcd60e51b815260206004820152601660248201527561756374696f6e207374696c6c20636f6e74696e756560501b6044820152606401610770565b610c3a610f84565b15610c7d5760405162461bcd60e51b81526020600482015260136024820152721b999d08185b1c9958591e4818db185a5b5959606a1b6044820152606401610770565b61048854610489546040516301a6952360e41b81526001600160a01b039182166004820152911690631a69523090602401600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b50505050610d147f0000000000000000000000000000000000000000000000000000000000000000600561048a54610b39919061193e565b4761048c556002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d859190611960565b61048d55565b610d9361167b565b60408051614800810190915260076102406000835b82821015610de9576040805180820190915260028302850180546001600160a01b031682526001908101546020808401919091529183529092019101610da8565b50505050905090565b6000610dff848484611255565b949350505050565b610e136009600a611a5d565b610e1e906001611927565b81565b60006064600561048a54610e359190611927565b610990919061193e565b6000806006541180156109905750426006541115905090565b60008282601860ff831610610eaa5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2078206f7574206f6620626f756e647360401b6044820152606401610770565b601860ff821610610ef85760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2079206f7574206f6620626f756e647360401b6044820152606401610770565b8460ff168460ff166018610f0c9190611a69565b610f169190611a87565b95945050505050565b6000546001600160a01b03163314610f495760405162461bcd60e51b8152600401610770906118ed565b610f566201518042611aa9565b600655565b6000610f65610e3f565b610f6f5750600090565b61048b54158061099057505061048b54421090565b610488546040805163603159ab60e01b815290516000926001600160a01b03169163603159ab9160048083019260209291908290030181865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099091906118ae565b6000611000838333611255565b90505b92915050565b6000546001600160a01b031633146110335760405162461bcd60e51b8152600401610770906118ed565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61105d610f5b565b61109b5760405162461bcd60e51b815260206004820152600f60248201526e6e6f2061756374696f6e2074696d6560881b6044820152606401610770565b6110a3610e21565b34116110e25760405162461bcd60e51b815260206004820152600e60248201526d62696420697320746f6f206c6f7760901b6044820152606401610770565b610489546001600160a01b03161561110f576104895461048a5461110f916001600160a01b0316906114df565b61048980546001600160a01b031916331790553461048a5561048b546000036111455761113f6201518042611aa9565b61048b55565b603c61048b60008282546111599190611aa9565b9091555050565b6000546001600160a01b0316331461118a5760405162461bcd60e51b8152600401610770906118ed565b610488546001600160a01b0316156111a157600080fd5b61048880546001600160a01b0319166001600160a01b0392909216919091179055565b60008060065411801561099057506111da610e3f565b15905090565b6111e86116b6565b60005b6111f6601880611a69565b61ffff16811015611251576007816102408110611215576112156118d7565b60020201546001600160a01b031682826102408110611236576112366118d7565b6001600160a01b0390921660209290920201526001016111eb565b5090565b60008060005b848110156112fc576112e86112c087878481811061127b5761127b6118d7565b6112919260206060909202019081019150611abc565b8888858181106112a3576112a36118d7565b90506060020160200160208101906112bb9190611abc565b6115a5565b6040805180820190915281546001600160a01b031681526001909101546020820152856115d3565b6112f29083611aa9565b915060010161125b565b50949350505050565b60006113276113176020850185611abc565b6105c86040860160208701611abc565b9050600060078261ffff166102408110611343576113436118d7565b6002020180549091506001600160a01b031680156113a5576001600160a01b03811660009081526104876020526040812080549091906113869061ffff16611ad7565b91906101000a81548161ffff021916908361ffff1602179055506113b9565b6005600081546113b490611af5565b909155505b3360009081526104876020526040812080549091906113db9061ffff16611b0e565b825461ffff9182166101009390930a92830291909202199091161790556040805180820190915282546001600160a01b031681526001830154602082015261142390856115d3565b600183015581546001600160a01b031916331782556040805163133c543d60e01b815261ffff851660048201529086013560248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063133c543d90604401600060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b50505050600454600660008282546114d39190611aa9565b90915550505050505050565b6114e7611651565b801561159c576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461153a576040519150601f19603f3d011682016040523d82523d6000602084013e61153f565b606091505b505090508061159a5760405162461bcd60e51b815260206004820152602160248201527f73656e7420666565206572726f723a206574686572206973206e6f742073656e6044820152601d60fa1b6064820152608401610770565b505b610be160018055565b600060076115b38484610e58565b61ffff1661024081106115c8576115c86118d7565b600202019392505050565b6000816001600160a01b031683600001516001600160a01b0316036115fa57506000611003565b8260200151600003611624576116126009600a611a5d565b61161d906001611927565b9050611003565b606460035484602001516116389190611927565b611642919061193e565b83602001516110009190611aa9565b60026001540361167457604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b604051806148000160405280610240905b604080518082019091526000808252602082015281526020019060019003908161168c5790505090565b604051806148000160405280610240906020820280368337509192915050565b60008083601f8401126116e857600080fd5b50813567ffffffffffffffff81111561170057600080fd5b60208301915083602060608302850101111561171b57600080fd5b9250929050565b6000806020838503121561173557600080fd5b823567ffffffffffffffff81111561174c57600080fd5b611758858286016116d6565b90969095509350505050565b803560ff8116811461177557600080fd5b919050565b6000806040838503121561178d57600080fd5b61179683611764565b91506117a460208401611764565b90509250929050565b80356001600160a01b038116811461177557600080fd5b6000602082840312156117d657600080fd5b611000826117ad565b6190008101818360005b61024081101561181e57815180516001600160a01b0316845260209081015181850152604090930192909101906001016117e9565b50505092915050565b60008060006040848603121561183c57600080fd5b833567ffffffffffffffff81111561185357600080fd5b61185f868287016116d6565b90945092506118729050602085016117ad565b90509250925092565b6148008101818360005b61024081101561181e5781516001600160a01b0316835260209283019290910190600101611885565b6000602082840312156118c057600080fd5b815180151581146118d057600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761100357611003611911565b60008261195b57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561197257600080fd5b5051919050565b600181815b808511156119b457816000190482111561199a5761199a611911565b808516156119a757918102915b93841c939080029061197e565b509250929050565b6000826119cb57506001611003565b816119d857506000611003565b81600181146119ee57600281146119f857611a14565b6001915050611003565b60ff841115611a0957611a09611911565b50506001821b611003565b5060208310610133831016604e8410600b8410161715611a37575081810a611003565b611a418383611979565b8060001904821115611a5557611a55611911565b029392505050565b600061100083836119bc565b61ffff81811683821602808216919082811461090f5761090f611911565b61ffff818116838216019080821115611aa257611aa2611911565b5092915050565b8082018082111561100357611003611911565b600060208284031215611ace57600080fd5b61100082611764565b600061ffff821680611aeb57611aeb611911565b6000190192915050565b600060018201611b0757611b07611911565b5060010190565b600061ffff808316818103611b2557611b25611911565b600101939250505056fea2646970667358221220365caad1eda3e8ef9d34adbc75a003f398f9d631ff55c835914163772e41a9d064736f6c634300081700330000000000000000000000008f506eaf9354aee0dd4460505fef7d75a9d5eb60
Deployed Bytecode
0x6080604052600436106102555760003560e01c806397d54cf711610139578063c7e64a84116100b6578063f30e36581161007a578063f30e365814610699578063f3c13387146106a1578063f9c7894e146106c1578063fc0c546a146106d6578063fe29124c146106f6578063ffe7507f1461070b57600080fd5b8063c7e64a841461060e578063c7f21f3914610623578063e4f8a42214610638578063eaa339b614610658578063f2fde38b1461067957600080fd5b8063a78deefa116100fd578063a78deefa14610598578063b6672790146105ad578063be9a6555146105cd578063c01a9745146105e2578063c17723f9146105f957600080fd5b806397d54cf7146104d55780639b8e9b5e146104ea578063a051078a1461051d578063a384e03014610534578063a447a5c61461054a57600080fd5b80634e71d92d116101d25780637a50b787116101965780637a50b787146104255780637b5d4c23146104455780638703c0171461045a5780638cc080251461046f5780638da5cb5b146104a05780639561330a146104be57600080fd5b80634e71d92d146103ac578063544736e6146103c15780635ae2afa4146103d85780635dfcc86a146103ed578063672077381461040357600080fd5b80632f57fbf0116102195780632f57fbf014610329578063333a00721461034a57806344d9bc5f1461035f57806347ccca02146103745780634b449cba1461039557600080fd5b806301767cdb1461026157806304e418241461028357806310c91973146102c0578063144fa6d7146102e457806318916f9b1461030457600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c366004611722565b61072d565b005b34801561028f57600080fd5b506102a361029e36600461177a565b61083d565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102cc57600080fd5b506102d660055481565b6040519081526020016102b7565b3480156102f057600080fd5b506102816102ff3660046117c4565b610917565b34801561031057600080fd5b50610319610979565b60405190151581526020016102b7565b34801561033557600080fd5b50610489546102a3906001600160a01b031681565b34801561035657600080fd5b50610281610995565b34801561036b57600080fd5b506006546102d6565b34801561038057600080fd5b50610488546102a3906001600160a01b031681565b3480156103a157600080fd5b506102d661048b5481565b3480156103b857600080fd5b506102816109f8565b3480156103cd57600080fd5b506006541515610319565b3480156103e457600080fd5b50610281610be5565b3480156103f957600080fd5b506102d660045481565b34801561040f57600080fd5b50610418610d8b565b6040516102b791906117df565b34801561043157600080fd5b506102d6610440366004611827565b610df2565b34801561045157600080fd5b506102d6600581565b34801561046657600080fd5b506102d6610e07565b34801561047b57600080fd5b5061031961048a3660046117c4565b61048e6020526000908152604090205460ff1681565b3480156104ac57600080fd5b506000546001600160a01b03166102a3565b3480156104ca57600080fd5b506102d661048c5481565b3480156104e157600080fd5b506102d6610e21565b3480156104f657600080fd5b507f0000000000000000000000008f506eaf9354aee0dd4460505fef7d75a9d5eb606102a3565b34801561052957600080fd5b506102d661048d5481565b34801561054057600080fd5b506102d660035481565b34801561055657600080fd5b506105856105653660046117c4565b6001600160a01b03166000908152610487602052604090205461ffff1690565b60405161ffff90911681526020016102b7565b3480156105a457600080fd5b50610319610e3f565b3480156105b957600080fd5b506105856105c836600461177a565b610e58565b3480156105d957600080fd5b50610281610f1f565b3480156105ee57600080fd5b506102d661048a5481565b34801561060557600080fd5b50610319610f5b565b34801561061a57600080fd5b506102d6603c81565b34801561062f57600080fd5b50610319610f84565b34801561064457600080fd5b506102d6610653366004611722565b610ff3565b34801561066457600080fd5b506040805160188082526020820152016102b7565b34801561068557600080fd5b506102816106943660046117c4565b611009565b610281611055565b3480156106ad57600080fd5b506102816106bc3660046117c4565b611160565b3480156106cd57600080fd5b506103196111c4565b3480156106e257600080fd5b506002546102a3906001600160a01b031681565b34801561070257600080fd5b506102d6606481565b34801561071757600080fd5b506107206111e0565b6040516102b7919061187b565b6107356111c4565b6107795760405162461bcd60e51b815260206004820152601060248201526f19d85b59481b9bdd081cdd185c9d195960821b60448201526064015b60405180910390fd5b6000610786838333611255565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390529192506001600160a01b0316906323b872dd906064016020604051808303816000875af11580156107de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080291906118ae565b5060005b828110156108375761082f848483818110610823576108236118d7565b90506060020133611305565b600101610806565b50505050565b60008282601860ff83161061088f5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2078206f7574206f6620626f756e647360401b6044820152606401610770565b601860ff8216106108dd5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2079206f7574206f6620626f756e647360401b6044820152606401610770565b60076108e98686610e58565b61ffff1661024081106108fe576108fe6118d7565b60020201546001600160a01b031692505b505092915050565b6000546001600160a01b031633146109415760405162461bcd60e51b8152600401610770906118ed565b6002546001600160a01b03161561095757600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008061048b5411801561099057504261048b5411155b905090565b6000546001600160a01b031633146109bf5760405162461bcd60e51b8152600401610770906118ed565b600080546001600160a01b03191681556040517f6e4ee811a17215345b89e3506064ff2d62f4feedff3566e9d09219cda7e8cadb9190a1565b610a00610979565b610a455760405162461bcd60e51b815260206004820152601660248201527561756374696f6e207374696c6c20636f6e74696e756560501b6044820152606401610770565b610a4d610f84565b610a5957610a59610be5565b33600090815261048e602052604090205460ff1615610aac5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e4818db185a5b5959608a1b6044820152606401610770565b33600090815261048e60209081526040808320805460ff1916600117905561048790915290205461ffff1680610b195760405162461bcd60e51b815260206004820152601260248201527106163636f756e7420736861726520697320360741b6044820152606401610770565b610b3e336005548361048c54610b2f9190611927565b610b39919061193e565b6114df565b60025460055461048d546001600160a01b039092169163a9059cbb91600091610b68908690611927565b610b72919061193e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be191906118ae565b5050565b610bed610979565b610c325760405162461bcd60e51b815260206004820152601660248201527561756374696f6e207374696c6c20636f6e74696e756560501b6044820152606401610770565b610c3a610f84565b15610c7d5760405162461bcd60e51b81526020600482015260136024820152721b999d08185b1c9958591e4818db185a5b5959606a1b6044820152606401610770565b61048854610489546040516301a6952360e41b81526001600160a01b039182166004820152911690631a69523090602401600060405180830381600087803b158015610cc857600080fd5b505af1158015610cdc573d6000803e3d6000fd5b50505050610d147f00000000000000000000000028d808550ed0a9a15bd3b9103664b8c12abfa740600561048a54610b39919061193e565b4761048c556002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d859190611960565b61048d55565b610d9361167b565b60408051614800810190915260076102406000835b82821015610de9576040805180820190915260028302850180546001600160a01b031682526001908101546020808401919091529183529092019101610da8565b50505050905090565b6000610dff848484611255565b949350505050565b610e136009600a611a5d565b610e1e906001611927565b81565b60006064600561048a54610e359190611927565b610990919061193e565b6000806006541180156109905750426006541115905090565b60008282601860ff831610610eaa5760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2078206f7574206f6620626f756e647360401b6044820152606401610770565b601860ff821610610ef85760405162461bcd60e51b8152602060048201526018602482015277706f736974696f6e2079206f7574206f6620626f756e647360401b6044820152606401610770565b8460ff168460ff166018610f0c9190611a69565b610f169190611a87565b95945050505050565b6000546001600160a01b03163314610f495760405162461bcd60e51b8152600401610770906118ed565b610f566201518042611aa9565b600655565b6000610f65610e3f565b610f6f5750600090565b61048b54158061099057505061048b54421090565b610488546040805163603159ab60e01b815290516000926001600160a01b03169163603159ab9160048083019260209291908290030181865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099091906118ae565b6000611000838333611255565b90505b92915050565b6000546001600160a01b031633146110335760405162461bcd60e51b8152600401610770906118ed565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61105d610f5b565b61109b5760405162461bcd60e51b815260206004820152600f60248201526e6e6f2061756374696f6e2074696d6560881b6044820152606401610770565b6110a3610e21565b34116110e25760405162461bcd60e51b815260206004820152600e60248201526d62696420697320746f6f206c6f7760901b6044820152606401610770565b610489546001600160a01b03161561110f576104895461048a5461110f916001600160a01b0316906114df565b61048980546001600160a01b031916331790553461048a5561048b546000036111455761113f6201518042611aa9565b61048b55565b603c61048b60008282546111599190611aa9565b9091555050565b6000546001600160a01b0316331461118a5760405162461bcd60e51b8152600401610770906118ed565b610488546001600160a01b0316156111a157600080fd5b61048880546001600160a01b0319166001600160a01b0392909216919091179055565b60008060065411801561099057506111da610e3f565b15905090565b6111e86116b6565b60005b6111f6601880611a69565b61ffff16811015611251576007816102408110611215576112156118d7565b60020201546001600160a01b031682826102408110611236576112366118d7565b6001600160a01b0390921660209290920201526001016111eb565b5090565b60008060005b848110156112fc576112e86112c087878481811061127b5761127b6118d7565b6112919260206060909202019081019150611abc565b8888858181106112a3576112a36118d7565b90506060020160200160208101906112bb9190611abc565b6115a5565b6040805180820190915281546001600160a01b031681526001909101546020820152856115d3565b6112f29083611aa9565b915060010161125b565b50949350505050565b60006113276113176020850185611abc565b6105c86040860160208701611abc565b9050600060078261ffff166102408110611343576113436118d7565b6002020180549091506001600160a01b031680156113a5576001600160a01b03811660009081526104876020526040812080549091906113869061ffff16611ad7565b91906101000a81548161ffff021916908361ffff1602179055506113b9565b6005600081546113b490611af5565b909155505b3360009081526104876020526040812080549091906113db9061ffff16611b0e565b825461ffff9182166101009390930a92830291909202199091161790556040805180820190915282546001600160a01b031681526001830154602082015261142390856115d3565b600183015581546001600160a01b031916331782556040805163133c543d60e01b815261ffff851660048201529086013560248201527f0000000000000000000000008f506eaf9354aee0dd4460505fef7d75a9d5eb606001600160a01b03169063133c543d90604401600060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b50505050600454600660008282546114d39190611aa9565b90915550505050505050565b6114e7611651565b801561159c576000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461153a576040519150601f19603f3d011682016040523d82523d6000602084013e61153f565b606091505b505090508061159a5760405162461bcd60e51b815260206004820152602160248201527f73656e7420666565206572726f723a206574686572206973206e6f742073656e6044820152601d60fa1b6064820152608401610770565b505b610be160018055565b600060076115b38484610e58565b61ffff1661024081106115c8576115c86118d7565b600202019392505050565b6000816001600160a01b031683600001516001600160a01b0316036115fa57506000611003565b8260200151600003611624576116126009600a611a5d565b61161d906001611927565b9050611003565b606460035484602001516116389190611927565b611642919061193e565b83602001516110009190611aa9565b60026001540361167457604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b604051806148000160405280610240905b604080518082019091526000808252602082015281526020019060019003908161168c5790505090565b604051806148000160405280610240906020820280368337509192915050565b60008083601f8401126116e857600080fd5b50813567ffffffffffffffff81111561170057600080fd5b60208301915083602060608302850101111561171b57600080fd5b9250929050565b6000806020838503121561173557600080fd5b823567ffffffffffffffff81111561174c57600080fd5b611758858286016116d6565b90969095509350505050565b803560ff8116811461177557600080fd5b919050565b6000806040838503121561178d57600080fd5b61179683611764565b91506117a460208401611764565b90509250929050565b80356001600160a01b038116811461177557600080fd5b6000602082840312156117d657600080fd5b611000826117ad565b6190008101818360005b61024081101561181e57815180516001600160a01b0316845260209081015181850152604090930192909101906001016117e9565b50505092915050565b60008060006040848603121561183c57600080fd5b833567ffffffffffffffff81111561185357600080fd5b61185f868287016116d6565b90945092506118729050602085016117ad565b90509250925092565b6148008101818360005b61024081101561181e5781516001600160a01b0316835260209283019290910190600101611885565b6000602082840312156118c057600080fd5b815180151581146118d057600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b6020808252600a908201526937b7363c9037bbb732b960b11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761100357611003611911565b60008261195b57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561197257600080fd5b5051919050565b600181815b808511156119b457816000190482111561199a5761199a611911565b808516156119a757918102915b93841c939080029061197e565b509250929050565b6000826119cb57506001611003565b816119d857506000611003565b81600181146119ee57600281146119f857611a14565b6001915050611003565b60ff841115611a0957611a09611911565b50506001821b611003565b5060208310610133831016604e8410600b8410161715611a37575081810a611003565b611a418383611979565b8060001904821115611a5557611a55611911565b029392505050565b600061100083836119bc565b61ffff81811683821602808216919082811461090f5761090f611911565b61ffff818116838216019080821115611aa257611aa2611911565b5092915050565b8082018082111561100357611003611911565b600060208284031215611ace57600080fd5b61100082611764565b600061ffff821680611aeb57611aeb611911565b6000190192915050565b600060018201611b0757611b07611911565b5060010190565b600061ffff808316818103611b2557611b25611911565b600101939250505056fea2646970667358221220365caad1eda3e8ef9d34adbc75a003f398f9d631ff55c835914163772e41a9d064736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008f506eaf9354aee0dd4460505fef7d75a9d5eb60
-----Decoded View---------------
Arg [0] : canvasAddress (address): 0x8f506eAf9354AeE0dd4460505FEF7d75A9D5eB60
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008f506eaf9354aee0dd4460505fef7d75a9d5eb60
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,153.14 | 0.2868 | $904.28 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.