Contract 0xf15e88EEf35BF4709A4C3E99c00358F9247D4531

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x744382002e3c5582c9b47314a9242cdfe08c6ed2407e6ca686d6ab751e93c56eIncrease Allowan...193463382021-10-17 17:31:163 days 20 hrs ago0xe93f06e54dc11da6490b3a3816e3df4e16f17a2b IN  Fantom Finance: fSilver Token0 FTM0.014364186249
0x91483cba4fbff5369711acec2d1eed32baace5f7704450392531e9d0651dacd9Increase Allowan...193452572021-10-17 17:16:103 days 21 hrs ago0x85459481e662521915d00ccb579b5e9fce28b6b7 IN  Fantom Finance: fSilver Token0 FTM0.016275597168
0x3f8bd9ea7c9d5fbf28ab627a3e45d031a9296d7e2f4703e0ee851fe6a8e534ecIncrease Allowan...193036742021-10-17 4:56:084 days 9 hrs ago0xf22ca71045d644116814a333f65b61d847c66d50 IN  Fantom Finance: fSilver Token0 FTM0.005238517445
0x300ec4adfc1dac13ae20b5246f1f8137bad77de7dce7275cd37331a07dd728efIncrease Allowan...193026072021-10-17 4:37:024 days 9 hrs ago0xf22ca71045d644116814a333f65b61d847c66d50 IN  Fantom Finance: fSilver Token0 FTM0.004632434833
0x5d53cfacf0b8742a0edcefb3ba58144113f27c60ae8ce6dbf2c2fa9809ab52cfIncrease Allowan...192909842021-10-17 1:11:094 days 13 hrs ago0xf22ca71045d644116814a333f65b61d847c66d50 IN  Fantom Finance: fSilver Token0 FTM0.006665420856
0x4a3f2697c4d64a364d6ddf75d20a9b493da7156e865ec4030a8bea72cf2e3ed5Increase Allowan...191391852021-10-15 6:43:116 days 7 hrs ago0x702c7e5f747d6de40a57c4996b3811fef5e6ebdf IN  Fantom Finance: fSilver Token0 FTM0.008669615537
0xc06b4ca0220dfa3f657597901db23f5363d71a574017c9fef450b837a0142db7Increase Allowan...191391302021-10-15 6:42:066 days 7 hrs ago0x702c7e5f747d6de40a57c4996b3811fef5e6ebdf IN  Fantom Finance: fSilver Token0 FTM0.008669615537
0x162b648d7a27855c677be8225933dd9c670b1c9c3216eae7096a9a05b33fe5b3Increase Allowan...188570872021-10-11 19:54:569 days 18 hrs ago0x2b9e8c8d9bfb803fd0e663d6573086ab8c435098 IN  Fantom Finance: fSilver Token0 FTM0.011537803785
0x9e9c133b1bef0eeeed7ac25a1600ae2481bb652c5f67a428ceedc8003a7cff32Increase Allowan...186886622021-10-09 17:23:5011 days 21 hrs ago0xf97104730770607f69c48faebc8bb97f5bc927f3 IN  Fantom Finance: fSilver Token0 FTM0.009615631956
0x336b2fa1c3ebdcb0f0787545565c7eb37bac47f8053019f3dff150fd2beccb2dIncrease Allowan...186522642021-10-09 6:07:5112 days 8 hrs ago0x3551f38736cccce88cccc5d44ebc9a749e3fa4ee IN  Fantom Finance: fSilver Token0 FTM0.009626271334
0x9044fe1b3a20aef35a74631bf72e2797bebd7af5014121e59d6060247648fd0eIncrease Allowan...185939852021-10-08 12:33:1013 days 1 hr ago0xcfc2b949c385779cd33a5a1af473322cc2ed030b IN  Fantom Finance: fSilver Token0 FTM0.01772607846
0xd2d0121c778b0b64b3001fb574796249a13f404e66c027b67ba2a2dde0d56037Increase Allowan...177891792021-09-27 10:31:3424 days 3 hrs ago0x9b00bf614eba485c6294177e90627d60bba0bf99 IN  Fantom Finance: fSilver Token0 FTM0.008021494849
0x3743249cfcaba8a6facc66ede7659d145c94c6552a7ed2c32dfd3f24f137e8d0Increase Allowan...176675812021-09-25 16:05:2725 days 22 hrs ago0x9065e0b039ca0d81f46034daf16edf81f3265cf6 IN  Fantom Finance: fSilver Token0 FTM0.009862543765
0x7f059b768c81e7a764b9f504126950fcdf522bce67f591eacce1773fcca44d8fIncrease Allowan...173409402021-09-20 2:50:5331 days 11 hrs ago0xa3c4f0a6432524c36a3416d3080ad927eb232b98 IN  Fantom Finance: fSilver Token0 FTM0.012674041845
0xe12cd91f86938bed5673d7842904c1d9343c366bad9345f83a6fe18acd6a2568Increase Allowan...170537452021-09-14 18:25:2136 days 19 hrs ago0xeb2d617194553b844c8b535be285f993b40f9f2d IN  Fantom Finance: fSilver Token0 FTM0.00566827047
0x71e0eb4592f9f1b8e0ae09fad2e84979bafa0310fca0bf3d58a157cb11c91172Increase Allowan...170461122021-09-14 14:19:0537 days 5 mins ago0xdbc2b4cd6c4bb643f6500fefe6194fa8552b1f3e IN  Fantom Finance: fSilver Token0 FTM0.008214675
0x7912ecff0e4228aae53e1ee92259811b0225a447862ae9679d4256716e261d0cIncrease Allowan...170459142021-09-14 14:11:5637 days 12 mins ago0xcac2edcd082628ba3ba31b3b74537792550319e6 IN  Fantom Finance: fSilver Token0 FTM0.005537175
0x14aef71ad0bc77042b408b48248f25e8a71ba0286094eee937e23e49863d9a67Increase Allowan...170455232021-09-14 13:59:0137 days 25 mins ago0xcac2edcd082628ba3ba31b3b74537792550319e6 IN  Fantom Finance: fSilver Token0 FTM0.00614817853
0xd21a0269fa37cdb5ca99f56458c22e0aad4b5822d7104351d574efb7464a500cTransfer170311942021-09-14 5:56:4837 days 8 hrs ago0xc345c169cb84a71faaa906785bd864a88a6b314a IN  Fantom Finance: fSilver Token0 FTM0.00455916
0xb4c5d8bd5c2b8d824009d35b8b32bf570f4f7515c12a4e79d7fa983df585c134Increase Allowan...170264172021-09-14 2:50:2337 days 11 hrs ago0xc345c169cb84a71faaa906785bd864a88a6b314a IN  Fantom Finance: fSilver Token0 FTM0.00411489
0x99c40c0f434ef6f43f7fdfb5849371dd648bb201d1278bb853af91a99a1436b8Transfer170263702021-09-14 2:48:1137 days 11 hrs ago0xfabed8e2f3a29aee5002087f1140ef4c6aca25b4 IN  Fantom Finance: fSilver Token0 FTM0.00295009
0x78ce75367feff1c62f7b1712a6124ceb88f96482599920a3c8d533a89bfb1f37Increase Allowan...169879222021-09-13 7:22:5538 days 7 hrs ago0x2f99f306a14844faece4278c6a036a2ab3f96645 IN  Fantom Finance: fSilver Token0 FTM0.0031221
0xb931983a82f27ca964382995405e8f6fb30f3391bbfe9d0169ff2f637bd5224eIncrease Allowan...168908272021-09-11 13:56:1840 days 28 mins ago0x2f99f306a14844faece4278c6a036a2ab3f96645 IN  Fantom Finance: fSilver Token0 FTM0.00374652
0xd0ad49b06bfdf13d1f2d51923bf6d8e650da6f44f44920c5a73592212794b5f6Increase Allowan...168907902021-09-11 13:55:1340 days 29 mins ago0x2f99f306a14844faece4278c6a036a2ab3f96645 IN  Fantom Finance: fSilver Token0 FTM0.00374652
0xab316ea4263c058e289c7c02531d393d69f31810d2822481a52ea7c1742b08f0Increase Allowan...168904682021-09-11 13:46:3240 days 38 mins ago0x2f99f306a14844faece4278c6a036a2ab3f96645 IN  Fantom Finance: fSilver Token0 FTM0.0031221
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x768a2f09f1da46710822645d9e4b6f67288ab955ae02f295296d775407375db814130752020-12-09 22:53:34315 days 15 hrs ago 0x3ea8375b450e443a9bb5cac5f4be9f8f646d7318  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
fSilver

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 5000000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-02-20
*/

