Contract 0x9076C96e01F6F13e1eC4832354dF970d245e124F

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1353923881966533e109ecd16578da4d09edd202569a0b25a06746e1a8d26778Unlock551255582023-02-05 9:23:201 hr 8 mins ago0xab89e9dd7c60dcc6b4fbcafd27fcef278f1bbf10 IN  PaintSwap: Art Gallery0 FTM0.007402102696
0x2f5a0f13c10b49d86e7b09e5822c820f1e14c1d4e095c057fab4a78e5a3a6153Unlock551248702023-02-05 9:08:041 hr 23 mins ago0x7ffd93d70067adf71e4f43caa4997d2690c1afbe IN  PaintSwap: Art Gallery0 FTM0.005583251623
0x1e9df5c6831d34e7a51eca74d89c5f212d459ac7079c43902d47ef2035089b77Unlock551199252023-02-05 7:30:063 hrs 1 min ago0x2932c3e41f92a3e4f5f36a81e346397de8620502 IN  PaintSwap: Art Gallery0 FTM0.007545737614
0xac449441578a4400c4e5cfee2b958e4157be67dd1ee0661b551dfe31d5ad01c4Unlock551192842023-02-05 7:17:293 hrs 14 mins ago0xe98b3031f2a3fcc8b1175ab93c48de0541a76164 IN  PaintSwap: Art Gallery0 FTM0.006570894642
0xdad646df31f79f3dad65bf6116c1319f1b76956459aa8f67fbcbefb1c048e100Unlock551188112023-02-05 7:08:063 hrs 23 mins ago0xcb919ba075fd64a71e5e03c2b57d0ec643b4a6e3 IN  PaintSwap: Art Gallery0 FTM0.01130713994
0xd647537f91483b109effa078c97b80b62ac502e62f593797ae99c59ba1aa63afUnlock551134942023-02-05 5:21:105 hrs 10 mins ago0x22216c68b75038ef88d18a979dfc881b5121acde IN  PaintSwap: Art Gallery0 FTM0.008959731271
0x388b28158347d273bff38a889e6a401eaf4903cc8ccb998f161c8f24997d633fUnlock551111342023-02-05 4:36:055 hrs 55 mins ago0x3f44c03fb20720ce27ed9bd66334d056c996d66f IN  PaintSwap: Art Gallery0 FTM0.122420562645
0x200c5e7c3163a28bfefc6020ad46a47733e433f43d4b8753299a815c80bee624Unlock551092962023-02-05 3:59:176 hrs 32 mins ago0x3a238952e78a3a9d6b43ea25d18cb44abf868644 IN  PaintSwap: Art Gallery0 FTM0.009448160902
0xfe5887590440df67d0420d9e809bfd5d9ea8458b60082b2deaea8f497b620c9bUnlock551091402023-02-05 3:56:196 hrs 35 mins ago0x24c9a6464517d6ab5880a6b5e365f375b894e0ff IN  PaintSwap: Art Gallery0 FTM0.148938711355
0x99e37b7a6d202c449c3a662ad2e479727db6ddb582cebc3f20096f10d156b68eUnlock551075692023-02-05 3:26:177 hrs 5 mins ago0x0ad4bf2c351e66691da129cc54a0d3b8beb7f7a2 IN  PaintSwap: Art Gallery0 FTM0.037135317285
0x02a185dcd371c8ed30a88596dc8aadafcabec7ed2335763fb68451d5827ebae1Unlock551040222023-02-05 2:12:448 hrs 19 mins ago0xbaa5b84e21153bf80c894dc9237eaa59470eecac IN  PaintSwap: Art Gallery0 FTM0.011457103138
0x3e818dde29ecf00af20b5fa61ba8118f0dc39183007af20ca9c9738b054a520eUnlock551037512023-02-05 2:07:258 hrs 24 mins ago0x379d92924fe31aac58d039ffe60215fd3a2b773b IN  PaintSwap: Art Gallery0 FTM0.007286900709
0xce2eba2cf4c1f07fa4052ee8e8b2a4cfbbd5bad804896abbd75e9f34ccc58254Unlock551010012023-02-05 1:16:019 hrs 15 mins ago0x89177787e8b88b6b95cfcd0501e79bdd05d370ca IN  PaintSwap: Art Gallery0 FTM0.005866867318
0x9fbeee51fa9e8b87980f5cdef649257c70a41d5d22efd028713de4c29b3f076aUnlock551002352023-02-05 1:01:389 hrs 30 mins ago0x4a2f1c3f78e31592e5f1863b2ebd81158e736d9c IN  PaintSwap: Art Gallery0 FTM0.005979287
0xe356e6ba2bc4b34c812e2a6831d92bc226e3e8f1c077a0c543f475ea6a6f07f2Unlock550999322023-02-05 0:56:419 hrs 35 mins ago0xfe5bab72af1aea76aabc28562e584e59d2708196 IN  PaintSwap: Art Gallery0 FTM0.006648149133
0x5ca99f44d288bfb26ac8a98b3613eee713f0af2ce207c65fcd7a0c4df36f1921Unlock550990902023-02-05 0:42:009 hrs 49 mins ago0x1d9dd228fd039de2de7fe2bc684a6cceb34dba53 IN  PaintSwap: Art Gallery0 FTM0.006603399648
0x65c680f5f3fced72c87a4fd680a43bd8b48a20f71b193ca08c8981db70eb72afUnlock550860552023-02-04 20:51:0113 hrs 40 mins ago0x79939118ef2af99e20310ecc5ccc0e9697d390fc IN  PaintSwap: Art Gallery0 FTM0.005336467932
0x40eb2bfe6b2aa12c2ee4dc1896a3db4f77f9c16ff0eb52bbdb2a9525eb036f85Unlock550856962023-02-04 20:44:3413 hrs 47 mins ago0x72d59fa86133d75e5e7c4f32aa90516bdbd605a1 IN  PaintSwap: Art Gallery0 FTM0.008459707063
0xdcb929acb3f60b5fe55ecf88d8d97ad673496833350d27a72f27db672f350e44Unlock550799302023-02-04 18:53:2815 hrs 38 mins ago0xeb751c9d44cf3aad37bef22beed736631df8853e IN  PaintSwap: Art Gallery0 FTM0.007667420697
0x10a74c05f9a86d3f5398b2fda31b7ab5e7f0507c40f2f77af1a010420a5f0426Unlock550675992023-02-04 15:09:1519 hrs 22 mins ago0x3a28fdc52747dd3b408f6148f9749b943cc08ae8 IN  PaintSwap: Art Gallery0 FTM0.009242645116
0x767072eb22d8d150d7320fee66de42cd0c0c007695e65ea4c912ab66a2b42854Unlock550657012023-02-04 14:35:2719 hrs 56 mins ago0xd91a8b39b912bfc99b7026521c6e66b8d9cea122 IN  PaintSwap: Art Gallery0 FTM0.007353232646
0x756ee07c5de7e225809883805c72c5d4b887b17097714fe4b0186c0479290cf5Unlock550589962023-02-04 12:34:3821 hrs 57 mins ago0x6b7785bebab779cf63cf43619eba0ec5ea0f6077 IN  PaintSwap: Art Gallery0 FTM0.011424278034
0x7d581820c77672e2681b00341b5773c06b5c355ca82b5f9cafc099b79609d5f6Unlock550585532023-02-04 12:26:1222 hrs 5 mins ago0xab0aa2ea08b924f5c37f69a530696ac35bf13f33 IN  PaintSwap: Art Gallery0 FTM0.009772768037
0xd47d56fc8980981a2e69cfdcd9d4d6215d62d5e5201950d93018479b71ed5179Unlock550584702023-02-04 12:24:3122 hrs 7 mins ago0xc1ece792d22c6b807a587356a588c50b03d7fe90 IN  PaintSwap: Art Gallery0 FTM0.010373800759
0x0e2b48ae637807f8719864f91d91c183bdb270be2662ee48bd57c4d0e9b5746fUnlock550519302023-02-04 10:10:421 day 21 mins ago0x6f7990bb203154bf15c45c6ba23e64a05cfcd98b IN  PaintSwap: Art Gallery0 FTM0.058737345451
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x96765c7c7af4fa0d42ea3bc5af259a2155ddf2e20e8c9e7848389ea4a682742a77637322021-05-26 16:24:18619 days 18 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.