Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
100,000,000 BAND
Holders
35,459 ( 0.006%)
Market
Price
$1.54 @ 0.000443 ETH (-0.59%)
Onchain Market Cap
$154,000,000.00
Circulating Supply Market Cap
$238,095,616.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
158.572543424185180012 BANDValue
$244.20 ( ~0.0702008456533233 Eth) [0.0002%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | WhiteBIT | BAND-USDT | $1.54 0.0004439 Eth | $1,265,271.00 820,787.640 BAND | 17.8150% |
2 | Binance | BAND-USDT | $1.54 0.0004433 Eth | $836,039.00 539,064.200 BAND | 11.7003% |
3 | Hotcoin | BAND-USDT | $1.54 0.0004435 Eth | $724,753.00 469,909.700 BAND | 10.1993% |
4 | Trubit | BAND-USDT | $1.54 0.0004438 Eth | $588,106.00 379,251.100 BAND | 8.2316% |
5 | Biconomy.com | BAND-USDT | $1.54 0.0004436 Eth | $383,212.00 246,983.288 BAND | 5.3607% |
6 | Ourbit | BAND-USDT | $1.54 0.0004441 Eth | $330,432.00 212,814.950 BAND | 4.6191% |
7 | Bitazza | BAND-USDT | $1.53 0.0004416 Eth | $295,110.00 190,172.700 BAND | 4.1277% |
8 | Icrypex | BAND-USDT | $1.53 0.0004418 Eth | $292,611.00 190,690.423 BAND | 4.1389% |
9 | BYDFi | BAND-USDT | $1.54 0.0004439 Eth | $174,734.00 113,285.500 BAND | 2.4588% |
10 | OKX | BAND-USDT | $1.54 0.0004432 Eth | $158,794.00 102,842.094 BAND | 2.2322% |
11 | HTX | BAND-USDT | $1.54 0.0004433 Eth | $154,630.00 99,599.350 BAND | 2.1618% |
12 | FameEX | BAND-USDT | $1.54 0.0004435 Eth | $147,912.00 95,315.912 BAND | 2.0688% |
13 | AscendEX (BitMax) | BAND-USDT | $1.54 0.0004424 Eth | $145,298.00 94,513.100 BAND | 2.0514% |
14 | Bitget | BAND-USDT | $1.54 0.0004439 Eth | $131,671.00 84,802.005 BAND | 1.8406% |
15 | Toobit | BAND-USDT | $1.54 0.0004438 Eth | $104,267.00 67,167.900 BAND | 1.4579% |
16 | Bitrue | BAND-USDT | $1.54 0.0004433 Eth | $101,981.00 66,242.910 BAND | 1.4378% |
17 | BVOX | BAND-USDT | $1.54 0.0004434 Eth | $101,767.00 65,514.600 BAND | 1.4220% |
18 | Coinbase Exchange | BAND-USD | $1.55 0.0004449 Eth | $77,436.00 50,120.210 BAND | 1.0878% |
19 | XT.COM | BAND-USDT | $1.54 0.0004436 Eth | $66,680.00 43,193.700 BAND | 0.9375% |
20 | Bitunix | BAND-USDT | $1.54 0.0004435 Eth | $66,435.00 43,154.400 BAND | 0.9367% |
21 | BitMart | BAND-USDT | $1.54 0.0004436 Eth | $64,226.00 41,691.040 BAND | 0.9049% |
22 | Bitkub | BAND-THB | $1.54 0.0004443 Eth | $63,890.00 41,408.606 BAND | 0.8988% |
23 | CoinTR | BAND-USDT | $1.54 0.0004430 Eth | $59,007.00 37,987.396 BAND | 0.8245% |
24 | Tokenize | BAND-USD | $1.54 0.0004442 Eth | $53,478.00 34,682.960 BAND | 0.7528% |
25 | Tokenize | BAND-SGD | $1.53 0.0004410 Eth | $53,398.00 34,862.954 BAND | 0.7567% |
26 | Currency.com | BAND-USD | $1.40 0.0004186 Eth | $52,113.00 37,227.600 BAND | 0.8080% |
27 | KuCoin | BAND-USDT | $1.54 0.0004432 Eth | $49,885.00 32,401.546 BAND | 0.7033% |
28 | WEEX | BAND-USDT | $1.54 0.0004443 Eth | $48,560.00 31,260.000 BAND | 0.6785% |
29 | Gate.io | BAND-USDT | $1.54 0.0004429 Eth | $46,424.00 29,948.620 BAND | 0.6500% |
30 | BloFin | BAND-USDT | $1.55 0.0004455 Eth | $37,797.00 24,347.200 BAND | 0.5285% |
31 | BingX | BAND-USDT | $1.54 0.0004439 Eth | $36,107.00 23,273.078 BAND | 0.5051% |
32 | DigiFinex | BAND-USDT | $1.54 0.0004441 Eth | $35,893.00 23,258.500 BAND | 0.5048% |
33 | BTSE | BAND-USDT | $1.54 0.0004433 Eth | $32,881.00 21,353.562 BAND | 0.4635% |
34 | LATOKEN | BAND-USDT | $1.54 0.0004440 Eth | $32,708.00 21,207.846 BAND | 0.4603% |
35 | Dex-Trade | BAND-USDT | $1.54 0.0004441 Eth | $28,076.00 18,201.900 BAND | 0.3951% |
36 | DeGate | 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 | $1.54 0.0004442 Eth | $27,084.00 17,425.375 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55 | 0.3782% |
37 | Kraken | BAND-USD | $1.55 0.0004446 Eth | $26,430.00 17,095.787 BAND | 0.3711% |
38 | Phemex | BAND-USDT | $1.54 0.0004439 Eth | $22,588.00 14,653.300 BAND | 0.3180% |
39 | Koinpark | BAND-USDT | $1.54 0.0004444 Eth | $21,159.00 13,699.431 BAND | 0.2973% |
40 | P2B | BAND-USDT | $1.54 0.0004433 Eth | $19,814.80 12,870.900 BAND | 0.2794% |
41 | BtcTurk | Kripto | BAND-TRY | $1.55 0.0004476 Eth | $19,532.85 12,571.615 BAND | 0.2729% |
42 | Bilaxy | BAND-USDT | $1.54 0.0004431 Eth | $17,599.42 11,416.800 BAND | 0.2478% |
43 | Bitvavo | BAND-EUR | $1.54 0.0004445 Eth | $14,137.97 9,156.495 BAND | 0.1987% |
44 | LATOKEN | BAND-BTC | $1.55 0.0004446 Eth | $12,983.63 8,392.924 BAND | 0.1822% |
45 | Binance | BAND-BTC | $1.55 0.0004444 Eth | $12,747.70 8,153.800 BAND | 0.1770% |
46 | Bit2Me | BAND-EUR | $1.55 0.0004452 Eth | $12,683.44 8,135.645 BAND | 0.1766% |
47 | Kraken | BAND-EUR | $1.55 0.0004448 Eth | $12,545.30 8,111.302 BAND | 0.1761% |
48 | CoinEx | BAND-USDT | $1.54 0.0004420 Eth | $8,518.55 5,487.662 BAND | 0.1191% |
49 | CEX.IO | BAND-USDT | $1.54 0.0004439 Eth | $6,804.64 4,450.486 BAND | 0.0966% |
50 | Kanga | BAND-USDT | $1.54 0.0004427 Eth | $6,620.07 0.000 BAND | 0.0000% |
51 | Tothemoon | BAND-USDT | $1.54 0.0004446 Eth | $6,395.19 4,144.700 BAND | 0.0900% |
52 | BtcTurk | Kripto | BAND-USDT | $1.53 0.0004394 Eth | $4,592.88 3,003.877 BAND | 0.0652% |
53 | Crypto.com Exchange | BAND-USD | $1.54 0.0004435 Eth | $4,553.11 2,955.800 BAND | 0.0642% |
54 | Sushiswap | 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $1.54 0.0004444 Eth | $4,037.04 2,618.483 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55 | 0.0568% |
55 | P2B | BAND-USD | $1.54 0.0004436 Eth | $3,428.73 2,225.000 BAND | 0.0483% |
56 | Vindax | BAND-USDT | $1.54 0.0004426 Eth | $2,826.43 1,838.400 BAND | 0.0399% |
57 | CoinEx | BAND-BTC | $1.55 0.0004454 Eth | $2,821.27 1,799.440 BAND | 0.0391% |
58 | OKX | BAND-USDC | $1.55 0.0004467 Eth | $2,801.53 1,828.947 BAND | 0.0397% |
59 | Coinone | BAND-KRW | $1.60 0.0004600 Eth | $2,406.14 1,504.369 BAND | 0.0327% |
60 | CoinJar Exchange | BAND-EUR | $1.32 0.0003855 Eth | $2,276.92 1,730.000 BAND | 0.0375% |
61 | Pionex | BAND-USDT | $1.55 0.0004452 Eth | $2,142.74 1,379.750 BAND | 0.0299% |
62 | Paribu | BAND-TRY | $1.54 0.0004445 Eth | $1,903.73 1,232.700 BAND | 0.0268% |
63 | Crypto.com Exchange | BAND-USDT | $1.54 0.0004423 Eth | $1,776.86 1,156.600 BAND | 0.0251% |
64 | Bitazza | BAND-THB | $1.55 0.0004461 Eth | $1,642.36 1,052.800 BAND | 0.0229% |
65 | TokoCrypto | BAND-USDT | $1.54 0.0004439 Eth | $1,596.20 1,034.772 BAND | 0.0225% |
66 | Binance US | BAND-USDT | $1.53 0.0004405 Eth | $689.66 450.026 BAND | 0.0098% |
67 | Nami.Exchange | BAND-VNST | $1.55 0.0004457 Eth | $687.00 444.100 BAND | 0.0096% |
68 | Nami.Exchange | BAND-USDT | $1.55 0.0004446 Eth | $679.05 439.075 BAND | 0.0095% |
69 | Uniswap V2 (Ethereum) | 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $1.55 0.0004471 Eth | $527.32 338.270 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55 | 0.0073% |
70 | Dex-Trade | BAND-BTC | $1.55 0.0004461 Eth | $385.75 249.000 BAND | 0.0054% |
71 | CoinJar Exchange | BAND-GBP | $1.47 0.0004242 Eth | $309.08 210.000 BAND | 0.0046% |
72 | Mudrex | BAND-USDT | $1.54 0.0004434 Eth | $301.53 195.834 BAND | 0.0043% |
73 | Pionex | BAND-BTC | $1.55 0.0004454 Eth | $280.85 180.000 BAND | 0.0039% |
74 | CoinJar Exchange | BAND-USDC | $1.46 0.0004291 Eth | $277.09 190.000 BAND | 0.0041% |
75 | CoinJar Exchange | BAND-AUD | $1.46 0.0004291 Eth | $277.07 190.000 BAND | 0.0041% |
76 | KuCoin | BAND-BTC | $1.52 0.0004389 Eth | $242.29 158.920 BAND | 0.0034% |
77 | Indodax | BAND-IDR | $1.59 0.0004567 Eth | $156.10 98.396 BAND | 0.0021% |
78 | Bittime | BAND-IDR | $1.55 0.0004477 Eth | $138.21 88.120 BAND | 0.0019% |
79 | Bitstamp | BAND-USD | $1.69 0.0004595 Eth | $93.75 55.340 BAND | 0.0012% |
80 | CEX.IO | BAND-USD | $1.55 0.0004448 Eth | $78.78 50.533 BAND | 0.0011% |
81 | SpookySwap | 0X46E7628E8B4350B2716AB470EE0BA1FA9E76C6C5-0X21BE370D5312F44CB42CE377BC9B8A0CEF1A4C83 | $0.5441 0.0001567 Eth | $60.51 109.699 0X46E7628E8B4350B2716AB470EE0BA1FA9E76C6C5 | 0.0024% |
82 | HitBTC | BAND-USDT | $1.38 0.0003956 Eth | $56.38 41.554 BAND | 0.0009% |
83 | CEX.IO | BAND-EUR | $1.55 0.0004472 Eth | $31.99 20.558 BAND | 0.0004% |
84 | Bitstamp | BAND-EUR | $1.84 0.0005300 Eth | $22.94 12.490 BAND | 0.0003% |
85 | Gate.io | BAND-ETH | $1.54 0.0004437 Eth | $20.17 13.080 BAND | 0.0003% |
86 | Poloniex | BAND-USDT | $1.60 0.0004771 Eth | $14.26 8.992 BAND | 0.0002% |
87 | ProBit Global | BAND-USDT | $1.26 0.0003618 Eth | $13.50 10.740 BAND | 0.0002% |
88 | Mercado Bitcoin | BAND-BRL | $1.34 0.0003849 Eth | $9.00 6.728 BAND | 0.0001% |
89 | SakeSwap | 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $1.52 0.0004365 Eth | $8.33 5.495 0XBA11D00C5F74255F56A5E366F4F77F5A186D7F55 | 0.0001% |
90 | Korbit | BAND-KRW | $1.56 0.0004499 Eth | $3.88 2.481 BAND | 0.0001% |
91 | HitBTC | BAND-BTC | $1.46 0.0004196 Eth | $3.30 2.252 BAND | 0.0000% |
92 | Orbix | BAND-THB | $1.47 0.0004428 Eth | $2.64 1.800 BAND | 0.0000% |
93 | Coinmetro | BAND-USDT | $1.54 0.0004438 Eth | $0.00 0.000 BAND | 0.0000% |
Contract Name:
BandToken
Compiler Version
v0.5.9+commit.e560f70d
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-09-09 */ // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol pragma solidity ^0.5.0; /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md * Originally based on code by FirstBlood: * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for * all accounts just by listening to said events. Note that this isn't required by the specification, and other * compliant implementations may not do it. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowed; uint256 private _totalSupply; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public returns (bool) { _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); _transfer(from, to, value); emit Approval(from, msg.sender, _allowed[from][msg.sender]); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Transfer token for a specified addresses * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Internal function that mints an amount of the token and assigns it to * an account. This encapsulates the modification of balances such that the * proper events are emitted. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Transfer(address(0), account, value); } /** * @dev Internal function that burns an amount of the token of a given * account. * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burn(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Internal function that burns an amount of the token of a given * account, deducting from the sender's allowance for said account. Uses the * internal burn function. * Emits an Approval event (reflecting the reduced allowance). * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burnFrom(address account, uint256 value) internal { _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value); _burn(account, value); emit Approval(account, msg.sender, _allowed[account][msg.sender]); } } // File: openzeppelin-solidity/contracts/access/Roles.sol pragma solidity ^0.5.0; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an account access to this role */ function add(Role storage role, address account) internal { require(account != address(0)); require(!has(role, account)); role.bearer[account] = true; } /** * @dev remove an account's access to this role */ function remove(Role storage role, address account) internal { require(account != address(0)); require(has(role, account)); role.bearer[account] = false; } /** * @dev check if an account has this role * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0)); return role.bearer[account]; } } // File: openzeppelin-solidity/contracts/access/roles/MinterRole.sol pragma solidity ^0.5.0; contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender)); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(msg.sender); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } // File: contracts/token/ERC20Interface.sol pragma solidity 0.5.9; interface ERC20Interface { // Standard ERC-20 interface. function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); // Extension of ERC-20 interface to support supply adjustment. function mint(address to, uint256 value) external returns (bool); function burn(address from, uint256 value) external returns (bool); } // File: contracts/token/ERC20Base.sol pragma solidity 0.5.9; /// "ERC20Base" is the standard ERC-20 implementation that allows its minter to mint tokens. Both BandToken and /// CommunityToken extend from ERC20Base. In addition to the standard functions, the class provides `transferAndCall` /// function, which performs a transfer and invokes the given function using the provided data. If the destination /// contract uses "ERC20Acceptor" interface, it can verify that the caller properly sends appropriate amount of tokens. contract ERC20Base is ERC20Interface, ERC20, MinterRole { string public name; string public symbol; uint8 public decimals = 18; constructor(string memory _name, string memory _symbol) public { name = _name; symbol = _symbol; } function transferAndCall(address to, uint256 value, bytes4 sig, bytes memory data) public returns (bool) { require(to != address(this)); _transfer(msg.sender, to, value); (bool success,) = to.call(abi.encodePacked(sig, uint256(msg.sender), value, data)); require(success); return true; } function mint(address to, uint256 value) public onlyMinter returns (bool) { _mint(to, value); return true; } function burn(address from, uint256 value) public onlyMinter returns (bool) { _burn(from, value); return true; } } // File: contracts/token/SnapshotToken.sol pragma solidity 0.5.9; contract SnapshotToken is ERC20Base { using SafeMath for uint256; /// IMPORTANT: votingPowers are kept as a linked list of ALL historical changes. /// - This allows the contract to figure out voting power of the address at any nonce `n`, by /// searching for the node that has the biggest nonce that is not greater than `n`. /// - For efficiency, nonce and power are packed into one uint256 integer, with the top 64 bits /// representing nonce, and the bottom 192 bits representing voting power. mapping (address => mapping(uint256 => uint256)) _votingPower; mapping (address => uint256) public votingPowerChangeCount; uint256 public votingPowerChangeNonce = 0; /// Returns user voting power at the given index, that is, as of the user's index^th voting power change function historicalVotingPowerAtIndex(address owner, uint256 index) public view returns (uint256) { require(index <= votingPowerChangeCount[owner]); return _votingPower[owner][index] & ((1 << 192) - 1); // Lower 192 bits } /// Returns user voting power at the given time. Under the hood, this performs binary search /// to look for the largest index at which the nonce is not greater than 'nonce'. /// The voting power at that index is the returning value. function historicalVotingPowerAtNonce(address owner, uint256 nonce) public view returns (uint256) { require(nonce <= votingPowerChangeNonce && nonce < (1 << 64)); uint256 start = 0; uint256 end = votingPowerChangeCount[owner]; while (start < end) { uint256 mid = start.add(end).add(1).div(2); /// Use (start+end+1)/2 to prevent infinite loop. if ((_votingPower[owner][mid] >> 192) > nonce) { /// Upper 64-bit nonce /// If midTime > nonce, this mid can't possibly be the answer. end = mid.sub(1); } else { /// Otherwise, search on the greater side, but still keep mid as a possible option. start = mid; } } return historicalVotingPowerAtIndex(owner, start); } function _transfer(address from, address to, uint256 value) internal { super._transfer(from, to, value); votingPowerChangeNonce = votingPowerChangeNonce.add(1); _changeVotingPower(from); _changeVotingPower(to); } function _mint(address account, uint256 amount) internal { super._mint(account, amount); votingPowerChangeNonce = votingPowerChangeNonce.add(1); _changeVotingPower(account); } function _burn(address account, uint256 amount) internal { super._burn(account, amount); votingPowerChangeNonce = votingPowerChangeNonce.add(1); _changeVotingPower(account); } function _changeVotingPower(address account) internal { uint256 currentIndex = votingPowerChangeCount[account]; uint256 newPower = balanceOf(account); require(newPower < (1 << 192)); require(votingPowerChangeNonce < (1 << 64)); currentIndex = currentIndex.add(1); votingPowerChangeCount[account] = currentIndex; _votingPower[account][currentIndex] = (votingPowerChangeNonce << 192) | newPower; } } // File: contracts/BandToken.sol pragma solidity 0.5.9; /// "BandToken" is the native ERC-20 token of Band Protocol. contract BandToken is ERC20Base("BandToken", "BAND"), SnapshotToken {}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"sig","type":"bytes4"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"votingPowerChangeNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"votingPowerChangeCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"nonce","type":"uint256"}],"name":"historicalVotingPowerAtNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"index","type":"uint256"}],"name":"historicalVotingPowerAtIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6006805460ff191660121790556000600990815560809081527f42616e64546f6b656e000000000000000000000000000000000000000000000060a052610100604052600460c09081527f42414e440000000000000000000000000000000000000000000000000000000060e05262000081336001600160e01b03620000b516565b81516200009690600490602085019062000196565b508051620000ac90600590602084019062000196565b5050506200023b565b620000d08160036200010760201b62000fab1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b0381166200011b57600080fd5b6200013082826001600160e01b036200016016565b156200013b57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200017657600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d957805160ff191683800117855562000209565b8280016001018555821562000209579182015b8281111562000209578251825591602001919060010190620001ec565b50620002179291506200021b565b5090565b6200023891905b8082111562000217576000815560010162000222565b90565b61111b806200024b6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610443578063a9059cbb1461046f578063aa271e1a1461049b578063cce28096146104c1578063d6487031146104ed578063dd62ed3e1461051957610137565b806370a08231146103b957806395d89b41146103df578063983b2d56146103e7578063986502751461040f5780639dc29fac1461041757610137565b806339509351116100ff57806339509351146102675780633c4461be1461029357806340c10f191461035f57806344b6fd811461038b5780634a7b27e91461039357610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b610144610547565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b0381351690602001356105d5565b604080519115158252519081900360200190f35b610201610651565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610657565b610251610720565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610729565b6101e5600480360360808110156102a957600080fd5b6001600160a01b03823516916020810135916001600160e01b031960408301351691908101906080810160608201356401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184600183028401116401000000008311171561031e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107d7945050505050565b6101e56004803603604081101561037557600080fd5b506001600160a01b038135169060200135610952565b610201610979565b610201600480360360208110156103a957600080fd5b50356001600160a01b031661097f565b610201600480360360208110156103cf57600080fd5b50356001600160a01b0316610991565b6101446109ac565b61040d600480360360208110156103fd57600080fd5b50356001600160a01b0316610a07565b005b61040d610a25565b6101e56004803603604081101561042d57600080fd5b506001600160a01b038135169060200135610a30565b6101e56004803603604081101561045957600080fd5b506001600160a01b038135169060200135610a4e565b6101e56004803603604081101561048557600080fd5b506001600160a01b038135169060200135610a97565b6101e5600480360360208110156104b157600080fd5b50356001600160a01b0316610aa4565b610201600480360360408110156104d757600080fd5b506001600160a01b038135169060200135610abd565b6102016004803603604081101561050357600080fd5b506001600160a01b038135169060200135610b99565b6102016004803603604081101561052f57600080fd5b506001600160a01b0381358116916020013516610bf0565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b505050505081565b60006001600160a01b0383166105ea57600080fd5b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b6001600160a01b038316600090815260016020908152604080832033845290915281205461068b908363ffffffff610c1b16565b6001600160a01b03851660009081526001602090815260408083203384529091529020556106ba848484610c30565b6001600160a01b0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60065460ff1681565b60006001600160a01b03831661073e57600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610772908363ffffffff610c6916565b3360008181526001602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006001600160a01b0385163014156107ef57600080fd5b6107fa338686610c30565b6000856001600160a01b031684336001600160a01b0316878660405160200180856001600160e01b0319166001600160e01b031916815260040184815260200183815260200182805190602001908083835b6020831061086b5780518252601f19909201916020918201910161084c565b6001836020036101000a0380198251168184511680821785525050505050509050019450505050506040516020818303038152906040526040518082805190602001908083835b602083106108d15780518252601f1990920191602091820191016108b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610933576040519150601f19603f3d011682016040523d82523d6000602084013e610938565b606091505b505090508061094657600080fd5b50600195945050505050565b600061095d33610aa4565b61096657600080fd5b6109708383610c82565b50600192915050565b60095481565b60086020526000908152604090205481565b6001600160a01b031660009081526020819052604090205490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105cd5780601f106105a2576101008083540402835291602001916105cd565b610a1033610aa4565b610a1957600080fd5b610a2281610cb0565b50565b610a2e33610cf8565b565b6000610a3b33610aa4565b610a4457600080fd5b6109708383610d40565b60006001600160a01b038316610a6357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610772908363ffffffff610c1b16565b6000610970338484610c30565b6000610ab760038363ffffffff610d4a16565b92915050565b60006009548211158015610ad45750600160401b82105b610add57600080fd5b6001600160a01b0383166000908152600860205260408120545b80821015610b86576000610b336002610b276001610b1b878763ffffffff610c6916565b9063ffffffff610c6916565b9063ffffffff610d7f16565b6001600160a01b038716600090815260076020908152604080832084845290915290205490915060c01c851015610b7c57610b7581600163ffffffff610c1b16565b9150610b80565b8092505b50610af7565b610b908583610b99565b95945050505050565b6001600160a01b038216600090815260086020526040812054821115610bbe57600080fd5b506001600160a01b0391909116600090815260076020908152604080832093835292905220546001600160c01b031690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600082821115610c2a57600080fd5b50900390565b610c3b838383610da1565b600954610c4f90600163ffffffff610c6916565b600955610c5b83610e6c565b610c6482610e6c565b505050565b600082820183811015610c7b57600080fd5b9392505050565b610c8c8282610f03565b600954610ca090600163ffffffff610c6916565b600955610cac82610e6c565b5050565b610cc160038263ffffffff610fab16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610d0960038263ffffffff610ff716565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b610c8c828261103f565b60006001600160a01b038216610d5f57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000808211610d8d57600080fd5b6000828481610d9857fe5b04949350505050565b6001600160a01b038216610db457600080fd5b6001600160a01b038316600090815260208190526040902054610ddd908263ffffffff610c1b16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e12908263ffffffff610c6916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b03811660009081526008602052604081205490610e8f83610991565b9050600160c01b8110610ea157600080fd5b600160401b60095410610eb357600080fd5b610ec482600163ffffffff610c6916565b6001600160a01b0390931660009081526008602090815260408083208690556009546007835281842096845295909152902060c09390931b1790915550565b6001600160a01b038216610f1657600080fd5b600254610f29908263ffffffff610c6916565b6002556001600160a01b038216600090815260208190526040902054610f55908263ffffffff610c6916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610fbe57600080fd5b610fc88282610d4a565b15610fd257600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811661100a57600080fd5b6110148282610d4a565b61101d57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03821661105257600080fd5b600254611065908263ffffffff610c1b16565b6002556001600160a01b038216600090815260208190526040902054611091908263ffffffff610c1b16565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505056fea265627a7a723058208c832d942f5f6d66aecf620c67bda2dccbe3e9b07502f05bcf01391244f43e6e64736f6c63430005090032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d714610443578063a9059cbb1461046f578063aa271e1a1461049b578063cce28096146104c1578063d6487031146104ed578063dd62ed3e1461051957610137565b806370a08231146103b957806395d89b41146103df578063983b2d56146103e7578063986502751461040f5780639dc29fac1461041757610137565b806339509351116100ff57806339509351146102675780633c4461be1461029357806340c10f191461035f57806344b6fd811461038b5780634a7b27e91461039357610137565b806306fdde031461013c578063095ea7b3146101b957806318160ddd146101f957806323b872dd14610213578063313ce56714610249575b600080fd5b610144610547565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b0381351690602001356105d5565b604080519115158252519081900360200190f35b610201610651565b60408051918252519081900360200190f35b6101e56004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610657565b610251610720565b6040805160ff9092168252519081900360200190f35b6101e56004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610729565b6101e5600480360360808110156102a957600080fd5b6001600160a01b03823516916020810135916001600160e01b031960408301351691908101906080810160608201356401000000008111156102ea57600080fd5b8201836020820111156102fc57600080fd5b8035906020019184600183028401116401000000008311171561031e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107d7945050505050565b6101e56004803603604081101561037557600080fd5b506001600160a01b038135169060200135610952565b610201610979565b610201600480360360208110156103a957600080fd5b50356001600160a01b031661097f565b610201600480360360208110156103cf57600080fd5b50356001600160a01b0316610991565b6101446109ac565b61040d600480360360208110156103fd57600080fd5b50356001600160a01b0316610a07565b005b61040d610a25565b6101e56004803603604081101561042d57600080fd5b506001600160a01b038135169060200135610a30565b6101e56004803603604081101561045957600080fd5b506001600160a01b038135169060200135610a4e565b6101e56004803603604081101561048557600080fd5b506001600160a01b038135169060200135610a97565b6101e5600480360360208110156104b157600080fd5b50356001600160a01b0316610aa4565b610201600480360360408110156104d757600080fd5b506001600160a01b038135169060200135610abd565b6102016004803603604081101561050357600080fd5b506001600160a01b038135169060200135610b99565b6102016004803603604081101561052f57600080fd5b506001600160a01b0381358116916020013516610bf0565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105cd5780601f106105a2576101008083540402835291602001916105cd565b820191906000526020600020905b8154815290600101906020018083116105b057829003601f168201915b505050505081565b60006001600160a01b0383166105ea57600080fd5b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b6001600160a01b038316600090815260016020908152604080832033845290915281205461068b908363ffffffff610c1b16565b6001600160a01b03851660009081526001602090815260408083203384529091529020556106ba848484610c30565b6001600160a01b0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60065460ff1681565b60006001600160a01b03831661073e57600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610772908363ffffffff610c6916565b3360008181526001602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006001600160a01b0385163014156107ef57600080fd5b6107fa338686610c30565b6000856001600160a01b031684336001600160a01b0316878660405160200180856001600160e01b0319166001600160e01b031916815260040184815260200183815260200182805190602001908083835b6020831061086b5780518252601f19909201916020918201910161084c565b6001836020036101000a0380198251168184511680821785525050505050509050019450505050506040516020818303038152906040526040518082805190602001908083835b602083106108d15780518252601f1990920191602091820191016108b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610933576040519150601f19603f3d011682016040523d82523d6000602084013e610938565b606091505b505090508061094657600080fd5b50600195945050505050565b600061095d33610aa4565b61096657600080fd5b6109708383610c82565b50600192915050565b60095481565b60086020526000908152604090205481565b6001600160a01b031660009081526020819052604090205490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105cd5780601f106105a2576101008083540402835291602001916105cd565b610a1033610aa4565b610a1957600080fd5b610a2281610cb0565b50565b610a2e33610cf8565b565b6000610a3b33610aa4565b610a4457600080fd5b6109708383610d40565b60006001600160a01b038316610a6357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610772908363ffffffff610c1b16565b6000610970338484610c30565b6000610ab760038363ffffffff610d4a16565b92915050565b60006009548211158015610ad45750600160401b82105b610add57600080fd5b6001600160a01b0383166000908152600860205260408120545b80821015610b86576000610b336002610b276001610b1b878763ffffffff610c6916565b9063ffffffff610c6916565b9063ffffffff610d7f16565b6001600160a01b038716600090815260076020908152604080832084845290915290205490915060c01c851015610b7c57610b7581600163ffffffff610c1b16565b9150610b80565b8092505b50610af7565b610b908583610b99565b95945050505050565b6001600160a01b038216600090815260086020526040812054821115610bbe57600080fd5b506001600160a01b0391909116600090815260076020908152604080832093835292905220546001600160c01b031690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600082821115610c2a57600080fd5b50900390565b610c3b838383610da1565b600954610c4f90600163ffffffff610c6916565b600955610c5b83610e6c565b610c6482610e6c565b505050565b600082820183811015610c7b57600080fd5b9392505050565b610c8c8282610f03565b600954610ca090600163ffffffff610c6916565b600955610cac82610e6c565b5050565b610cc160038263ffffffff610fab16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610d0960038263ffffffff610ff716565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b610c8c828261103f565b60006001600160a01b038216610d5f57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000808211610d8d57600080fd5b6000828481610d9857fe5b04949350505050565b6001600160a01b038216610db457600080fd5b6001600160a01b038316600090815260208190526040902054610ddd908263ffffffff610c1b16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610e12908263ffffffff610c6916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b03811660009081526008602052604081205490610e8f83610991565b9050600160c01b8110610ea157600080fd5b600160401b60095410610eb357600080fd5b610ec482600163ffffffff610c6916565b6001600160a01b0390931660009081526008602090815260408083208690556009546007835281842096845295909152902060c09390931b1790915550565b6001600160a01b038216610f1657600080fd5b600254610f29908263ffffffff610c6916565b6002556001600160a01b038216600090815260208190526040902054610f55908263ffffffff610c6916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610fbe57600080fd5b610fc88282610d4a565b15610fd257600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811661100a57600080fd5b6110148282610d4a565b61101d57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03821661105257600080fd5b600254611065908263ffffffff610c1b16565b6002556001600160a01b038216600090815260208190526040902054611091908263ffffffff610c1b16565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505056fea265627a7a723058208c832d942f5f6d66aecf620c67bda2dccbe3e9b07502f05bcf01391244f43e6e64736f6c63430005090032
Deployed Bytecode Sourcemap
18242:70:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18242:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14126:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14126:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5651:244;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5651:244:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3810:91;;;:::i;:::-;;;;;;;;;;;;;;;;6368:299;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6368:299:0;;;;;;;;;;;;;;;;;:::i;14174:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7182:323;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7182:323:0;;;;;;;;:::i;14324:315::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;14324:315:0;;;;;;;;;-1:-1:-1;;;;;;14324:315:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;14324:315:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14324:315:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14324:315:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14324:315:0;;-1:-1:-1;14324:315:0;;-1:-1:-1;;;;;14324:315:0:i;14645:121::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14645:121:0;;;;;;;;:::i;15630:41::-;;;:::i;15567:58::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15567:58:0;-1:-1:-1;;;;;15567:58:0;;:::i;4117:106::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4117:106:0;-1:-1:-1;;;;;4117:106:0;;:::i;14149:20::-;;;:::i;12266:92::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12266:92:0;-1:-1:-1;;;;;12266:92:0;;:::i;:::-;;12366:77;;;:::i;14772:125::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14772:125:0;;;;;;;;:::i;8025:333::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8025:333:0;;;;;;;;:::i;4864:140::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4864:140:0;;;;;;;;:::i;12149:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12149:109:0;-1:-1:-1;;;;;12149:109:0;;:::i;16271:756::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16271:756:0;;;;;;;;:::i;15786:236::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15786:236:0;;;;;;;;:::i;4562:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4562:131:0;;;;;;;;;;:::i;14126:18::-;;;;;;;;;;;;;;;-1:-1:-1;;14126:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5651:244::-;5716:4;-1:-1:-1;;;;;5741:21:0;;5733:30;;;;;;5785:10;5776:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5776:29:0;;;;;;;;;;;;:37;;;5829:36;;;;;;;5776:29;;5785:10;5829:36;;;;;;;;;;;-1:-1:-1;5883:4:0;5651:244;;;;:::o;3810:91::-;3881:12;;3810:91;:::o;6368:299::-;-1:-1:-1;;;;;6493:14:0;;6447:4;6493:14;;;:8;:14;;;;;;;;6508:10;6493:26;;;;;;;;:37;;6524:5;6493:37;:30;:37;:::i;:::-;-1:-1:-1;;;;;6464:14:0;;;;;;:8;:14;;;;;;;;6479:10;6464:26;;;;;;;:66;6541:26;6473:4;6557:2;6561:5;6541:9;:26::i;:::-;-1:-1:-1;;;;;6583:54:0;;6610:14;;;;:8;:14;;;;;;;;6598:10;6610:26;;;;;;;;;;;6583:54;;;;;;;6598:10;;6583:54;;;;;;;;;;;;-1:-1:-1;6655:4:0;6368:299;;;;;:::o;14174:26::-;;;;;;:::o;7182:323::-;7262:4;-1:-1:-1;;;;;7287:21:0;;7279:30;;;;;;7363:10;7354:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;7354:29:0;;;;;;;;;;:45;;7388:10;7354:45;:33;:45;:::i;:::-;7331:10;7322:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;7322:29:0;;;;;;;;;;;;:77;;;7415:60;;;;;;7322:29;;7415:60;;;;;;;;;;;-1:-1:-1;7493:4:0;7182:323;;;;:::o;14324:315::-;14423:4;-1:-1:-1;;;;;14444:19:0;;14458:4;14444:19;;14436:28;;;;;;14471:32;14481:10;14493:2;14497:5;14471:9;:32::i;:::-;14511:12;14528:2;-1:-1:-1;;;;;14528:7:0;14553:3;14566:10;-1:-1:-1;;;;;14558:19:0;14579:5;14586:4;14536:55;;;;;;-1:-1:-1;;;;;14536:55:0;;-1:-1:-1;;;;;14536:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14536:55:0;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14536:55:0;;;14528:64;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14528:64:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14510:82:0;;;14607:7;14599:16;;;;;;-1:-1:-1;14629:4:0;;14324:315;-1:-1:-1;;;;;14324:315:0:o;14645:121::-;14713:4;12100:20;12109:10;12100:8;:20::i;:::-;12092:29;;;;;;14726:16;14732:2;14736:5;14726;:16::i;:::-;-1:-1:-1;14756:4:0;14645:121;;;;:::o;15630:41::-;;;;:::o;15567:58::-;;;;;;;;;;;;;:::o;4117:106::-;-1:-1:-1;;;;;4199:16:0;4172:7;4199:16;;;;;;;;;;;;4117:106::o;14149:20::-;;;;;;;;;;;;;;;-1:-1:-1;;14149:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12266:92;12100:20;12109:10;12100:8;:20::i;:::-;12092:29;;;;;;12331:19;12342:7;12331:10;:19::i;:::-;12266:92;:::o;12366:77::-;12410:25;12424:10;12410:13;:25::i;:::-;12366:77::o;14772:125::-;14842:4;12100:20;12109:10;12100:8;:20::i;:::-;12092:29;;;;;;14855:18;14861:4;14867:5;14855;:18::i;8025:333::-;8110:4;-1:-1:-1;;;;;8135:21:0;;8127:30;;;;;;8211:10;8202:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;8202:29:0;;;;;;;;;;:50;;8236:15;8202:50;:33;:50;:::i;4864:140::-;4925:4;4942:32;4952:10;4964:2;4968:5;4942:9;:32::i;12149:109::-;12205:4;12229:21;:8;12242:7;12229:21;:12;:21;:::i;:::-;12222:28;12149:109;-1:-1:-1;;12149:109:0:o;16271:756::-;16360:7;16393:22;;16384:5;:31;;:52;;;;;-1:-1:-1;;;16419:5:0;:17;16384:52;16376:61;;;;;;-1:-1:-1;;;;;16482:29:0;;16444:13;16482:29;;;:22;:29;;;;;;16518:448;16533:3;16525:5;:11;16518:448;;;16547:11;16561:28;16587:1;16561:21;16580:1;16561:14;:5;16571:3;16561:14;:9;:14;:::i;:::-;:18;:21;:18;:21;:::i;:::-;:25;:28;:25;:28;:::i;:::-;-1:-1:-1;;;;;16653:19:0;;;;;;:12;:19;;;;;;;;:24;;;;;;;;;16547:42;;-1:-1:-1;16681:3:0;16653:31;16652:41;-1:-1:-1;16648:311:0;;;16808:10;:3;16816:1;16808:10;:7;:10;:::i;:::-;16802:16;;16648:311;;;16946:3;16938:11;;16648:311;16518:448;;;;16979:42;17008:5;17015;16979:28;:42::i;:::-;16972:49;16271:756;-1:-1:-1;;;;;16271:756:0:o;15786:236::-;-1:-1:-1;;;;;15908:29:0;;15875:7;15908:29;;;:22;:29;;;;;;15899:38;;;15891:47;;;;;;-1:-1:-1;;;;;;15952:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;-1:-1:-1;;;;;15952:45:0;;15786:236::o;4562:131::-;-1:-1:-1;;;;;4661:15:0;;;4634:7;4661:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;4562:131::o;2161:150::-;2219:7;2252:1;2247;:6;;2239:15;;;;;;-1:-1:-1;2277:5:0;;;2161:150::o;17033:235::-;17109:32;17125:4;17131:2;17135:5;17109:15;:32::i;:::-;17173:22;;:29;;17200:1;17173:29;:26;:29;:::i;:::-;17148:22;:54;17209:24;17228:4;17209:18;:24::i;:::-;17240:22;17259:2;17240:18;:22::i;:::-;17033:235;;;:::o;2397:150::-;2455:7;2487:5;;;2511:6;;;;2503:15;;;;;;2538:1;2397:150;-1:-1:-1;;;2397:150:0:o;17274:193::-;17338:28;17350:7;17359:6;17338:11;:28::i;:::-;17398:22;;:29;;17425:1;17398:29;:26;:29;:::i;:::-;17373:22;:54;17434:27;17453:7;17434:18;:27::i;:::-;17274:193;;:::o;12451:122::-;12508:21;:8;12521:7;12508:21;:12;:21;:::i;:::-;12545:20;;-1:-1:-1;;;;;12545:20:0;;;;;;;;12451:122;:::o;12581:130::-;12641:24;:8;12657:7;12641:24;:15;:24;:::i;:::-;12681:22;;-1:-1:-1;;;;;12681:22:0;;;;;;;;12581:130;:::o;17473:193::-;17537:28;17549:7;17558:6;17537:11;:28::i;11513:165::-;11585:4;-1:-1:-1;;;;;11610:21:0;;11602:30;;;;;;-1:-1:-1;;;;;;11650:20:0;:11;:20;;;;;;;;;;;;;;;11513:165::o;1722:303::-;1780:7;1879:1;1875;:5;1867:14;;;;;;1892:9;1908:1;1904;:5;;;;;;;1722:303;-1:-1:-1;;;;1722:303:0:o;8580:262::-;-1:-1:-1;;;;;8668:16:0;;8660:25;;;;;;-1:-1:-1;;;;;8716:15:0;;:9;:15;;;;;;;;;;;:26;;8736:5;8716:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;8698:15:0;;;:9;:15;;;;;;;;;;;:44;;;;8769:13;;;;;;;:24;;8787:5;8769:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;8753:13:0;;;:9;:13;;;;;;;;;;;;:40;;;;8809:25;;;;;;;8753:13;;8809:25;;;;;;;;;;;;;8580:262;;;:::o;17672:433::-;-1:-1:-1;;;;;17756:31:0;;17733:20;17756:31;;;:22;:31;;;;;;;17813:18;17779:7;17813:9;:18::i;:::-;17794:37;;-1:-1:-1;;;17846:8:0;:21;17838:30;;;;;;-1:-1:-1;;;17883:22:0;;:34;17875:43;;;;;;17940:19;:12;17957:1;17940:19;:16;:19;:::i;:::-;-1:-1:-1;;;;;17966:31:0;;;;;;;:22;:31;;;;;;;;:46;;;18058:22;;18019:12;:21;;;;;:35;;;;;;;;;18084:3;18058:29;;;;18057:42;18019:80;;;-1:-1:-1;17672:433:0:o;9194:269::-;-1:-1:-1;;;;;9269:21:0;;9261:30;;;;;;9319:12;;:23;;9336:5;9319:23;:16;:23;:::i;:::-;9304:12;:38;-1:-1:-1;;;;;9374:18:0;;:9;:18;;;;;;;;;;;:29;;9397:5;9374:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;9353:18:0;;:9;:18;;;;;;;;;;;:50;;;;9419:36;;;;;;;9353:18;;:9;;9419:36;;;;;;;;;;9194:269;;:::o;10965:186::-;-1:-1:-1;;;;;11042:21:0;;11034:30;;;;;;11084:18;11088:4;11094:7;11084:3;:18::i;:::-;11083:19;11075:28;;;;;;-1:-1:-1;;;;;11116:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;11116:27:0;11139:4;11116:27;;;10965:186::o;11230:189::-;-1:-1:-1;;;;;11310:21:0;;11302:30;;;;;;11351:18;11355:4;11361:7;11351:3;:18::i;:::-;11343:27;;;;;;-1:-1:-1;;;;;11383:20:0;11406:5;11383:20;;;;;;;;;;;:28;;-1:-1:-1;;11383:28:0;;;11230:189::o;9697:269::-;-1:-1:-1;;;;;9772:21:0;;9764:30;;;;;;9822:12;;:23;;9839:5;9822:23;:16;:23;:::i;:::-;9807:12;:38;-1:-1:-1;;;;;9877:18:0;;:9;:18;;;;;;;;;;;:29;;9900:5;9877:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;9856:18:0;;:9;:18;;;;;;;;;;;:50;;;;9922:36;;;;;;;9856:9;;9922:36;;;;;;;;;;;9697:269;;:::o
Swarm Source
bzzr://8c832d942f5f6d66aecf620c67bda2dccbe3e9b07502f05bcf01391244f43e6e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.