Contract 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f

 

Contract Overview

Balance:
2 MATIC

MATIC Value:
$3.22 (@ $1.61/MATIC)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x011497139d55ad4ae89d835ee7c9028b65df2da001c76ef9b6f790d4b8accf3dTransfer238459872022-01-18 0:25:485 days 23 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.011402657541
0xa8f9f41cedec9cb44864e620cfdc851216b1fa838e5eb3cefe401f7a0251bf4dTake Throne238143592022-01-17 5:00:096 days 18 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00541889733
0x82afec6835e2323975b8bae6da5d764b1076f4b73e2ce79cead930f5886f6a4cTake Throne238045842022-01-16 23:17:407 days 35 mins ago0xaa462a620220b912f3b7e67343a18710d1e9bf13 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00525468832
0x9b89f9611ac4f9e473d9a3027b104a524fc55b5f72b4c2e06d33c1ab57f2191eTransfer237322702022-01-15 2:48:248 days 21 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.003836014182
0x1fddc4428d4e5f4e946fcd67cf77863aee369a436a09bf89ef213c6cd9b575ceTake Throne237262962022-01-14 23:16:409 days 36 mins ago0xaa462a620220b912f3b7e67343a18710d1e9bf13 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00525468832
0x129790157c1fadd0175066dceb25a1c13d31bb19efdd5494a7aaebb899e215e5Transfer235838992022-01-11 6:05:3712 days 17 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.004257554202
0xeac2bf47ade755d4efc04c904d4b035335a8f8846a31eea2ea3db318879bc99dTake Throne235723052022-01-10 22:41:0413 days 1 hr ago0x4af9da81594c6e204e66a0546dd11faec5fb8982 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00607573337.000000001
0xc8a5ab90e3d07639c196eb9b28d0df6af579d1aba89fad728a19009a48a48ae4Transfer235375362022-01-10 0:33:2113 days 23 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.00092738844
0x4042fd8eea40a58377404fea106c9fe93ea06b41b823abc18780b56005d0d08eTake Throne235333632022-01-09 22:05:4814 days 1 hr ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00372342432
0x7e5799700b27fc8522acbe27b75058419dbafd10bb9b4030a2e8f42327b0f078Take Throne235307862022-01-09 20:30:0414 days 3 hrs ago0x4af9da81594c6e204e66a0546dd11faec5fb8982 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00525468832
0xd88a184c625a035bc832ab138240253c624171ce5234aaa2befd7e586413ed1eTransfer234599882022-01-08 0:43:3815 days 23 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.01517544720
0xac03738efb0f2d7930159c96115cc3d2f0f304798679190fec94ffac224287a3Take Throne234533602022-01-07 20:37:5516 days 3 hrs ago0x4af9da81594c6e204e66a0546dd11faec5fb8982 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00525468832
0x8bd19f1873e610720b08fe83523ad621d6d508193b96870a343984ffe8c2383dTransfer234333942022-01-07 7:43:4716 days 16 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.016355752776
0x9b8fed741f00b7c81dceb0389554443511151c9cd02ce7e35f40a3c7c74d9de8Take Throne233875972022-01-06 1:29:5417 days 22 hrs ago0xe43a3035f8b1406daa64c4be13b0bfd0cfaaa326 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.082432918502
0x44209af282c15f3836101aa835d466b07d4d9ce288e840b2f4b48531a6a7fda0Transfer233296282022-01-04 6:53:5319 days 16 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.006386331303
0x4c32552d3800ffccdfe392021399f7c20a2aab741d6119b33bf80e691bd98b16Take Throne232818512022-01-03 1:16:2820 days 22 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00853886852
0xfce1fb7073f467ad21413f62d5d5e4b66bd562bb4f5fca479e3cbb8e496d995fTake Throne232634082022-01-02 13:53:1021 days 10 hrs ago0xa3794290ff6d750904cf963d1db8d86fe408aec5 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00755361446
0x2b587bb6b2f8e0796c6a708d98da9ebb4da2bf9ad4808bbe6ac0568d6127d0e6Transfer232626952022-01-02 13:26:3121 days 10 hrs ago0xa3794290ff6d750904cf963d1db8d86fe408aec5 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f5 MATIC0.0006323130
0xcd0770633d3cbeb6b6e27481258e256a227b62c99f7a95164f84ed887bbd5575Transfer232428232022-01-02 1:24:1821 days 22 hrs ago0x2247d5d238d0f9d37184d8332ae0289d1ad9991b IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f2 MATIC0.002634625125
0x1a7f0bdfb0859cbf94ad1d23a2cd54134dfeda4c5a184f8e0ce6554397f359faTake Throne232355432022-01-01 20:58:0222 days 2 hrs ago0x2a7d6d3bd7317141f9ef15f13ad31b0dbc152d20 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00317622432
0x376ee510e65dea471edf62a7cc1ccecb8884ee96a88cbc30678cfbaa5c06c1eaTake Throne232354962022-01-01 20:56:2422 days 2 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00175894432
0xd381915c5b499fbcee85d94058c347869f765679da6e45f48370caed4b43d954Take Throne232353642022-01-01 20:51:5222 days 3 hrs ago0xa3794290ff6d750904cf963d1db8d86fe408aec5 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00175894432
0x6df0c0d66eb5c418c05fbca715eaf2afc558adec8f1aab108e17982a87ffdef4Take Throne232353362022-01-01 20:50:5622 days 3 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00175894432
0x73256e8ae841e4b1ebdb34c4eac305640105a2afac58bf42ab481fd2849512f4Take Throne232352922022-01-01 20:49:2422 days 3 hrs ago0xa3794290ff6d750904cf963d1db8d86fe408aec5 IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00175894432
0xe0a2026974689fe5d43cd1321b9fc20f1b64ead6a408c86a59edc058411daf27Take Throne232352672022-01-01 20:48:3422 days 3 hrs ago0xa870e4959182fc17258519a65d8f09de17c74b3c IN  0xf41ea5016be2e2d730c31911ca08849b67c8dc2f1 MATIC0.00175894432
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf0e4b4f15b966700167a13753aba1e4e508bfdea1d8909b86636ca72087489de238455252022-01-18 0:09:565 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.1 MATIC
0xf0e4b4f15b966700167a13753aba1e4e508bfdea1d8909b86636ca72087489de238455252022-01-18 0:09:565 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa870e4959182fc17258519a65d8f09de17c74b3c0.9 MATIC
0x45bc61b976e7651833ee8b3042722431e15b3422c8081067a031488046199dd3238059772022-01-17 0:09:516 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.3 MATIC
0x45bc61b976e7651833ee8b3042722431e15b3422c8081067a031488046199dd3238059772022-01-17 0:09:516 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xaa462a620220b912f3b7e67343a18710d1e9bf132.7 MATIC
0x3519a965658140420878fe40a0af90bac8f97eca59e51b0fb9bfd4f84054bddc237277762022-01-15 0:09:408 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.3 MATIC
0x3519a965658140420878fe40a0af90bac8f97eca59e51b0fb9bfd4f84054bddc237277762022-01-15 0:09:408 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xaa462a620220b912f3b7e67343a18710d1e9bf132.7 MATIC
0xb5d180747b6fc2b0f38bff93088112e12ddadf6c7afe70b2d207ac1889475da2235744902022-01-11 0:09:1612 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.3 MATIC
0xb5d180747b6fc2b0f38bff93088112e12ddadf6c7afe70b2d207ac1889475da2235744902022-01-11 0:09:1612 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x4af9da81594c6e204e66a0546dd11faec5fb89822.7 MATIC
0xcf3f1dd2dc32b77659d05ee99109a368ea4d1399acd65f5fdadc17e93b66e5ac235368652022-01-10 0:09:1013 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.4 MATIC
0xcf3f1dd2dc32b77659d05ee99109a368ea4d1399acd65f5fdadc17e93b66e5ac235368652022-01-10 0:09:1013 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa870e4959182fc17258519a65d8f09de17c74b3c3.6 MATIC
0x32fcf34e9ccf136de8b77fe5abbe9327ed4ab277aba27d99c9acfe48508e75bf234590612022-01-08 0:08:5415 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.3 MATIC
0x32fcf34e9ccf136de8b77fe5abbe9327ed4ab277aba27d99c9acfe48508e75bf234590612022-01-08 0:08:5415 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x4af9da81594c6e204e66a0546dd11faec5fb89822.7 MATIC
0x6e53bf0ea512bc77eb5db6f7e18d211d05febc9d879cfb301f72a6d95dd310e6234210482022-01-07 0:08:4416 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.3 MATIC
0x6e53bf0ea512bc77eb5db6f7e18d211d05febc9d879cfb301f72a6d95dd310e6234210482022-01-07 0:08:4416 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xe43a3035f8b1406daa64c4be13b0bfd0cfaaa3262.7 MATIC
0xfa357d56f9dd192256e906a3713840801e4914df0d0c25f1e80b087d8f08b4e9233187282022-01-04 0:07:4919 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.1 MATIC
0xfa357d56f9dd192256e906a3713840801e4914df0d0c25f1e80b087d8f08b4e9233187282022-01-04 0:07:4919 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa870e4959182fc17258519a65d8f09de17c74b3c0.9 MATIC
0xee4fa7bbefb43d69493212ba05f297a3fd8c1f662ea6975c9f742b2de2e5c582232801202022-01-03 0:07:3820 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.8 MATIC
0xee4fa7bbefb43d69493212ba05f297a3fd8c1f662ea6975c9f742b2de2e5c582232801202022-01-03 0:07:3820 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa3794290ff6d750904cf963d1db8d86fe408aec57.2 MATIC
0x70a585f766c75a2fb00777dbf881ca2a08354ebb2a4dd995cd2a1c868fe40a82232407702022-01-02 0:07:2021 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b2.3 MATIC
0x70a585f766c75a2fb00777dbf881ca2a08354ebb2a4dd995cd2a1c868fe40a82232407702022-01-02 0:07:2021 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa3794290ff6d750904cf963d1db8d86fe408aec520.7 MATIC
0xbc315e9344c2e0d1166b6c61b11c1563b10ee544bebf0750462570d63e20c7e8232012232022-01-01 0:07:1522 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.6 MATIC
0xbc315e9344c2e0d1166b6c61b11c1563b10ee544bebf0750462570d63e20c7e8232012232022-01-01 0:07:1522 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x6c42f0a5649125f2f11e569af8c970c843eeda745.4 MATIC
0x7fa303a62696e270f9ddf184377878d2809ce1b42267f000c855dd4b53d24fd5231610532021-12-31 0:07:0623 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b0.6 MATIC
0x7fa303a62696e270f9ddf184377878d2809ce1b42267f000c855dd4b53d24fd5231610532021-12-31 0:07:0623 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0xa3794290ff6d750904cf963d1db8d86fe408aec55.4 MATIC
0x0b47b381676c780e77e4ecbb04210e73157fb8ec2c4224d708111cbd0f6f1df1231215982021-12-30 0:07:0124 days 23 hrs ago 0xf41ea5016be2e2d730c31911ca08849b67c8dc2f0x2247d5d238d0f9d37184d8332ae0289d1ad9991b1.1 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EthroneContract

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 2 : EthroneContract.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.0 <0.9.0;

