ETH Price: $3,154.12 (+1.12%)
Gas: 2 Gwei

Contract

0xA99142657A223d1f3834326BCFaf7B938d9841fB
 

Overview

ETH Balance

0.286787713754023476 ETH

Eth Value

$904.56 (@ $3,154.12/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim192627422024-02-19 15:43:11144 days ago1708357391IN
0xA9914265...38d9841fB
0 ETH0.0042697247.6334669
Claim192622142024-02-19 13:56:23145 days ago1708350983IN
0xA9914265...38d9841fB
0 ETH0.0034125638.07097314
Claim192621922024-02-19 13:51:59145 days ago1708350719IN
0xA9914265...38d9841fB
0 ETH0.0036138140.31606527
Claim192621812024-02-19 13:49:47145 days ago1708350587IN
0xA9914265...38d9841fB
0 ETH0.0039434543.99364347
Claim192621722024-02-19 13:47:59145 days ago1708350479IN
0xA9914265...38d9841fB
0 ETH0.0038770943.25329957
Claim192621072024-02-19 13:34:59145 days ago1708349699IN
0xA9914265...38d9841fB
0 ETH0.0042857247.81202681
Claim192621042024-02-19 13:34:23145 days ago1708349663IN
0xA9914265...38d9841fB
0 ETH0.0041202545.96596538
Make Bid192524202024-02-18 4:47:59146 days ago1708231679IN
0xA9914265...38d9841fB
0.001 ETH0.0007671815.35175047
Write Chunks192522242024-02-18 4:08:23146 days ago1708229303IN
0xA9914265...38d9841fB
0 ETH0.0039650114.76288296
Write Chunks192518712024-02-18 2:56:35146 days ago1708224995IN
0xA9914265...38d9841fB
0 ETH0.0026925717.86448185
Write Chunks192518682024-02-18 2:55:59146 days ago1708224959IN
0xA9914265...38d9841fB
0 ETH0.0022247114.0898075
Write Chunks192518682024-02-18 2:55:59146 days ago1708224959IN
0xA9914265...38d9841fB
0 ETH0.022511816.5398075
Write Chunks192514172024-02-18 1:24:59146 days ago1708219499IN
0xA9914265...38d9841fB
0 ETH0.0190113124.56322127
Write Chunks192514002024-02-18 1:21:35146 days ago1708219295IN
0xA9914265...38d9841fB
0 ETH0.0033318519.24490769
Write Chunks192512312024-02-18 0:47:35146 days ago1708217255IN
0xA9914265...38d9841fB
0 ETH0.0046769917.65404453
Write Chunks192510852024-02-18 0:17:47146 days ago1708215467IN
0xA9914265...38d9841fB
0 ETH0.0114783323.69169051
Write Chunks192510792024-02-18 0:16:35146 days ago1708215395IN
0xA9914265...38d9841fB
0 ETH0.0092663125.96217805
Write Chunks192510752024-02-18 0:15:47146 days ago1708215347IN
0xA9914265...38d9841fB
0 ETH0.017467222.45736222
Write Chunks192502422024-02-17 21:27:23146 days ago1708205243IN
0xA9914265...38d9841fB
0 ETH0.0020879922.14835789
Write Chunks192502112024-02-17 21:21:11146 days ago1708204871IN
0xA9914265...38d9841fB
0 ETH0.04177821.23203989
Write Chunks192501752024-02-17 21:13:47146 days ago1708204427IN
0xA9914265...38d9841fB
0 ETH0.0083989518.50055073
Write Chunks192501662024-02-17 21:11:59146 days ago1708204319IN
0xA9914265...38d9841fB
0 ETH0.011871620.1728848
Write Chunks192500672024-02-17 20:51:59146 days ago1708203119IN
0xA9914265...38d9841fB
0 ETH0.0057939919.84285032
Write Chunks192500392024-02-17 20:46:23146 days ago1708202783IN
0xA9914265...38d9841fB
0 ETH0.0249380728.18766009
Write Chunks192498012024-02-17 19:58:23146 days ago1708199903IN
0xA9914265...38d9841fB
0 ETH0.0026762822.76915566
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
195231392024-03-27 3:51:35108 days ago1711511495
0xA9914265...38d9841fB
0.00122842 ETH
195126572024-03-25 16:25:59109 days ago1711383959
0xA9914265...38d9841fB
0.0004165 ETH
195112482024-03-25 11:38:23110 days ago1711366703
0xA9914265...38d9841fB
0.0005074 ETH
194953692024-03-23 5:59:23112 days ago1711173563
0xA9914265...38d9841fB
0.00024537 ETH
194455252024-03-16 5:55:59119 days ago1710568559
0xA9914265...38d9841fB
0.00085041 ETH
193936702024-03-08 23:28:47126 days ago1709940527
0xA9914265...38d9841fB
0.00145402 ETH
192861852024-02-22 22:40:11141 days ago1708641611
0xA9914265...38d9841fB
0.00873972 ETH
192861832024-02-22 22:39:47141 days ago1708641587
0xA9914265...38d9841fB
0.00323147 ETH
192627422024-02-19 15:43:11144 days ago1708357391
0xA9914265...38d9841fB
0.05402287 ETH
192622142024-02-19 13:56:23145 days ago1708350983
0xA9914265...38d9841fB
21.28501199 ETH
192621922024-02-19 13:51:59145 days ago1708350719
0xA9914265...38d9841fB
3.51148675 ETH
192621812024-02-19 13:49:47145 days ago1708350587
0xA9914265...38d9841fB
0.48620585 ETH
192621722024-02-19 13:47:59145 days ago1708350479
0xA9914265...38d9841fB
0.48620585 ETH
192621072024-02-19 13:34:59145 days ago1708349699
0xA9914265...38d9841fB
0.16206861 ETH
192621042024-02-19 13:34:23145 days ago1708349663
0xA9914265...38d9841fB
1.94482343 ETH
192620652024-02-19 13:26:35145 days ago1708349195
0xA9914265...38d9841fB
2.91723514 ETH
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
192604422024-02-19 7:57:11145 days ago1708329431
0xA9914265...38d9841fB
1 wei
View All Internal Transactions
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
File 1 of 8 : Game.sol
// 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
        );
    }
}

File 2 of 8 : IERC20.sol
// 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);
}

File 3 of 8 : ReentrancyGuard.sol
// 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;
    }
}

File 4 of 8 : CanvasBounds.sol
// 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;
    }
}

File 5 of 8 : ICanvas.sol
// 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);
}

File 6 of 8 : IGame.sol
// 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);
}

File 7 of 8 : Ownable.sol
// 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;
    }
}

File 8 of 8 : IMintableNft.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

interface IMintableNft {
    function transfer(address to) external;

    function isTransferred() external view returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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"}]

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.