pragma solidity ^0.5.0;

contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

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

library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

contract MinterRole is Context {
    using Roles for Roles.Role;

    event MinterAdded(address indexed account);
    event MinterRemoved(address indexed account);

    Roles.Role private _minters;

    constructor () internal {
        _addMinter(_msgSender());
    }

    modifier onlyMinter() {
        require(isMinter(_msgSender()), "MinterRole: caller does not have the Minter role");
        _;
    }

    function isMinter(address account) public view returns (bool) {
        return _minters.has(account);
    }

    function addMinter(address account) public onlyMinter {
        _addMinter(account);
    }

    function renounceMinter() public {
        _removeMinter(_msgSender());
    }

    function _addMinter(address account) internal {
        _minters.add(account);
        emit MinterAdded(account);
    }

    function _removeMinter(address account) internal {
        _minters.remove(account);
        emit MinterRemoved(account);
    }
}

contract PauserRole is Context {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(_msgSender());
    }

    modifier onlyPauser() {
        require(isPauser(_msgSender()), "PauserRole: caller does not have the Pauser role");
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    function addPauser(address account) public onlyPauser {
        _addPauser(account);
    }

    function renouncePauser() public {
        _removePauser(_msgSender());
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}

contract Pausable is Context, PauserRole {
    /**
     * @dev Emitted when the pause is triggered by a pauser (`account`).
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by a pauser (`account`).
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state. Assigns the Pauser role
     * to the deployer.
     */
    constructor () internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

    /**
     * @dev Called by a pauser to pause, triggers stopped state.
     */
    function pause() public onlyPauser whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Called by a pauser to unpause, returns to normal state.
     */
    function unpause() public onlyPauser whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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);
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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 returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public 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 returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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 returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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 returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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 {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(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 {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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 {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is 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 {
        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 Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev See {ERC20-_burnFrom}.
     */
    function burnFrom(address account, uint256 amount) public {
        _burnFrom(account, amount);
    }
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
     * these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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.
     *
     * 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 returns (uint8) {
        return _decimals;
    }
}

contract ERC20Mintable is ERC20, MinterRole {
    /**
     * @dev See {ERC20-_mint}.
     *
     * Requirements:
     *
     * - the caller must have the {MinterRole}.
     */
    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
}

contract ERC20Pausable is ERC20, Pausable {
    function transfer(address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public whenNotPaused returns (bool) {
        return super.transferFrom(from, to, value);
    }

    function approve(address spender, uint256 value) public whenNotPaused returns (bool) {
        return super.approve(spender, value);
    }

    function increaseAllowance(address spender, uint256 addedValue) public whenNotPaused returns (bool) {
        return super.increaseAllowance(spender, addedValue);
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public whenNotPaused returns (bool) {
        return super.decreaseAllowance(spender, subtractedValue);
    }
}

contract fSilver is ERC20, ERC20Detailed, ERC20Mintable, ERC20Burnable, ERC20Pausable {
    // create instance of the fSilver token
    constructor () public ERC20Detailed("fSilver", "FSILVER", 18) {
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"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":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051806040016040528060078152602001663329b4b63b32b960c91b815250604051806040016040528060078152602001662329a4a62b22a960c91b815250601282600390805190602001906200006c9291906200028c565b508151620000829060049060208501906200028c565b506005805460ff191660ff9290921691909117905550620000b79050620000a8620000ed565b6001600160e01b03620000f216565b620000dd620000ce6001600160e01b03620000ed16565b6001600160e01b036200014416565b6008805460ff191690556200032e565b335b90565b6200010d8160066200019660201b6200198b1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200015f8160076200019660201b6200198b1790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620001ab82826001600160e01b036200022316565b15620001fe576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200026c5760405162461bcd60e51b815260040180806020018281038252602281526020018062001fcf6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002cf57805160ff1916838001178555620002ff565b82800160010185558215620002ff579182015b82811115620002ff578251825591602001919060010190620002e2565b506200030d92915062000311565b5090565b620000ef91905b808211156200030d576000815560010162000318565b611c91806200033e6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80636ef8d66d116100e3578063983b2d561161008c578063a9059cbb11610066578063a9059cbb146104d6578063aa271e1a1461050f578063dd62ed3e146105425761018d565b8063983b2d56146104625780639865027514610495578063a457c2d71461049d5761018d565b806382dc1ec4116100bd57806382dc1ec41461041f5780638456cb591461045257806395d89b411461045a5761018d565b80636ef8d66d146103ab57806370a08231146103b357806379cc6790146103e65761018d565b8063395093511161014557806342966c681161011f57806342966c681461035357806346fbf68e146103705780635c975abb146103a35761018d565b806339509351146102d75780633f4ba83a1461031057806340c10f191461031a5761018d565b806318160ddd1161017657806318160ddd1461025c57806323b872dd14610276578063313ce567146102b95761018d565b806306fdde0314610192578063095ea7b31461020f575b600080fd5b61019a61057d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d45781810151838201526020016101bc565b50505050905090810190601f1680156102015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102486004803603604081101561022557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610631565b604080519115158252519081900360200190f35b6102646106b7565b60408051918252519081900360200190f35b6102486004803603606081101561028c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356106bd565b6102c1610745565b6040805160ff9092168252519081900360200190f35b610248600480360360408110156102ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561074e565b6103186107cd565b005b6102486004803603604081101561033057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561091e565b6103186004803603602081101561036957600080fd5b5035610998565b6102486004803603602081101561038657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109ac565b6102486109c5565b6103186109ce565b610264600480360360208110156103c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109e0565b610318600480360360408110156103fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a08565b6103186004803603602081101561043557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a16565b610318610a7f565b61019a610ba5565b6103186004803603602081101561047857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c24565b610318610c8d565b610248600480360360408110156104b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c9d565b610248600480360360408110156104ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d1c565b6102486004803603602081101561052557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9b565b6102646004803603604081101561055857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610dae565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b5050505050905090565b60085460009060ff16156106a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6106b08383610de6565b9392505050565b60025490565b60085460009060ff161561073257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b61073d848484610dfa565b949350505050565b60055460ff1690565b60085460009060ff16156107c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6106b08383610ea1565b6107dd6107d8610f02565b6109ac565b610832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611a976030913960400191505060405180910390fd5b60085460ff166108a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6108f4610f02565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b600061093061092b610f02565b610d9b565b610985576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611b0f6030913960400191505060405180910390fd5b61098f8383610f06565b50600192915050565b6109a96109a3610f02565b82611037565b50565b60006109bf60078363ffffffff61118116565b92915050565b60085460ff1690565b6109de6109d9610f02565b61121c565b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610a128282611271565b5050565b610a216107d8610f02565b610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611a976030913960400191505060405180910390fd5b6109a9816112d2565b610a8a6107d8610f02565b610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611a976030913960400191505060405180910390fd5b60085460ff1615610b5157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586108f4610f02565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106275780601f106105fc57610100808354040283529160200191610627565b610c2f61092b610f02565b610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611b0f6030913960400191505060405180910390fd5b6109a981611327565b6109de610c98610f02565b61137c565b60085460009060ff1615610d1257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6106b083836113d1565b60085460009060ff1615610d9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6106b0838361144c565b60006109bf60068363ffffffff61118116565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061098f610df3610f02565b8484611460565b6000610e078484846115a7565b610e9784610e13610f02565b610e9285604051806060016040528060288152602001611b606028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610e5e610f02565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054919063ffffffff61177816565b611460565b5060019392505050565b600061098f610eae610f02565b84610e928560016000610ebf610f02565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61182916565b3390565b73ffffffffffffffffffffffffffffffffffffffff8216610f8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610f9b908263ffffffff61182916565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610fd4908263ffffffff61182916565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff82166110a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611bce6021913960400191505060405180910390fd5b6110f381604051806060016040528060228152602001611a756022913973ffffffffffffffffffffffffffffffffffffffff8516600090815260208190526040902054919063ffffffff61177816565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205560025461112c908263ffffffff61189d16565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600073ffffffffffffffffffffffffffffffffffffffff82166111ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611b886022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b61122d60078263ffffffff6118df16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61127b8282611037565b610a1282611287610f02565b610e9284604051806060016040528060248152602001611baa6024913973ffffffffffffffffffffffffffffffffffffffff8816600090815260016020526040812090610e5e610f02565b6112e360078263ffffffff61198b16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61133860068263ffffffff61198b16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61138d60068263ffffffff6118df16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b600061098f6113de610f02565b84610e9285604051806060016040528060258152602001611c386025913960016000611408610f02565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61177816565b600061098f611459610f02565b84846115a7565b73ffffffffffffffffffffffffffffffffffffffff83166114cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611c146024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611538576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611ac76022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611613576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611bef6025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611a526023913960400191505060405180910390fd5b6116cf81604051806060016040528060268152602001611ae96026913973ffffffffffffffffffffffffffffffffffffffff8616600090815260208190526040902054919063ffffffff61177816565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054611711908263ffffffff61182916565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156117e65781810151838201526020016117ce565b50505050905090810190601f1680156118135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006106b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611778565b6118e98282611181565b61193e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b3f6021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff1660009081526020919091526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6119958282611181565b15611a0157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff1660009081526020919091526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c6545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158204737428dc2172e4cc346bb0cfe4ef3bc310e47c087ed1671c9d8c315e9aa93d464736f6c63430005110032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373

Deployed ByteCode Sourcemap

22712:211:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22712:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20562:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22199:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22199:140:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12874:91;;;:::i;:::-;;;;;;;;;;;;;;;;22031:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22031:160:0;;;;;;;;;;;;;;;;;;:::i;21414:83::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22347:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22347:170:0;;;;;;;;;:::i;4953:120::-;;;:::i;:::-;;21692:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21692:143:0;;;;;;;;;:::i;19753:83::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19753:83:0;;:::i;2971:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2971:109:0;;;;:::i;4160:78::-;;;:::i;3188:79::-;;;:::i;13028:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13028:110:0;;;;:::i;19898:103::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19898:103:0;;;;;;;;;:::i;3088:92::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3088:92:0;;;;:::i;4740:118::-;;;:::i;20764:87::-;;;:::i;2087:92::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2087:92:0;;;;:::i;2187:79::-;;;:::i;22525:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22525:180:0;;;;;;;;;:::i;21891:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21891:132:0;;;;;;;;;:::i;1970:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:109:0;;;;:::i;13572:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13572:134:0;;;;;;;;;;;:::i;20562:83::-;20632:5;20625:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20599:13;;20625:12;;20632:5;;20625:12;;20632:5;20625:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:83;:::o;22199:140::-;4397:7;;22278:4;;4397:7;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22302:29;22316:7;22325:5;22302:13;:29::i;:::-;22295:36;22199:140;-1:-1:-1;;;22199:140:0:o;12874:91::-;12945:12;;12874:91;:::o;22031:160::-;4397:7;;22124:4;;4397:7;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22148:35;22167:4;22173:2;22177:5;22148:18;:35::i;:::-;22141:42;22031:160;-1:-1:-1;;;;22031:160:0:o;21414:83::-;21480:9;;;;21414:83;:::o;22347:170::-;4397:7;;22441:4;;4397:7;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22465:44;22489:7;22498:10;22465:23;:44::i;4953:120::-;2868:22;2877:12;:10;:12::i;:::-;2868:8;:22::i;:::-;2860:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4596:7;;;;4588:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5012:7;:15;;;;;;5043:22;5052:12;:10;:12::i;:::-;5043:22;;;;;;;;;;;;;;;;;;4953:120::o;21692:143::-;21766:4;1867:22;1876:12;:10;:12::i;:::-;1867:8;:22::i;:::-;1859:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21783:22;21789:7;21798:6;21783:5;:22::i;:::-;-1:-1:-1;21823:4:0;21692:143;;;;:::o;19753:83::-;19801:27;19807:12;:10;:12::i;:::-;19821:6;19801:5;:27::i;:::-;19753:83;:::o;2971:109::-;3027:4;3051:21;:8;3064:7;3051:21;:12;:21;:::i;:::-;3044:28;2971:109;-1:-1:-1;;2971:109:0:o;4160:78::-;4223:7;;;;4160:78;:::o;3188:79::-;3232:27;3246:12;:10;:12::i;:::-;3232:13;:27::i;:::-;3188:79::o;13028:110::-;13112:18;;13085:7;13112:18;;;;;;;;;;;;13028:110::o;19898:103::-;19967:26;19977:7;19986:6;19967:9;:26::i;:::-;19898:103;;:::o;3088:92::-;2868:22;2877:12;:10;:12::i;2868:22::-;2860:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3153:19;3164:7;3153:10;:19::i;4740:118::-;2868:22;2877:12;:10;:12::i;2868:22::-;2860:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4397:7;;;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4800:7;:14;;;;4810:4;4800:14;;;4830:20;4837:12;:10;:12::i;20764:87::-;20836:7;20829:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20803:13;;20829:14;;20836:7;;20829:14;;20836:7;20829:14;;;;;;;;;;;;;;;;;;;;;;;;2087:92;1867:22;1876:12;:10;:12::i;1867:22::-;1859:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:19;2163:7;2152:10;:19::i;2187:79::-;2231:27;2245:12;:10;:12::i;:::-;2231:13;:27::i;22525:180::-;4397:7;;22624:4;;4397:7;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22648:49;22672:7;22681:15;22648:23;:49::i;21891:132::-;4397:7;;21966:4;;4397:7;;4396:8;4388:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21990:25;22005:2;22009:5;21990:14;:25::i;1970:109::-;2026:4;2050:21;:8;2063:7;2050:21;:12;:21;:::i;13572:134::-;13671:18;;;;13644:7;13671:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13572:134::o;13853:152::-;13919:4;13936:39;13945:12;:10;:12::i;:::-;13959:7;13968:6;13936:8;:39::i;14477:304::-;14566:4;14583:36;14593:6;14601:9;14612:6;14583:9;:36::i;:::-;14630:121;14639:6;14647:12;:10;:12::i;:::-;14661:89;14699:6;14661:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;14681:12;:10;:12::i;:::-;14661:33;;;;;;;;;;;;;-1:-1:-1;14661:33:0;;;:89;;:37;:89;:::i;:::-;14630:8;:121::i;:::-;-1:-1:-1;14769:4:0;14477:304;;;;;:::o;15190:210::-;15270:4;15287:83;15296:12;:10;:12::i;:::-;15310:7;15319:50;15358:10;15319:11;:25;15331:12;:10;:12::i;:::-;15319:25;;;;;;;;;;;;;;;;;;-1:-1:-1;15319:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;296:98::-;376:10;296:98;:::o;17406:308::-;17482:21;;;17474:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17567:12;;:24;;17584:6;17567:24;:16;:24;:::i;:::-;17552:12;:39;17623:18;;;:9;:18;;;;;;;;;;;:30;;17646:6;17623:30;:22;:30;:::i;:::-;17602:18;;;:9;:18;;;;;;;;;;;:51;;;;17669:37;;;;;;;17602:18;;:9;;17669:37;;;;;;;;;;17406:308;;:::o;18046:348::-;18122:21;;;18114:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18215:68;18238:6;18215:68;;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;18194:18;;;:9;:18;;;;;;;;;;:89;18309:12;;:24;;18326:6;18309:24;:16;:24;:::i;:::-;18294:12;:39;18349:37;;;;;;;;18375:1;;18349:37;;;;;;;;;;;;;18046:348;;:::o;1330:203::-;1402:4;1427:21;;;1419:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1505:20:0;;:11;:20;;;;;;;;;;;;;;;1330:203::o;3405:130::-;3465:24;:8;3481:7;3465:24;:15;:24;:::i;:::-;3505:22;;;;;;;;;;;3405:130;:::o;19358:232::-;19430:22;19436:7;19445:6;19430:5;:22::i;:::-;19463:119;19472:7;19481:12;:10;:12::i;:::-;19495:86;19534:6;19495:86;;;;;;;;;;;;;;;;;:20;;;;;;;:11;:20;;;;;;19516:12;:10;:12::i;3275:122::-;3332:21;:8;3345:7;3332:21;:12;:21;:::i;:::-;3369:20;;;;;;;;;;;3275:122;:::o;2274:::-;2331:21;:8;2344:7;2331:21;:12;:21;:::i;:::-;2368:20;;;;;;;;;;;2274:122;:::o;2404:130::-;2464:24;:8;2480:7;2464:24;:15;:24;:::i;:::-;2504:22;;;;;;;;;;;2404:130;:::o;15903:261::-;15988:4;16005:129;16014:12;:10;:12::i;:::-;16028:7;16037:96;16076:15;16037:96;;;;;;;;;;;;;;;;;:11;:25;16049:12;:10;:12::i;:::-;16037:25;;;;;;;;;;;;;;;;;;-1:-1:-1;16037:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;13351:158::-;13420:4;13437:42;13447:12;:10;:12::i;:::-;13461:9;13472:6;13437:9;:42::i;18834:338::-;18928:19;;;18920:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19007:21;;;18999:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19080:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19132:32;;;;;;;;;;;;;;;;;18834:338;;;:::o;16654:471::-;16752:20;;;16744:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16833:23;;;16825:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16929;16951:6;16929:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;16909:17;;;;:9;:17;;;;;;;;;;;:91;;;;17034:20;;;;;;;:32;;17059:6;17034:32;:24;:32;:::i;:::-;17011:20;;;;:9;:20;;;;;;;;;;;;:55;;;;17082:35;;;;;;;17011:20;;17082:35;;;;;;;;;;;;;16654:471;;;:::o;6264:192::-;6350:7;6386:12;6378:6;;;;6370:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6370:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6422:5:0;;;6264:192::o;5335:181::-;5393:7;5425:5;;;5449:6;;;;5441:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:136;5849:7;5876:43;5880:1;5883;5876:43;;;;;;;;;;;;;;;;;:3;:43::i;1052:183::-;1132:18;1136:4;1142:7;1132:3;:18::i;:::-;1124:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:20;;1222:5;1199:20;;;;;;;;;;;:28;;;;;;1052:183::o;794:178::-;872:18;876:4;882:7;872:3;:18::i;:::-;871:19;863:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;937:20;;:11;:20;;;;;;;;;;;:27;;;;960:4;937:27;;;794:178::o

Swarm Source

bzzr://4737428dc2172e4cc346bb0cfe4ef3bc310e47c087ed1671c9d8c315e9aa93d4
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.