Contract 0x874e178A2f3f3F9d34db862453Cd756E7eAb0381 3

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9cd740e6f5b4ae8ed21fe0332b0610fcdaaecaa043e4d5d3eaa5399c215875b4Transfer240865102022-01-24 1:23:076 hrs 26 mins ago0xeb678812778b68a48001b4a9a4a04c4924c33598 IN  Gravity Finance: GFI Token0 MATIC0.006594263929 39.531349429
0xad44b623a4bf72e94fa552089eb7bc34c29fed92dc9cbb3827a9bc110b25b8bdTransfer240863512022-01-24 1:17:416 hrs 32 mins ago0xe471f43de327bf352b5e922fea92ef6d026b4af0 IN  Gravity Finance: GFI Token0 MATIC0.009911871435 58.508874642
0x0a4680e1d53571d9631275f8557aba9793c676e9534ffcb5926e9eb0d345b9ffTransfer240859492022-01-24 1:03:496 hrs 46 mins ago0x5d1241468f2810611101ec0653cc2f87b3dad836 IN  Gravity Finance: GFI Token0 MATIC0.00571970871731.973685868
0x6d1604a0c90b5dec5b2b3b1204bddc946205fd38fd9c01f2226a5325eb8d6c37Approve240800422022-01-23 21:29:4610 hrs 20 mins ago0x08baae17438f79784d36d138faffdcafc7ce9d4b IN  Gravity Finance: GFI Token0 MATIC0.002696356908 57.850563376
0x74548660731e33776e82c1e6670fee1eee4842be581b550cb7a66dc86ab78c04Approve240777482022-01-23 20:10:5011 hrs 39 mins ago0x3d582497a2e42fc21c05d17dbe36264b7bfe11ad IN  Gravity Finance: GFI Token0 MATIC0.00316646183167.93670388
0x91f9270db2b17e0c4440096d229d742e267acd0831feefc809064b26f2b84d50Approve240761642022-01-23 19:16:1312 hrs 33 mins ago0xc72c60265f15fbbb5582b2d3e9f84dff3c203292 IN  Gravity Finance: GFI Token0 MATIC0.0048949008 105.020506773
0x0917e760a727ed862b9c47a5869869999728367772d5822b941fe0b679232178Approve240741772022-01-23 18:07:1113 hrs 42 mins ago0xad93db763fbd01eccaad4fd8b11b9d86fb731fb0 IN  Gravity Finance: GFI Token0 MATIC0.001664248856 56.398009312
0x59e256e154f390c37f5beed24016200f6539e3c46255b148793ae1e94d99966cApprove240739932022-01-23 18:00:5113 hrs 49 mins ago0xad93db763fbd01eccaad4fd8b11b9d86fb731fb0 IN  Gravity Finance: GFI Token0 MATIC0.004324608588 92.784839592
0x6675dfc9d7ad374cb95b99ae7b28cf52fd43e3784e060f088c00e9394ac15d62Approve240658042022-01-23 12:42:1119 hrs 7 mins ago0x14d15f15f1151d82e0aa5f2443b7da68f981424c IN  Gravity Finance: GFI Token0 MATIC0.002472489791 53.047475631
0x6e542b2a6b4850fd362cbfc68fc0d446daa876d74dd08e327bd10ce2f8277d14Approve240657362022-01-23 12:39:5119 hrs 10 mins ago0x4e6ee215e5c6f9c145c092ab2505590acbf3db1d IN  Gravity Finance: GFI Token0 MATIC0.00287674983261.720908682
0xc32dd655c88159e93c3d6350ea409da85c7a0eadef629dd7fd4724f73101fad8Approve240565232022-01-23 6:55:191 day 54 mins ago0x5a8c251799d822c4e2ee32f8782af0610e61b553 IN  Gravity Finance: GFI Token0 MATIC0.002729989814 58.5721602
0x86749bedb0e7474d70efbb30d8cdc8027fc00b1b717380fe789985845327564eApprove240444262022-01-22 23:50:161 day 7 hrs ago0x2fc9e0de0d04d409eb6bac521e8010570ae6105f IN  Gravity Finance: GFI Token0 MATIC0.003475092348 74.558397477
0xf1eb6842e9f3dd15c6f3c9f661d4edb632fb26892323f1385fb841d7ab1a441dApprove240317382022-01-22 16:11:411 day 15 hrs ago0x1778da84a0580e6ee14a31f2255ca55ebe5b4094 IN  Gravity Finance: GFI Token0 MATIC0.028234734061 605.778584851
0x2c2725d33098307fc7c93cc20ed1e2bade4a89261a888e1a20913441c5c4a70bApprove240303042022-01-22 15:20:171 day 16 hrs ago0x689a91f0668149f2e0588ba5e33ef43cea11d856 IN  Gravity Finance: GFI Token0 MATIC0.005210615819 111.794198969
0xb5c38422ccf3592bbc197ed9cd64aa38b26bc0186a76eb8bf1f54dbdfcb6280dApprove240274692022-01-22 13:42:311 day 18 hrs ago0xeeeb7598214a4a74d2492893a89c2db669e30c51 IN  Gravity Finance: GFI Token0 MATIC0.009461915884 203.006198031
0xcbe2112aebdeb5ce9e1b500019afd2c3bbef4739a8961b324f01c3111b98c83aApprove240261982022-01-22 12:56:411 day 18 hrs ago0x34c58308ec728b22ababdc442d181a1dc68d5f35 IN  Gravity Finance: GFI Token0 MATIC0.008813286605 189.089802525
0x0db584657bf5e08a98bef67498b869a84ad75e8f5be28a1dd4ac86c274780584Transfer240246762022-01-22 11:59:541 day 19 hrs ago0xcefb4e532a5ca02c28e5d60c9022eca210d04f53 IN  Gravity Finance: GFI Token0 MATIC0.023288453543205.222583412
0xc8c50e104fa4ea453ebb7a30eab51d451e78eb9b73e1cf6c5cb0aee79fcdc023Transfer240245632022-01-22 11:56:001 day 19 hrs ago0x61dfae20891ef745a63dd335dc8756993d4613a5 IN  Gravity Finance: GFI Token0 MATIC0.018442618186162.520097876
0xb082e889a5ae5154569d84549b33f1fade038fbde704f4a0b4f21545f5c41a00Transfer240242732022-01-22 11:46:041 day 20 hrs ago0xa8e00e73648c8c63685915c576ce5f9367acc067 IN  Gravity Finance: GFI Token0 MATIC0.023874995777210.768351437
0x9ce9accdfc9cde243d19a0abfcfd74686d6911c1a8ac9d0df45da8313cb402b0Approve240229372022-01-22 10:58:001 day 20 hrs ago0xfcc8c2602de0f43a8dd4bec5781639591bde4239 IN  Gravity Finance: GFI Token0 MATIC0.02557458777 548.704923304
0x6e0153ad25c771d09206029b48da4380c8c011b01e0fbead67dc98753ae37cb8Approve240183862022-01-22 8:06:581 day 23 hrs ago0x779ee5712b094e54c8fdf6b6f5ad3b90fde7862b IN  Gravity Finance: GFI Token0 MATIC0.020276782085 435.040058479
0x6dcf35f8ee80f996a8fbb637c2e74463dbc714a658b9e610b6099e301d8192c3Approve240166472022-01-22 7:00:432 days 49 mins ago0xb78201b5ba15bffae9906d60389c972209b759eb IN  Gravity Finance: GFI Token0 MATIC0.024040695295515.795131752
0x2d6b6c93c4efc150be748932d6c0df97b8caafc84628a85618b9c9fe6a750e9fApprove240158622022-01-22 6:31:332 days 1 hr ago0xa7e7affd25656bdb9e7725dd4f851430306072d3 IN  Gravity Finance: GFI Token0 MATIC0.022815104056 489.499969034
0xf740b51966b1562c91f628af1868d0528010873dbf3b93f42a28bf3888ee0711Approve240131412022-01-22 4:54:272 days 2 hrs ago0x85cf1eded09a207fd6b6a0668a9f9733c45f934b IN  Gravity Finance: GFI Token0 MATIC0.00648614351 139.16075243
0xa199240e06565e21760b0a4b3972a0f8348a976c07e41369f940059ccd280e2bTransfer240129962022-01-22 4:48:452 days 3 hrs ago0xe471f43de327bf352b5e922fea92ef6d026b4af0 IN  Gravity Finance: GFI Token0 MATIC0.005171251213 45.898543618
[ Download CSV Export 

OVERVIEW

Gravity Finance is a suite of DeFi products on the Polygon Network.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GravityToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-10
*/

// Sources flattened with hardhat v2.2.1 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// 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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]



/**
 * @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 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 {
        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;
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]



/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @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);
}


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]



/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]





/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}


// File contracts/GravityToken.sol




contract GravityToken is ERC20, Ownable {
    address public GOVERNANCE_ADDRESS;
    iGovernance private governor;
    bool public applyGovernanceForwarding;

    constructor(string memory _name, string memory _symbol)
        ERC20(_name, _symbol)
    {
        _mint(msg.sender, 12 * (10**26));
    }

    function setGovernanceAddress(address _address) external onlyOwner {
        GOVERNANCE_ADDRESS = _address;
        governor = iGovernance(GOVERNANCE_ADDRESS);
    }

    function changeGovernanceForwarding(bool _bool) external onlyOwner {
        applyGovernanceForwarding = _bool;
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        if (applyGovernanceForwarding) {
            require(governor.govAuthTransfer(msg.sender, recipient, amount), "Governor transfer failed!");
        }

        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        if (applyGovernanceForwarding) {
            require(governor.govAuthTransferFrom(msg.sender, sender, recipient, amount), "Governor transferFrom failed!");
        }

        _transfer(sender, recipient, amount);
        uint256 currentAllowance = allowance(sender, _msgSender()); //Had to change this because error thrown with _allowances
        //uint256 currentAllowance = _allowances[sender][_msgSender()]; //Original OpenZeppelin Line
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function burn(uint256 _amount) external returns (bool) {
        _burn(msg.sender, _amount);
        return true;
    }
}

interface iGovernance {
    function govAuthTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool); // calls governanceTransfer after fee ledger update

    function govAuthTransferFrom(
        address original_sender,
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool); // calls governanceTransferFrom after fee ledger update
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GOVERNANCE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyGovernanceForwarding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"changeGovernanceForwarding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_address","type":"address"}],"name":"setGovernanceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620016043803806200160483398101604081905262000034916200032b565b8151829082906200004d906003906020850190620001d2565b50805162000063906004906020840190620001d2565b505050600062000078620000e660201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000de336b03e09de2596099e2b0000000620000ea565b50506200040a565b3390565b6001600160a01b038216620001455760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000159919062000392565b90915550506001600160a01b038216600090815260208190526040812080548392906200018890849062000392565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001e090620003b7565b90600052602060002090601f0160209004810192826200020457600085556200024f565b82601f106200021f57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024f57825182559160200191906001019062000232565b506200025d92915062000261565b5090565b5b808211156200025d576000815560010162000262565b600082601f83011262000289578081fd5b81516001600160401b0380821115620002a657620002a6620003f4565b604051601f8301601f19908116603f01168101908282118183101715620002d157620002d1620003f4565b81604052838152602092508683858801011115620002ed578485fd5b8491505b83821015620003105785820183015181830184015290820190620002f1565b838211156200032157848385830101525b9695505050505050565b600080604083850312156200033e578182fd5b82516001600160401b038082111562000355578384fd5b620003638683870162000278565b9350602085015191508082111562000379578283fd5b50620003888582860162000278565b9150509250929050565b60008219821115620003b257634e487b7160e01b81526011600452602481fd5b500190565b600181811c90821680620003cc57607f821691505b60208210811415620003ee57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6111ea806200041a6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063a9059cbb11610081578063cfc1625411610066578063cfc16254146102b1578063dd62ed3e146102c4578063f2fde38b146102fd57600080fd5b8063a9059cbb1461028a578063af3f8bb81461029d57600080fd5b80638da5cb5b116100b25780638da5cb5b1461025e57806395d89b411461026f578063a457c2d71461027757600080fd5b806370a082311461022d578063715018a61461025657600080fd5b806323b872dd11610124578063313ce56711610109578063313ce567146101f8578063395093511461020757806342966c681461021a57600080fd5b806323b872dd146101d05780632882ce16146101e357600080fd5b80630143dd861461015657806306fdde0314610186578063095ea7b31461019b57806318160ddd146101be575b600080fd5b600654610169906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61018e610310565b60405161017d91906110d0565b6101ae6101a9366004611057565b6103a2565b604051901515815260200161017d565b6002545b60405190815260200161017d565b6101ae6101de36600461101c565b6103b8565b6101f66101f1366004611080565b610579565b005b6040516012815260200161017d565b6101ae610215366004611057565b61060c565b6101ae6102283660046110b8565b610643565b6101c261023b366004610fc9565b6001600160a01b031660009081526020819052604090205490565b6101f6610657565b6005546001600160a01b0316610169565b61018e610708565b6101ae610285366004611057565b610717565b6101ae610298366004611057565b6107ca565b6007546101ae90600160a01b900460ff1681565b6101f66102bf366004610fc9565b6108db565b6101c26102d2366004610fea565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f661030b366004610fc9565b61096e565b60606003805461031f90611152565b80601f016020809104026020016040519081016040528092919081815260200182805461034b90611152565b80156103985780601f1061036d57610100808354040283529160200191610398565b820191906000526020600020905b81548152906001019060200180831161037b57829003601f168201915b5050505050905090565b60006103af338484610aad565b50600192915050565b600754600090600160a01b900460ff16156104cb576007546040517f7b6cef150000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03868116602483015285811660448301526064820185905290911690637b6cef1590608401602060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a919061109c565b6104cb5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f72207472616e7366657246726f6d206661696c65642100000060448201526064015b60405180910390fd5b6104d6848484610c06565b60006104e285336102d2565b90508281101561055a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016104c2565b61056e8533610569868561113b565b610aad565b506001949350505050565b6005546001600160a01b031633146105d35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c2565b60078054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103af918590610569908690611123565b600061064f3383610e27565b506001919050565b6005546001600160a01b031633146106b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c2565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805473ffffffffffffffffffffffffffffffffffffffff19169055565b60606004805461031f90611152565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104c2565b6107c03385610569868561113b565b5060019392505050565b600754600090600160a01b900460ff16156108d0576007546040517fa8dc0d340000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038581166024830152604482018590529091169063a8dc0d3490606401602060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610884919061109c565b6108d05760405162461bcd60e51b815260206004820152601960248201527f476f7665726e6f72207472616e73666572206661696c6564210000000000000060448201526064016104c2565b6103af338484610c06565b6005546001600160a01b031633146109355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c2565b600680546001600160a01b0390921673ffffffffffffffffffffffffffffffffffffffff19928316811790915560078054909216179055565b6005546001600160a01b031633146109c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104c2565b6001600160a01b038116610a445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104c2565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b038316610b285760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c2565b6001600160a01b038216610ba45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104c2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610c825760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104c2565b6001600160a01b038216610cfe5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104c2565b6001600160a01b03831660009081526020819052604090205481811015610d8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104c2565b610d97828261113b565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610dcd908490611123565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e1991815260200190565b60405180910390a350505050565b6001600160a01b038216610ea35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104c2565b6001600160a01b03821660009081526020819052604090205481811015610f325760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104c2565b610f3c828261113b565b6001600160a01b03841660009081526020819052604081209190915560028054849290610f6a90849061113b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf9565b80356001600160a01b0381168114610fc457600080fd5b919050565b600060208284031215610fda578081fd5b610fe382610fad565b9392505050565b60008060408385031215610ffc578081fd5b61100583610fad565b915061101360208401610fad565b90509250929050565b600080600060608486031215611030578081fd5b61103984610fad565b925061104760208501610fad565b9150604084013590509250925092565b60008060408385031215611069578182fd5b61107283610fad565b946020939093013593505050565b600060208284031215611091578081fd5b8135610fe3816111a3565b6000602082840312156110ad578081fd5b8151610fe3816111a3565b6000602082840312156110c9578081fd5b5035919050565b6000602080835283518082850152825b818110156110fc578581018301518582016040015282016110e0565b8181111561110d5783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156111365761113661118d565b500190565b60008282101561114d5761114d61118d565b500390565b600181811c9082168061116657607f821691505b6020821081141561118757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80151581146111b157600080fd5b5056fea264697066735822122045875a442bd01c58bf0c07d2f97f8d9fb5c80354206e7c78c366ba0a3d7f597664736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f477261766974792046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034746490000000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000f477261766974792046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034746490000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Gravity Finance
Arg [1] : _symbol (string): GFI

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [3] : 477261766974792046696e616e63650000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 4746490000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

17634:1944:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17681:33;;;;;-1:-1:-1;;;;;17681:33:0;;;;;;-1:-1:-1;;;;;2178:55:1;;;2160:74;;2148:2;2133:18;17681:33:0;;;;;;;;8817:100;;;:::i;:::-;;;;;;;:::i;10984:169::-;;;;;;:::i;:::-;;:::i;:::-;;;3297:14:1;;3290:22;3272:41;;3260:2;3245:18;10984:169:0;3227:92:1;9937:108:0;10025:12;;9937:108;;;9203:25:1;;;9191:2;9176:18;9937:108:0;9158:76:1;18626:819:0;;;;;;:::i;:::-;;:::i;18129:119::-;;;;;;:::i;:::-;;:::i;:::-;;9779:93;;;9862:2;9381:36:1;;9369:2;9354:18;9779:93:0;9336:87:1;12466:215:0;;;;;;:::i;:::-;;:::i;19453:122::-;;;;;;:::i;:::-;;:::i;10108:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10209:18:0;10182:7;10209:18;;;;;;;;;;;;10108:127;2799:148;;;:::i;2148:87::-;2221:6;;-1:-1:-1;;;;;2221:6:0;2148:87;;9036:104;;;:::i;13184:377::-;;;;;;:::i;:::-;;:::i;18256:362::-;;;;;;:::i;:::-;;:::i;17756:37::-;;;;;-1:-1:-1;;;17756:37:0;;;;;;17953:168;;;;;;:::i;:::-;;:::i;10686:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10802:18:0;;;10775:7;10802:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10686:151;3102:244;;;;;;:::i;:::-;;:::i;8817:100::-;8871:13;8904:5;8897:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8817:100;:::o;10984:169::-;11067:4;11084:39;805:10;11107:7;11116:6;11084:8;:39::i;:::-;-1:-1:-1;11141:4:0;10984:169;;;;:::o;18626:819::-;18779:25;;18758:4;;-1:-1:-1;;;18779:25:0;;;;18775:167;;;18829:8;;:67;;;;;18858:10;18829:67;;;2537:34:1;-1:-1:-1;;;;;2607:15:1;;;2587:18;;;2580:43;2659:15;;;2639:18;;;2632:43;2691:18;;;2684:34;;;18829:8:0;;;;:28;;2448:19:1;;18829:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18821:109;;;;-1:-1:-1;;;18821:109:0;;8901:2:1;18821:109:0;;;8883:21:1;8940:2;8920:18;;;8913:30;8979:31;8959:18;;;8952:59;9028:18;;18821:109:0;;;;;;;;;18954:36;18964:6;18972:9;18983:6;18954:9;:36::i;:::-;19001:24;19028:31;19038:6;805:10;10686:151;:::i;19028:31::-;19001:58;;19273:6;19253:16;:26;;19231:116;;;;-1:-1:-1;;;19231:116:0;;6512:2:1;19231:116:0;;;6494:21:1;6551:2;6531:18;;;6524:30;6590:34;6570:18;;;6563:62;6661:10;6641:18;;;6634:38;6689:19;;19231:116:0;6484:230:1;19231:116:0;19358:57;19367:6;805:10;19389:25;19408:6;19389:16;:25;:::i;:::-;19358:8;:57::i;:::-;-1:-1:-1;19433:4:0;;18626:819;-1:-1:-1;;;;18626:819:0:o;18129:119::-;2221:6;;-1:-1:-1;;;;;2221:6:0;805:10;2368:23;2360:68;;;;-1:-1:-1;;;2360:68:0;;6921:2:1;2360:68:0;;;6903:21:1;;;6940:18;;;6933:30;6999:34;6979:18;;;6972:62;7051:18;;2360:68:0;6893:182:1;2360:68:0;18207:25:::1;:33:::0;;;::::1;;-1:-1:-1::0;;;18207:33:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;18129:119::o;12466:215::-;805:10;12554:4;12603:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12603:34:0;;;;;;;;;;12554:4;;12571:80;;12594:7;;12603:47;;12640:10;;12603:47;:::i;19453:122::-;19502:4;19519:26;19525:10;19537:7;19519:5;:26::i;:::-;-1:-1:-1;19563:4:0;;19453:122;-1:-1:-1;19453:122:0:o;2799:148::-;2221:6;;-1:-1:-1;;;;;2221:6:0;805:10;2368:23;2360:68;;;;-1:-1:-1;;;2360:68:0;;6921:2:1;2360:68:0;;;6903:21:1;;;6940:18;;;6933:30;6999:34;6979:18;;;6972:62;7051:18;;2360:68:0;6893:182:1;2360:68:0;2890:6:::1;::::0;2869:40:::1;::::0;2906:1:::1;::::0;-1:-1:-1;;;;;2890:6:0::1;::::0;2869:40:::1;::::0;2906:1;;2869:40:::1;2920:6;:19:::0;;-1:-1:-1;;2920:19:0::1;::::0;;2799:148::o;9036:104::-;9092:13;9125:7;9118:14;;;;;:::i;13184:377::-;805:10;13277:4;13321:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13321:34:0;;;;;;;;;;13374:35;;;;13366:85;;;;-1:-1:-1;;;13366:85:0;;8495:2:1;13366:85:0;;;8477:21:1;8534:2;8514:18;;;8507:30;8573:34;8553:18;;;8546:62;8644:7;8624:18;;;8617:35;8669:19;;13366:85:0;8467:227:1;13366:85:0;13462:67;805:10;13485:7;13494:34;13513:15;13494:16;:34;:::i;13462:67::-;-1:-1:-1;13549:4:0;;13184:377;-1:-1:-1;;;13184:377:0:o;18256:362::-;18387:25;;18361:4;;-1:-1:-1;;;18387:25:0;;;;18383:151;;;18437:8;;:55;;;;;18462:10;18437:55;;;2992:34:1;-1:-1:-1;;;;;3062:15:1;;;3042:18;;;3035:43;3094:18;;;3087:34;;;18437:8:0;;;;:24;;2904:18:1;;18437:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18429:93;;;;-1:-1:-1;;;18429:93:0;;6158:2:1;18429:93:0;;;6140:21:1;6197:2;6177:18;;;6170:30;6236:27;6216:18;;;6209:55;6281:18;;18429:93:0;6130:175:1;18429:93:0;18546:42;805:10;18570:9;18581:6;18546:9;:42::i;17953:168::-;2221:6;;-1:-1:-1;;;;;2221:6:0;805:10;2368:23;2360:68;;;;-1:-1:-1;;;2360:68:0;;6921:2:1;2360:68:0;;;6903:21:1;;;6940:18;;;6933:30;6999:34;6979:18;;;6972:62;7051:18;;2360:68:0;6893:182:1;2360:68:0;18031:18:::1;:29:::0;;-1:-1:-1;;;;;18031:29:0;;::::1;-1:-1:-1::0;;18031:29:0;;::::1;::::0;::::1;::::0;;;18071:8:::1;:42:::0;;;;::::1;;::::0;;17953:168::o;3102:244::-;2221:6;;-1:-1:-1;;;;;2221:6:0;805:10;2368:23;2360:68;;;;-1:-1:-1;;;2360:68:0;;6921:2:1;2360:68:0;;;6903:21:1;;;6940:18;;;6933:30;6999:34;6979:18;;;6972:62;7051:18;;2360:68:0;6893:182:1;2360:68:0;-1:-1:-1;;;;;3191:22:0;::::1;3183:73;;;::::0;-1:-1:-1;;;3183:73:0;;4941:2:1;3183:73:0::1;::::0;::::1;4923:21:1::0;4980:2;4960:18;;;4953:30;5019:34;4999:18;;;4992:62;5090:8;5070:18;;;5063:36;5116:19;;3183:73:0::1;4913:228:1::0;3183:73:0::1;3293:6;::::0;3272:38:::1;::::0;-1:-1:-1;;;;;3272:38:0;;::::1;::::0;3293:6:::1;::::0;3272:38:::1;::::0;3293:6:::1;::::0;3272:38:::1;3321:6;:17:::0;;-1:-1:-1;;3321:17:0::1;-1:-1:-1::0;;;;;3321:17:0;;;::::1;::::0;;;::::1;::::0;;3102:244::o;16540:346::-;-1:-1:-1;;;;;16642:19:0;;16634:68;;;;-1:-1:-1;;;16634:68:0;;8090:2:1;16634:68:0;;;8072:21:1;8129:2;8109:18;;;8102:30;8168:34;8148:18;;;8141:62;8239:6;8219:18;;;8212:34;8263:19;;16634:68:0;8062:226:1;16634:68:0;-1:-1:-1;;;;;16721:21:0;;16713:68;;;;-1:-1:-1;;;16713:68:0;;5348:2:1;16713:68:0;;;5330:21:1;5387:2;5367:18;;;5360:30;5426:34;5406:18;;;5399:62;5497:4;5477:18;;;5470:32;5519:19;;16713:68:0;5320:224:1;16713:68:0;-1:-1:-1;;;;;16794:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16846:32;;9203:25:1;;;16846:32:0;;9176:18:1;16846:32:0;;;;;;;;16540:346;;;:::o;14051:604::-;-1:-1:-1;;;;;14157:20:0;;14149:70;;;;-1:-1:-1;;;14149:70:0;;7684:2:1;14149:70:0;;;7666:21:1;7723:2;7703:18;;;7696:30;7762:34;7742:18;;;7735:62;7833:7;7813:18;;;7806:35;7858:19;;14149:70:0;7656:227:1;14149:70:0;-1:-1:-1;;;;;14238:23:0;;14230:71;;;;-1:-1:-1;;;14230:71:0;;4134:2:1;14230:71:0;;;4116:21:1;4173:2;4153:18;;;4146:30;4212:34;4192:18;;;4185:62;4283:5;4263:18;;;4256:33;4306:19;;14230:71:0;4106:225:1;14230:71:0;-1:-1:-1;;;;;14398:17:0;;14374:21;14398:17;;;;;;;;;;;14434:23;;;;14426:74;;;;-1:-1:-1;;;14426:74:0;;5751:2:1;14426:74:0;;;5733:21:1;5790:2;5770:18;;;5763:30;5829:34;5809:18;;;5802:62;5900:8;5880:18;;;5873:36;5926:19;;14426:74:0;5723:228:1;14426:74:0;14531:22;14547:6;14531:13;:22;:::i;:::-;-1:-1:-1;;;;;14511:17:0;;;:9;:17;;;;;;;;;;;:42;;;;14564:20;;;;;;;;:30;;14588:6;;14511:9;14564:30;;14588:6;;14564:30;:::i;:::-;;;;;;;;14629:9;-1:-1:-1;;;;;14612:35:0;14621:6;-1:-1:-1;;;;;14612:35:0;;14640:6;14612:35;;;;9203:25:1;;9191:2;9176:18;;9158:76;14612:35:0;;;;;;;;14051:604;;;;:::o;15608:494::-;-1:-1:-1;;;;;15692:21:0;;15684:67;;;;-1:-1:-1;;;15684:67:0;;7282:2:1;15684:67:0;;;7264:21:1;7321:2;7301:18;;;7294:30;7360:34;7340:18;;;7333:62;7431:3;7411:18;;;7404:31;7452:19;;15684:67:0;7254:223:1;15684:67:0;-1:-1:-1;;;;;15851:18:0;;15826:22;15851:18;;;;;;;;;;;15888:24;;;;15880:71;;;;-1:-1:-1;;;15880:71:0;;4538:2:1;15880:71:0;;;4520:21:1;4577:2;4557:18;;;4550:30;4616:34;4596:18;;;4589:62;4687:4;4667:18;;;4660:32;4709:19;;15880:71:0;4510:224:1;15880:71:0;15983:23;16000:6;15983:14;:23;:::i;:::-;-1:-1:-1;;;;;15962:18:0;;:9;:18;;;;;;;;;;:44;;;;16017:12;:22;;16033:6;;15962:9;16017:22;;16033:6;;16017:22;:::i;:::-;;;;-1:-1:-1;;16057:37:0;;9203:25:1;;;16083:1:0;;-1:-1:-1;;;;;16057:37:0;;;;;9191:2:1;9176:18;16057:37:0;9158:76:1;14:196;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:196::-;274:6;327:2;315:9;306:7;302:23;298:32;295:2;;;348:6;340;333:22;295:2;376:29;395:9;376:29;:::i;:::-;366:39;285:126;-1:-1:-1;;;285:126:1:o;416:270::-;484:6;492;545:2;533:9;524:7;520:23;516:32;513:2;;;566:6;558;551:22;513:2;594:29;613:9;594:29;:::i;:::-;584:39;;642:38;676:2;665:9;661:18;642:38;:::i;:::-;632:48;;503:183;;;;;:::o;691:338::-;768:6;776;784;837:2;825:9;816:7;812:23;808:32;805:2;;;858:6;850;843:22;805:2;886:29;905:9;886:29;:::i;:::-;876:39;;934:38;968:2;957:9;953:18;934:38;:::i;:::-;924:48;;1019:2;1008:9;1004:18;991:32;981:42;;795:234;;;;;:::o;1034:264::-;1102:6;1110;1163:2;1151:9;1142:7;1138:23;1134:32;1131:2;;;1184:6;1176;1169:22;1131:2;1212:29;1231:9;1212:29;:::i;:::-;1202:39;1288:2;1273:18;;;;1260:32;;-1:-1:-1;;;1121:177:1:o;1303:251::-;1359:6;1412:2;1400:9;1391:7;1387:23;1383:32;1380:2;;;1433:6;1425;1418:22;1380:2;1477:9;1464:23;1496:28;1518:5;1496:28;:::i;1559:255::-;1626:6;1679:2;1667:9;1658:7;1654:23;1650:32;1647:2;;;1700:6;1692;1685:22;1647:2;1737:9;1731:16;1756:28;1778:5;1756:28;:::i;1819:190::-;1878:6;1931:2;1919:9;1910:7;1906:23;1902:32;1899:2;;;1952:6;1944;1937:22;1899:2;-1:-1:-1;1980:23:1;;1889:120;-1:-1:-1;1889:120:1:o;3324:603::-;3436:4;3465:2;3494;3483:9;3476:21;3526:6;3520:13;3569:6;3564:2;3553:9;3549:18;3542:34;3594:4;3607:140;3621:6;3618:1;3615:13;3607:140;;;3716:14;;;3712:23;;3706:30;3682:17;;;3701:2;3678:26;3671:66;3636:10;;3607:140;;;3765:6;3762:1;3759:13;3756:2;;;3835:4;3830:2;3821:6;3810:9;3806:22;3802:31;3795:45;3756:2;-1:-1:-1;3911:2:1;3890:15;-1:-1:-1;;3886:29:1;3871:45;;;;3918:2;3867:54;;3445:482;-1:-1:-1;;;3445:482:1:o;9428:128::-;9468:3;9499:1;9495:6;9492:1;9489:13;9486:2;;;9505:18;;:::i;:::-;-1:-1:-1;9541:9:1;;9476:80::o;9561:125::-;9601:4;9629:1;9626;9623:8;9620:2;;;9634:18;;:::i;:::-;-1:-1:-1;9671:9:1;;9610:76::o;9691:437::-;9770:1;9766:12;;;;9813;;;9834:2;;9888:4;9880:6;9876:17;9866:27;;9834:2;9941;9933:6;9930:14;9910:18;9907:38;9904:2;;;-1:-1:-1;;;9975:1:1;9968:88;10079:4;10076:1;10069:15;10107:4;10104:1;10097:15;9904:2;;9746:382;;;:::o;10133:184::-;-1:-1:-1;;;10182:1:1;10175:88;10282:4;10279:1;10272:15;10306:4;10303:1;10296:15;10322:118;10408:5;10401:13;10394:21;10387:5;10384:32;10374:2;;10430:1;10427;10420:12;10374:2;10364:76;:::o

Swarm Source

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