Contract 0xDfBb673787DfC1477b0ca7890887136a13296811

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6d9ca3002397487ba192c3b75e9c5164af3f5c03a27080854c47bef99155ece8Transfer Ownersh...307306452022-02-12 9:42:39225 days 20 hrs agoSummit DeFi: Deployer IN  0xdfbb673787dfc1477b0ca7890887136a132968110 FTM0.127084
0x7682b1e7759705a63fb2d6c3d631f9e9c0e6adfc0eefa471fdc11140feb4f909Upgrade Summit R...306922182022-02-12 0:36:35226 days 5 hrs agoSummit DeFi: Deployer IN  0xdfbb673787dfc1477b0ca7890887136a132968110 FTM0.044614
0x4fb9012f9ffd10e59731fc57bed14daf7ffd16785f03a25398959ba525db19060x61012060306917912022-02-12 0:30:03226 days 5 hrs agoSummit DeFi: Deployer IN  Contract Creation0 FTM2.099883
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x4fb9012f9ffd10e59731fc57bed14daf7ffd16785f03a25398959ba525db1906306917912022-02-12 0:30:03226 days 5 hrs ago Summit DeFi: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x437dbA6425Fafe98Ff65D3c248A9de51507a938F

Contract Name:
ElevationHelper

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : ElevationHelper.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.2;

import "./interfaces/ISummitRNGModule.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/Math.sol";



/*
---------------------------------------------------------------------------------------------
--   S U M M I T . D E F I
---------------------------------------------------------------------------------------------


Summit is highly experimental.
It has been crafted to bring a new flavor to the defi world.
We hope you enjoy the Summit.defi experience.
If you find any bugs in these contracts, please claim the bounty (see docs)


Created with love by Architect and the Summit team





---------------------------------------------------------------------------------------------
--   E L E V A T I O N   H E L P E R
---------------------------------------------------------------------------------------------


ElevationHelper.sol handles shared functionality between the elevations / expedition
Handles the allocation multiplier for each elevation
Handles the duration of each round



*/

