Contract 0x9076C96e01F6F13e1eC4832354dF970d245e124F

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb0486451dd69afc031023054ed47cb9f1954d387627be81df3235f44d88ad64cUnlock385899472022-05-19 14:24:1040 mins ago0xc877d91a16a5fb483dd96a4a00ede9b240374a25 IN  PaintSwap: Art Gallery0 FTM0.022081926414
0x1cc7a197c368ff5d31b178527b992a9c1541bf02a1c2a031d9e43465e860c953Unlock385889762022-05-19 14:04:101 hr ago0xcef12e8fe072c42f8d4e2e698624c33e21e74263 IN  PaintSwap: Art Gallery0 FTM0.01792285171
0x94dfcb5dbb9e53f416fc580535fc75054938d13e655819334a3241437e2398c5Unlock385881292022-05-19 13:45:251 hr 18 mins ago0x7d83ce58640e0c0e5613066c27425b32b6bc99e1 IN  PaintSwap: Art Gallery0 FTM0.031181724313
0x69bb146800dcab5ae9404fea69c36589df40a19538ce41ecf993bcef03719388Unlock385860942022-05-19 13:06:501 hr 57 mins ago0x55630c7f6a1cdde2f9e2779dcf694394216c6537 IN  PaintSwap: Art Gallery0 FTM0.017893958252
0x06754249036d9303a763414878028b898722e997f9a8893f238a3e0355ddaa9fUnlock385810592022-05-19 11:32:143 hrs 31 mins ago0xc1d0d2d505b8122dbfe78e3ba37c7bde1105d2ef IN  PaintSwap: Art Gallery0 FTM0.030342896769
0x024526e2788bdcef988a2c8359b34392df8ef035cbdfb5c6e288397f358dace5Unlock385788262022-05-19 10:45:134 hrs 18 mins ago0x3a238952e78a3a9d6b43ea25d18cb44abf868644 IN  PaintSwap: Art Gallery0 FTM0.024118062684
0x38b6983273d5272ec1ffb2ace1e99361252091a756ec9dd5369582541b091215Unlock385741932022-05-19 9:15:435 hrs 48 mins ago0xdc43d0c0497fbf3bb3cf43dcaface9c116d5dd21 IN  PaintSwap: Art Gallery0 FTM0.007811847
0x533a734f17cd2485e96f9889b63d524838a082b13f10c67ef7a3e5891f8e955dUnlock385709582022-05-19 8:13:426 hrs 50 mins ago0x69cd1c2e13113c09a22ff98cbd2db3f682f716b4 IN  PaintSwap: Art Gallery0 FTM0.036404817551
0x2c565090e7247e0bb5fac986c26ac786d0e72685a1057ca0eb324a290acb75faUnlock385700062022-05-19 7:53:247 hrs 10 mins ago0x673a25b2871c1c1560e8aae8faf84b60b70e4940 IN  PaintSwap: Art Gallery0 FTM0.014560858035
0xa790971b3ac00f97d432510b20ec0ea581009a811751bb5eb4d241eff5ce62deUnlock385690792022-05-19 7:36:187 hrs 27 mins ago0x3342d7df6806600dba1fcd48d1222825dfdbcb78 IN  PaintSwap: Art Gallery0 FTM0.01069751394
0xca7f69c368424ea73e2752bc42acd55457e41fc816e4304fbd2f316038598384Unlock385641742022-05-19 6:04:069 hrs ago0x3a28fdc52747dd3b408f6148f9749b943cc08ae8 IN  PaintSwap: Art Gallery0 FTM0.01795458157
0x8fadab659136a91305ce4acc4b79f4f4788a7de9ab83a1fe4d1086ff383c1a50Unlock385617882022-05-19 5:18:449 hrs 45 mins ago0xfede810b234d7d5ede52c6586321564d9657d0c8 IN  PaintSwap: Art Gallery0 FTM0.043265460232
0x6e678d91f37b71973533f501987a3359a46d539f8f0b029107bb6c070b466146Unlock385582752022-05-19 4:05:3310 hrs 58 mins ago0x14c5fbcb7511780102ba955b1cc4f49ae1d39bf4 IN  PaintSwap: Art Gallery0 FTM0.034479676229
0xfeece798e4405ca5d8467d75541c507ff09ffc0e41916845034f17e62eeae83dUnlock385551372022-05-19 3:02:1312 hrs 1 min ago0xa980ebe9ee5b6800b5f2eb013ca4fb62ce27c7ea IN  PaintSwap: Art Gallery0 FTM0.043945147489
0xd6898c4c40c318c8c01daad9a495bb5ec7f113fe0eaed172968e23c19e001aa8Unlock385533912022-05-19 2:23:4112 hrs 40 mins ago0x26a09beb36ab2c3935408bb37bcaa0638f709ecd IN  PaintSwap: Art Gallery0 FTM0.058418157885
0xc074a6d70a3c0d5cfd652c4eef66f1b8f4d1bbe989d5c9b347ec5b874c2dee45Unlock385447282022-05-18 23:22:4715 hrs 41 mins ago0x3a2db5ab04e8ffa9a291a9ca7b618067316b11c3 IN  PaintSwap: Art Gallery0 FTM0.030079425603
0xbc18c58c2573f8c2eb81a603ec3681619f691f9eb5055855a92e6ce97189a43fUnlock385438832022-05-18 23:04:2015 hrs 59 mins ago0x7506316a24fc4891e0b403f04aed88905b777165 IN  PaintSwap: Art Gallery0 FTM0.069573609364
0xd2a0fc6b610c5372eb3ccfc7289eeab397c7ae240f2f65911a80f576790dbb31Unlock385378162022-05-18 21:07:4817 hrs 56 mins ago0xf33d215b182434ad330c395204b4e91d227ff8fe IN  PaintSwap: Art Gallery0 FTM0.022995802059
0x4c43c5b8b052d09b0c9d21b87195f48f168e9723ce50753402c8383305f2f92bUnlock385357352022-05-18 20:21:1118 hrs 43 mins ago0x8a2dbcae7eb8ba0cd2e1ab1fa59b3cc472846e55 IN  PaintSwap: Art Gallery0 FTM0.023306181054
0x8c73c73bf364c0202058088a4fa5f3dbe91f2b20fd0ecc975d1b43fcf06d78ecUnlock385338362022-05-18 19:44:5119 hrs 19 mins ago0x87425d0141bab5beb1638d21dc14869fc1305856 IN  PaintSwap: Art Gallery0 FTM0.014102211656
0xaa868f1db347372941a6fa6482d7c0a25f61823f2f1a734744650406e1a5297bUnlock385293962022-05-18 18:21:4120 hrs 42 mins ago0xd4a5c5f925d5914a481a974a75a35218515af259 IN  PaintSwap: Art Gallery0 FTM0.023414474606
0x31361605eae18b21ebd402994d154cc167ce42e5376e9929b61a774342598c3cUnlock385293412022-05-18 18:20:4620 hrs 43 mins ago0x29d16256f40d5fb010e314b9e3d00005091e9fca IN  PaintSwap: Art Gallery0 FTM0.018029590759
0xad14a5fb4bde86a72b69f6087e0e52f7d6a5f0c5a6d7aec23b3759feedbc3ebaUnlock385248092022-05-18 16:48:5422 hrs 15 mins ago0x855426c17bdbd23888b7b358f96c0bd08c522e00 IN  PaintSwap: Art Gallery0 FTM0.026712719453
0xbef603e16f7635974c97a363fead3958b086b80983a0fadd4b93586b8a36113cUnlock385224012022-05-18 15:58:0923 hrs 6 mins ago0x84ca849d51b2ce29d83f7f8baa445443215d40f5 IN  PaintSwap: Art Gallery0 FTM0.057545951523
0x1bd45ee4f303812568ea1f11743d18f7551e9efe5a2974eba7be9a2d32e3d36eUnlock385196022022-05-18 15:01:031 day 3 mins ago0x39e8ebd1c9faed722d742443ac77a3c25e124eaa IN  PaintSwap: Art Gallery0 FTM0.045263561461
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x96765c7c7af4fa0d42ea3bc5af259a2155ddf2e20e8c9e7848389ea4a682742a77637322021-05-26 16:24:18357 days 22 hrs ago PaintSwap Finance: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ArtGallery

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at FtmScan.com on 2021-05-26
*/