import "@chainlink/contracts/src/v0.8/interfaces/KeeperCompatibleInterface.sol";

/**
 * @title EthroneContract
 * @dev Manages the Ethrone game contract
 *
 * Rules:
 * fixed amount to enter goes into prize pool
 * only one player can take the throne per block
 * players can only capture the throne `maxAttempts` times per round (default: 3)
 * time spent accumulates for the user everytimes they takes over the throne
 * a round lasts `roundDuration` seconds (default: 24h)
 * at the end of the round - prizepool goes to user who spent the most time on the Throne
 * if multiple top users with the same time spent -> the first player that has reached the time gets the prize
 * players that don't win get a 1h time bonus for next round, to use whenever they see fit, can accumulate more than 1 time bonus
 */
contract EthroneContract is KeeperCompatibleInterface {

    uint8 public immutable maxAttempts;
    uint32 public immutable roundDuration;
    address public immutable contractOwner;
    uint256 public immutable throneCost;
    uint8 public immutable maxRoundBonus = 12; // max 12h bonus

    uint256 public lastRoundStartTime;
    uint32 public round;
    address public lastWinner;
    ThroneOwner public currentThroneOwner;
    address[] public participants;
    mapping (address => uint32) timeSpentMapping;
    mapping (address => uint8) attemptsMapping;
    mapping (address => uint32) winnerToRoundMapping;
    mapping (uint32 => address) roundToWinnerMapping; 
    mapping (address => uint8) timeBonusMapping;

    event ThroneTaken(address prevOwner, address newOwner, uint32 prevOwnerTimeSpent, uint32 round, uint256 timestamp);
    event WinnerChosen(address winner, uint256 prize, uint32 totalTimeSpent, uint32 round, uint32 totalPlayers);
    event TimeBoosterUsed(address user, uint8 bonusUsed, uint32 round, uint256 timestamp);

    struct ThroneOwner {
        address user;
        uint256 timestamp;
        bytes32 hash;
    }

    constructor(uint32 duration, uint8 maxAttemptsPerPlayer, uint256 cost) {
        contractOwner = msg.sender;
        round = 1;
        roundDuration = duration;
        lastRoundStartTime = block.timestamp;
        maxAttempts = maxAttemptsPerPlayer;
        throneCost = cost;
    }

    // Keeper interface

    function checkUpkeep(bytes calldata /* checkData */) external override view returns (bool upkeepNeeded, bytes memory /* performData */) {
        upkeepNeeded = (block.timestamp - lastRoundStartTime) > roundDuration;
    }

    function performUpkeep(bytes calldata /* performData */) external override {
        awardPrize();
    }

    // Fallback functions

    /**
     * Fallback function to add funds to the pool without playing
     */
    receive() external payable {
       require(msg.value > 0, "Requires some value to fund the prize pool");
     }

    // Game public functions   

    /**
      Main game function
     */
    function takeThrone() public payable {
        require(msg.value == throneCost, "Exactly 0.01 ether is required to take the Ethrone"); // mandatory fixed price
        require((block.timestamp - lastRoundStartTime) < roundDuration, "The round is over! Wait for the next one to start");
        // contractOwner cannot take the throne
        address newOwner = msg.sender;
        require(newOwner != currentThroneOwner.user, "You already own the Ethrone!");
        require(newOwner != contractOwner, "The contract owner is not allowed to play");

        // reject transaction if the current owner already owns this block
        bytes32 currentHash = blockhash(block.number - 1);
        require(currentThroneOwner.hash != currentHash, "The throne is already taken for this block!");

        // reject transaction if player already reached the max attempts this round
        require(attemptsMapping[newOwner] < maxAttempts, "You have reached the maximum attempts for this round");

        // record new participant if not already recorded
        if (attemptsMapping[newOwner] == 0) {
          participants.push(newOwner);
        }

        // increment attempts for player
        attemptsMapping[newOwner] = attemptsMapping[newOwner] + 1;        

        // record time for last owner
        updateLastTimeSpent();

        // set the new owner
        address previousOwner = currentThroneOwner.user;
        currentThroneOwner = ThroneOwner(newOwner, block.timestamp, currentHash);
        emit ThroneTaken(previousOwner, newOwner, accumulatedTimeSpent(previousOwner), round, block.timestamp);
    }

    /**
     * Find the winner of the round and transfers the prize to it
     */
    function awardPrize() public {
        require((block.timestamp - lastRoundStartTime) > roundDuration, "The round is not over yet!");
        
        // find winner
        uint32 participantSize = uint32(participants.length);
        uint32 longestTimeSpent = 0;
        address winner;

        // no players this round, start the next one
        if (participantSize == 0) {
            resetGameAndStartNextRound();
            return;
        }

        // update last owner's time spent
        updateLastTimeSpent();

        // find the winner address
        for (uint32 i = 0; i < participantSize; i++) {
            address participant = participants[i];
            uint32 timeSpent = timeSpentMapping[participant];
            if (timeSpent > longestTimeSpent && participant != contractOwner) {
                winner = participant;
                longestTimeSpent = timeSpent;
            }
        }

        // assert valid winner
        require(winner != address(0x0), "Did not find a winner");
        require(winner != contractOwner, "Winner cannot be the owner");
        // transfer prize
        uint256 totalPrize = currentPrizePool();
        uint256 winnerPrize = totalPrize * 90 / 100; // 90% for the winner
        uint256 maintenanceBudget = totalPrize - winnerPrize; // 10% for maintenance costs
        payable(winner).transfer(winnerPrize);
        payable(contractOwner).transfer(maintenanceBudget);
        lastWinner = winner;
        winnerToRoundMapping[winner] = round;
        roundToWinnerMapping[round] = winner;
        emit WinnerChosen(winner, winnerPrize, accumulatedTimeSpent(winner), round, participantSize);

        // cleanup and start next round
        resetGameAndStartNextRound();
    }

    /**
     * Consumes the accumulated time bonus from playing in the previous rounds
     */
    function consumeTimeBonus() public {
        address sender = msg.sender;
        uint8 prevBonus = timeBonusMapping[sender];
        require(sender == currentOwner(), "Can only use time bonus while being on the throne");
        require(prevBonus > 0, "No previous round time bonus");
        timeBonusMapping[sender] = 0;
        timeSpentMapping[sender] += uint32(prevBonus * 3600); // convert bonus from hours to seconds
        emit TimeBoosterUsed(sender, prevBonus, round, block.timestamp);
    }

    /**
     * The total prize pool for this round 
     */
    function currentPrizePool() public view returns (uint256) {
        return address(this).balance;
    }

    /**
     * The time spent by the last owner
     */
    function currentTimeSpent() public view returns (uint32) {
        return uint32(block.timestamp - currentThroneOwner.timestamp);
    }

    /**
     * The address of the current owner
     */
    function currentOwner() public view returns (address) {
      return currentThroneOwner.user;
    }

    /**
     * The previous time spent for a given address (excluding current)
     */
    function accumulatedTimeSpent(address user) public view returns (uint32) {
        return timeSpentMapping[user];
    }

    /**
     * The total time spent (including current) for the given address
     */
    function totalTimeSpent(address user) public view returns (uint32) {
        if (user == currentThroneOwner.user) {
          return currentTimeSpent() + accumulatedTimeSpent(user);
        }
        return accumulatedTimeSpent(user);
    }

    /**
     * Total number of participants for this round
     */
    function totalParticipants() public view returns (uint32) {
        return uint32(participants.length);
    }

    /**
     * The amount of time since current round started
     */
    function currentRoundTime() public view returns (uint32) {
        return uint32(block.timestamp - lastRoundStartTime);
    }

    /**
     * The number of attempts for a given player this round
     */
    function numberOfAttemts(address user) public view returns (uint8) {
        return attemptsMapping[user];
    }

    /**
     * The winner for the given round
     */
    function winnerForRound(uint32 r) public view returns (address) {
        return roundToWinnerMapping[r];
    }

     /**
     * The round that the given address won
     */
    function roundForWinner(address user) public view returns (uint32) {
        return winnerToRoundMapping[user];
    }

    /**
     * The accumulated time bonus for a user
     */
    function timeBonus(address user) public view returns (uint8) {
        return timeBonusMapping[user];
    }

    // PRIVATE

    /**
     * Records the time spent for the current owner 
     */
    function updateLastTimeSpent() private {
        address user = currentThroneOwner.user;
        if (user != address(0x0)) {
          uint256 timeTaken = currentThroneOwner.timestamp;
          timeSpentMapping[user] += uint32(block.timestamp - timeTaken);
        }
    }

    function resetGameAndStartNextRound() private {
        uint32 participantSize = uint32(participants.length);
        for (uint32 i = 0; i < participantSize; i++) {
            address participant = participants[i];
            if (participant != lastWinner) {
                // for all non-winners, add a bonus for next rounds
                uint8 bonus = timeBonusMapping[participant];
                if (bonus < maxRoundBonus) {
                    timeBonusMapping[participant] += 1;
                }
            }
            delete timeSpentMapping[participant]; // clear mapping entry
            delete attemptsMapping[participant];
        }
        delete participants; // clear all participants
        delete currentThroneOwner; // reset current owner

        // prepare for new round
        round = round + 1;
        lastRoundStartTime = block.timestamp;
    }

    // modifier to check if caller is owner
    modifier isOwner() {
        require(msg.sender == contractOwner, "Caller is not owner");
        _;
    }
}