contract ElevationHelper is Ownable {
    // ---------------------------------------
    // --   V A R I A B L E S
    // ---------------------------------------

    address public cartographer;                                            // Allows cartographer to act as secondary owner-ish
    address public expeditionV2;

    // Constants for elevation comparisons
    uint8 constant OASIS = 0;
    uint8 constant PLAINS = 1;
    uint8 constant MESA = 2;
    uint8 constant SUMMIT = 3;
    uint8 constant EXPEDITION = 4;
    uint8 constant roundEndLockoutDuration = 120;

    
    uint16[5] public allocMultiplier = [100, 110, 125, 150, 100];            // Alloc point multipliers for each elevation    
    uint16[5] public pendingAllocMultiplier = [100, 110, 125, 150, 100];     // Pending alloc point multipliers for each elevation, updated at end of round for elevation, instantly for oasis   
    uint8[5] public totemCount = [1, 2, 5, 10, 2];                          // Number of totems at each elevation

    
    uint256 constant baseRoundDuration = 3600;                              // Duration (seconds) of the smallest round chunk
    uint256[5] public durationMult = [0, 2, 2, 2, 24];                      // Number of round chunks for each elevation
    uint256[5] public pendingDurationMult = [0, 2, 2, 2, 24];               // Duration mult that takes effect at the end of the round

    uint256[5] public unlockTimestamp;                                      // Time at which each elevation unlocks to the public
    uint256[5] public roundNumber;                                          // Current round of each elevation
    uint256[5] public roundEndTimestamp;                                    // Time at which each elevation's current round ends
    mapping(uint256 => uint256) public expeditionDeityDivider;                // Higher / lower integer for each expedition round

    mapping(uint8 => mapping(uint256 => uint256)) public totemWinsAccum;    // Accumulator of the total number of wins for each totem
    mapping(uint8 => mapping(uint256 => uint8)) public winningTotem;        // The specific winning totem for each elevation round


    address public summitRNGModuleAdd;                                      // VRF module address



    // ---------------------------------------
    // --   E V E N T S
    // ---------------------------------------

    event WinningTotemSelected(uint8 indexed elevation, uint256 indexed round, uint8 indexed totem);
    event DeityDividerSelected(uint256 indexed expeditionRound, uint256 indexed deityDivider);
    event UpgradeSummitRNGModule(address indexed _summitRNGModuleAdd);
    event SetElevationRoundDurationMult(uint8 indexed _elevation, uint8 _mult);
    event SetElevationAllocMultiplier(uint8 indexed _elevation, uint16 _allocMultiplier);



    
    // ---------------------------------------
    // --   I N I T I A L I Z A T I O N
    // ---------------------------------------

    /// @dev Creates ElevationHelper contract with cartographer as owner of certain functionality
    /// @param _cartographer Address of main Cartographer contract
    constructor(address _cartographer, address _expeditionV2) {
        require(_cartographer != address(0), "Cartographer missing");
        require(_expeditionV2 != address(0), "Expedition missing");
        cartographer = _cartographer;
        expeditionV2 = _expeditionV2;
    }

    /// @dev Turns on the Summit ecosystem across all contracts
    /// @param _enableTimestamp Timestamp at which Summit was enabled, used to set unlock points for each elevation
    function enable(uint256 _enableTimestamp)
        external
        onlyCartographer
    {
        // The next top of hour from the enable timestamp
        uint256 nextHourTimestamp = _enableTimestamp + (3600 - (_enableTimestamp % 3600));

        // Setting when each elevation of the ecosystem unlocks
        unlockTimestamp = [
            nextHourTimestamp,                       // Oasis - throwaway
            nextHourTimestamp + 0 days,              // Plains
            nextHourTimestamp + 2 days,              // Mesa
            nextHourTimestamp + 4 days,              // Summit
            nextHourTimestamp + 5 days               // Expedition
        ];

        // The first 'round' ends when the elevation unlocks
        roundEndTimestamp = unlockTimestamp;
        
        // Timestamp of the first seed round starting
        ISummitRNGModule(summitRNGModuleAdd).setSeedRoundEndTimestamp(unlockTimestamp[PLAINS] - roundEndLockoutDuration);
    }



    // ---------------------------------------
    // --   M O D I F I E R S
    // ---------------------------------------

    modifier onlyCartographer() {
        require(msg.sender == cartographer, "Only cartographer");
        _;
    }
    modifier onlyCartographerOrExpedition() {
        require(msg.sender == cartographer || msg.sender == expeditionV2, "Only cartographer or expedition");
        _;
    }
    modifier allElevations(uint8 _elevation) {
        require(_elevation <= EXPEDITION, "Bad elevation");
        _;
    }
    modifier elevationOrExpedition(uint8 _elevation) {
        require(_elevation >= PLAINS && _elevation <= EXPEDITION, "Bad elevation");
        _;
    }
    





    // ---------------------------------------
    // --   U T I L S (inlined for brevity)
    // ---------------------------------------


    /// @dev Allocation multiplier of an elevation
    /// @param _elevation Desired elevation
    function elevationAllocMultiplier(uint8 _elevation) public view returns (uint256) {
        return uint256(allocMultiplier[_elevation]);
    }
    
    /// @dev Duration of elevation round in seconds
    /// @param _elevation Desired elevation
    function roundDurationSeconds(uint8 _elevation) public view returns (uint256) {
        return durationMult[_elevation] * baseRoundDuration;
    }

    /// @dev Current round of the expedition
    function currentExpeditionRound() public view returns (uint256) {
        return roundNumber[EXPEDITION];
    }

    /// @dev Deity divider (random offset which skews chances of each deity winning) of the current expedition round
    function currentDeityDivider() public view returns (uint256) {
        return expeditionDeityDivider[currentExpeditionRound()];
    }

    /// @dev Modifies a given alloc point with the multiplier of that elevation, used to set a single allocation for a token while each elevation is set automatically
    /// @param _allocPoint Base alloc point to modify
    /// @param _elevation Fetcher for the elevation multiplier
    function elevationModulatedAllocation(uint256 _allocPoint, uint8 _elevation) external view allElevations(_elevation) returns (uint256) {
        return _allocPoint * allocMultiplier[_elevation];
    }

    /// @dev Checks whether elevation is is yet to be unlocked for farming
    /// @param _elevation Which elevation to check
    function elevationLocked(uint8 _elevation) external view returns (bool) {
        return block.timestamp <= unlockTimestamp[_elevation];
    }

    /// @dev Checks whether elevation is locked due to round ending in next {roundEndLockoutDuration} seconds
    /// @param _elevation Which elevation to check
    function endOfRoundLockoutActive(uint8 _elevation) external view returns (bool) {
        if (roundEndTimestamp[_elevation] == 0) return false;
        return block.timestamp >= (roundEndTimestamp[_elevation] - roundEndLockoutDuration);
    }

    /// @dev The next round available for a new pool to unlock at. Used to add pools but not start them until the next rollover
    /// @param _elevation Which elevation to check
    function nextRound(uint8 _elevation) external view returns (uint256) {
        return block.timestamp <= unlockTimestamp[_elevation] ? 1 : (roundNumber[_elevation] + 1);
    }

    /// @dev Whether a round has ended
    /// @param _elevation Which elevation to check
    function roundEnded(uint8 _elevation) internal view returns (bool) {
        return block.timestamp >= roundEndTimestamp[_elevation];
    }

    /// @dev Seconds remaining in round of elevation
    /// @param _elevation Which elevation to check time remaining of
    function timeRemainingInRound(uint8 _elevation) public view returns (uint256) {
        return roundEnded(_elevation) ? 0 : roundEndTimestamp[_elevation] - block.timestamp;
    }

    /// @dev Getter of fractional amount of round remaining
    /// @param _elevation Which elevation to check progress of
    /// @return Fraction raised to 1e12
    function fractionRoundRemaining(uint8 _elevation) external view returns (uint256) {
        return timeRemainingInRound(_elevation) * 1e12 / roundDurationSeconds(_elevation);
    }

    /// @dev Getter of fractional progress through round
    /// @param _elevation Which elevation to check progress of
    /// @return Fraction raised to 1e12
    function fractionRoundComplete(uint8 _elevation) external view returns (uint256) {
        return ((roundDurationSeconds(_elevation) - timeRemainingInRound(_elevation)) * 1e12) / roundDurationSeconds(_elevation);
    }

    /// @dev Start timestamp of current round
    /// @param _elevation Which elevation to check
    function currentRoundStartTime(uint8 _elevation) external view returns(uint256) {
        return roundEndTimestamp[_elevation] - roundDurationSeconds(_elevation);
    }




    
    // ------------------------------------------------------------------
    // --   P A R A M E T E R S
    // ------------------------------------------------------------------

    /// @dev Upgrade the RNG module when VRF becomes available on FTM, will only use `getRandomNumber` functionality
    /// @param _summitRNGModuleAdd Address of new VRF randomness module
    function upgradeSummitRNGModule (address _summitRNGModuleAdd)
        public
        onlyOwner
    {
        require(_summitRNGModuleAdd != address(0), "SummitRandomnessModule missing");
        summitRNGModuleAdd = _summitRNGModuleAdd;
        emit UpgradeSummitRNGModule(_summitRNGModuleAdd);
    }


    /// @dev Update round duration mult of an elevation
    function setElevationRoundDurationMult(uint8 _elevation, uint8 _mult)
        public
        onlyOwner elevationOrExpedition(_elevation)
    {
        require(_mult > 0, "Duration mult must be non zero");
        pendingDurationMult[_elevation] = _mult;
        emit SetElevationRoundDurationMult(_elevation, _mult);
    }


    /// @dev Update emissions multiplier of an elevation
    function setElevationAllocMultiplier(uint8 _elevation, uint16 _allocMultiplier)
        public
        onlyOwner allElevations(_elevation)
    {
        require(_allocMultiplier <= 300, "Multiplier cannot exceed 3X");
        pendingAllocMultiplier[_elevation] = _allocMultiplier;
        if (_elevation == OASIS) {
            allocMultiplier[_elevation] = _allocMultiplier;
        }
        emit SetElevationAllocMultiplier(_elevation, _allocMultiplier);
    }



    // ------------------------------------------------------------------
    // --   R O L L O V E R   E L E V A T I O N   R O U N D
    // ------------------------------------------------------------------


    /// @dev Validates that the selected elevation is able to be rolled over
    /// @param _elevation Which elevation is attempting to be rolled over
    function validateRolloverAvailable(uint8 _elevation)
        external view
    {
        // Elevation must be unlocked for round to rollover
        require(block.timestamp >= unlockTimestamp[_elevation], "Elevation locked");
        // Rollover only becomes available after the round has ended, if timestamp is before roundEnd, the round has already been rolled over and its end timestamp pushed into the future
        require(block.timestamp >= roundEndTimestamp[_elevation], "Round already rolled over");
    }


    /// @dev Uses the seed and future block number to generate a random number, which is then used to select the winning totem and if necessary the next deity divider
    /// @param _elevation Which elevation to select winner for
    function selectWinningTotem(uint8 _elevation)
        external
        onlyCartographerOrExpedition elevationOrExpedition(_elevation)
    {
        uint256 rand = ISummitRNGModule(summitRNGModuleAdd).getRandomNumber(_elevation, roundNumber[_elevation]);

        // Uses the random number to select the winning totem
        uint8 winner = chooseWinningTotem(_elevation, rand);

        // Updates data with the winning totem
        markWinningTotem(_elevation, winner);

        // If necessary, uses the random number to generate the next deity divider for expeditions
        if (_elevation == EXPEDITION)
            setNextDeityDivider(rand);
    }


    /// @dev Final step in the rollover pipeline, incrementing the round numbers to bring current
    /// @param _elevation Which elevation is being updated
    function rolloverElevation(uint8 _elevation)
        external
        onlyCartographerOrExpedition
    {
        // Incrementing round number, does not need to be adjusted with overflown rounds
        roundNumber[_elevation] += 1;

        // Failsafe to cover multiple rounds needing to be rolled over if no user rolled them over previously (almost impossible, but just in case)
        uint256 overflownRounds = ((block.timestamp - roundEndTimestamp[_elevation]) / roundDurationSeconds(_elevation));
        
        // Brings current with any extra overflown rounds
        roundEndTimestamp[_elevation] += roundDurationSeconds(_elevation) * overflownRounds;

        // Updates round duration if necessary
        if (pendingDurationMult[_elevation] != durationMult[_elevation]) {
            durationMult[_elevation] = pendingDurationMult[_elevation];
        }

        // Adds the duration of the current round (updated if necessary) to the current round end timestamp
        roundEndTimestamp[_elevation] += roundDurationSeconds(_elevation);

        // Updates elevation allocation multiplier if necessary
        if (pendingAllocMultiplier[_elevation] != allocMultiplier[_elevation]) {
            allocMultiplier[_elevation] = pendingAllocMultiplier[_elevation];
        }
    }


    /// @dev Simple modulo on generated random number to choose the winning totem (inlined for brevity)
    /// @param _elevation Which elevation the winner will be selected for
    /// @param _rand The generated random number to select with
    function chooseWinningTotem(uint8 _elevation, uint256 _rand) internal view returns (uint8) {
        if (_elevation == EXPEDITION)
            return (_rand % 100) < currentDeityDivider() ? 0 : 1;

        return uint8((_rand * totemCount[_elevation]) / 100);
    }


    /// @dev Stores selected winning totem (inlined for brevity)
    /// @param _elevation Elevation to store at
    /// @param _winner Selected winning totem
    function markWinningTotem(uint8 _elevation, uint8 _winner) internal {
        // No totem marked as the winner for the first round (unlocking the elevation)
        if (roundNumber[_elevation] == 0) return;

        totemWinsAccum[_elevation][_winner] += 1;
        winningTotem[_elevation][roundNumber[_elevation]] = _winner;   

        emit WinningTotemSelected(_elevation, roundNumber[_elevation], _winner);
    }


    /// @dev Sets random deity divider (50 - 90) for next expedition round (inlined for brevity)
    /// @param _rand Same rand that chose winner
    function setNextDeityDivider(uint256 _rand) internal {
        // Number between 50 - 90 based on previous round winning number, helps to balance the divider between the deities
        uint256 expedSelector = (_rand % 100);
        uint256 divider = 50 + ((expedSelector * 40) / 100);
        expeditionDeityDivider[currentExpeditionRound() + 1] = divider;

        emit DeityDividerSelected(currentExpeditionRound() + 1, divider);
    }


    
    
    // ------------------------------------------------------------------
    // --   F R O N T E N D
    // ------------------------------------------------------------------
    
    /// @dev Fetcher of historical data for past winning totems
    /// @param _elevation Which elevation to check historical winners of
    /// @return Array of 20 values, first 10 of which are win count accumulators for each totem, last 10 of which are winners of previous 10 rounds of play
    function historicalWinningTotems(uint8 _elevation) public view allElevations(_elevation) returns (uint256[] memory, uint256[] memory) {
        uint256 round = roundNumber[_elevation];
        uint256 winHistoryDepth = Math.min(10, round - 1);

        uint256[] memory winsAccum = new uint256[](totemCount[_elevation]);
        uint256[] memory prevWinHistory = new uint256[](winHistoryDepth);

        if (_elevation > OASIS) {
            uint256 prevRound = round == 0 ? 0 : round - 1;
            for (uint8 i = 0; i < totemCount[_elevation]; i++) {
                winsAccum[i] = totemWinsAccum[_elevation][i];
            }
            for (uint8 j = 0; j < winHistoryDepth; j++) {
                prevWinHistory[j] = winningTotem[_elevation][prevRound - j];
            }
        }

        return (winsAccum, prevWinHistory);
    }
}