// SPDX-License-Identifier: GPL-3.0-or-later Or MIT
pragma solidity >=0.8.0 <0.9.0;

interface IArtGallery {
	function lock (address _painter, uint256 amount) external;
}







interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address _owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}







/*
 * @dev 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 GSN 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) { // payable
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


contract ArtGallery is IArtGallery, Ownable {
    struct ArtEntry {
        uint256 amount; // How much to lock
        uint256 unlockTime; // When it is unlocked
    }

    // A wrapper around a mapping, enabling FIFO
    struct Collection {
        mapping(uint256 => ArtEntry) queue;
        uint256 first;
        uint256 count;
    }

    IBEP20 private immutable brush;
    uint256 public immutable lockDuration;

    mapping(address => Collection) private lockedUp;

    constructor(address _brush, uint256 _lockDuration) {
        brush = IBEP20(_brush);
        lockDuration = _lockDuration;
    }

    function lock(address _painter, uint256 _amount)
        external
        override
        onlyOwner
    {
        require(_amount > 0);
        Collection storage collection = lockedUp[_painter];
        collection.queue[collection.count] = ArtEntry({
            amount: _amount,
            unlockTime: block.timestamp + lockDuration
        });
        ++collection.count;
    }

    function isUnlockable(uint256 _unlockTime) public view returns (bool) {
        return block.timestamp >= _unlockTime;
    }

    // Always use inspect() first to avoid spending gas without any unlocks
    function unlock() external {
        uint256 unlockedAmount;

        Collection storage collection = lockedUp[msg.sender];
        uint256 count = collection.count;
        while (collection.first < count) {
            ArtEntry storage entry = collection.queue[collection.first];
            if (!isUnlockable(entry.unlockTime)) {
                break;
            }
            unlockedAmount += entry.amount;
            delete collection.queue[collection.first];
            ++collection.first;
        }

        if (unlockedAmount > 0) {
            safeBrushTransfer(msg.sender, unlockedAmount);
        }
    }

    function inspect(address _painter)
        public
        view
        returns (
            uint256 lockedCount, // How many art pieces are locked
            uint256 lockedAmount, // How much is locked in total
            uint256 unlockableCount,
            uint256 unlockableAmount,
            uint256 nextUnlockTime, // 0 if nothing locked; does not represent an immediate unlockable
            uint256 nextUnlockAmount
        )
    {
        Collection storage collection = lockedUp[_painter];
        for (uint256 i = collection.first; i < collection.count; ++i) {
            ArtEntry storage entry = collection.queue[i];
            if (isUnlockable(entry.unlockTime)) {
                ++unlockableCount;
                unlockableAmount += entry.amount;
            } else {
                ++lockedCount;
                lockedAmount += entry.amount;
                if (lockedCount == 1) {
                    nextUnlockTime = entry.unlockTime;
                    nextUnlockAmount = entry.amount;
                }
            }
        }
    }

    // Safe brush transfer function, just in case if rounding error causes the gallery to not have enough BRUSHs.
    function safeBrushTransfer(address _to, uint256 _amount) internal {
        require(_amount > 0);
        uint256 brushBal = brush.balanceOf(address(this));
        if (_amount > brushBal) {
            brush.transfer(_to, brushBal);
        } else {
            brush.transfer(_to, _amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_brush","type":"address"},{"internalType":"uint256","name":"_lockDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_painter","type":"address"}],"name":"inspect","outputs":[{"internalType":"uint256","name":"lockedCount","type":"uint256"},{"internalType":"uint256","name":"lockedAmount","type":"uint256"},{"internalType":"uint256","name":"unlockableCount","type":"uint256"},{"internalType":"uint256","name":"unlockableAmount","type":"uint256"},{"internalType":"uint256","name":"nextUnlockTime","type":"uint256"},{"internalType":"uint256","name":"nextUnlockAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"isUnlockable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_painter","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b5060405161093338038061093383398101604081905261002f9161008b565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060609190911b6001600160601b03191660805260a0526100c3565b6000806040838503121561009d578182fd5b82516001600160a01b03811681146100b3578283fd5b6020939093015192949293505050565b60805160601c60a0516108346100ff60003960008181609201526102a801526000818161052c015281816105de015261068601526108346000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610124578063a51270b41461013f578063a69df4b514610163578063f2fde38b1461016b57600080fd5b8063045544431461008d578063065b1c3c146100c7578063282d3fdf14610107578063715018a61461011c575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6100da6100d53660046106e6565b61017e565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016100be565b61011a610115366004610707565b610238565b005b61011a61030a565b6000546040516001600160a01b0390911681526020016100be565b61015361014d366004610750565b42101590565b60405190151581526020016100be565b61011a61037e565b61011a6101793660046106e6565b61041d565b6001600160a01b038116600090815260016020819052604082209081015482918291829182918291905b816002015481101561022d576000818152602083905260409020600181015442106101ec576101d6876107cd565b81549097506101e590876107b5565b955061021c565b6101f5896107cd565b815490995061020490896107b5565b9750886001141561021c576001810154815490955093505b50610226816107cd565b90506101a8565b505091939550919395565b6000546001600160a01b0316331461026b5760405162461bcd60e51b815260040161026290610780565b60405180910390fd5b6000811161027857600080fd5b6001600160a01b0382166000908152600160209081526040918290208251808401909352838352919081016102cd7f0000000000000000000000000000000000000000000000000000000000000000426107b5565b90526002820180546000908152602084815260408220845181559301516001909301929092558054909190610301906107cd565b90915550505050565b6000546001600160a01b031633146103345760405162461bcd60e51b815260040161026290610780565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33600090815260016020526040812060028101545b8082600101541015610408576001828101546000908152602084905260409020908101544210156103c45750610408565b80546103d090856107b5565b6001808501805460009081526020879052604081208181559092018290558054929650916103fd906107cd565b909155506103939050565b8215610418576104183384610507565b505050565b6000546001600160a01b031633146104475760405162461bcd60e51b815260040161026290610780565b6001600160a01b0381166104ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610262565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000811161051457600080fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561057657600080fd5b505afa15801561058a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ae9190610768565b9050808211156106605760405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561062257600080fd5b505af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a9190610730565b50505050565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b15801561062257600080fd5b80356001600160a01b03811681146106e157600080fd5b919050565b6000602082840312156106f7578081fd5b610700826106ca565b9392505050565b60008060408385031215610719578081fd5b610722836106ca565b946020939093013593505050565b600060208284031215610741578081fd5b81518015158114610700578182fd5b600060208284031215610761578081fd5b5035919050565b600060208284031215610779578081fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156107c8576107c86107e8565b500190565b60006000198214156107e1576107e16107e8565b5060010190565b634e487b7160e01b600052601160045260246000fdfea264697066735822122095b1e3fccf0f0a901a738f52060b267c4e9a6a03af35546a6b26429dcd97c52364736f6c6343000804003300000000000000000000000085dec8c4b2680793661bca91a8f129607571863d00000000000000000000000000000000000000000000000000000000006ebe00

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

00000000000000000000000085dec8c4b2680793661bca91a8f129607571863d00000000000000000000000000000000000000000000000000000000006ebe00

-----Decoded View---------------
Arg [0] : _brush (address): 0x85dec8c4b2680793661bca91a8f129607571863d
Arg [1] : _lockDuration (uint256): 7257600

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000085dec8c4b2680793661bca91a8f129607571863d
Arg [1] : 00000000000000000000000000000000000000000000000000000000006ebe00


Deployed ByteCode Sourcemap

6426:3425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:37;;;;;;;;2951:25:1;;;2939:2;2924:18;6820:37:0;;;;;;;;8320:1089;;;;;;:::i;:::-;;:::i;:::-;;;;3274:25:1;;;3330:2;3315:18;;3308:34;;;;3358:18;;;3351:34;;;;3416:2;3401:18;;3394:34;3459:3;3444:19;;3437:35;3503:3;3488:19;;3481:35;3261:3;3246:19;8320:1089:0;3228:294:1;7061:394:0;;;;;;:::i;:::-;;:::i;:::-;;5870:148;;;:::i;5228:79::-;5266:7;5293:6;5228:79;;-1:-1:-1;;;;;5293:6:0;;;1504:51:1;;1492:2;1477:18;5228:79:0;1459:102:1;7463:126:0;;;;;;:::i;:::-;7551:15;:30;;;7463:126;;;;2010:14:1;;2003:22;1985:41;;1973:2;1958:18;7463:126:0;1940:92:1;7674:638:0;;;:::i;6173:244::-;;;;;;:::i;:::-;;:::i;8320:1089::-;-1:-1:-1;;;;;8816:18:0;;8417:19;8816:18;;;:8;:18;;;;;;;8862:16;;;;8417:19;;;;;;;;;;8816:18;8845:557;8884:10;:16;;;8880:1;:20;8845:557;;;8922:22;8947:19;;;;;;;;;;8998:16;;;;7551:15;:30;8981:410;;9036:17;;;:::i;:::-;9092:12;;9036:17;;-1:-1:-1;9072:32:0;;;;:::i;:::-;;;8981:410;;;9145:13;;;:::i;:::-;9193:12;;9145:13;;-1:-1:-1;9177:28:0;;;;:::i;:::-;;;9228:11;9243:1;9228:16;9224:152;;;9286:16;;;;9344:12;;9286:16;;-1:-1:-1;9344:12:0;-1:-1:-1;9224:152:0;-1:-1:-1;8902:3:0;;;:::i;:::-;;;8845:557;;;;8320:1089;;;;;;;;:::o;7061:394::-;5440:6;;-1:-1:-1;;;;;5440:6:0;3952:10;5440:22;5432:67;;;;-1:-1:-1;;;5432:67:0;;;;;;;:::i;:::-;;;;;;;;;7199:1:::1;7189:7;:11;7181:20;;;::::0;::::1;;-1:-1:-1::0;;;;;7244:18:0;::::1;7212:29;7244:18:::0;;;:8:::1;:18;::::0;;;;;;;;7310:108;;;;::::1;::::0;;;;;;7244:18;7310:108;;::::1;7376:30;7394:12;7376:15;:30;:::i;:::-;7310:108:::0;;7290:16:::1;::::0;::::1;::::0;;7273::::1;:34:::0;;;::::1;::::0;;;;;;:145;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;7429:18;;7290:16;;7273;7429:18:::1;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;;;7061:394:0:o;5870:148::-;5440:6;;-1:-1:-1;;;;;5440:6:0;3952:10;5440:22;5432:67;;;;-1:-1:-1;;;5432:67:0;;;;;;;:::i;:::-;5977:1:::1;5961:6:::0;;5940:40:::1;::::0;-1:-1:-1;;;;;5961:6:0;;::::1;::::0;5940:40:::1;::::0;5977:1;;5940:40:::1;6008:1;5991:19:::0;;-1:-1:-1;;;;;;5991:19:0::1;::::0;;5870:148::o;7674:638::-;7788:10;7712:22;7779:20;;;:8;:20;;;;;7826:16;;;;7853:344;7879:5;7860:10;:16;;;:24;7853:344;;;7943:16;;;;;7901:22;7926:34;;;;;;;;;;7993:16;;;;7551:15;:30;;7975:77;;8031:5;;;7975:77;8084:12;;8066:30;;;;:::i;:::-;8135:16;;;;;;8118;:34;;;;;;;;;;8111:41;;;;;;;;;8167:18;;8066:30;;-1:-1:-1;8135:16:0;8167:18;;;:::i;:::-;;;;-1:-1:-1;7853:344:0;;-1:-1:-1;7853:344:0;;8213:18;;8209:96;;8248:45;8266:10;8278:14;8248:17;:45::i;:::-;7674:638;;;:::o;6173:244::-;5440:6;;-1:-1:-1;;;;;5440:6:0;3952:10;5440:22;5432:67;;;;-1:-1:-1;;;5432:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6262:22:0;::::1;6254:73;;;::::0;-1:-1:-1;;;6254:73:0;;2239:2:1;6254:73:0::1;::::0;::::1;2221:21:1::0;2278:2;2258:18;;;2251:30;2317:34;2297:18;;;2290:62;-1:-1:-1;;;2368:18:1;;;2361:36;2414:19;;6254:73:0::1;2211:228:1::0;6254:73:0::1;6364:6;::::0;;6343:38:::1;::::0;-1:-1:-1;;;;;6343:38:0;;::::1;::::0;6364:6;::::1;::::0;6343:38:::1;::::0;::::1;6392:6;:17:::0;;-1:-1:-1;;;;;;6392:17:0::1;-1:-1:-1::0;;;;;6392:17:0;;;::::1;::::0;;;::::1;::::0;;6173:244::o;9532:316::-;9627:1;9617:7;:11;9609:20;;;;;;9659:30;;-1:-1:-1;;;9659:30:0;;9683:4;9659:30;;;1504:51:1;9640:16:0;;9659:5;-1:-1:-1;;;;;9659:15:0;;;;1477:18:1;;9659:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9640:49;;9714:8;9704:7;:18;9700:141;;;9739:29;;-1:-1:-1;;;9739:29:0;;-1:-1:-1;;;;;1758:32:1;;;9739:29:0;;;1740:51:1;1807:18;;;1800:34;;;9739:5:0;:14;;;;1713:18:1;;9739:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7674:638;;;:::o;9700:141::-;9801:28;;-1:-1:-1;;;9801:28:0;;-1:-1:-1;;;;;1758:32:1;;;9801:28:0;;;1740:51:1;1807:18;;;1800:34;;;9801:5:0;:14;;;;1713:18:1;;9801:28:0;;;;;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:1:o;393:264::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;647:2;632:18;;;;619:32;;-1:-1:-1;;;480:177:1:o;662:297::-;729:6;782:2;770:9;761:7;757:23;753:32;750:2;;;803:6;795;788:22;750:2;840:9;834:16;893:5;886:13;879:21;872:5;869:32;859:2;;920:6;912;905:22;964:190;1023:6;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;1097:6;1089;1082:22;1044:2;-1:-1:-1;1125:23:1;;1034:120;-1:-1:-1;1034:120:1:o;1159:194::-;1229:6;1282:2;1270:9;1261:7;1257:23;1253:32;1250:2;;;1303:6;1295;1288:22;1250:2;-1:-1:-1;1331:16:1;;1240:113;-1:-1:-1;1240:113:1:o;2444:356::-;2646:2;2628:21;;;2665:18;;;2658:30;2724:34;2719:2;2704:18;;2697:62;2791:2;2776:18;;2618:182::o;3527:128::-;3567:3;3598:1;3594:6;3591:1;3588:13;3585:2;;;3604:18;;:::i;:::-;-1:-1:-1;3640:9:1;;3575:80::o;3660:135::-;3699:3;-1:-1:-1;;3720:17:1;;3717:2;;;3740:18;;:::i;:::-;-1:-1:-1;3787:1:1;3776:13;;3707:88::o;3800:127::-;3861:10;3856:3;3852:20;3849:1;3842:31;3892:4;3889:1;3882:15;3916:4;3913:1;3906:15

Swarm Source

ipfs://95b1e3fccf0f0a901a738f52060b267c4e9a6a03af35546a6b26429dcd97c523
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.