File 2 of 2 : KeeperCompatibleInterface.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface KeeperCompatibleInterface {

  /**
   * @notice checks if the contract requires work to be done.
   * @param checkData data passed to the contract when checking for upkeep.
   * @return upkeepNeeded boolean to indicate whether the keeper should call
   * performUpkeep or not.
   * @return performData bytes that the keeper should call performUpkeep with,
   * if upkeep is needed.
   */
  function checkUpkeep(
    bytes calldata checkData
  )
    external
    returns (
      bool upkeepNeeded,
      bytes memory performData
    );

  /**
   * @notice Performs work on the contract. Executed by the keepers, via the registry.
   * @param performData is the data which was passed back from the checkData
   * simulation.
   */
  function performUpkeep(
    bytes calldata performData
  ) external;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint32","name":"duration","type":"uint32"},{"internalType":"uint8","name":"maxAttemptsPerPlayer","type":"uint8"},{"internalType":"uint256","name":"cost","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"prevOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"},{"indexed":false,"internalType":"uint32","name":"prevOwnerTimeSpent","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"round","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ThroneTaken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint8","name":"bonusUsed","type":"uint8"},{"indexed":false,"internalType":"uint32","name":"round","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TimeBoosterUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"winner","type":"address"},{"indexed":false,"internalType":"uint256","name":"prize","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"totalTimeSpent","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"round","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"totalPlayers","type":"uint32"}],"name":"WinnerChosen","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"accumulatedTimeSpent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"awardPrize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"consumeTimeBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPrizePool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRoundTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThroneOwner","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTimeSpent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRoundStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastWinner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAttempts","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundBonus","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"numberOfAttemts","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"participants","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"round","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roundDuration","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"roundForWinner","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeThrone","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"throneCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"timeBonus","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalParticipants","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"totalTimeSpent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"r","type":"uint32"}],"name":"winnerForRound","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610120604052600360fa1b6101005234801561001a57600080fd5b506040516117e13803806117e183398101604081905261003991610097565b3360601b60c0526001805463ffffffff19168117905560e092831b6001600160e01b03191660a0524260005560f89190911b7fff000000000000000000000000000000000000000000000000000000000000001660805290526100e6565b6000806000606084860312156100ab578283fd5b835163ffffffff811681146100be578384fd5b602085015190935060ff811681146100d4578283fd5b80925050604084015190509250925092565b60805160f81c60a05160e01c60c05160601c60e0516101005160f81c61166561017c600039600081816103b301526112400152600081816104fd0152610c970152600081816105640152818161097101528181610a1801528181610b070152610e1a0152600081816105cd0152818161084d01528181610c580152610d210152600081816102af0152610f4001526116656000f3fe6080604052600436106101855760003560e01c80638b64e507116100d1578063b387ef921161008a578063f32f523a11610064578063f32f523a146105a6578063f7cb789a146105bb578063fe188184146105ef578063fe31a6131461061757600080fd5b8063b387ef9214610534578063ce606ee014610552578063df03d7c31461058657600080fd5b80638b64e5071461045957806390ea2ae914610495578063953136e11461049d578063a26dbf26146104d6578063a3b3913c146104eb578063ad6fe0831461051f57600080fd5b80634585e33b1161013e5780635ac8c344116101185780635ac8c344146103a1578063675f8aea146103d55780636e04ff0d146103f2578063718468291461042057600080fd5b80634585e33b146102f857806346409ea7146103185780635897dbd91461035457600080fd5b8063146ca531146101f95780631541d0be146102305780631e78b7331461024557806335c1d349146102655780633fa5ef611461029d57806344030c06146102e357600080fd5b366101f457600034116101f25760405162461bcd60e51b815260206004820152602a60248201527f526571756972657320736f6d652076616c756520746f2066756e6420746865206044820152691c1c9a5e99481c1bdbdb60b21b60648201526084015b60405180910390fd5b005b600080fd5b34801561020557600080fd5b506001546102169063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b34801561023c57600080fd5b506101f261062d565b34801561025157600080fd5b506102166102603660046113f4565b610800565b34801561027157600080fd5b5061028561028036600461148f565b610821565b6040516001600160a01b039091168152602001610227565b3480156102a957600080fd5b506102d17f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610227565b3480156102ef57600080fd5b506101f261084b565b34801561030457600080fd5b506101f2610313366004611422565b610c46565b34801561032457600080fd5b506102856103333660046114a7565b63ffffffff166000908152600960205260409020546001600160a01b031690565b34801561036057600080fd5b5060025460035460045461037c926001600160a01b0316919083565b604080516001600160a01b039094168452602084019290925290820152606001610227565b3480156103ad57600080fd5b506102d17f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e157600080fd5b50475b604051908152602001610227565b3480156103fe57600080fd5b5061041261040d366004611422565b610c52565b6040516102279291906114cb565b34801561042c57600080fd5b506102d161043b3660046113f4565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561046557600080fd5b506102166104743660046113f4565b6001600160a01b031660009081526008602052604090205463ffffffff1690565b6101f2610c95565b3480156104a957600080fd5b506102d16104b83660046113f4565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156104e257600080fd5b50600554610216565b3480156104f757600080fd5b506103e47f000000000000000000000000000000000000000000000000000000000000000081565b34801561052b57600080fd5b5061021661114b565b34801561054057600080fd5b506002546001600160a01b0316610285565b34801561055e57600080fd5b506102857f000000000000000000000000000000000000000000000000000000000000000081565b34801561059257600080fd5b506102166105a13660046113f4565b611160565b3480156105b257600080fd5b506102166111a3565b3480156105c757600080fd5b506102167f000000000000000000000000000000000000000000000000000000000000000081565b3480156105fb57600080fd5b506001546102859064010000000090046001600160a01b031681565b34801561062357600080fd5b506103e460005481565b336000818152600a602052604090205460ff166106526002546001600160a01b031690565b6001600160a01b0316826001600160a01b0316146106cc5760405162461bcd60e51b815260206004820152603160248201527f43616e206f6e6c79207573652074696d6520626f6e7573207768696c65206265604482015270696e67206f6e20746865207468726f6e6560781b60648201526084016101e9565b60008160ff161161071f5760405162461bcd60e51b815260206004820152601c60248201527f4e6f2070726576696f757320726f756e642074696d6520626f6e75730000000060448201526064016101e9565b6001600160a01b0382166000908152600a60205260409020805460ff1916905561074e60ff8216610e10611595565b6001600160a01b0383166000908152600660205260408120805461ffff939093169290919061078490849063ffffffff16611528565b82546101009290920a63ffffffff818102199093169183160217909155600154604080516001600160a01b038716815260ff8616602082015291909216918101919091524260608201527f13f7b44988b3028e810fbb3ce77298873c395142a4c140cde116bb18c6a1bb49915060800160405180910390a15050565b6001600160a01b031660009081526006602052604090205463ffffffff1690565b6005818154811061083157600080fd5b6000918252602090912001546001600160a01b0316905081565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff166000544261088091906115de565b116108cd5760405162461bcd60e51b815260206004820152601a60248201527f54686520726f756e64206973206e6f74206f766572207965742100000000000060448201526064016101e9565b60055460008063ffffffff83166108eb576108e66111b1565b505050565b6108f3611352565b60005b8363ffffffff168163ffffffff1610156109c757600060058263ffffffff168154811061093357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316808352600690915260409091205490915063ffffffff908116908516811180156109a657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b156109b2578193508094505b505080806109bf906115f5565b9150506108f6565b506001600160a01b038116610a165760405162461bcd60e51b81526020600482015260156024820152742234b2103737ba103334b7321030903bb4b73732b960591b60448201526064016101e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161415610a985760405162461bcd60e51b815260206004820152601a60248201527f57696e6e65722063616e6e6f7420626520746865206f776e657200000000000060448201526064016101e9565b4760006064610aa883605a6115bf565b610ab29190611575565b90506000610ac082846115de565b6040519091506001600160a01b0385169083156108fc029084906000818181858888f19350505050158015610af9573d6000803e3d6000fd5b506040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610b50573d6000803e3d6000fd5b50600180546001600160a01b0386166401000000008102640100000000600160c01b03198316811784556000828152600860209081526040808320805463ffffffff191663ffffffff9586169786169790971796909617909555945490911681526009909352912080546001600160a01b03191690911790557f232c238f80c92d30d5433300c6dd7cf04e638fee5813b2af537022b5f43add3d8483610bf582610800565b600154604080516001600160a01b03959095168552602085019390935263ffffffff918216848401528116606084015289166080830152519081900360a00190a1610c3e6111b1565b505050505050565b610c4e61084b565b5050565b600060607f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660005442610c8b91906115de565b1191509250929050565b7f00000000000000000000000000000000000000000000000000000000000000003414610d1f5760405162461bcd60e51b815260206004820152603260248201527f45786163746c7920302e303120657468657220697320726571756972656420746044820152716f2074616b652074686520457468726f6e6560701b60648201526084016101e9565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff1660005442610d5491906115de565b10610dbb5760405162461bcd60e51b815260206004820152603160248201527f54686520726f756e64206973206f76657221205761697420666f7220746865206044820152701b995e1d081bdb99481d1bc81cdd185c9d607a1b60648201526084016101e9565b60025433906001600160a01b0316811415610e185760405162461bcd60e51b815260206004820152601c60248201527f596f7520616c7265616479206f776e2074686520457468726f6e65210000000060448201526064016101e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161415610eac5760405162461bcd60e51b815260206004820152602960248201527f54686520636f6e7472616374206f776e6572206973206e6f7420616c6c6f77656044820152686420746f20706c617960b81b60648201526084016101e9565b6000610eb96001436115de565b60045490409150811415610f235760405162461bcd60e51b815260206004820152602b60248201527f546865207468726f6e6520697320616c72656164792074616b656e20666f722060448201526a7468697320626c6f636b2160a81b60648201526084016101e9565b6001600160a01b03821660009081526007602052604090205460ff7f00000000000000000000000000000000000000000000000000000000000000008116911610610fcd5760405162461bcd60e51b815260206004820152603460248201527f596f752068617665207265616368656420746865206d6178696d756d20617474604482015273195b5c1d1cc8199bdc881d1a1a5cc81c9bdd5b9960621b60648201526084016101e9565b6001600160a01b03821660009081526007602052604090205460ff1661103957600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0384161790555b6001600160a01b0382166000908152600760205260409020546110609060ff166001611550565b6001600160a01b0383166000908152600760205260409020805460ff191660ff92909216919091179055611092611352565b60028054604080516060810182526001600160a01b038681168083524260208401819052929093018690526001600160a01b031984169092179093556003929092556004839055167f8c4cb39fa0c86094d8ab4005eb7d9b9e9e9aa48b56d02e317af10414dddd7704818461110682610800565b600154604080516001600160a01b03958616815293909416602084015263ffffffff9182168385015216606082015242608082015290519081900360a00190a1505050565b60035460009061115b90426115de565b905090565b6002546000906001600160a01b038381169116141561119a5761118282610800565b61118a61114b565b6111949190611528565b92915050565b61119482610800565b6000805461115b90426115de565b60055460005b8163ffffffff168163ffffffff1610156112f457600060058263ffffffff16815481106111f457634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001546001600160a01b03918216925064010000000090041681146112ae576001600160a01b0381166000908152600a602052604090205460ff908116907f0000000000000000000000000000000000000000000000000000000000000000168110156112ac576001600160a01b0382166000908152600a6020526040812080546001929061129390849060ff16611550565b92506101000a81548160ff021916908360ff1602179055505b505b6001600160a01b03166000908152600660209081526040808320805463ffffffff1916905560079091529020805460ff19169055806112ec816115f5565b9150506111b7565b50611301600560006113c2565b600280546001600160a01b031916905560006003819055600455600180546113319163ffffffff90911690611528565b6001805463ffffffff191663ffffffff929092169190911790555042600055565b6002546001600160a01b031680156113bf5760035461137181426115de565b6001600160a01b0383166000908152600660205260408120805490919061139f90849063ffffffff16611528565b92506101000a81548163ffffffff021916908363ffffffff160217905550505b50565b50805460008255906000526020600020908101906113bf91905b808211156113f057600081556001016113dc565b5090565b600060208284031215611405578081fd5b81356001600160a01b038116811461141b578182fd5b9392505050565b60008060208385031215611434578081fd5b823567ffffffffffffffff8082111561144b578283fd5b818501915085601f83011261145e578283fd5b81358181111561146c578384fd5b86602082850101111561147d578384fd5b60209290920196919550909350505050565b6000602082840312156114a0578081fd5b5035919050565b6000602082840312156114b8578081fd5b813563ffffffff8116811461141b578182fd5b8215158152600060206040818401528351806040850152825b81811015611500578581018301518582016060015282016114e4565b818111156115115783606083870101525b50601f01601f191692909201606001949350505050565b600063ffffffff80831681851680830382111561154757611547611619565b01949350505050565b600060ff821660ff84168060ff0382111561156d5761156d611619565b019392505050565b60008261159057634e487b7160e01b81526012600452602481fd5b500490565b600061ffff808316818516818304811182151516156115b6576115b6611619565b02949350505050565b60008160001904831182151516156115d9576115d9611619565b500290565b6000828210156115f0576115f0611619565b500390565b600063ffffffff8083168181141561160f5761160f611619565b6001019392505050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220d392d5a1c86a53bc59ba9c03b21e9593cd809d01f45682aa9f29778b3087775e64736f6c634300080400330000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000de0b6b3a7640000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000de0b6b3a7640000

