Contract 0x66e7ce35578a37209d01f99f3d2ff271f981f581 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x5c9bca2515435db942caa335a02fca7b664f846a999867eb0aa7d45840be1abbApprove111494242021-09-22 23:32:3341 mins ago0xc81b0366a12a6a945401363eb952507c435378e5 IN  PACT: PACT Token0 BNB0.00022215
0x0f9ea510babcd9a69d5048ce1e1d145816e64e92d2b38d5d2e67f0473a05be0fApprove111491642021-09-22 23:19:0654 mins ago0x8707ec9918f5f7b02627f4e03998c9e8055cb5a5 IN  PACT: PACT Token0 BNB0.00022215
0x3df71321d0e6198dd78ec8582d5537b5fa04e50a5f401526a3dad37ac85fa333Approve111489372021-09-22 23:07:371 hr 6 mins ago0x21ec703105cba2d5c983e7e8aebd8848b55c6d69 IN  PACT: PACT Token0 BNB0.0004443
0x11d4068e558c8e7b3e72d7c139bb7ae6a4a35eee0b31ae2ce70922e22e07e754Approve111483412021-09-22 22:37:151 hr 36 mins ago0xeec4f76b74880e64fc9aaed8a38cd1d8c4afb6f2 IN  PACT: PACT Token0 BNB0.00022215
0xc19b74bc75063f7217102690694be716a65f8704641621b77077a53de3f87a7dTransfer111478862021-09-22 22:14:101 hr 59 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.0003519912
0x32a7e22e09ee2ace41e097120b8e44fba89509ec8a654f4c940cd66d0af68764Transfer111465872021-09-22 21:08:473 hrs 5 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.000351912
0xb20584526daf97535567f80ae61784c19ba34b9d2992ce42c05b9a305bc6f44aApprove111464122021-09-22 20:59:363 hrs 14 mins ago0x4c99e739aa9479b2398601929be302e54cc1e16c IN  PACT: PACT Token0 BNB0.00022215
0x464684ade51bf96e3aedb84bc453bcf1248680c2cec1b42cbb2790e6d36fd14fTransfer From111450382021-09-22 19:50:164 hrs 23 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.0002112528
0x0330d3e26770157daa07e3c195159151f29d361e292c414fd3c58ba269dafb0bTransfer111450242021-09-22 19:49:344 hrs 24 mins ago0x264264154abbc76addd449c89c692ef487a92af8 IN  PACT: PACT Token0 BNB0.00019166
0x433107063ad343d1e1372dca06f3f22564946d7441d40f7837919f145a653908Transfer111447762021-09-22 19:37:104 hrs 36 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.0003520704
0x7b5f3572a72f9e6fec2b1cbafbe450bf47c8e097d911b0c904e1145d66be8151Transfer From111447382021-09-22 19:35:164 hrs 38 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.0002112528
0xe1c8f502969c9d9faf39d241c4045cc33f0d4b3362f6b1fe098c9cf9952e07ebTransfer111447012021-09-22 19:33:254 hrs 40 mins ago0xa2bf0d17d71f8094f439cf7c7606ce917e34d1dd IN  PACT: PACT Token0 BNB0.00019166
0x317ea43a74e959a29071646c42dff4e80bf32a645aee2697b97d8039a828c7bdApprove111446342021-09-22 19:30:044 hrs 44 mins ago0x14df5677aa90ec0d64c631621dad80b44f9deaff IN  PACT: PACT Token0 BNB0.00022215
0xb7231d9fb362843ec14d4bcaff91cd036df9622926f35ec4f71ef8cb9479aa07Transfer From111444382021-09-22 19:20:144 hrs 53 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.000211332
0x75fa87fc575258ca30490fb14ca09877dd08a1c425598adabf111941d47ca1ceTransfer111444182021-09-22 19:19:144 hrs 54 mins ago0x14d7826cf1f2096b6e6f9fdb58b5f97880784cd8 IN  PACT: PACT Token0 BNB0.00019172
0xb2849704ab044e68c78f75eacdb2335c9fdbf51fd4c7402f07612cff45ad454bApprove111443972021-09-22 19:18:114 hrs 55 mins ago0xbce913b7c4b10b5a65bf2d3e38a885b17bd79977 IN  PACT: PACT Token0 BNB0.00022215
0xb3aa094ff850833ee4f017ac6b0d810cb633f1f8b9aba97adc50a3ed4ecc778fApprove111442492021-09-22 19:10:365 hrs 3 mins ago0x5129df2f2dcaff3a226c6c5a675fa30a81557762 IN  PACT: PACT Token0 BNB0.00022215
0x574aafa39a78c4ed16114228d908b1c7e8760c7676ce9b14cf4f10d0a8626c4cTransfer111442402021-09-22 19:10:095 hrs 3 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.000351912
0x74a02aca12a2130642b62540f338c81c9bfe88a7fc48df6c0c5f1ff920b36f73Transfer From111439422021-09-22 18:55:155 hrs 18 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.0002112528
0xfe8b0862b3b4a3d9712778744761b5490d4fb6113cb60ff937651f21882c6c0cApprove111438412021-09-22 18:50:125 hrs 23 mins ago0x927edb7fef58f226a6cf39ba176c648d53297830 IN  PACT: PACT Token0 BNB0.0002915748
0xd395244941b648ac33180a7d986872a48b771604600bb104f91020274e4d15e8Approve111437642021-09-22 18:46:215 hrs 27 mins ago0xe1c0f725b1d32dd92acc258c8c6bcd18ee4beb2b IN  PACT: PACT Token0 BNB0.00022215
0xf6eb87f76405f48558c517ec08a40f649930ae2f46e5d9c425c924793ca92ca0Transfer From111437422021-09-22 18:45:155 hrs 28 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.000211332
0x56729385491b16d590b185c5ffb93114cb9f8d114f856092819d98b24d9ceab0Transfer111437002021-09-22 18:43:095 hrs 30 mins ago0xd453727af74bda0ddbe0f07f252b22bdd208b6cb IN  PACT: PACT Token0 BNB0.00019166
0x54f018fa308f19b2edce0230eacc95c7f00c9d56d1c39c585acb5271b0c4d8a1Transfer111437002021-09-22 18:43:095 hrs 30 mins ago0x5be909e0d204a94cc93fc9d7940584b5ec59e618 IN  PACT: PACT Token0 BNB0.000351912
0xa8bdb56f0c51adf8387ff145a88e0ce941b7794dcbd43dcda621427f98c6e366Transfer111436522021-09-22 18:40:455 hrs 33 mins ago0x14d7826cf1f2096b6e6f9fdb58b5f97880784cd8 IN  PACT: PACT Token0 BNB0.00019172
[ Download CSV Export 

OVERVIEW

PACT token represents an entire ecosystem designed to unite the crypto community where users can execute various management functions and have privileged access to products and services of the ecosystem, taking an active part in the development of PACT and receiving rewards in return.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PACT

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 11 : PACT.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./vendors/contracts/access/Ownable.sol";
import "./vendors/contracts/DelegableToken.sol";
import "./vendors/interfaces/IDelegableERC20.sol";

contract PACT is IDelegableERC20, DelegableToken, Ownable
{

    using SafeMath for uint256;

    constructor() ERC20("PACT community token", "PACT", 1000000000e18) public {}

    function mint(address account, uint amount) external onlyOwner returns (bool) {
        _mint(account, amount);
        return true;
    }

    function burn(uint amount) external returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

    mapping (address => bool) private _allowedBridges;
    address[] private _bridgesList;
    event BridgeRegistration(address indexed newBridge);
    event BridgeDisable(address indexed newBridge);
    function bridgesList() public view virtual returns (address[] memory) {
        return _bridgesList;
    }
    modifier onlyBridge() {
        require(_allowedBridges[_msgSender()], "PACT: caller is not the bridge");
        _;
    }
    function bridgeRegistration(address newBridge) public virtual onlyOwner {
        require(newBridge != address(0), "PACT: new bridge is the zero address");
        _allowedBridges[newBridge] = true;
        _bridgesList.push(newBridge);
        emit BridgeRegistration(newBridge);
    }
    function bridgeDisable(address oldBridge) public virtual onlyOwner {
        require(_allowedBridges[oldBridge], "PACT: bridge is disabled");
        emit BridgeRegistration(oldBridge);
        _allowedBridges[oldBridge] = false;
    }
    function mintByBridge(address account, uint amount) external onlyBridge returns (bool) {
        _mint(account, amount);
        return true;
    }
    function burnByBridge(address account, uint amount) external onlyBridge returns (bool) {
        _burn(account, amount);
        return true;
    }
}

File 2 of 11 : DelegableToken.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./ERC20.sol";
import "../interfaces/IDelegable.sol";

import "../libraries/SafeMath32.sol";
import "../libraries/SafeMath.sol";

// Copied and modified from Compound code:
// https://github.com/compound-finance/compound-protocol/blob/master/contracts/Governance/DelegableToken.sol
abstract contract DelegableToken is IDelegable, ERC20{
    using SafeMath for uint256;
    using SafeMath32 for uint32;

    /// @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;
        uint256 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;

    function delegate(address delegatee) public override {
        return _delegate(_msgSender(), delegatee);
    }

    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public override {
        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), "DelegableToken::delegateBySig: invalid signature");
        require(nonce == _nonces[signatory]++, "DelegableToken::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "DelegableToken::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    function getCurrentVotes(address account) external override view returns (uint256) {
        uint32 nCheckpoints = _numCheckpoints[account];
        return nCheckpoints > 0 ? _checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    function getPriorVotes(address account, uint blockNumber) public override view returns (uint256) {
        require(blockNumber <= block.number, "DelegableToken::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];
        uint256 delegatorBalance = _balances[delegator];
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        super._afterTokenTransfer(from, to, amount);

        _moveDelegates(_delegates[from], _delegates[to], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = _numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? _checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld.sub(amount, "DelegableToken::_moveVotes: vote amount - underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = _numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? _checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld.add(amount, "DelegableToken::_moveVotes: vote amount - overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal {
        uint32 blockNumber = SafeMath32.safe32(block.number, "DelegableToken::_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 getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

File 3 of 11 : ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "../interfaces/IERC20WithMaxTotalSupply.sol";
import "./utils/Context.sol";

import "../libraries/SafeMath.sol";


// Copied and modified from OpenZeppelin code:
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol
contract ERC20 is Context, IERC20WithMaxTotalSupply {
    using SafeMath for uint256;

    string _name;
    string _symbol;
    uint256 _totalSupply;
    uint256 _maxTotalSupply;

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

    constructor(string memory name_, string memory symbol_, uint maxTotalSupply_) public {
        _name = name_;
        _symbol = symbol_;
        _maxTotalSupply = maxTotalSupply_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint) {
        return _totalSupply;
    }

    function maxTotalSupply() public view virtual override returns (uint) {
        return _maxTotalSupply;
    }


    function balanceOf(address account) public view virtual override returns (uint) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) public override virtual returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint amount) public virtual override returns (bool) {
        address spender = _msgSender();
        if (spender != sender) {
            uint256 newAllowance = _allowances[sender][spender].sub(amount, "ERC20ForUint256::transferFrom: amount - exceeds spender allowance");
            _approve(sender, spender, newAllowance);
        }

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

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20ForUint256::transfer: from -  the zero address");
        require(recipient != address(0), "ERC20ForUint256::transfer: to -  the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20ForUint256::_transfer: amount - exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount, "ERC20ForUint256::_transfer - Add Overflow");

        emit Transfer(sender, recipient, amount);
        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20ForUint256::_mint: account - the zero address");

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

        _balances[account] = _balances[account].add(amount, "ERC20ForUint256::_mint: amount - exceeds balance");
        _totalSupply = _totalSupply.add(amount, "ERC20ForUint256::_mint: totalSupply - exceeds amount");
        require(_totalSupply <= _maxTotalSupply, "ERC20ForUint256::_mint: maxTotalSupply limit");

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20ForUint256::_burn: account - the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20ForUint256::_burn: amount - exceeds balance");
        _totalSupply = _totalSupply.sub(amount, "ERC20ForUint256::_burn: totalSupply - exceeds amount");

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20ForUint256::_approve: owner - the zero address");
        require(spender != address(0), "ERC20ForUint256::_approve: spender - the zero address");

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

File 4 of 11 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "../utils/Context.sol";

// Copied from OpenZeppelin code:
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() public {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 5 of 11 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

// Copied from OpenZeppelin code:
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 6 of 11 : IDelegable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

interface IDelegable {
    function delegate(address delegatee) external;
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) external;
    function getCurrentVotes(address account) external view returns (uint256);
    function getPriorVotes(address account, uint blockNumber) external view returns (uint256);

    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);
}

File 7 of 11 : IDelegableERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./IDelegable.sol";
import "./IERC20WithMaxTotalSupply.sol";

interface IDelegableERC20 is IDelegable, IERC20WithMaxTotalSupply {}

File 8 of 11 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);

    function balanceOf(address tokenOwner) external view returns (uint balance);
    function allowance(address tokenOwner, address spender) external view returns (uint remaining);
    function approve(address spender, uint tokens) external returns (bool success);
    function transfer(address to, uint tokens) external returns (bool success);
    function transferFrom(address from, address to, uint tokens) external returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

File 9 of 11 : IERC20WithMaxTotalSupply.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./IERC20.sol";

interface IERC20WithMaxTotalSupply is IERC20 {
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event Mint(address indexed account, uint tokens);
    event Burn(address indexed account, uint tokens);
    function maxTotalSupply() external view returns (uint);
}

File 10 of 11 : SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return add(a, b, "SafeMath: Add Overflow");
    }
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);// "SafeMath: Add Overflow"

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: Underflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;// "SafeMath: Underflow"

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return mul(a, b, "SafeMath: Mul Overflow");
    }
    function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);// "SafeMath: Mul Overflow"

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

File 11 of 11 : SafeMath32.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

library SafeMath32 {
    function safe32(uint a, string memory errorMessage) internal pure returns (uint32 c) {
        require(a <= 2**32, errorMessage);// "SafeMath: exceeds 32 bits"
        c = uint32(a);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newBridge","type":"address"}],"name":"BridgeDisable","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newBridge","type":"address"}],"name":"BridgeRegistration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Burn","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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","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":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"_checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"oldBridge","type":"address"}],"name":"bridgeDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newBridge","type":"address"}],"name":"bridgeRegistration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bridgesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnByBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintByBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252601481527f5041435420636f6d6d756e69747920746f6b656e000000000000000000000000602080830191825283518085019094526004845263141050d560e21b9084015281519192916b033b2e3c9fd0803ce80000009162000082916000919062000103565b5081516200009890600190602085019062000103565b506003555060009050620000ab620000ff565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200019f565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014657805160ff191683800117855562000176565b8280016001018555821562000176579182015b828111156200017657825182559160200191906001019062000159565b506200018492915062000188565b5090565b5b8082111562000184576000815560010162000189565b6123f280620001af6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063b4b5ea57116100a2578063c7e1bb6711610071578063c7e1bb671461065d578063dd62ed3e14610683578063e7a324dc146106b1578063f2fde38b146106b9576101da565b8063b4b5ea57146105a4578063b9844d8d146105ca578063be89b42b146105f0578063c3cda52014610616576101da565b806385a3b3f9116100de57806385a3b3f9146105165780638da5cb5b1461056857806395d89b4114610570578063a9059cbb14610578576101da565b806370a08231146104bc578063715018a6146104e2578063782d6fe1146104ea576101da565b8063313ce5671161017c57806342966c681161014b57806342966c681461040c57806351bc76cc146104295780635c19a95c1461046857806366830b2114610490576101da565b8063313ce567146103285780633ff4c9fc1461034657806340c10f191461039e57806342239927146103ca576101da565b80631f2eba24116101b85780631f2eba24146102b657806320606b70146102e257806323b872dd146102ea5780632ab4d05214610320576101da565b806306fdde03146101df578063095ea7b31461025c57806318160ddd1461029c575b600080fd5b6101e76106df565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b038135169060200135610775565b604080519115158252519081900360200190f35b6102a4610793565b60408051918252519081900360200190f35b610288600480360360408110156102cc57600080fd5b506001600160a01b038135169060200135610799565b6102a461081f565b6102886004803603606081101561030057600080fd5b506001600160a01b03813581169160208101359091169060400135610843565b6102a46108da565b6103306108e0565b6040805160ff9092168252519081900360200190f35b61034e6108e5565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561038a578181015183820152602001610372565b505050509050019250505060405180910390f35b610288600480360360408110156103b457600080fd5b506001600160a01b038135169060200135610946565b6103f0600480360360208110156103e057600080fd5b50356001600160a01b03166109aa565b604080516001600160a01b039092168252519081900360200190f35b6102886004803603602081101561042257600080fd5b50356109c5565b61044f6004803603602081101561043f57600080fd5b50356001600160a01b03166109e0565b6040805163ffffffff9092168252519081900360200190f35b61048e6004803603602081101561047e57600080fd5b50356001600160a01b03166109f8565b005b610288600480360360408110156104a657600080fd5b506001600160a01b038135169060200135610a0c565b6102a4600480360360208110156104d257600080fd5b50356001600160a01b0316610a92565b61048e610aad565b6102a46004803603604081101561050057600080fd5b506001600160a01b038135169060200135610b59565b6105486004803603604081101561052c57600080fd5b5080356001600160a01b0316906020013563ffffffff16610d62565b6040805163ffffffff909316835260208301919091528051918290030190f35b6103f0610d8f565b6101e7610d9e565b6102886004803603604081101561058e57600080fd5b506001600160a01b038135169060200135610dfe565b6102a4600480360360208110156105ba57600080fd5b50356001600160a01b0316610e12565b6102a4600480360360208110156105e057600080fd5b50356001600160a01b0316610e76565b61048e6004803603602081101561060657600080fd5b50356001600160a01b0316610e88565b61048e600480360360c081101561062c57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610fbb565b61048e6004803603602081101561067357600080fd5b50356001600160a01b0316611289565b6102a46004803603604081101561069957600080fd5b506001600160a01b03813581169160200135166113ad565b6102a46113d8565b61048e600480360360208110156106cf57600080fd5b50356001600160a01b03166113fc565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b5050505050905090565b60006107896107826114ff565b8484611503565b5060015b92915050565b60025490565b6000600b60006107a76114ff565b6001600160a01b0316815260208101919091526040016000205460ff16610815576040805162461bcd60e51b815260206004820152601e60248201527f504143543a2063616c6c6572206973206e6f7420746865206272696467650000604482015290519081900360640190fd5b61078983836115ef565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60008061084e6114ff565b9050846001600160a01b0316816001600160a01b0316146108c45760006108b5846040518060800160405280604181526020016121c9604191396001600160a01b03808a166000908152600560209081526040808320938916835292905220549190611763565b90506108c2868383611503565b505b6108cf8585856117fa565b506001949350505050565b60035490565b601290565b6060600c80548060200260200160405190810160405280929190818152602001828054801561076b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161091f575050505050905090565b60006109506114ff565b6001600160a01b0316610961610d8f565b6001600160a01b031614610815576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b6006602052600090815260409020546001600160a01b031681565b60006109d86109d26114ff565b83611999565b506001919050565b60086020526000908152604090205463ffffffff1681565b610a09610a036114ff565b82611ac7565b50565b6000600b6000610a1a6114ff565b6001600160a01b0316815260208101919091526040016000205460ff16610a88576040805162461bcd60e51b815260206004820152601e60248201527f504143543a2063616c6c6572206973206e6f7420746865206272696467650000604482015290519081900360640190fd5b6107898383611999565b6001600160a01b031660009081526004602052604090205490565b610ab56114ff565b6001600160a01b0316610ac6610d8f565b6001600160a01b031614610b0f576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600043821115610b9a5760405162461bcd60e51b81526004018080602001828103825260318152602001806120186031913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680610bc857600091505061078d565b6001600160a01b038416600090815260076020908152604080832063ffffffff600019860181168552925290912054168310610c37576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff1683529290522060010154905061078d565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015610c7257600091505061078d565b600060001982015b8163ffffffff168163ffffffff161115610d2b57600282820363ffffffff16048103610ca4611f15565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610d065760200151945061078d9350505050565b805163ffffffff16871115610d1d57819350610d24565b6001820392505b5050610c7a565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b600a546001600160a01b031690565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561076b5780601f106107405761010080835404028352916020019161076b565b6000610789610e0b6114ff565b84846117fa565b6001600160a01b03811660009081526008602052604081205463ffffffff1680610e3d576000610e6f565b6001600160a01b038316600090815260076020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60096020526000908152604090205481565b610e906114ff565b6001600160a01b0316610ea1610d8f565b6001600160a01b031614610eea576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b6001600160a01b038116610f2f5760405162461bcd60e51b815260040180806020018281038252602481526020018061220a6024913960400191505060405180910390fd5b6001600160a01b0381166000818152600b6020526040808220805460ff19166001908117909155600c8054918201815583527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191684179055517ff0da48a2bbaa861a65b8141dc32301ee6a1af5f87859b91a33e615deead2e4eb9190a250565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666000604051808280546001816001161561010002031660029004801561103b5780601f1061101957610100808354040283529182019161103b565b820191906000526020600020905b815481529060010190602001808311611027575b50509150506040518091039020611050611b47565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015611183573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111d55760405162461bcd60e51b81526004018080602001828103825260308152602001806120496030913960400191505060405180910390fd5b6001600160a01b038116600090815260096020526040902080546001810190915589146112335760405162461bcd60e51b815260040180806020018281038252602c815260200180612365602c913960400191505060405180910390fd5b874211156112725760405162461bcd60e51b815260040180806020018281038252603081526020018061225f6030913960400191505060405180910390fd5b61127c818b611ac7565b505050505b505050505050565b6112916114ff565b6001600160a01b03166112a2610d8f565b6001600160a01b0316146112eb576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611358576040805162461bcd60e51b815260206004820152601860248201527f504143543a206272696467652069732064697361626c65640000000000000000604482015290519081900360640190fd5b6040516001600160a01b038216907ff0da48a2bbaa861a65b8141dc32301ee6a1af5f87859b91a33e615deead2e4eb90600090a26001600160a01b03166000908152600b60205260409020805460ff19169055565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6114046114ff565b6001600160a01b0316611415610d8f565b6001600160a01b03161461145e576040805162461bcd60e51b815260206004820181905260248201526000805160206121a9833981519152604482015290519081900360640190fd5b6001600160a01b0381166114a35760405162461bcd60e51b8152600401808060200182810382526026815260200180611f626026913960400191505060405180910390fd5b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166115485760405162461bcd60e51b81526004018080602001828103825260338152602001806120796033913960400191505060405180910390fd5b6001600160a01b03821661158d5760405162461bcd60e51b8152600401808060200182810382526035815260200180611f2d6035913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0382166116345760405162461bcd60e51b81526004018080602001828103825260328152602001806121446032913960400191505060405180910390fd5b61164060008383611994565b61167d81604051806060016040528060308152602001612335603091396001600160a01b0385166000908152600460205260409020549190611b4b565b60046000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506116cd816040518060600160405280603481526020016120e0603491396002549190611b4b565b600281905560035410156117125760405162461bcd60e51b815260040180806020018281038252602c815260200180612391602c913960400191505060405180910390fd5b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a361175f60008383611ba9565b5050565b600081848411156117f25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156117b757818101518382015260200161179f565b50505050905090810190601f1680156117e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03831661183f5760405162461bcd60e51b8152600401808060200182810382526033815260200180611fe56033913960400191505060405180910390fd5b6001600160a01b0382166118845760405162461bcd60e51b815260040180806020018281038252603181526020018061222e6031913960400191505060405180910390fd5b61188f838383611994565b6118cc81604051806060016040528060348152602001611fb1603491396001600160a01b0386166000908152600460205260409020549190611763565b60046000856001600160a01b03166001600160a01b031681526020019081526020016000208190555061193281604051806060016040528060298152602001611f88602991396001600160a01b0385166000908152600460205260409020549190611b4b565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3611994838383611ba9565b505050565b6001600160a01b0382166119de5760405162461bcd60e51b81526004018080602001828103825260328152602001806122c36032913960400191505060405180910390fd5b6119ea82600083611994565b611a2781604051806060016040528060308152602001612114603091396001600160a01b0385166000908152600460205260409020549190611763565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550611a778160405180606001604052806034815260200161228f603491396002549190611763565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a361175f82600083611ba9565b6001600160a01b03808316600081815260066020818152604080842080546004845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611b41828483611be2565b50505050565b4690565b60008383018285821015611ba05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156117b757818101518382015260200161179f565b50949350505050565b611bb4838383611994565b6001600160a01b03808416600090815260066020526040808220548584168352912054611994929182169116835b816001600160a01b0316836001600160a01b031614158015611c045750600081115b15611994576001600160a01b03831615611cb1576001600160a01b03831660009081526008602052604081205463ffffffff169081611c44576000611c76565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000611c9f846040518060600160405280603481526020016120ac60349139849190611763565b9050611cad86848484611d51565b5050505b6001600160a01b03821615611994576001600160a01b03821660009081526008602052604081205463ffffffff169081611cec576000611d1e565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90506000611d478460405180606001604052806033815260200161217660339139849190611b4b565b9050611281858484845b6000611d75436040518060600160405280604081526020016122f560409139611eb6565b905060008463ffffffff16118015611dbe57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611dfb576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055611e6c565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081640100000000841115611f0d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156117b757818101518382015260200161179f565b509192915050565b60408051808201909152600080825260208201529056fe4552433230466f7255696e743235363a3a5f617070726f76653a207370656e646572202d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433230466f7255696e743235363a3a5f7472616e73666572202d20416464204f766572666c6f774552433230466f7255696e743235363a3a5f7472616e736665723a20616d6f756e74202d20657863656564732062616c616e63654552433230466f7255696e743235363a3a7472616e736665723a2066726f6d202d2020746865207a65726f206164647265737344656c656761626c65546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656444656c656761626c65546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e61747572654552433230466f7255696e743235363a3a5f617070726f76653a206f776e6572202d20746865207a65726f206164647265737344656c656761626c65546f6b656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74202d20756e646572666c6f77734552433230466f7255696e743235363a3a5f6d696e743a20746f74616c537570706c79202d206578636565647320616d6f756e744552433230466f7255696e743235363a3a5f6275726e3a20616d6f756e74202d20657863656564732062616c616e63654552433230466f7255696e743235363a3a5f6d696e743a206163636f756e74202d20746865207a65726f206164647265737344656c656761626c65546f6b656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74202d206f766572666c6f77734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433230466f7255696e743235363a3a7472616e7366657246726f6d3a20616d6f756e74202d2065786365656473207370656e64657220616c6c6f77616e6365504143543a206e65772062726964676520697320746865207a65726f20616464726573734552433230466f7255696e743235363a3a7472616e736665723a20746f202d2020746865207a65726f206164647265737344656c656761626c65546f6b656e3a3a64656c656761746542795369673a207369676e617475726520657870697265644552433230466f7255696e743235363a3a5f6275726e3a20746f74616c537570706c79202d206578636565647320616d6f756e744552433230466f7255696e743235363a3a5f6275726e3a206163636f756e74202d20746865207a65726f206164647265737344656c656761626c65546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572202d206578636565647320333220626974734552433230466f7255696e743235363a3a5f6d696e743a20616d6f756e74202d20657863656564732062616c616e636544656c656761626c65546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654552433230466f7255696e743235363a3a5f6d696e743a206d6178546f74616c537570706c79206c696d6974a26469706673582212207f7ca98d2c9906a788c3892e8dbf2254f3f4d6f99e0624ddcf8d70fe952651aa64736f6c634300060c0033

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