Contract 0xCfDf8A80fECAeeCC144fa74c0Df8691BFd0e26e3

 

Contract Overview

KiwiSwap: KIWI Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x202d3665e0ef28f846b620293099ba0f93d95fb1b4a34db2040c95dd69c5f00054309442021-03-06 2:18:2925 mins ago0xb769fbb51fd85570bb4b559c5749114cbabfe487 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x2f66bc1a48ee1fff6dc02eb51c6a4ed8f4b796806510caca2e1c140219deadb854308922021-03-06 2:15:5328 mins ago0xdbb0ae7595f8e073b83139aa42a632bff525e76b IN  KiwiSwap: KIWI Token0 BNB0.00025207
0x51577a8c5805c74063bf8d8095f4056ace30368052646ff9f11bee45fb43868a54308892021-03-06 2:15:4428 mins ago0xdbb0ae7595f8e073b83139aa42a632bff525e76b IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x4296d1f6f87c09259afceaaecd763e4ab49e262b7377a0117ee196b99ef5a8e554307652021-03-06 2:09:3234 mins ago0x4da31f15a5b384184cf4fc42471714da54efdd09 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xfed9bc6251d0bcc4936ce5197f83d37a0ccf944b56ca02d6b6b4283b8db5f73554307602021-03-06 2:09:1734 mins ago0xedd12e9085d346cd2dcc81ea836d6a98441f2ec4 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x06daab03f0ad8a4af5d8c392f82009b42d0a547c51278d44356084eea6b903c754306462021-03-06 2:03:3540 mins ago0x64cfdaa85e6e5ce1b4cc1105acbeefd1a7c96bb0 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x03591df2d987ac270f7860052124b1327cc90ea9464e25f1466c43a240d273a654304822021-03-06 1:55:2348 mins ago0x4da31f15a5b384184cf4fc42471714da54efdd09 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xc73a393dc4aae08f6209a748c4fd3c9f6f28f74666b09dd52a27109523ac1d9f54301692021-03-06 1:39:441 hr 4 mins ago0x39aa02d6b499a76a70fab5f164e8be587c366141 IN  KiwiSwap: KIWI Token0 BNB0.00051115
0x0ee99044742ff634ee637fd4568e4d0d1697c49884c3dbfbe250c575a61d297c54300682021-03-06 1:34:411 hr 9 mins ago0x39aa02d6b499a76a70fab5f164e8be587c366141 IN  KiwiSwap: KIWI Token0 BNB0.00051127
0x384dc803c5f06a6f3ee1155e23b96107012cba777466b3c648dbe60d2cfeacda54299532021-03-06 1:28:561 hr 15 mins ago0x66c5cb7e5e53c0d1b8df0eb9c064e700159568fc IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xcd041277e9bb8d76cfe771d7ccc574219e694f37db4ef1fc525de08e866a01de54299442021-03-06 1:28:291 hr 15 mins ago0x46d48e44fc9e2c7f531c40d1b68877434f13c61b IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xe24135a7cdf0607b2a1d40c99b748ccf58c9f1c850455bac2d8195e11600bb8254299192021-03-06 1:27:141 hr 16 mins ago0x5648bbb1cbf3c583e9b9410747eeb89cfd7f74ea IN  KiwiSwap: KIWI Token0 BNB0.000488477
0x160472731e11e574d5226c5899a8127ca78cb6f5482c940aa8f34970540230bf54299122021-03-06 1:26:531 hr 17 mins ago0x1a63affe77ef0cd9c7f411633664200b04878e6c IN  KiwiSwap: KIWI Token0 BNB0.00025207
0xd85e1df90c75b662fff95410e55d28ace141b42b733ce70ef32bc8818b11b2fc54298992021-03-06 1:26:141 hr 17 mins ago0x1a63affe77ef0cd9c7f411633664200b04878e6c IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xedc6e322cd8e1344d7d3efc0c07e7c8cab0a72b1adb7fce4ea94790c4736907b54296772021-03-06 1:15:081 hr 29 mins ago0xfe8e84335445d12676ffb7d7d4922511b11f46fc IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x9b245d3ab1fe0f1614142d6a6a64aa09dc6e9f9e4c84339224268164d600b00954296492021-03-06 1:13:441 hr 30 mins ago0x9132aad660386643ec6e601c2f6a5612f6b033c3 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x3e868fb77cddc894a0b2c82cbe98db6fea5a46a05288470a98540c14565d400454295262021-03-06 1:07:351 hr 36 mins ago0x62229eb20950176e958a8cf26dd6c9908a9e525c IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xa9dbc1332e4e5595aaf9ebaee8a3efb80e7e842ef825e5830a61eb54636d063c54294982021-03-06 1:06:111 hr 38 mins ago0x96ac74adad18b64d6809f4f3a6ccb0ac805be054 IN  KiwiSwap: KIWI Token0 BNB0.00025207
0x04d1098831ce6e23c62ca7513a26dd313663cc14bee12370ad9b1320c8ba8d7154294972021-03-06 1:06:081 hr 38 mins ago0x96ac74adad18b64d6809f4f3a6ccb0ac805be054 IN  KiwiSwap: KIWI Token0 BNB0.00025207
0xc0232d0ce5b1499a9c2c778f10a2949e044396172084b5eb04cf3495ac9ab15754294912021-03-06 1:05:501 hr 38 mins ago0x96ac74adad18b64d6809f4f3a6ccb0ac805be054 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x37ddf8f0187508da069efd9e321d7c0ea50cc03105378ba61cd6fee19bdeee4154292242021-03-06 0:52:291 hr 51 mins ago0x62811eb7a7b222027957753e8e266c1aa316dad2 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0xcd622e242f0324b0b6bb2b8b94488593357c9ee0745684db24ef0c54169f6b8054288682021-03-06 0:34:412 hrs 9 mins ago0x943277931b813edf765b20edc505fea82adb179a IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x68fa9be8c439529cc999b8db9816d35c2f371ef5f7ad2e403293500ba3e8f7a354286762021-03-06 0:25:052 hrs 19 mins ago0x7a60b717429ee14d147c9b562ba983b0298ec03c IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x2756eff0a728970b2554c558a6201ad457bcd61a5a6d9f55ac49e591bb2f54e754285802021-03-06 0:20:172 hrs 23 mins ago0x8f16c9764150dd3e9969cba9ea61370c68537ab4 IN  KiwiSwap: KIWI Token0 BNB0.00044407
0x32db022475d56b5232b0ffc8d2adac54b276646939f42fa9d2e1cdbb3c7761d054283452021-03-06 0:08:322 hrs 35 mins ago0x2d73f86c69b4c206dde6c8ada8228f9be0a0224d IN  KiwiSwap: KIWI Token0 BNB0.00044407
[ Download CSV Export 

OVERVIEW

KiwiSwap is a decentralized financial project builts on BSC which features yield farming and staking.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x742d3370983a33b9a9aed3a4f398314c0d33308864a6b1813afd7216dbc8b2bf54314532021-03-06 2:43:5617 secs ago KiwiSwap: SALSA Token KiwiSwap: KIWI Token0 BNB
0x742d3370983a33b9a9aed3a4f398314c0d33308864a6b1813afd7216dbc8b2bf54314532021-03-06 2:43:5617 secs ago KiwiSwap: SALSA Token KiwiSwap: KIWI Token0 BNB
0x742d3370983a33b9a9aed3a4f398314c0d33308864a6b1813afd7216dbc8b2bf54314532021-03-06 2:43:5617 secs ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
0x742d3370983a33b9a9aed3a4f398314c0d33308864a6b1813afd7216dbc8b2bf54314532021-03-06 2:43:5617 secs ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
0x4f30c0adc34e4bd173bec6f2389fa5ea93016ac0199d4347fd5590a48151b96c54313152021-03-06 2:37:027 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 KiwiSwap: KIWI Token0 BNB
0x4f30c0adc34e4bd173bec6f2389fa5ea93016ac0199d4347fd5590a48151b96c54313152021-03-06 2:37:027 mins ago CheeseSwap: Router KiwiSwap: KIWI Token0 BNB
0x987139438e477b597477bdcefc2540ffc642336603d912022ed4df8965b2559954313122021-03-06 2:36:537 mins ago 0x8cb709037e47bbfce35fc99496b388308d8c1a19 KiwiSwap: KIWI Token0 BNB
0x987139438e477b597477bdcefc2540ffc642336603d912022ed4df8965b2559954313122021-03-06 2:36:537 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0x987139438e477b597477bdcefc2540ffc642336603d912022ed4df8965b2559954313122021-03-06 2:36:537 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0xb74744d6406d3addf9563c26276dd3977ab2b372e85ed1e9bfe1e47f4902234854313082021-03-06 2:36:417 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0xb74744d6406d3addf9563c26276dd3977ab2b372e85ed1e9bfe1e47f4902234854313082021-03-06 2:36:417 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 KiwiSwap: KIWI Token0 BNB
0xb74744d6406d3addf9563c26276dd3977ab2b372e85ed1e9bfe1e47f4902234854313082021-03-06 2:36:417 mins ago 0xe0f494dabc939e6b9bf5c9dfe9be9e136136eb1b KiwiSwap: KIWI Token0 BNB
0xb74744d6406d3addf9563c26276dd3977ab2b372e85ed1e9bfe1e47f4902234854313082021-03-06 2:36:417 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0x4ae0809e3e901a19fc849e30a05f8fb5f4de4e3baf697483b2b072524f81739454313062021-03-06 2:36:357 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0x4ae0809e3e901a19fc849e30a05f8fb5f4de4e3baf697483b2b072524f81739454313062021-03-06 2:36:357 mins ago CheeseSwap: Router KiwiSwap: KIWI Token0 BNB
0x1e19a98fbd53d94f82a46b204e012378e507c34ca73124effd0ffecf492a31fe54312972021-03-06 2:36:088 mins ago 0xdf8481f4ffb688d940f59f839c2613cc6c40a79e KiwiSwap: KIWI Token0 BNB
0x1e19a98fbd53d94f82a46b204e012378e507c34ca73124effd0ffecf492a31fe54312972021-03-06 2:36:088 mins ago CheeseSwap: Router KiwiSwap: KIWI Token0 BNB
0x5fa2cd56abaa84384fd74eed859fb12fae80f9494633597a651faf2094030fbd54312902021-03-06 2:35:478 mins ago 0x993e34455760a9503d53b6dc4c000aada7af1f36 KiwiSwap: KIWI Token0 BNB
0x5fa2cd56abaa84384fd74eed859fb12fae80f9494633597a651faf2094030fbd54312902021-03-06 2:35:478 mins ago CheeseSwap: Router KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: SALSA Token KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: SALSA Token KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
0x7f737cdecaa924d0af5691eaa3bffd7a22182ebbdc686cd5c6b7b702533999a354312742021-03-06 2:34:599 mins ago KiwiSwap: Staking KiwiSwap: KIWI Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KiwiToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-02-14
*/

// SPDX-License-Identifier: GPL-v3.0


pragma solidity 0.6.12;


contract Context {

    constructor() internal {}

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}


contract Ownable is Context {
    address private _owner;

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

    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), 'Ownable: caller is not the owner');
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