-----Decoded View---------------
Arg [0] : duration (uint32): 86400
Arg [1] : maxAttemptsPerPlayer (uint8): 10
Arg [2] : cost (uint256): 1000000000000000000

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [2] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000


Deployed ByteCode Sourcemap

881:9738:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2851:1;2839:9;:13;2831:68;;;;-1:-1:-1;;;2831:68:1;;4881:2:2;2831:68:1;;;4863:21:2;4920:2;4900:18;;;4893:30;4959:34;4939:18;;;4932:62;-1:-1:-1;;;5010:18:2;;;5003:40;5060:19;;2831:68:1;;;;;;;;;881:9738;;;;;1214:19;;;;;;;;;;-1:-1:-1;1214:19:1;;;;;;;;;;;9306:10:2;9294:23;;;9276:42;;9264:2;9249:18;1214:19:1;;;;;;;;6531:503;;;;;;;;;;;;;:::i;7654:119::-;;;;;;;;;;-1:-1:-1;7654:119:1;;;;;:::i;:::-;;:::i;1313:29::-;;;;;;;;;;-1:-1:-1;1313:29:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1631:32:2;;;1613:51;;1601:2;1586:18;1313:29:1;1568:102:2;942:34:1;;;;;;;;;;;;;;;;;;9501:4:2;9489:17;;;9471:36;;9459:2;9444:18;942:34:1;9426:87:2;4688:1742:1;;;;;;;;;;;;;:::i;2576:104::-;;;;;;;;;;-1:-1:-1;2576:104:1;;;;;:::i;:::-;;:::i;8742:111::-;;;;;;;;;;-1:-1:-1;8742:111:1;;;;;:::i;:::-;8823:23;;8797:7;8823:23;;;:20;:23;;;;;;-1:-1:-1;;;;;8823:23:1;;8742:111;1270:37;;;;;;;;;;-1:-1:-1;1270:37:1;;;;;;;;-1:-1:-1;;;;;1270:37:1;;;;;;;;;-1:-1:-1;;;;;2462:32:2;;;2444:51;;2526:2;2511:18;;2504:34;;;;2554:18;;;2547:34;2432:2;2417:18;1270:37:1;2399:188:2;1110:41:1;;;;;;;;;;;;;;;7100:103;;;;;;;;;;-1:-1:-1;7175:21:1;7100:103;;;9096:25:2;;;9084:2;9069:18;7100:103:1;9051:76:2;2348:222:1;;;;;;;;;;-1:-1:-1;2348:222:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8570:112::-;;;;;;;;;;-1:-1:-1;8570:112:1;;;;;:::i;:::-;-1:-1:-1;;;;;8654:21:1;8630:5;8654:21;;;:15;:21;;;;;;;;;8570:112;8920:117;;;;;;;;;;-1:-1:-1;8920:117:1;;;;;:::i;:::-;-1:-1:-1;;;;;9004:26:1;8979:6;9004:26;;;:20;:26;;;;;;;;;8920:117;2987:1613;;;:::i;9104:107::-;;;;;;;;;;-1:-1:-1;9104:107:1;;;;;:::i;:::-;-1:-1:-1;;;;;9182:22:1;9158:5;9182:22;;;:16;:22;;;;;;;;;9104:107;8178:109;;;;;;;;;;-1:-1:-1;8260:12:1;:19;8178:109;;1069:35;;;;;;;;;;;;;;;7265:135;;;;;;;;;;;;;:::i;7462:99::-;;;;;;;;;;-1:-1:-1;7531:18:1;:23;-1:-1:-1;;;;;7531:23:1;7462:99;;1025:38;;;;;;;;;;;;;;;7865:240;;;;;;;;;;-1:-1:-1;7865:240:1;;;;;:::i;:::-;;:::i;8363:125::-;;;;;;;;;;;;;:::i;982:37::-;;;;;;;;;;;;;;;1239:25;;;;;;;;;;-1:-1:-1;1239:25:1;;;;;;;-1:-1:-1;;;;;1239:25:1;;;1175:33;;;;;;;;;;;;;;;;6531:503;6593:10;6576:14;6631:24;;;:16;:24;;;;;;;;6683:14;7531:18;:23;-1:-1:-1;;;;;7531:23:1;;7462:99;6683:14;-1:-1:-1;;;;;6673:24:1;:6;-1:-1:-1;;;;;6673:24:1;;6665:86;;;;-1:-1:-1;;;6665:86:1;;7608:2:2;6665:86:1;;;7590:21:2;7647:2;7627:18;;;7620:30;7686:34;7666:18;;;7659:62;-1:-1:-1;;;7737:18:2;;;7730:47;7794:19;;6665:86:1;7580:239:2;6665:86:1;6781:1;6769:9;:13;;;6761:54;;;;-1:-1:-1;;;6761:54:1;;6476:2:2;6761:54:1;;;6458:21:2;6515:2;6495:18;;;6488:30;6554;6534:18;;;6527:58;6602:18;;6761:54:1;6448:178:2;6761:54:1;-1:-1:-1;;;;;6825:24:1;;6852:1;6825:24;;;:16;:24;;;;;:28;;-1:-1:-1;;6825:28:1;;;6898:16;6825:28;6898:16;;6910:4;6898:16;:::i;:::-;-1:-1:-1;;;;;6863:24:1;;;;;;:16;:24;;;;;:52;;6891:24;;;;;;6863;;;:52;;6891:24;;6863:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7004:5:1;6969:58;;;-1:-1:-1;;;;;3379:32:2;;3361:51;;3460:4;3448:17;;3443:2;3428:18;;3421:45;7004:5:1;;;;3482:18:2;;;3475:51;;;;7011:15:1;3557:2:2;3542:18;;3535:34;6969:58:1;;-1:-1:-1;3348:3:2;3333:19;6969:58:1;;;;;;;6531:503;;:::o;7654:119::-;-1:-1:-1;;;;;7744:22:1;7719:6;7744:22;;;:16;:22;;;;;;;;;7654:119::o;1313:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1313:29:1;;-1:-1:-1;1313:29:1;:::o;4688:1742::-;4776:13;4735:54;;4754:18;;4736:15;:36;;;;:::i;:::-;4735:54;4727:93;;;;-1:-1:-1;;;4727:93:1;;5292:2:2;4727:93:1;;;5274:21:2;5331:2;5311:18;;;5304:30;5370:28;5350:18;;;5343:56;5416:18;;4727:93:1;5264:176:2;4727:93:1;4894:12;:19;4862:22;;5043:20;;;5039:99;;5079:28;:26;:28::i;:::-;5121:7;;;4688:1742::o;5039:99::-;5190:21;:19;:21::i;:::-;5262:8;5257:347;5280:15;5276:19;;:1;:19;;;5257:347;;;5316:19;5338:12;5351:1;5338:15;;;;;;;;-1:-1:-1;;;5338:15:1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5338:15:1;5386:29;;;:16;:29;;;;;;;;5338:15;;-1:-1:-1;5386:29:1;;;;;5433:28;;;;:60;;;;;5480:13;-1:-1:-1;;;;;5465:28:1;:11;-1:-1:-1;;;;;5465:28:1;;;5433:60;5429:165;;;5522:11;5513:20;;5570:9;5551:28;;5429:165;5257:347;;5297:3;;;;;:::i;:::-;;;;5257:347;;;-1:-1:-1;;;;;;5653:22:1;;5645:56;;;;-1:-1:-1;;;5645:56:1;;8802:2:2;5645:56:1;;;8784:21:2;8841:2;8821:18;;;8814:30;-1:-1:-1;;;8860:18:2;;;8853:51;8921:18;;5645:56:1;8774:171:2;5645:56:1;5729:13;-1:-1:-1;;;;;5719:23:1;:6;-1:-1:-1;;;;;5719:23:1;;;5711:62;;;;-1:-1:-1;;;5711:62:1;;8026:2:2;5711:62:1;;;8008:21:2;8065:2;8045:18;;;8038:30;8104:28;8084:18;;;8077:56;8150:18;;5711:62:1;7998:176:2;5711:62:1;7175:21;5809:18;5898:3;5880:15;7175:21;5893:2;5880:15;:::i;:::-;:21;;;;:::i;:::-;5858:43;-1:-1:-1;5933:25:1;5961:24;5858:43;5961:10;:24;:::i;:::-;6024:37;;5933:52;;-1:-1:-1;;;;;;6024:24:1;;;:37;;;;;6049:11;;6024:37;;;;6049:11;6024:24;:37;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6071:50:1;;-1:-1:-1;;;;;6079:13:1;6071:31;;:50;;;;;6103:17;;6071:50;;;;6103:17;6071:31;:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:10:1;:19;;-1:-1:-1;;;;;6131:19:1;;;;;-1:-1:-1;;;;;;6131:19:1;;;;;;-1:-1:-1;6160:28:1;;;:20;:28;;;;;;;;:36;;-1:-1:-1;;6160:36:1;6191:5;;;;;;;;;;;6160:36;;;;;;;6227:5;;;;;6206:27;;:20;:27;;;;;:36;;-1:-1:-1;;;;;;6206:36:1;;;;;;6257:87;6144:6;6278:11;6291:28;6144:6;6291:20;:28::i;:::-;6321:5;;6257:87;;;-1:-1:-1;;;;;2863:32:2;;;;2845:51;;2927:2;2912:18;;2905:34;;;;6321:5:1;3004:15:2;;;2984:18;;;2977:43;6321:5:1;;3051:2:2;3036:18;;3029:43;3109:15;;3103:3;3088:19;;3081:44;6257:87:1;;;;;2832:3:2;6257:87:1;;;6395:28;:26;:28::i;:::-;4688:1742;;;;;;:::o;2576:104::-;2661:12;:10;:12::i;:::-;2576:104;;:::o;2348:222::-;2433:17;2452:12;2550:13;2509:54;;2528:18;;2510:15;:36;;;;:::i;:::-;2509:54;2494:69;;2348:222;;;;;:::o;2987:1613::-;3055:10;3042:9;:23;3034:86;;;;-1:-1:-1;;;3034:86:1;;6057:2:2;3034:86:1;;;6039:21:2;6096:2;6076:18;;;6069:30;6135:34;6115:18;;;6108:62;-1:-1:-1;;;6186:18:2;;;6179:48;6244:19;;3034:86:1;6029:240:2;3034:86:1;3204:13;3163:54;;3182:18;;3164:15;:36;;;;:::i;:::-;3163:54;3155:116;;;;-1:-1:-1;;;3155:116:1;;6833:2:2;3155:116:1;;;6815:21:2;6872:2;6852:18;;;6845:30;6911:34;6891:18;;;6884:62;-1:-1:-1;;;6962:18:2;;;6955:47;7019:19;;3155:116:1;6805:239:2;3155:116:1;3388:18;:23;3348:10;;-1:-1:-1;;;;;3388:23:1;3376:35;;;3368:76;;;;-1:-1:-1;;;3368:76:1;;7251:2:2;3368:76:1;;;7233:21:2;7290:2;7270:18;;;7263:30;7329;7309:18;;;7302:58;7377:18;;3368:76:1;7223:178:2;3368:76:1;3474:13;-1:-1:-1;;;;;3462:25:1;:8;-1:-1:-1;;;;;3462:25:1;;;3454:79;;;;-1:-1:-1;;;3454:79:1;;5647:2:2;3454:79:1;;;5629:21:2;5686:2;5666:18;;;5659:30;5725:34;5705:18;;;5698:62;-1:-1:-1;;;5776:18:2;;;5769:39;5825:19;;3454:79:1;5619:231:2;3454:79:1;3619:19;3651:16;3666:1;3651:12;:16;:::i;:::-;3686:23;;3641:27;;;-1:-1:-1;3686:38:1;;;3678:94;;;;-1:-1:-1;;;3678:94:1;;4469:2:2;3678:94:1;;;4451:21:2;4508:2;4488:18;;;4481:30;4547:34;4527:18;;;4520:62;-1:-1:-1;;;4598:18:2;;;4591:41;4649:19;;3678:94:1;4441:233:2;3678:94:1;-1:-1:-1;;;;;3875:25:1;;;;;;:15;:25;;;;;;:39;3903:11;3875:39;;:25;;:39;3867:104;;;;-1:-1:-1;;;3867:104:1;;8381:2:2;3867:104:1;;;8363:21:2;8420:2;8400:18;;;8393:30;8459:34;8439:18;;;8432:62;-1:-1:-1;;;8510:18:2;;;8503:50;8570:19;;3867:104:1;8353:242:2;3867:104:1;-1:-1:-1;;;;;4044:25:1;;;;;;:15;:25;;;;;;;;4040:86;;4088:12;:27;;;;;;;-1:-1:-1;4088:27:1;;;;;;;;-1:-1:-1;;;;;;4088:27:1;-1:-1:-1;;;;;4088:27:1;;;;;4040:86;-1:-1:-1;;;;;4205:25:1;;;;;;:15;:25;;;;;;:29;;:25;;;:29;:::i;:::-;-1:-1:-1;;;;;4177:25:1;;;;;;:15;:25;;;;;:57;;-1:-1:-1;;4177:57:1;;;;;;;;;;;;4291:21;:19;:21::i;:::-;4376:18;:23;;4430:51;;;;;;;;-1:-1:-1;;;;;4430:51:1;;;;;;4452:15;4430:51;;;;;;;;;;;;;-1:-1:-1;;;;;;4409:72:1;;;;;;;;;;;;;;;;;4376:23;4496:97;4376:23;4442:8;4533:35;4376:23;4533:20;:35::i;:::-;4570:5;;4496:97;;;-1:-1:-1;;;;;1986:15:2;;;1968:34;;2038:15;;;;2033:2;2018:18;;2011:43;4570:5:1;2119:15:2;;;2099:18;;;2092:43;4570:5:1;2166:2:2;2151:18;;2144:43;4577:15:1;2218:3:2;2203:19;;2196:35;4496:97:1;;;;;;1917:3:2;4496:97:1;;;2987:1613;;;:::o;7265:135::-;7364:28;;7314:6;;7346:46;;:15;:46;:::i;:::-;7332:61;;7265:135;:::o;7865:240::-;7954:18;:23;7924:6;;-1:-1:-1;;;;;7946:31:1;;;7954:23;;7946:31;7942:114;;;8019:26;8040:4;8019:20;:26::i;:::-;7998:18;:16;:18::i;:::-;:47;;;;:::i;:::-;7991:54;7865:240;-1:-1:-1;;7865:240:1:o;7942:114::-;8072:26;8093:4;8072:20;:26::i;8363:125::-;8412:6;8462:18;;8444:36;;:15;:36;:::i;9581:880::-;9669:12;:19;9637:22;9699:536;9722:15;9718:19;;:1;:19;;;9699:536;;;9758:19;9780:12;9793:1;9780:15;;;;;;;;-1:-1:-1;;;9780:15:1;;;;;;;;;;;;;;;;;;;;9828:10;-1:-1:-1;;;;;9780:15:1;;;;-1:-1:-1;9828:10:1;;;;9813:25;;9809:294;;-1:-1:-1;;;;;9940:29:1;;9926:11;9940:29;;;:16;:29;;;;;;;;;;;9999:13;9991:21;;;9987:102;;;-1:-1:-1;;;;;10036:29:1;;;;;;:16;:29;;;;;:34;;10069:1;;10036:29;:34;;10069:1;;10036:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9987:102;9809:294;;-1:-1:-1;;;;;10123:29:1;;;;;:16;:29;;;;;;;;10116:36;;-1:-1:-1;;10116:36:1;;;10196:15;:28;;;;;10189:35;;-1:-1:-1;;10189:35:1;;;9739:3;;;;:::i;:::-;;;;9699:536;;;-1:-1:-1;10244:19:1;10251:12;;10244:19;:::i;:::-;10306:18;10299:25;;-1:-1:-1;;;;;;10299:25:1;;;10306:18;10299:25;;;;;;;10399:5;;:9;;:5;;;;;:9;:::i;:::-;10391:5;:17;;-1:-1:-1;;10391:17:1;;;;;;;;;;;;-1:-1:-1;10439:15:1;-1:-1:-1;10418:36:1;9581:880::o;9302:273::-;9366:18;:23;-1:-1:-1;;;;;9366:23:1;9403:20;;9399:170;;9457:28;;9530:27;9457:28;9530:15;:27;:::i;:::-;-1:-1:-1;;;;;9497:22:1;;;;;;:16;:22;;;;;:61;;:22;;;:61;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9399:170;;9302:273;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:306:2:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;178:23;;-1:-1:-1;;;;;230:31:2;;220:42;;210:2;;281:6;273;266:22;210:2;309:5;84:236;-1:-1:-1;;;84:236:2:o;325:641::-;395:6;403;456:2;444:9;435:7;431:23;427:32;424:2;;;477:6;469;462:22;424:2;522:9;509:23;551:18;592:2;584:6;581:14;578:2;;;613:6;605;598:22;578:2;656:6;645:9;641:22;631:32;;701:7;694:4;690:2;686:13;682:27;672:2;;728:6;720;713:22;672:2;773;760:16;799:2;791:6;788:14;785:2;;;820:6;812;805:22;785:2;870:7;865:2;856:6;852:2;848:15;844:24;841:37;838:2;;;896:6;888;881:22;838:2;932;924:11;;;;;954:6;;-1:-1:-1;414:552:2;;-1:-1:-1;;;;414:552:2:o;971:190::-;1030:6;1083:2;1071:9;1062:7;1058:23;1054:32;1051:2;;;1104:6;1096;1089:22;1051:2;-1:-1:-1;1132:23:2;;1041:120;-1:-1:-1;1041:120:2:o;1166:296::-;1224:6;1277:2;1265:9;1256:7;1252:23;1248:32;1245:2;;;1298:6;1290;1283:22;1245:2;1342:9;1329:23;1392:10;1385:5;1381:22;1374:5;1371:33;1361:2;;1423:6;1415;1408:22;3580:682;3763:6;3756:14;3749:22;3738:9;3731:41;3712:4;3791:2;3829;3824;3813:9;3809:18;3802:30;3861:6;3855:13;3904:6;3899:2;3888:9;3884:18;3877:34;3929:4;3942:140;3956:6;3953:1;3950:13;3942:140;;;4051:14;;;4047:23;;4041:30;4017:17;;;4036:2;4013:26;4006:66;3971:10;;3942:140;;;4100:6;4097:1;4094:13;4091:2;;;4170:4;4165:2;4156:6;4145:9;4141:22;4137:31;4130:45;4091:2;-1:-1:-1;4246:2:2;4225:15;-1:-1:-1;;4221:29:2;4206:45;;;;4253:2;4202:54;;3721:541;-1:-1:-1;;;;3721:541:2:o;9518:228::-;9557:3;9585:10;9622:2;9619:1;9615:10;9652:2;9649:1;9645:10;9683:3;9679:2;9675:12;9670:3;9667:21;9664:2;;;9691:18;;:::i;:::-;9727:13;;9565:181;-1:-1:-1;;;;9565:181:2:o;9751:204::-;9789:3;9825:4;9822:1;9818:12;9857:4;9854:1;9850:12;9892:3;9886:4;9882:14;9877:3;9874:23;9871:2;;;9900:18;;:::i;:::-;9936:13;;9797:158;-1:-1:-1;;;9797:158:2:o;9960:217::-;10000:1;10026;10016:2;;-1:-1:-1;;;10051:31:2;;10105:4;10102:1;10095:15;10133:4;10058:1;10123:15;10016:2;-1:-1:-1;10162:9:2;;10006:171::o;10182:258::-;10221:7;10253:6;10286:2;10283:1;10279:10;10316:2;10313:1;10309:10;10372:3;10368:2;10364:12;10359:3;10356:21;10349:3;10342:11;10335:19;10331:47;10328:2;;;10381:18;;:::i;:::-;10421:13;;10233:207;-1:-1:-1;;;;10233:207:2:o;10445:168::-;10485:7;10551:1;10547;10543:6;10539:14;10536:1;10533:21;10528:1;10521:9;10514:17;10510:45;10507:2;;;10558:18;;:::i;:::-;-1:-1:-1;10598:9:2;;10497:116::o;10618:125::-;10658:4;10686:1;10683;10680:8;10677:2;;;10691:18;;:::i;:::-;-1:-1:-1;10728:9:2;;10667:76::o;10748:201::-;10786:3;10814:10;10859:2;10852:5;10848:14;10886:2;10877:7;10874:15;10871:2;;;10892:18;;:::i;:::-;10941:1;10928:15;;10794:155;-1:-1:-1;;;10794:155:2:o;10954:127::-;11015:10;11010:3;11006:20;11003:1;10996:31;11046:4;11043:1;11036:15;11070:4;11067:1;11060:15

Swarm Source

ipfs://d392d5a1c86a53bc59ba9c03b21e9593cd809d01f45682aa9f29778b3087775e
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.