Contract 0xc5e2b037d30a390e62180970b3aa4e91868764cd 5

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x424c46e862608017cd29ffdb47228f7d8e3f4cb4562003332e3d98096f913db4Transfer633008562023-05-29 21:21:453 hrs 8 mins ago0xc62a0781934744e05927ceabb94a3043cdcfea89 IN  Tarot: TAROT Token0 FTM0.056121838632
0x84b624ee7638cf222aa0968ab49ff1498dbd10bbd01c577ac225630e05b3007bApprove632988432023-05-29 20:09:084 hrs 21 mins ago0x817be30c7e50b3db936f04b8b98f8d0bf8547a40 IN  Tarot: TAROT Token0 FTM0.07136522
0x1f3a20b7d7c12c004c3ce8fc47c46234f7ee0f87c818d8493da11c762a693f40Approve632964972023-05-29 18:48:275 hrs 41 mins ago0x5f0874d5e6aa0f6d7f51accf9c52e0827143f0d6 IN  Tarot: TAROT Token0 FTM0.0102392
0xe3039d1e72cba812631e3ef47303a9ccb61bc53b899d4cdda89ed1063ce760a8Transfer632960492023-05-29 18:34:055 hrs 56 mins ago0xc62a0781934744e05927ceabb94a3043cdcfea89 IN  Tarot: TAROT Token0 FTM0.020850476
0x9a10742939dc1345efaab26eeeb20927f3029f889fa735ad1fe17aa5434e3d0fApprove632950002023-05-29 17:58:096 hrs 32 mins ago0xaf62a9ba55c096858a02490887cb031bc35f5cc1 IN  Tarot: TAROT Token0 FTM0.050980679877
0x6cefcaf5c55c207fa44ce375ba833fdcbae13825950830cb0858bcbf27d61079Approve632946742023-05-29 17:47:056 hrs 43 mins ago0x2bab3ea6ed4e1ab073f55c939aeea14517ec3a38 IN  Tarot: TAROT Token0 FTM0.051847488
0x2b0904d5605fb01daee889dab9096d3c34db470dbda42509b1b753ec5edf249bApprove632940632023-05-29 17:25:357 hrs 4 mins ago0xdadfb5cafe3a82167ea473502c23529430c4e583 IN  Tarot: TAROT Token0 FTM0.002626813909
0x231d95c85900d17374260fb78c1fedeab7130f22f5b14d77c6f3fda2d56c2c7cApprove632934212023-05-29 17:02:587 hrs 27 mins ago0xe64defff20a6494087fca45e2ff56880caaeeccc IN  Tarot: TAROT Token0 FTM0.0277284864
0x214268c9662db979c2fcf0a2035b8cc99c548c3997e8b3f1304db3a5a95f8d01Approve632910672023-05-29 15:39:598 hrs 50 mins ago0xfacec1c32ae56097866a6c1dda1124f2c6844f40 IN  Tarot: TAROT Token0 FTM0.005800064
0x7ffd658056286dc0b83c346d1767cd1767db0c2397d90fd50dcc36e0c7930f0cApprove632907782023-05-29 15:29:559 hrs ago0x88ea298ecab18a6634b8e03015146c1240f3ef48 IN  Tarot: TAROT Token0 FTM0.05996610851
0xb2ec3193bf5323173e6cfa2e6c24f7e78a7791475e6a73d1573206aa3e47f810Approve632889772023-05-29 14:25:4610 hrs 4 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.055140181492
0x0728c0bf9afd92fbcd08dcc1c629c7ce9032625bf869dd4767f13a151c04ffb9Approve632860332023-05-29 12:41:5011 hrs 48 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.033807640812
0x202001ef761b9cd4ee28bf6273c10066e005038da6bf0787167c1fcd24a418d3Approve632860302023-05-29 12:41:4411 hrs 48 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.05086509752
0xf0b12ac8e4ff545fb58e8c0ff73ac9ac87b561fffe3dede03b61d6d61fd8c7efTransfer632859632023-05-29 12:39:4011 hrs 50 mins ago0xa219a77214ebf940fa311f4a22c20159c90caa53 IN  Tarot: TAROT Token0 FTM0.036863688973
0xd100a7c9464f7b212cb47295309c2b8b00f61e3224803adc5ecbec028c00139eApprove632859302023-05-29 12:38:4211 hrs 51 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.029814331203
0x1e4d75d1dcd7e63ab73ff146d0129433609c11926bfca759aeb04136724e2b03Approve632858562023-05-29 12:36:0811 hrs 54 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.027721457176
0xd0468283c7d70eddd4ea7a2268018564c7ec30af70d99f62b77df8a4e81769c4Approve632858162023-05-29 12:34:5211 hrs 55 mins ago0x87cc367a7ae8ef3b130d50ef1bdefab99b846dd3 IN  Tarot: TAROT Token0 FTM0.00542455
0x26b3240a461780e09dfb3e227fe24e3f4923c2252b6c32bb95893aef90bda2e5Approve632840252023-05-29 11:32:5212 hrs 57 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.015082317556
0xe9c47b342f2ae7c432d34da4b03c436a3235bcf1f12d46ae2960b421115423dcApprove632838402023-05-29 11:25:3813 hrs 4 mins ago0x3d45deafd7bfbe52d2fb0db402d675ec5de4ad14 IN  Tarot: TAROT Token0 FTM0.276902435601
0x1032b096061f582535f340e36d323b184259eff96deb5447e7792d17e3ecc191Approve632833932023-05-29 11:09:0313 hrs 21 mins ago0xbf79fcd7e8cb43373acd4451d243b2cc53c6f2d2 IN  Tarot: TAROT Token0 FTM0.081518514
0xd9d95b165d07d4186d6bd2a2c1d0b841932f8d31b40069dd4fd54ec51ba2817cApprove632832052023-05-29 11:03:0713 hrs 27 mins ago0xbf806d119a1c72c927693ba9ef1e27180131b244 IN  Tarot: TAROT Token0 FTM0.28681976664
0x6c6579729778fa3e8247fe83ac7d2ff93f7d6aec3cb83d50467ac370822b1673Approve632815642023-05-29 10:06:5514 hrs 23 mins ago0xc923dd451dfb1fc6a4608982c6c077414da06a4d IN  Tarot: TAROT Token0 FTM0.004744632
0xcd397d925ae4d4db9fdb23408c90e9b9b9cac0c5399b2a93b870b3cf7ba6f5b9Approve632783592023-05-29 8:19:0916 hrs 11 mins ago0x254583f7c63716cc1ccf8084af7e81d29259f90d IN  Tarot: TAROT Token0 FTM0.010988100418
0x424f76e5039cf63c5f6d855bd5a2cee597c164f0f7079c0795c9fea097f5b0efApprove632783562023-05-29 8:19:0116 hrs 11 mins ago0x254583f7c63716cc1ccf8084af7e81d29259f90d IN  Tarot: TAROT Token0 FTM0.011006565365
0x3a453ae474245f3a3e2d355451ad526d7cf386c731cb6f16bfc2422eb3d7e4d5Approve632699532023-05-29 3:41:1420 hrs 49 mins ago0x02b0e4247b46bdf05a9f25c50bbf08dde9289a77 IN  Tarot: TAROT Token0 FTM0.002765557465
[ Download CSV Export 

OVERVIEW

Tarot is a decentralized lending protocol on Fantom Opera where users can participate as lenders or borrowers in isolated lending pools.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x18f325cec485b451b3d8f705d96c3a73026b6c053166c211bcaa8fbb5d014aee110102362021-06-30 20:58:52698 days 3 hrs ago Tarot: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tarot

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Tarot.sol
// COPIED FROM https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/Comp.sol
// Copyright 2020 Compound Labs, Inc.
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

pragma solidity =0.6.6;
pragma experimental ABIEncoderV2;

contract Tarot {
    /// @notice EIP-20 token name for this token
    string public constant name = "Tarot";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "TAROT";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public constant totalSupply = 100_000_000e18; // 100 million Tarot

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new Tarot token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Tarot::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }
	
    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "Tarot::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "Tarot::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Tarot::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Tarot::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Tarot::delegateBySig: invalid nonce");
        require(now <= expiry, "Tarot::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Tarot::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Tarot::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Tarot::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Tarot::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Tarot::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "Tarot::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Tarot::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "Tarot::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","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":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","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":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161192438038061192483398101604081905261002f916100a1565b6001600160a01b03811660008181526001602052604080822080546001600160601b0319166a52b7d2dcc80cd2e400000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610093916100cf565b60405180910390a3506100d8565b6000602082840312156100b2578081fd5b81516001600160a01b03811681146100c8578182fd5b9392505050565b90815260200190565b61183d806100e76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b4b5ea5711610071578063b4b5ea571461025f578063c3cda52014610272578063dd62ed3e14610285578063e7a324dc14610298578063f1127ed8146102a057610121565b806370a08231146101fe578063782d6fe1146102115780637ecebe001461023157806395d89b4114610244578063a9059cbb1461024c57610121565b806323b872dd116100f457806323b872dd14610181578063313ce56714610194578063587cde1e146101a95780635c19a95c146101c95780636fcfff45146101de57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461016457806320606b7014610179575b600080fd5b61012e6102c1565b60405161013b91906113e7565b60405180910390f35b6101576101523660046111cc565b6102e2565b60405161013b919061136d565b61016c61039f565b60405161013b9190611378565b61016c6103ae565b61015761018f36600461118c565b6103c5565b61019c610508565b60405161013b919061163d565b6101bc6101b736600461113d565b61050d565b60405161013b9190611359565b6101dc6101d736600461113d565b610528565b005b6101f16101ec36600461113d565b610535565b60405161013b919061160d565b61016c61020c36600461113d565b61054d565b61022461021f3660046111cc565b610571565b60405161013b919061164b565b61016c61023f36600461113d565b610788565b61012e61079a565b61015761025a3660046111cc565b6107bb565b61022461026d36600461113d565b6107f7565b6101dc6102803660046111f6565b610868565b61016c610293366004611158565b610a4f565b61016c610a81565b6102b36102ae366004611255565b610a8d565b60405161013b92919061161e565b6040518060400160405280600581526020016415185c9bdd60da1b81525081565b6000806000198314156102f8575060001961031d565b61031a836040518060600160405280602681526020016116eb60269139610ac2565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061038b90859061164b565b60405180910390a360019150505b92915050565b6a52b7d2dcc80cd2e400000081565b6040516103ba906112af565b604051809103902081565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602680845291936001600160601b0390911692859261041b92889291906116eb90830139610ac2565b9050866001600160a01b0316836001600160a01b03161415801561044857506001600160601b0382811614155b156104f057600061047283836040518060600160405280603e81526020016117ca603e9139610af1565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104e690859061164b565b60405180910390a3505b6104fb878783610b30565b5060019695505050505050565b601281565b6002602052600090815260409020546001600160a01b031681565b6105323382610cdb565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b600043821061059b5760405162461bcd60e51b81526004016105929061147d565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff16806105c9576000915050610399565b6001600160a01b038416600090815260036020908152604080832063ffffffff600019860181168552925290912054168310610645576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610399565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff16831015610680576000915050610399565b600060001982015b8163ffffffff168163ffffffff16111561074357600282820363ffffffff160481036106b261110f565b506001600160a01b038716600090815260036020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b0316918101919091529087141561071e576020015194506103999350505050565b805163ffffffff168711156107355781935061073c565b6001820392505b5050610688565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60056020526000908152604090205481565b6040518060400160405280600581526020016415105493d560da1b81525081565b6000806107e08360405180606001604052806027815260200161168f60279139610ac2565b90506107ed338583610b30565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff1680610822576000610861565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b6000604051610876906112af565b60408051918290038220828201909152600582526415185c9bdd60da1b6020909201919091527fcb22ebe6a454847404f7cb07dfbf876a4653b55f4526da755848770afe165cd86108c5610d65565b306040516020016108d994939291906113a5565b60405160208183030381529060405280519060200120905060006040516108ff9061130a565b60405190819003812061091a918a908a908a90602001611381565b60405160208183030381529060405280519060200120905060008282604051602001610947929190611294565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161098494939291906113c9565b6020604051602081039080840390855afa1580156109a6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109d95760405162461bcd60e51b8152600401610592906114c5565b6001600160a01b03811660009081526005602052604090208054600181019091558914610a185760405162461bcd60e51b81526004016105929061143a565b87421115610a385760405162461bcd60e51b815260040161059290611569565b610a42818b610cdb565b505050505b505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b6040516103ba9061130a565b600360209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b8410610ae95760405162461bcd60e51b815260040161059291906113e7565b509192915050565b6000836001600160601b0316836001600160601b031611158290610b285760405162461bcd60e51b815260040161059291906113e7565b505050900390565b6001600160a01b038316610b565760405162461bcd60e51b81526004016105929061150c565b6001600160a01b038216610b7c5760405162461bcd60e51b8152600401610592906115b0565b6001600160a01b038316600090815260016020908152604091829020548251606081019093526037808452610bc7936001600160601b03909216928592919061176290830139610af1565b6001600160a01b03848116600090815260016020908152604080832080546001600160601b0319166001600160601b03968716179055928616825290829020548251606081019093526031808452610c2f949190911692859290919061179990830139610d69565b6001600160a01b038381166000818152600160205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c9c90859061164b565b60405180910390a36001600160a01b03808416600090815260026020526040808220548584168352912054610cd692918216911683610da5565b505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610d5f828483610da5565b50505050565b4690565b6000838301826001600160601b038087169083161015610d9c5760405162461bcd60e51b815260040161059291906113e7565b50949350505050565b816001600160a01b0316836001600160a01b031614158015610dd057506000816001600160601b0316115b15610cd6576001600160a01b03831615610e88576001600160a01b03831660009081526004602052604081205463ffffffff169081610e10576000610e4f565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610e76828560405180606001604052806029815260200161173960299139610af1565b9050610e8486848484610f33565b5050505b6001600160a01b03821615610cd6576001600160a01b03821660009081526004602052604081205463ffffffff169081610ec3576000610f02565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b90506000610f29828560405180606001604052806028815260200161171160289139610d69565b9050610a47858484845b6000610f57436040518060600160405280603581526020016116b6603591396110e8565b905060008463ffffffff16118015610fa057506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15610fff576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b0385160217905561109e565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516110d992919061165f565b60405180910390a25050505050565b600081600160201b8410610ae95760405162461bcd60e51b815260040161059291906113e7565b604080518082019091526000808252602082015290565b80356001600160a01b038116811461039957600080fd5b60006020828403121561114e578081fd5b6108618383611126565b6000806040838503121561116a578081fd5b6111748484611126565b91506111838460208501611126565b90509250929050565b6000806000606084860312156111a0578081fd5b83356111ab81611679565b925060208401356111bb81611679565b929592945050506040919091013590565b600080604083850312156111de578182fd5b6111e88484611126565b946020939093013593505050565b60008060008060008060c0878903121561120e578182fd5b6112188888611126565b95506020870135945060408701359350606087013560ff8116811461123b578283fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611267578182fd5b6112718484611126565b9150602083013563ffffffff81168114611289578182fd5b809150509250929050565b61190160f01b81526002810192909252602282015260420190565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430190565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611413578581018301518582016040015282016113f7565b818111156114245783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f5461726f743a3a64656c656761746542795369673a20696e76616c6964206e6f6040820152626e636560e81b606082015260800190565b60208082526028908201527f5461726f743a3a6765745072696f72566f7465733a206e6f74207965742064656040820152671d195c9b5a5b995960c21b606082015260800190565b60208082526027908201527f5461726f743a3a64656c656761746542795369673a20696e76616c6964207369604082015266676e617475726560c81b606082015260800190565b6020808252603d908201527f5461726f743a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460408201527f72616e736665722066726f6d20746865207a65726f2061646472657373000000606082015260800190565b60208082526027908201527f5461726f743a3a64656c656761746542795369673a207369676e617475726520604082015266195e1c1a5c995960ca1b606082015260800190565b6020808252603b908201527f5461726f743a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460408201527f72616e7366657220746f20746865207a65726f20616464726573730000000000606082015260800190565b63ffffffff91909116815260200190565b63ffffffff9290921682526001600160601b0316602082015260400190565b60ff91909116815260200190565b6001600160601b0391909116815260200190565b6001600160601b0392831681529116602082015260400190565b6001600160a01b038116811461053257600080fdfe5461726f743a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735461726f743a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735461726f743a3a617070726f76653a20616d6f756e74206578636565647320393620626974735461726f743a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735461726f743a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735461726f743a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655461726f743a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735461726f743a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365a2646970667358221220ba5058b00a560b25ce48d32debd0808d8906e719d5fbcd50a7c2f8ee90b3905764736f6c634300060600330000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765

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

0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765

-----Decoded View---------------
Arg [0] : account (address): 0x5b0390bccca1f040d8993eb6e4ce8ded93721765

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005b0390bccca1f040d8993eb6e4ce8ded93721765


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.