File 2 of 5 : ISummitRNGModule.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.2;


interface ISummitRNGModule {
    function getRandomNumber(uint8 elevation, uint256 roundNumber) external view returns (uint256);
    function setSeedRoundEndTimestamp(uint256 _seedRoundEndTimestamp) external;
}

File 3 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 5 : Math.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Standard math utilities missing in the Solidity language.
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow.
        return (a & b) + (a ^ b) / 2;
    }

    /**
     * @dev Returns the ceiling of the division of two numbers.
     *
     * This differs from standard division with `/` in that it rounds up instead
     * of rounding down.
     */
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b - 1) / b can overflow on addition, so we distribute.
        return a / b + (a % b == 0 ? 0 : 1);
    }
}

File 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_cartographer","type":"address"},{"internalType":"address","name":"_expeditionV2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"expeditionRound","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"deityDivider","type":"uint256"}],"name":"DeityDividerSelected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"_elevation","type":"uint8"},{"indexed":false,"internalType":"uint16","name":"_allocMultiplier","type":"uint16"}],"name":"SetElevationAllocMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"_elevation","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"_mult","type":"uint8"}],"name":"SetElevationRoundDurationMult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_summitRNGModuleAdd","type":"address"}],"name":"UpgradeSummitRNGModule","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"elevation","type":"uint8"},{"indexed":true,"internalType":"uint256","name":"round","type":"uint256"},{"indexed":true,"internalType":"uint8","name":"totem","type":"uint8"}],"name":"WinningTotemSelected","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allocMultiplier","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cartographer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentDeityDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentExpeditionRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"currentRoundStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"durationMult","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"elevationAllocMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"elevationLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"elevationModulatedAllocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_enableTimestamp","type":"uint256"}],"name":"enable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"endOfRoundLockoutActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"expeditionDeityDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expeditionV2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"fractionRoundComplete","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"fractionRoundRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"historicalWinningTotems","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"nextRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pendingAllocMultiplier","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pendingDurationMult","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"rolloverElevation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"roundDurationSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"roundNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"selectWinningTotem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"},{"internalType":"uint16","name":"_allocMultiplier","type":"uint16"}],"name":"setElevationAllocMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"},{"internalType":"uint8","name":"_mult","type":"uint8"}],"name":"setElevationRoundDurationMult","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"summitRNGModuleAdd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"timeRemainingInRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totemCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"totemWinsAccum","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"unlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_summitRNGModuleAdd","type":"address"}],"name":"upgradeSummitRNGModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_elevation","type":"uint8"}],"name":"validateRolloverAvailable","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"winningTotem","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]