interface IBEP20 {

    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address _owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);


    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }


    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }


    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


library Address {

    function isContract(address account) internal view returns (bool) {

        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'Address: insufficient balance');

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}('');
        require(success, 'Address: unable to send value, recipient may have reverted');
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'Address: low-level call failed');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'Address: insufficient balance for call');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


contract BEP20 is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

    function getOwner() external override view returns (address) {
        return owner();
    }

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'BEP20: transfer amount exceeds allowance')
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }


    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, 'BEP20: decreased allowance below zero')
        );
        return true;
    }


    function mint(uint256 amount) public onlyOwner returns (bool) {
        _mint(_msgSender(), amount);
        return true;
    }


    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), 'BEP20: transfer from the zero address');
        require(recipient != address(0), 'BEP20: transfer to the zero address');

        _balances[sender] = _balances[sender].sub(amount, 'BEP20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }


    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: mint to the zero address');

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


    function _burn(address account, uint256 amount) internal {
        require(account != address(0), 'BEP20: burn from the zero address');

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        require(owner != address(0), 'BEP20: approve from the zero address');
        require(spender != address(0), 'BEP20: approve to the zero address');

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

    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(amount, 'BEP20: burn amount exceeds allowance')
        );
    }
}


contract KiwiToken is BEP20('Kiwi Token', 'KIWI') {

    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    mapping (address => address) internal _delegates;

    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    mapping (address => uint32) public numCheckpoints;

    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    mapping (address => uint) public nonces;

    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    function delegates(address delegator)
        external
        view
        returns (address)
    {
        return _delegates[delegator];
    }

    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        external
    {
        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), "KIWI::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "KIWI::delegateBySig: invalid nonce");
        require(now <= expiry, "KIWI::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

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

    function getPriorVotes(address account, uint blockNumber)
        external
        view
        returns (uint256)
    {
        require(blockNumber < block.number, "KIWI::getPriorVotes: not yet determined");

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

        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2;
            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 = balanceOf(delegator);
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    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);
                _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);
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

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

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"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":"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":"","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"delegator","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":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600a81526020016925b4bbb4902a37b5b2b760b11b815250604051806040016040528060048152602001634b49574960e01b815250600062000064620000ef60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000c3906004906020850190620000f3565b508051620000d9906005906020840190620000f3565b50506006805460ff19166012179055506200018f565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013657805160ff191683800117855562000166565b8280016001018555821562000166579182015b828111156200016657825182559160200191906001019062000149565b506200017492915062000178565b5090565b5b8082111562000174576000815560010162000179565b611b83806200019f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063782d6fe1116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e1461055c578063e7a324dc1461058a578063f1127ed814610592578063f2fde38b146105e4576101a9565b8063a9059cbb146104c3578063b4b5ea57146104ef578063c3cda52014610515576101a9565b80638da5cb5b116100d35780638da5cb5b1461046a57806395d89b4114610472578063a0712d681461047a578063a457c2d714610497576101a9565b8063782d6fe1146104105780637ecebe001461043c578063893d20e814610462576101a9565b806339509351116101665780635c19a95c116101405780635c19a95c1461037d5780636fcfff45146103a357806370a08231146103e2578063715018a614610408576101a9565b806339509351146102e157806340c10f191461030d578063587cde1e1461033b576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806320606b701461028557806323b872dd1461028d578063313ce567146102c3575b600080fd5b6101b661060a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106a0565b604080519115158252519081900360200190f35b6102736106be565b60408051918252519081900360200190f35b6102736106c4565b610257600480360360608110156102a357600080fd5b506001600160a01b038135811691602081013590911690604001356106e8565b6102cb61076f565b6040805160ff9092168252519081900360200190f35b610257600480360360408110156102f757600080fd5b506001600160a01b038135169060200135610778565b6103396004803603604081101561032357600080fd5b506001600160a01b0381351690602001356107c6565b005b6103616004803603602081101561035157600080fd5b50356001600160a01b0316610851565b604080516001600160a01b039092168252519081900360200190f35b6103396004803603602081101561039357600080fd5b50356001600160a01b031661086f565b6103c9600480360360208110156103b957600080fd5b50356001600160a01b031661087c565b6040805163ffffffff9092168252519081900360200190f35b610273600480360360208110156103f857600080fd5b50356001600160a01b0316610894565b6103396108af565b6102736004803603604081101561042657600080fd5b506001600160a01b038135169060200135610951565b6102736004803603602081101561045257600080fd5b50356001600160a01b0316610b59565b610361610b6b565b610361610b7a565b6101b6610b89565b6102576004803603602081101561049057600080fd5b5035610bea565b610257600480360360408110156104ad57600080fd5b506001600160a01b038135169060200135610c5d565b610257600480360360408110156104d957600080fd5b506001600160a01b038135169060200135610cc5565b6102736004803603602081101561050557600080fd5b50356001600160a01b0316610cd9565b610339600480360360c081101561052b57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135610d3d565b6102736004803603604081101561057257600080fd5b506001600160a01b0381358116916020013516610fb0565b610273610fdb565b6105c4600480360360408110156105a857600080fd5b5080356001600160a01b0316906020013563ffffffff16610fff565b6040805163ffffffff909316835260208301919091528051918290030190f35b610339600480360360208110156105fa57600080fd5b50356001600160a01b031661102c565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106965780601f1061066b57610100808354040283529160200191610696565b820191906000526020600020905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b60006106b46106ad61108d565b8484611091565b5060015b92915050565b60035490565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60006106f584848461117d565b6107658461070161108d565b610760856040518060600160405280602881526020016119d4602891396001600160a01b038a1660009081526002602052604081209061073f61108d565b6001600160a01b0316815260208101919091526040016000205491906112cf565b611091565b5060019392505050565b60065460ff1690565b60006106b461078561108d565b84610760856002600061079661108d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611366565b6107ce61108d565b6000546001600160a01b0390811691161461081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611a52833981519152604482015290519081900360640190fd5b61082882826113c0565b6001600160a01b0380831660009081526007602052604081205461084d9216836114a6565b5050565b6001600160a01b039081166000908152600760205260409020541690565b61087933826115e8565b50565b60096020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526001602052604090205490565b6108b761108d565b6000546001600160a01b03908116911614610907576040805162461bcd60e51b81526020600482018190526024820152600080516020611a52833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60004382106109915760405162461bcd60e51b81526004018080602001828103825260278152602001806119ad6027913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205463ffffffff16806109bf5760009150506106b8565b6001600160a01b038416600090815260086020908152604080832063ffffffff600019860181168552925290912054168310610a2e576001600160a01b03841660009081526008602090815260408083206000199490940163ffffffff168352929052206001015490506106b8565b6001600160a01b038416600090815260086020908152604080832083805290915290205463ffffffff16831015610a695760009150506106b8565b600060001982015b8163ffffffff168163ffffffff161115610b2257600282820363ffffffff16048103610a9b611926565b506001600160a01b038716600090815260086020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610afd576020015194506106b89350505050565b805163ffffffff16871115610b1457819350610b1b565b6001820392505b5050610a71565b506001600160a01b038516600090815260086020908152604080832063ffffffff9094168352929052206001015491505092915050565b600a6020526000908152604090205481565b6000610b75610b7a565b905090565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106965780601f1061066b57610100808354040283529160200191610696565b6000610bf461108d565b6000546001600160a01b03908116911614610c44576040805162461bcd60e51b81526020600482018190526024820152600080516020611a52833981519152604482015290519081900360640190fd5b610c55610c4f61108d565b836113c0565b506001919050565b60006106b4610c6a61108d565b8461076085604051806060016040528060258152602001611ae16025913960026000610c9461108d565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906112cf565b60006106b4610cd261108d565b848461117d565b6001600160a01b03811660009081526009602052604081205463ffffffff1680610d04576000610d36565b6001600160a01b038316600090815260086020908152604080832063ffffffff60001986011684529091529020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866610d6861060a565b80519060200120610d7761167d565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa158015610eaa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610efc5760405162461bcd60e51b8152600401808060200182810382526026815260200180611a726026913960400191505060405180910390fd5b6001600160a01b0381166000908152600a602052604090208054600181019091558914610f5a5760405162461bcd60e51b81526004018080602001828103825260228152602001806119fc6022913960400191505060405180910390fd5b87421115610f995760405162461bcd60e51b8152600401808060200182810382526026815260200180611b066026913960400191505060405180910390fd5b610fa3818b6115e8565b505050505b505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60086020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b61103461108d565b6000546001600160a01b03908116911614611084576040805162461bcd60e51b81526020600482018190526024820152600080516020611a52833981519152604482015290519081900360640190fd5b61087981611681565b3390565b6001600160a01b0383166110d65760405162461bcd60e51b81526004018080602001828103825260248152602001806119636024913960400191505060405180910390fd5b6001600160a01b03821661111b5760405162461bcd60e51b8152600401808060200182810382526022815260200180611b2c6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166111c25760405162461bcd60e51b815260040180806020018281038252602581526020018061193e6025913960400191505060405180910390fd5b6001600160a01b0382166112075760405162461bcd60e51b8152600401808060200182810382526023815260200180611abe6023913960400191505060405180910390fd5b61124481604051806060016040528060268152602001611a98602691396001600160a01b03861660009081526001602052604090205491906112cf565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112739082611366565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561135e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561132357818101518382015260200161130b565b50505050905090810190601f1680156113505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03821661141b576040805162461bcd60e51b815260206004820152601f60248201527f42455032303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6003546114289082611366565b6003556001600160a01b03821660009081526001602052604090205461144e9082611366565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b816001600160a01b0316836001600160a01b0316141580156114c85750600081115b156115e3576001600160a01b0383161561155a576001600160a01b03831660009081526009602052604081205463ffffffff16908161150857600061153a565b6001600160a01b038516600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006115488285611721565b905061155686848484611763565b5050505b6001600160a01b038216156115e3576001600160a01b03821660009081526009602052604081205463ffffffff1690816115955760006115c7565b6001600160a01b038416600090815260086020908152604080832063ffffffff60001987011684529091529020600101545b905060006115d58285611366565b9050610fa885848484611763565b505050565b6001600160a01b038083166000908152600760205260408120549091169061160f84610894565b6001600160a01b0385811660008181526007602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46116778284836114a6565b50505050565b4690565b6001600160a01b0381166116c65760405162461bcd60e51b81526004018080602001828103825260268152602001806119876026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112cf565b600061178743604051806060016040528060348152602001611a1e603491396118c8565b905060008463ffffffff161180156117d057506001600160a01b038516600090815260086020908152604080832063ffffffff6000198901811685529252909120548282169116145b1561180d576001600160a01b038516600090815260086020908152604080832063ffffffff6000198901168452909152902060010182905561187e565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600884528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260099092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081640100000000841061191e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561132357818101518382015260200161130b565b509192915050565b60408051808201909152600080825260208201529056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734b4957493a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e656442455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654b4957493a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654b4957493a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724b4957493a3a64656c656761746542795369673a20696e76616c6964207369676e617475726542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e636542455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4b4957493a3a64656c656761746542795369673a207369676e6174757265206578706972656442455032303a20617070726f766520746f20746865207a65726f2061646472657373a264697066735822122085378a71b7634046a33f255a131b45648d890462e2630f41b4f026f48fdb7c7564736f6c634300060c0033

Deployed ByteCode Sourcemap

11749:6188:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7769:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8634:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8634:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8073:100;;;:::i;:::-;;;;;;;;;;;;;;;;12257:122;;;:::i;8803:397::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8803:397:0;;;;;;;;;;;;;;;;;:::i;7869:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9208:210;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9208:210:0;;;;;;;;:::i;11808:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11808:162:0;;;;;;;;:::i;:::-;;12777:149;;;;;;;;;;;;;;;;-1:-1:-1;12777:149:0;-1:-1:-1;;;;;12777:149:0;;:::i;:::-;;;;-1:-1:-1;;;;;12777:149:0;;;;;;;;;;;;;;12934:104;;;;;;;;;;;;;;;;-1:-1:-1;12934:104:0;-1:-1:-1;;;;;12934:104:0;;:::i;12199:49::-;;;;;;;;;;;;;;;;-1:-1:-1;12199:49:0;-1:-1:-1;;;;;12199:49:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;8181:119;;;;;;;;;;;;;;;;-1:-1:-1;8181:119:0;-1:-1:-1;;;;;8181:119:0;;:::i;893:140::-;;;:::i;14495:1137::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14495:1137:0;;;;;;;;:::i;12514:39::-;;;;;;;;;;;;;;;;-1:-1:-1;12514:39:0;-1:-1:-1;;;;;12514:39:0;;:::i;7667:94::-;;;:::i;679:79::-;;;:::i;7969:96::-;;;:::i;9749:130::-;;;;;;;;;;;;;;;;-1:-1:-1;9749:130:0;;:::i;9428:311::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9428:311:0;;;;;;;;:::i;8308:167::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8308:167:0;;;;;;;;:::i;14232:255::-;;;;;;;;;;;;;;;;-1:-1:-1;14232:255:0;-1:-1:-1;;;;;14232:255:0;;:::i;13046:1178::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13046:1178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8483:143::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8483:143:0;;;;;;;;;;:::i;12388:117::-;;;:::i;12120:70::-;;;;;;;;;;;;;;;;-1:-1:-1;12120:70:0;;-1:-1:-1;;;;;12120:70:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1041:109;;;;;;;;;;;;;;;;-1:-1:-1;1041:109:0;-1:-1:-1;;;;;1041:109:0;;:::i;7769:92::-;7848:5;7841:12;;;;;;;;-1:-1:-1;;7841:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:13;;7841:12;;7848:5;;7841:12;;7848:5;7841:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7769:92;:::o;8634:161::-;8709:4;8726:39;8735:12;:10;:12::i;:::-;8749:7;8758:6;8726:8;:39::i;:::-;-1:-1:-1;8783:4:0;8634:161;;;;;:::o;8073:100::-;8153:12;;8073:100;:::o;12257:122::-;12299:80;12257:122;:::o;8803:397::-;8935:4;8952:36;8962:6;8970:9;8981:6;8952:9;:36::i;:::-;8999:171;9022:6;9043:12;:10;:12::i;:::-;9070:89;9108:6;9070:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9070:19:0;;;;;;:11;:19;;;;;;9090:12;:10;:12::i;:::-;-1:-1:-1;;;;;9070:33:0;;;;;;;;;;;;-1:-1:-1;9070:33:0;;;:89;:37;:89::i;:::-;8999:8;:171::i;:::-;-1:-1:-1;9188:4:0;8803:397;;;;;:::o;7869:92::-;7944:9;;;;7869:92;:::o;9208:210::-;9288:4;9305:83;9314:12;:10;:12::i;:::-;9328:7;9337:50;9376:10;9337:11;:25;9349:12;:10;:12::i;:::-;-1:-1:-1;;;;;9337:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9337:25:0;;;:34;;;;;;;;;;;:38;:50::i;11808:162::-;816:12;:10;:12::i;:::-;806:6;;-1:-1:-1;;;;;806:6:0;;;:22;;;798:67;;;;;-1:-1:-1;;;798:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;798:67:0;;;;;;;;;;;;;;;11880:19:::1;11886:3;11891:7;11880:5;:19::i;:::-;-1:-1:-1::0;;;;;11937:15:0;;::::1;11933:1;11937:15:::0;;;:10:::1;:15;::::0;;;;;11910:52:::1;::::0;11937:15:::1;11954:7:::0;11910:14:::1;:52::i;:::-;11808:162:::0;;:::o;12777:149::-;-1:-1:-1;;;;;12897:21:0;;;12865:7;12897:21;;;:10;:21;;;;;;;;12777:149::o;12934:104::-;12998:32;13008:10;13020:9;12998;:32::i;:::-;12934:104;:::o;12199:49::-;;;;;;;;;;;;;;;:::o;8181:119::-;-1:-1:-1;;;;;8274:18:0;8247:7;8274:18;;;:9;:18;;;;;;;8181:119::o;893:140::-;816:12;:10;:12::i;:::-;806:6;;-1:-1:-1;;;;;806:6:0;;;:22;;;798:67;;;;;-1:-1:-1;;;798:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;798:67:0;;;;;;;;;;;;;;;992:1:::1;976:6:::0;;955:40:::1;::::0;-1:-1:-1;;;;;976:6:0;;::::1;::::0;955:40:::1;::::0;992:1;;955:40:::1;1023:1;1006:19:::0;;-1:-1:-1;;;;;;1006:19:0::1;::::0;;893:140::o;14495:1137::-;14603:7;14650:12;14636:11;:26;14628:78;;;;-1:-1:-1;;;14628:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14741:23:0;;14719:19;14741:23;;;:14;:23;;;;;;;;14779:17;14775:58;;14820:1;14813:8;;;;;14775:58;-1:-1:-1;;;;;14849:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;14870:16:0;;14849:38;;;;;;;;;:48;;:63;-1:-1:-1;14845:147:0;;-1:-1:-1;;;;;14936:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;14957:16:0;;;;14936:38;;;;;;;;14972:1;14936:44;;;-1:-1:-1;14929:51:0;;14845:147;-1:-1:-1;;;;;15008:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;15004:88:0;;;15079:1;15072:8;;;;;15004:88;15104:12;-1:-1:-1;;15146:16:0;;15173:401;15188:5;15180:13;;:5;:13;;;15173:401;;;15252:1;15235:13;;;15234:19;;;15226:27;;15268:20;;:::i;:::-;-1:-1:-1;;;;;;15291:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;15268:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:27;;15334:229;;;15393:8;;;;-1:-1:-1;15386:15:0;;-1:-1:-1;;;;15386:15:0;15334:229;15427:12;;:26;;;-1:-1:-1;15423:140:0;;;15482:6;15474:14;;15423:140;;;15546:1;15537:6;:10;15529:18;;15423:140;15173:401;;;;;-1:-1:-1;;;;;;15591:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;-1:-1:-1;;14495:1137:0;;;;:::o;12514:39::-;;;;;;;;;;;;;:::o;7667:94::-;7719:7;7746;:5;:7::i;:::-;7739:14;;7667:94;:::o;679:79::-;717:7;744:6;-1:-1:-1;;;;;744:6:0;679:79;:::o;7969:96::-;8050:7;8043:14;;;;;;;;-1:-1:-1;;8043:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8017:13;;8043:14;;8050:7;;8043:14;;8050:7;8043:14;;;;;;;;;;;;;;;;;;;;;;;;9749:130;9805:4;816:12;:10;:12::i;:::-;806:6;;-1:-1:-1;;;;;806:6:0;;;:22;;;798:67;;;;;-1:-1:-1;;;798:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;798:67:0;;;;;;;;;;;;;;;9822:27:::1;9828:12;:10;:12::i;:::-;9842:6;9822:5;:27::i;:::-;-1:-1:-1::0;9867:4:0::1;9749:130:::0;;;:::o;9428:311::-;9513:4;9530:179;9553:12;:10;:12::i;:::-;9580:7;9602:96;9641:15;9602:96;;;;;;;;;;;;;;;;;:11;:25;9614:12;:10;:12::i;:::-;-1:-1:-1;;;;;9602:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9602:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;8308:167::-;8386:4;8403:42;8413:12;:10;:12::i;:::-;8427:9;8438:6;8403:9;:42::i;14232:255::-;-1:-1:-1;;;;;14371:23:0;;14324:7;14371:23;;;:14;:23;;;;;;;;14412:16;:67;;14478:1;14412:67;;;-1:-1:-1;;;;;14431:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;14452:16:0;;14431:38;;;;;;;;14467:1;14431:44;;14412:67;14405:74;14232:255;-1:-1:-1;;;14232:255:0:o;13046:1178::-;13239:23;12299:80;13368:6;:4;:6::i;:::-;13352:24;;;;;;13395:12;:10;:12::i;:::-;13289:165;;;;;;;;;;;;;;;;;;;;;;;;;13434:4;13289:165;;;;;;;;;;;;;;;;;;;;;;;13265:200;;;;;;12434:71;13523:140;;;;-1:-1:-1;;;;;13523:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13499:175;;;;;;-1:-1:-1;;;13728:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13704:158;;;;;;;;;-1:-1:-1;13895:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13265:200;;-1:-1:-1;13499:175:0;;13704:158;;-1:-1:-1;;13895:26:0;;;;;;;-1:-1:-1;;13895:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13895:26:0;;-1:-1:-1;;13895:26:0;;;-1:-1:-1;;;;;;;13940:23:0;;13932:74;;;;-1:-1:-1;;;13932:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14034:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;14025:28;;14017:75;;;;-1:-1:-1;;;14017:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14118:6;14111:3;:13;;14103:64;;;;-1:-1:-1;;;14103:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14185:31;14195:9;14206;14185;:31::i;:::-;14178:38;;;;13046:1178;;;;;;;:::o;8483:143::-;-1:-1:-1;;;;;8591:18:0;;;8564:7;8591:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8483:143::o;12388:117::-;12434:71;12388:117;:::o;12120:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1041:109::-;816:12;:10;:12::i;:::-;806:6;;-1:-1:-1;;;;;806:6:0;;;:22;;;798:67;;;;;-1:-1:-1;;;798:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;798:67:0;;;;;;;;;;;;;;;1114:28:::1;1133:8;1114:18;:28::i;130:98::-:0;210:10;130:98;:::o;11078:372::-;-1:-1:-1;;;;;11206:19:0;;11198:68;;;;-1:-1:-1;;;11198:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11285:21:0;;11277:68;;;;-1:-1:-1;;;11277:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11358:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11410:32;;;;;;;;;;;;;;;;;11078:372;;;:::o;9889:505::-;-1:-1:-1;;;;;10021:20:0;;10013:70;;;;-1:-1:-1;;;10013:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10102:23:0;;10094:71;;;;-1:-1:-1;;;10094:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10198;10220:6;10198:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10198:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;10178:17:0;;;;;;;:9;:17;;;;;;:91;;;;10303:20;;;;;;;:32;;10328:6;10303:24;:32::i;:::-;-1:-1:-1;;;;;10280:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;10351:35;;;;;;;10280:20;;10351:35;;;;;;;;;;;;;9889:505;;;:::o;2731:226::-;2851:7;2887:12;2879:6;;;;2871:29;;;;-1:-1:-1;;;2871:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2923:5:0;;;2731:226::o;2396:181::-;2454:7;2486:5;;;2510:6;;;;2502:46;;;;;-1:-1:-1;;;2502:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10404:308;-1:-1:-1;;;;;10480:21:0;;10472:65;;;;;-1:-1:-1;;;10472:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10565:12;;:24;;10582:6;10565:16;:24::i;:::-;10550:12;:39;-1:-1:-1;;;;;10621:18:0;;;;;;:9;:18;;;;;;:30;;10644:6;10621:22;:30::i;:::-;-1:-1:-1;;;;;10600:18:0;;;;;;:9;:18;;;;;;;;:51;;;;10667:37;;;;;;;10600:18;;;;10667:37;;;;;;;;;;10404:308;;:::o;16041:851::-;16147:6;-1:-1:-1;;;;;16137:16:0;:6;-1:-1:-1;;;;;16137:16:0;;;:30;;;;;16166:1;16157:6;:10;16137:30;16133:752;;;-1:-1:-1;;;;;16188:20:0;;;16184:337;;-1:-1:-1;;;;;16248:22:0;;16229:16;16248:22;;;:14;:22;;;;;;;;;16309:13;:60;;16368:1;16309:60;;;-1:-1:-1;;;;;16325:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;16345:13:0;;16325:34;;;;;;;;16357:1;16325:40;;16309:60;16289:80;-1:-1:-1;16388:17:0;16408:21;16289:80;16422:6;16408:13;:21::i;:::-;16388:41;;16448:57;16465:6;16473:9;16484;16495;16448:16;:57::i;:::-;16184:337;;;;-1:-1:-1;;;;;16541:20:0;;;16537:337;;-1:-1:-1;;;;;16601:22:0;;16582:16;16601:22;;;:14;:22;;;;;;;;;16662:13;:60;;16721:1;16662:60;;;-1:-1:-1;;;;;16678:19:0;;;;;;:11;:19;;;;;;;;:34;-1:-1:-1;;16698:13:0;;16678:34;;;;;;;;16710:1;16678:40;;16662:60;16642:80;-1:-1:-1;16741:17:0;16761:21;16642:80;16775:6;16761:13;:21::i;:::-;16741:41;;16801:57;16818:6;16826:9;16837;16848;16801:16;:57::i;16537:337::-;16041:851;;;:::o;15640:393::-;-1:-1:-1;;;;;15757:21:0;;;15731:23;15757:21;;;:10;:21;;;;;;;;;;15816:20;15768:9;15816;:20::i;:::-;-1:-1:-1;;;;;15847:21:0;;;;;;;:10;:21;;;;;;:33;;-1:-1:-1;;;;;;15847:33:0;;;;;;;;;;15898:54;;15789:47;;-1:-1:-1;15847:33:0;15898:54;;;;;;15847:21;15898:54;15965:60;15980:15;15997:9;16008:16;15965:14;:60::i;:::-;15640:393;;;;:::o;17781:153::-;17891:9;17781:153;:::o;1158:229::-;-1:-1:-1;;;;;1232:22:0;;1224:73;;;;-1:-1:-1;;;1224:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1334:6;;;1313:38;;-1:-1:-1;;;;;1313:38:0;;;;1334:6;;;1313:38;;;1362:6;:17;;-1:-1:-1;;;;;;1362:17:0;-1:-1:-1;;;;;1362:17:0;;;;;;;;;;1158:229::o;2585:136::-;2643:7;2670:43;2674:1;2677;2670:43;;;;;;;;;;;;;;;;;:3;:43::i;16900:704::-;17079:18;17100:76;17107:12;17100:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;17079:97;;17208:1;17193:12;:16;;;:85;;;;-1:-1:-1;;;;;;17213:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;17236:16:0;;17213:40;;;;;;;;;:50;:65;;;:50;;:65;17193:85;17189:339;;;-1:-1:-1;;;;;17295:22:0;;;;;;:11;:22;;;;;;;;:40;-1:-1:-1;;17318:16:0;;17295:40;;;;;;;;17333:1;17295:46;:57;;;17189:339;;;17424:33;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17385:22:0;;-1:-1:-1;17385:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;-1:-1:-1;;17385:72:0;;;;;;;;;;;;;17472:25;;;:14;:25;;;;;;:44;;17500:16;;;17472:44;;;;;;;;;;17189:339;17545:51;;;;;;;;;;;;;;-1:-1:-1;;;;;17545:51:0;;;;;;;;;;;16900:704;;;;;:::o;17612:161::-;17687:6;17725:12;17718:5;17714:9;;17706:32;;;;-1:-1:-1;;;17706:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17763:1:0;;17612:161;-1:-1:-1;;17612:161:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://85378a71b7634046a33f255a131b45648d890462e2630f41b4f026f48fdb7c75
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.