61012060405260646080818152606e60a052607d60c052609660e05261010091909152620000329060039060056200028b565b506040805160a0810182526064808252606e6020830152607d92820192909252609660608201526080810191909152620000719060049060056200028b565b506040805160a081018252600181526002602082018190526005928201839052600a60608301526080820152620000aa91908162000327565b506040805160a08101825260008152600260208201819052918101829052606081019190915260186080820152620000e7906006906005620003ad565b506040805160a081018252600081526002602082018190529181018290526060810191909152601860808201526200012490600b906005620003ad565b503480156200013257600080fd5b50604051620021db380380620021db833981016040819052620001559162000417565b62000160336200023b565b6001600160a01b038216620001bc5760405162461bcd60e51b815260206004820152601460248201527f436172746f67726170686572206d697373696e6700000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620002095760405162461bcd60e51b815260206004820152601260248201527145787065646974696f6e206d697373696e6760701b6044820152606401620001b3565b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556200044e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600183019183908215620003155791602002820160005b83821115620002e357835183826101000a81548161ffff021916908360ff1602179055509260200192600201602081600101049283019260010302620002a2565b8015620003135782816101000a81549061ffff0219169055600201602081600101049283019260010302620002e3565b505b5062000323929150620003e3565b5090565b600183019183908215620003155791602002820160005b838211156200037e57835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026200033e565b8015620003135782816101000a81549060ff02191690556001016020816000010492830192600103026200037e565b826005810192821562000315579160200282015b8281111562000315578251829060ff16905591602001919060010190620003c1565b5b80821115620003235760008155600101620003e4565b80516001600160a01b03811681146200041257600080fd5b919050565b600080604083850312156200042a578182fd5b6200043583620003fa565b91506200044560208401620003fa565b90509250929050565b611d7d806200045e6000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80639ce1fd5311610130578063d2dd8ef7116100b8578063f298920b1161007c578063f298920b14610516578063f2b3f65a14610529578063f2fde38b1461053c578063f351b9621461054f578063fd22f73a1461056257610226565b8063d2dd8ef7146104b7578063d43665bb146104ca578063e307a7f2146104dd578063e7d7cf0e146104f0578063ece184bf1461050357610226565b8063b8a8a719116100ff578063b8a8a7191461043a578063be41d4f114610442578063bed9b66a14610463578063c1ccf47614610476578063cb4b30221461048957610226565b80639ce1fd53146103f9578063a901b9b31461040c578063b27fc0481461041f578063b506c7f61461043257610226565b806334abac9f116101b357806387dc7c371161018257806387dc7c371461039c5780638a1bec40146103af5780638da5cb5b146103c257806397b758ab146103d35780639ac143e1146103e657610226565b806334abac9f14610343578063545613221461036e578063647aba3014610381578063715018a61461039457610226565b80631b23fafd116101fa5780631b23fafd146102bf578063246292c4146102d257806329b31fad146102f85780632ae834e01461030b5780632b004f171461033057610226565b8062281cde1461022b57806305490a7f146102535780630a67e255146102815780630c23eacd146102aa575b600080fd5b61023e610239366004611b19565b610575565b60405190151581526020015b60405180910390f35b610273610261366004611abe565b601f6020526000908152604090205481565b60405190815260200161024a565b61027361028f366004611b6f565b60208080526000928352604080842090915290825290205481565b6102bd6102b8366004611b33565b6105a8565b005b6102736102cd366004611b19565b61073c565b6102e56102e0366004611abe565b61077d565b60405161ffff909116815260200161024a565b610273610306366004611b19565b6107ab565b61031e610319366004611abe565b6107f8565b60405160ff909116815260200161024a565b61027361033e366004611b19565b610822565b602254610356906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b61027361037c366004611abe565b610869565b600154610356906001600160a01b031681565b6102bd610880565b6102bd6103aa366004611abe565b6108b6565b600254610356906001600160a01b031681565b6000546001600160a01b0316610356565b6102bd6103e1366004611b19565b610a15565b6102736103f4366004611aee565b610b9f565b6102e5610407366004611abe565b610c1b565b61027361041a366004611b19565b610c2b565b61027361042d366004611abe565b610c58565b601954610273565b610273610c68565b610455610450366004611b19565b610c8b565b60405161024a929190611bfb565b610273610471366004611abe565b610f3d565b610273610484366004611b19565b610f4d565b61031e610497366004611b6f565b602160209081526000928352604080842090915290825290205460ff1681565b6102bd6104c5366004611b98565b610fb5565b6102736104d8366004611abe565b6110c8565b6102736104eb366004611b19565b6110d8565b6102736104fe366004611abe565b61110d565b6102bd610511366004611b19565b61111d565b6102bd610524366004611a97565b6111fd565b610273610537366004611b19565b6112c7565b6102bd61054a366004611a97565b6112ee565b61023e61055d366004611b19565b611386565b6102bd610570366004611b19565b6113f5565b600060108260ff166005811061059b57634e487b7160e01b600052603260045260246000fd5b015442111590505b919050565b6000546001600160a01b031633146105db5760405162461bcd60e51b81526004016105d290611c50565b60405180910390fd5b81600460ff821611156106005760405162461bcd60e51b81526004016105d290611c29565b61012c8261ffff1611156106565760405162461bcd60e51b815260206004820152601b60248201527f4d756c7469706c6965722063616e6e6f7420657863656564203358000000000060448201526064016105d2565b8160048460ff166005811061067b57634e487b7160e01b600052603260045260246000fd5b601091828204019190066002026101000a81548161ffff021916908361ffff160217905550600060ff168360ff1614156106fa578160038460ff16600581106106d457634e487b7160e01b600052603260045260246000fd5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055505b60405161ffff8316815260ff8416907f3fe952992d643538a5856ba178249af5c70dda89973037ed766f1e2489c43010906020015b60405180910390a2505050565b6000610747826110d8565b601a8360ff166005811061076b57634e487b7160e01b600052603260045260246000fd5b01546107779190611cd0565b92915050565b6003816005811061078d57600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b60006107b68261172b565b6107f05742601a8360ff16600581106107df57634e487b7160e01b600052603260045260246000fd5b01546107eb9190611cd0565b610777565b506000919050565b6005816005811061080857600080fd5b60209182820401919006915054906101000a900460ff1681565b600060038260ff166005811061084857634e487b7160e01b600052603260045260246000fd5b601081049190910154600f9091166002026101000a900461ffff1692915050565b6010816005811061087957600080fd5b0154905081565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016105d290611c50565b6108b4600061175c565b565b6001546001600160a01b031633146109045760405162461bcd60e51b815260206004820152601160248201527027b7363c9031b0b93a37b3b930b83432b960791b60448201526064016105d2565b6000610912610e1083611d07565b61091e90610e10611cd0565b6109289083611c85565b90506040518060a001604052808281526020018260006109489190611c85565b815260200161095a836202a300611c85565b815260200161096c8362054600611c85565b815260200161097e8362069780611c85565b905261098e906010906005611a08565b5061099d601a60106005611a46565b506022546001600160a01b031663dd26047b60786010600101546109c19190611cd0565b6040518263ffffffff1660e01b81526004016109df91815260200190565b600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b505050505050565b6001546001600160a01b0316331480610a3857506002546001600160a01b031633145b610a845760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c7920636172746f67726170686572206f722065787065646974696f6e0060448201526064016105d2565b80600160ff821610801590610a9d5750600460ff821611155b610ab95760405162461bcd60e51b81526004016105d290611c29565b6022546000906001600160a01b031663a54777f184601560ff821660058110610af257634e487b7160e01b600052603260045260246000fd5b01546040516001600160e01b031960e085901b16815260ff9092166004830152602482015260440160206040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611ad6565b90506000610b7884836117ac565b9050610b848482611839565b60ff841660041415610b9957610b9982611950565b50505050565b600081600460ff82161115610bc65760405162461bcd60e51b81526004016105d290611c29565b60038360ff1660058110610bea57634e487b7160e01b600052603260045260246000fd5b601091828204019190066002029054906101000a900461ffff1661ffff1684610c139190611cb1565b949350505050565b6004816005811061078d57600080fd5b6000610c36826110d8565b610c3f836107ab565b610c4e9064e8d4a51000611cb1565b6107779190611c9d565b6015816005811061087957600080fd5b6000601f6000610c7760195490565b815260200190815260200160002054905090565b60608082600460ff82161115610cb35760405162461bcd60e51b81526004016105d290611c29565b600060158560ff1660058110610cd957634e487b7160e01b600052603260045260246000fd5b015490506000610cf4600a610cef600185611cd0565b6119f2565b9050600060058760ff1660058110610d1c57634e487b7160e01b600052603260045260246000fd5b602081049091015460ff601f9092166101000a90041667ffffffffffffffff811115610d5857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d81578160200160208202803683370190505b50905060008267ffffffffffffffff811115610dad57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610dd6578160200160208202803683370190505b50905060ff881615610f305760008415610dfa57610df5600186611cd0565b610dfd565b60005b905060005b60058a60ff1660058110610e2657634e487b7160e01b600052603260045260246000fd5b602081049091015460ff601f9092166101000a900481169082161015610ea65760ff808b16600090815260208080526040808320938516808452939091529020548551909186918110610e8957634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610e9e81611ce7565b915050610e02565b5060005b848160ff161015610f2d5760ff808b16600090815260216020526040812091610ed590841685611cd0565b8152602081019190915260400160002054835160ff918216918591908416908110610f1057634e487b7160e01b600052603260045260246000fd5b602090810291909101015280610f2581611ce7565b915050610eaa565b50505b9095509350505050915091565b600b816005811061087957600080fd5b600060108260ff1660058110610f7357634e487b7160e01b600052603260045260246000fd5b0154421115610fad5760158260ff1660058110610fa057634e487b7160e01b600052603260045260246000fd5b01546107eb906001611c85565b506001919050565b6000546001600160a01b03163314610fdf5760405162461bcd60e51b81526004016105d290611c50565b81600160ff821610801590610ff85750600460ff821611155b6110145760405162461bcd60e51b81526004016105d290611c29565b60008260ff16116110675760405162461bcd60e51b815260206004820152601e60248201527f4475726174696f6e206d756c74206d757374206265206e6f6e207a65726f000060448201526064016105d2565b8160ff16600b8460ff166005811061108f57634e487b7160e01b600052603260045260246000fd5b015560405160ff83811682528416907f60043d2b70e35cf8c13c5478a809ee8fa1c5aec0ff0060dca248a51f219821029060200161072f565b6006816005811061087957600080fd5b6000610e1060068360ff166005811061110157634e487b7160e01b600052603260045260246000fd5b01546107779190611cb1565b601a816005811061087957600080fd5b60108160ff166005811061114157634e487b7160e01b600052603260045260246000fd5b01544210156111855760405162461bcd60e51b815260206004820152601060248201526f115b195d985d1a5bdb881b1bd8dad95960821b60448201526064016105d2565b601a8160ff16600581106111a957634e487b7160e01b600052603260045260246000fd5b01544210156111fa5760405162461bcd60e51b815260206004820152601960248201527f526f756e6420616c726561647920726f6c6c6564206f7665720000000000000060448201526064016105d2565b50565b6000546001600160a01b031633146112275760405162461bcd60e51b81526004016105d290611c50565b6001600160a01b03811661127d5760405162461bcd60e51b815260206004820152601e60248201527f53756d6d697452616e646f6d6e6573734d6f64756c65206d697373696e67000060448201526064016105d2565b602280546001600160a01b0319166001600160a01b0383169081179091556040517f371cb7f3d8652165196ebccb75b7aa6fa29f4eb1b3f3c4d81e9877cf12487e8690600090a250565b60006112d2826110d8565b6112db836107ab565b6112e4846110d8565b610c3f9190611cd0565b6000546001600160a01b031633146113185760405162461bcd60e51b81526004016105d290611c50565b6001600160a01b03811661137d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d2565b6111fa8161175c565b6000601a8260ff16600581106113ac57634e487b7160e01b600052603260045260246000fd5b01546113ba575060006105a3565b6078601a60ff8416600581106113e057634e487b7160e01b600052603260045260246000fd5b01546113ec9190611cd0565b42101592915050565b6001546001600160a01b031633148061141857506002546001600160a01b031633145b6114645760405162461bcd60e51b815260206004820152601f60248201527f4f6e6c7920636172746f67726170686572206f722065787065646974696f6e0060448201526064016105d2565b600160158260ff166005811061148a57634e487b7160e01b600052603260045260246000fd5b01600082825461149a9190611c85565b90915550600090506114ab826110d8565b601a8360ff16600581106114cf57634e487b7160e01b600052603260045260246000fd5b01546114db9042611cd0565b6114e59190611c9d565b9050806114f1836110d8565b6114fb9190611cb1565b601a8360ff166005811061151f57634e487b7160e01b600052603260045260246000fd5b01600082825461152f9190611c85565b909155506006905060ff83166005811061155957634e487b7160e01b600052603260045260246000fd5b0154600b8360ff166005811061157f57634e487b7160e01b600052603260045260246000fd5b0154146115d357600b8260ff16600581106115aa57634e487b7160e01b600052603260045260246000fd5b015460068360ff16600581106115d057634e487b7160e01b600052603260045260246000fd5b01555b6115dc826110d8565b601a8360ff166005811061160057634e487b7160e01b600052603260045260246000fd5b0160008282546116109190611c85565b909155506003905060ff83166005811061163a57634e487b7160e01b600052603260045260246000fd5b601091828204019190066002029054906101000a900461ffff1661ffff1660048360ff166005811061167c57634e487b7160e01b600052603260045260246000fd5b601091828204019190066002029054906101000a900461ffff1661ffff16146117275760048260ff16600581106116c357634e487b7160e01b600052603260045260246000fd5b601091828204019190066002029054906101000a900461ffff1660038360ff166005811061170157634e487b7160e01b600052603260045260246000fd5b601091828204019190066002026101000a81548161ffff021916908361ffff1602179055505b5050565b6000601a8260ff166005811061175157634e487b7160e01b600052603260045260246000fd5b015442101592915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060ff8316600414156117e3576117c2610c68565b6117cd606484611d07565b106117d95760016117dc565b60005b9050610777565b606460058460ff166005811061180957634e487b7160e01b600052603260045260246000fd5b60208104919091015461182891601f166101000a900460ff1684611cb1565b6118329190611c9d565b9392505050565b60158260ff166005811061185d57634e487b7160e01b600052603260045260246000fd5b015461186857611727565b60ff8083166000908152602080805260408083209385168352929052908120805460019290611898908490611c85565b909155505060ff821660008181526021602052604081208392909190601590600581106118d557634e487b7160e01b600052603260045260246000fd5b015481526020810191909152604001600020805460ff191660ff9283161790558181169060159084166005811061191c57634e487b7160e01b600052603260045260246000fd5b015460405160ff8516907ff90d6cda86eb5ff0233bec5d9d9711cd6a1cb5a73d91f3fec6f972796ac8776f90600090a45050565b600061195d606483611d07565b90506000606461196e836028611cb1565b6119789190611c9d565b611983906032611c85565b905080601f600061199360195490565b61199e906001611c85565b8152602081019190915260400160002055806119b960195490565b6119c4906001611c85565b6040517f594b81ffc01a01def316e03576a466fc2dede091ee93f41e697236d2b09f9edd90600090a3505050565b6000818310611a015781611832565b5090919050565b8260058101928215611a36579160200282015b82811115611a36578251825591602001919060010190611a1b565b50611a42929150611a71565b5090565b8260058101928215611a36579182015b82811115611a36578254825591600101919060010190611a56565b5b80821115611a425760008155600101611a72565b803560ff811681146105a357600080fd5b600060208284031215611aa8578081fd5b81356001600160a01b0381168114611832578182fd5b600060208284031215611acf578081fd5b5035919050565b600060208284031215611ae7578081fd5b5051919050565b60008060408385031215611b00578081fd5b82359150611b1060208401611a86565b90509250929050565b600060208284031215611b2a578081fd5b61183282611a86565b60008060408385031215611b45578182fd5b611b4e83611a86565b9150602083013561ffff81168114611b64578182fd5b809150509250929050565b60008060408385031215611b81578182fd5b611b8a83611a86565b946020939093013593505050565b60008060408385031215611baa578182fd5b611bb383611a86565b9150611b1060208401611a86565b6000815180845260208085019450808401835b83811015611bf057815187529582019590820190600101611bd4565b509495945050505050565b600060408252611c0e6040830185611bc1565b8281036020840152611c208185611bc1565b95945050505050565b6020808252600d908201526c2130b21032b632bb30ba34b7b760991b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611c9857611c98611d1b565b500190565b600082611cac57611cac611d31565b500490565b6000816000190483118215151615611ccb57611ccb611d1b565b500290565b600082821015611ce257611ce2611d1b565b500390565b600060ff821660ff811415611cfe57611cfe611d1b565b60010192915050565b600082611d1657611d16611d31565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220538e289ac169353a9d3c0c34fa149155d547792c624d94e1743b87ba69404c8c64736f6c634300080200330000000000000000000000009ea3765c333eebca7f51b3dae30abd714faf7793000000000000000000000000e35d3e1f049373d8c243604d6adcfb064fe10c3e

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
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.