Contract Overview
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x17f20a2d4c25ac7fedd26a8383ded3661a216599ee976e1746bd4cf6398bbe53 | 4808358 | 178 days 18 hrs ago | 0x4ae2bd26e60741890edb9e5c7e984bb396ec26e3 | Contract Creation | 0 CRO |
[ Download CSV Export ]
Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x5ab293ac4138a8a1658ec6b73955a76bf0fadd66
Contract Name:
UniswapV2Pair
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; interface ISwapDiscount { function swapFeeBase(address _address) external view returns (uint32); function feeScalar(address _address) external view returns (uint32); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; interface IUniswapV2Factory { error IdenticalAddresses(); error ZeroAddress(); error PairExists(); error Unauthorized(); error FactoryInactive(); event ActiveChanged(bool active); event FeeReceiverChanged(address indexed feeReceiver); event PairCreated(address indexed token0, address indexed token1, address pair, uint256 totalPairs); function feesEnabled() external view returns (bool); function getPair(address tokenA, address tokenB) external view returns (address pair); function getTotalPairs() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function getFeeReceiver() external view returns (address); function setActive(bool newValue) external; function setFeeReceiver(address feeReceiver) external; function swapFee() external view returns (uint32); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; import "./IUniswapV2Pair.sol"; interface IPairWithDiscount is IUniswapV2Pair { function swapWithDiscount( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function swapFeeBase(address _address) external view returns (uint32); function swapFeeScalar(address _address) external view returns (uint32); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; interface IUniswapV2Callee { function uniswapV2Call( address sender, uint256 amount0, uint256 amount1, bytes calldata data ) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; import {IERC20} from "../../shared/interfaces/IERC20.sol"; interface IUniswapV2ERC20 is IERC20 { function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; interface IUniswapV2Pair { event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function swapFee() external view returns (uint32); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; // a library for performing various math operations library Math { function min(uint256 x, uint256 y) internal pure returns (uint256 z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) 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; } } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; // a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format)) // range: [0, 2**112 - 1] // resolution: 1 / 2**112 library UQ112x112 { error DivideByZero(); uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { unchecked { z = uint224(y) * Q112; // never overflows } } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { if (y == 0) { revert DivideByZero(); } unchecked { z = x / uint224(y); } } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; import "./interfaces/IUniswapV2ERC20.sol"; abstract contract UniswapV2ERC20 is IUniswapV2ERC20 { string public constant name = "CroSwap-LP"; uint8 public constant decimals = 18; uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint256) public nonces; constructor() { uint256 chainId; assembly { chainId := chainid() } DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256(bytes("1")), chainId, address(this) ) ); } function _mint(address to, uint256 value) internal { totalSupply += value; balanceOf[to] += value; emit Transfer(address(0), to, value); } function _burn(address from, uint256 value) internal { balanceOf[from] -= value; totalSupply -= value; emit Transfer(from, address(0), value); } function _approve( address owner, address spender, uint256 value ) private { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer( address from, address to, uint256 value ) private { balanceOf[from] -= value; balanceOf[to] += value; emit Transfer(from, to, value); } function approve(address spender, uint256 value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint256 value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom( address from, address to, uint256 value ) external returns (bool) { require(allowance[from][msg.sender] >= value, "ERC20: insufficient allowance"); allowance[from][msg.sender] -= value; _transfer(from, to, value); return true; } function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external { require(deadline >= block.timestamp, "UniswapV2: EXPIRED"); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)))); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, "UniswapV2: INVALID_SIGNATURE"); _approve(owner, spender, value); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; import "./interfaces/IUniswapV2Pair.sol"; import "./UniswapV2ERC20.sol"; import "./libraries/Math.sol"; import "./libraries/UQ112x112.sol"; import "./interfaces/IUniswapV2Callee.sol"; import {IUniswapV2Factory} from "./factory/interfaces/IUniswapV2Factory.sol"; import {IERC20} from "../shared/interfaces/IERC20.sol"; import {ISwapDiscount} from "./factory/interfaces/ISwapDiscount.sol"; import {IPairWithDiscount} from "./interfaces/IPairWithDiscount.sol"; contract UniswapV2Pair is IUniswapV2Pair, IPairWithDiscount, UniswapV2ERC20 { using UQ112x112 for uint224; uint256 public constant MINIMUM_LIQUIDITY = 10**3; bytes4 private constant SELECTOR = 0xa9059cbb; // bytes4(keccak256(bytes('transfer(address,uint256)'))); string private tokenSymbol; address public immutable factory; address public token0; address public token1; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint256 public price0CumulativeLast; uint256 public price1CumulativeLast; uint256 public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint256 private unlocked = 1; modifier lock() { require(unlocked == 1, "UniswapV2: LOCKED"); unlocked = 0; _; unlocked = 1; } function symbol() external view override returns (string memory) { return tokenSymbol; } function getReserves() public view returns ( uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast ) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer( address token, address to, uint256 value ) private { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "UniswapV2: TRANSFER_FAILED"); } constructor() { require(SELECTOR == IERC20(address(0)).transfer.selector); factory = msg.sender; } // called once by the factory at time of deployment function initialize( address _token0, address _token1, string memory _symbol ) external { require(msg.sender == factory, "UniswapV2: FORBIDDEN"); // sufficient check token0 = _token0; token1 = _token1; tokenSymbol = _symbol; } // update reserves and, on the first call per block, price accumulators function _update( uint256 _balance0, uint256 _balance1, uint112 _reserve0, uint112 _reserve1 ) private { require(_balance0 <= type(uint112).max && _balance1 <= type(uint112).max, "UniswapV2: OVERFLOW"); unchecked { uint32 blockTimestamp = uint32(block.timestamp % 2**32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(_balance0); reserve1 = uint112(_balance1); blockTimestampLast = blockTimestamp; } emit Sync(reserve0, reserve1); } // if fee is on, mint liquidity equivalent to 8/25th of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { IUniswapV2Factory _factory = IUniswapV2Factory(factory); feeOn = _factory.feesEnabled(); uint256 _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint256 rootK = Math.sqrt(uint256(_reserve0) * _reserve1); uint256 rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint256 numerator = totalSupply * (rootK - rootKLast) * 8; uint256 denominator = rootK * 17 + (rootKLast * 8); uint256 liquidity = numerator / denominator; if (liquidity > 0) _mint(_factory.getFeeReceiver(), liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint256 liquidity) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings uint256 _balance0 = balance0(); uint256 _balance1 = balance1(); uint256 amount0 = _balance0 - _reserve0; uint256 amount1 = _balance1 - _reserve1; bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = Math.sqrt(amount0 * amount1) - MINIMUM_LIQUIDITY; _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = Math.min((amount0 * _totalSupply) / _reserve0, (amount1 * _totalSupply) / _reserve1); } require(liquidity > 0, "UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED"); _mint(to, liquidity); _update(_balance0, _balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0) * reserve1; // reserve0 and reserve1 are up-to-date emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint256 amount0, uint256 amount1) { (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint256 _balance0 = balance0(); uint256 _balance1 = balance1(); uint256 liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint256 _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee require(_totalSupply != 0, "Total supply must be > 0"); amount0 = (liquidity * _balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = (liquidity * _balance1) / _totalSupply; // using balances ensures pro-rata distribution require(amount0 > 0 && amount1 > 0, "UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED"); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); _balance0 = balance0(); _balance1 = balance1(); _update(_balance0, _balance1, _reserve0, _reserve1); if (feeOn) kLast = uint256(reserve0) * reserve1; // reserve0 and reserve1 are up-to-date emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external lock { require(amount0Out > 0 || amount1Out > 0, "UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT"); (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, "UniswapV2: INSUFFICIENT_LIQUIDITY"); uint256 _balance0; uint256 _balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, "UniswapV2: INVALID_TO"); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data); _balance0 = balance0(); _balance1 = balance1(); } uint256 amount0In = _balance0 > _reserve0 - amount0Out ? _balance0 - (_reserve0 - amount0Out) : 0; uint256 amount1In = _balance1 > _reserve1 - amount1Out ? _balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, "UniswapV2: INSUFFICIENT_INPUT_AMOUNT"); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint32 _swapFee = swapFee(); uint256 balance0Adjusted = (_balance0 * 10000) - (amount0In * _swapFee); uint256 balance1Adjusted = (_balance1 * 10000) - (amount1In * _swapFee); require(balance0Adjusted * balance1Adjusted >= uint256(_reserve0) * (_reserve1 * 10000**2), "UniswapV2: K"); } _update(_balance0, _balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } function swapWithDiscount( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external lock { require(amount0Out > 0 || amount1Out > 0, "UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT"); (uint112 _reserve0, uint112 _reserve1, ) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, "UniswapV2: INSUFFICIENT_LIQUIDITY"); uint256 _balance0; uint256 _balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, "UniswapV2: INVALID_TO"); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data); _balance0 = balance0(); _balance1 = balance1(); } uint256 amount0In = _balance0 > _reserve0 - amount0Out ? _balance0 - (_reserve0 - amount0Out) : 0; uint256 amount1In = _balance1 > _reserve1 - amount1Out ? _balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, "UniswapV2: INSUFFICIENT_INPUT_AMOUNT"); { ISwapDiscount discount = ISwapDiscount(factory); // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint32 _swapFee = discount.swapFeeBase(to); uint32 _scalar = discount.feeScalar(to); uint256 balance0Adjusted = (_balance0 * _scalar) - (amount0In * _swapFee); uint256 balance1Adjusted = (_balance1 * _scalar) - (amount1In * _swapFee); require(balance0Adjusted * balance1Adjusted >= uint256(_reserve0) * (_reserve1 * _scalar**2), "UniswapV2: K"); } _update(_balance0, _balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } // gas optimized balanceOf -- avoids a redundant extcodesize check in addition to the returndatasize function balance0() private view returns (uint256) { (bool success, bytes memory data) = token0.staticcall(abi.encodeWithSelector(IERC20.balanceOf.selector, address(this))); require(success && data.length >= 32); return abi.decode(data, (uint256)); } // gas optimized balanceOf -- avoids a redundant extcodesize check in addition to the returndatasize function balance1() private view returns (uint256) { (bool success, bytes memory data) = token1.staticcall(abi.encodeWithSelector(IERC20.balanceOf.selector, address(this))); require(success && data.length >= 32); return abi.decode(data, (uint256)); } function swapFee() public view override returns (uint32) { IUniswapV2Factory _factory = IUniswapV2Factory(factory); return _factory.swapFee(); } function swapFeeBase(address _address) public view override returns (uint32) { ISwapDiscount discount = ISwapDiscount(factory); return discount.swapFeeBase(_address); } function swapFeeScalar(address _address) public view override returns (uint32) { ISwapDiscount discount = ISwapDiscount(factory); return discount.feeScalar(_address); } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer(_token0, to, balance0() - reserve0); _safeTransfer(_token1, to, balance1() - reserve1); } // force reserves to match balances function sync() external lock { uint256 _balance0 = balance0(); // gas savings uint256 _balance1 = balance1(); // gas savings require(_balance0 > 0 && _balance1 > 0, "UniswapV2#sync(): balance0 or balance1 is 0"); _update(_balance0, _balance1, reserve0, reserve1); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.15; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 800 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DivideByZero","type":"error"},{"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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"swapFeeBase","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"swapFeeScalar","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swapWithDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040526001600c5534801561001557600080fd5b50604080518082018252600a815269043726f537761702d4c560b41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f4baf01ae24b0821704dbe66fec88e7ebd893aaa0d5b8982e10cfa0ecec840a14818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152466080808301919091523060a0808401919091528451808403909101815260c090920190935280519101206003553390819052612bba6101326000396000818161048901528181610ac401528181610b4401528181610fa3015281816111760152818161177101526120c00152612bba6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80635a3d54931161010f578063a9059cbb116100a2578063d21220a711610071578063d21220a7146104ab578063d505accf146104be578063dd62ed3e146104d1578063fff6cae9146104fc57600080fd5b8063a9059cbb14610455578063ba9a7a5614610468578063bc25cf7714610471578063c45a01551461048457600080fd5b80637ecebe00116100de5780637ecebe00146103f257806389afcb441461041257806395d89b411461043a5780639e397b191461044257600080fd5b80635a3d5493146103ad5780636a627842146103b657806370a08231146103c95780637464fc3d146103e957600080fd5b806330adf81f116101875780634571e3a6116101565780634571e3a6146103765780634ced89061461038957806354cf2aeb1461039c5780635909c0d5146103a457600080fd5b806330adf81f14610304578063313ce5671461032b5780633644e51514610345578063418884651461034e57600080fd5b8063095ea7b3116101c3578063095ea7b31461028c5780630dfe1681146102af57806318160ddd146102da57806323b872dd146102f157600080fd5b8063022c0d9f146101ea57806306fdde03146101ff5780630902f1ac14610251575b600080fd5b6101fd6101f836600461246f565b610504565b005b61023b6040518060400160405280600a81526020017f43726f537761702d4c500000000000000000000000000000000000000000000081525081565b6040516102489190612529565b60405180910390f35b600854604080516001600160701b038084168252600160701b8404166020820152600160e01b90920463ffffffff1690820152606001610248565b61029f61029a36600461255c565b6109ca565b6040519015158152602001610248565b6006546102c2906001600160a01b031681565b6040516001600160a01b039091168152602001610248565b6102e360005481565b604051908152602001610248565b61029f6102ff366004612588565b6109e1565b6102e37f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610333601281565b60405160ff9091168152602001610248565b6102e360035481565b61036161035c3660046125c9565b610aa2565b60405163ffffffff9091168152602001610248565b6101fd6103843660046125fc565b610b39565b6101fd61039736600461246f565b610c0b565b610361611171565b6102e360095481565b6102e3600a5481565b6102e36103c43660046125c9565b6111ff565b6102e36103d73660046125c9565b60016020526000908152604090205481565b6102e3600b5481565b6102e36104003660046125c9565b60046020526000908152604090205481565b6104256104203660046125c9565b611442565b60408051928352602083019190915201610248565b61023b6116bd565b6103616104503660046125c9565b61174f565b61029f61046336600461255c565b6117a2565b6102e36103e881565b6101fd61047f3660046125c9565b6117af565b6102c27f000000000000000000000000000000000000000000000000000000000000000081565b6007546102c2906001600160a01b031681565b6101fd6104cc3660046126d2565b611868565b6102e36104df366004612749565b600260209081526000928352604080842090915290825290205481565b6101fd611a87565b600c5460011461054f5760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b60448201526064015b60405180910390fd5b6000600c55841515806105625750600084115b6105bc5760405162461bcd60e51b815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b6064820152608401610546565b6000806105ed6008546001600160701b0380821692600160701b83049091169163ffffffff600160e01b9091041690565b5091509150816001600160701b0316871080156106125750806001600160701b031686105b6106685760405162461bcd60e51b815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c495155494449546044820152605960f81b6064820152608401610546565b60065460075460009182916001600160a01b039182169190811690891682148015906106a65750806001600160a01b0316896001600160a01b031614155b6106f25760405162461bcd60e51b815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610546565b8a1561070357610703828a8d611b99565b891561071457610714818a8c611b99565b8615610781576040516304347a1760e21b81526001600160a01b038a16906310d1e85c9061074e9033908f908f908e908e90600401612782565b600060405180830381600087803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b505050505b610789611cb4565b9350610793611dac565b92505050600089856001600160701b03166107ae91906127e5565b83116107bb5760006107d8565b6107ce8a6001600160701b0387166127e5565b6107d890846127e5565b905060006107ef8a6001600160701b0387166127e5565b83116107fc576000610819565b61080f8a6001600160701b0387166127e5565b61081990846127e5565b9050600082118061082a5750600081115b6108825760405162461bcd60e51b8152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b6064820152608401610546565b600061088c611171565b905060006108a063ffffffff8316856127f8565b6108ac876127106127f8565b6108b691906127e5565b905060006108ca63ffffffff8416856127f8565b6108d6876127106127f8565b6108e091906127e5565b90506108f0886305f5e100612817565b6001600160701b0316896001600160701b031661090d91906127f8565b61091782846127f8565b10156109545760405162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b6044820152606401610546565b50505061096384848888611dda565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b60006109d7338484611fb8565b5060015b92915050565b6001600160a01b0383166000908152600260209081526040808320338452909152812054821115610a545760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610546565b6001600160a01b038416600090815260026020908152604080832033845290915281208054849290610a879084906127e5565b90915550610a98905084848461201a565b5060019392505050565b6040516301f9d02960e71b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009182169063fce81480906024015b602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190612846565b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb15760405162461bcd60e51b815260206004820152601460248201527f556e697377617056323a20464f5242494444454e0000000000000000000000006044820152606401610546565b600680546001600160a01b038086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560078054928516929091169190911790556005610c0582826128ef565b50505050565b600c54600114610c515760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b6044820152606401610546565b6000600c5584151580610c645750600084115b610cbe5760405162461bcd60e51b815260206004820152602560248201527f556e697377617056323a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b6064820152608401610546565b600080610cef6008546001600160701b0380821692600160701b83049091169163ffffffff600160e01b9091041690565b5091509150816001600160701b031687108015610d145750806001600160701b031686105b610d6a5760405162461bcd60e51b815260206004820152602160248201527f556e697377617056323a20494e53554646494349454e545f4c495155494449546044820152605960f81b6064820152608401610546565b60065460075460009182916001600160a01b03918216919081169089168214801590610da85750806001600160a01b0316896001600160a01b031614155b610df45760405162461bcd60e51b815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f00000000000000000000006044820152606401610546565b8a15610e0557610e05828a8d611b99565b8915610e1657610e16818a8c611b99565b8615610e83576040516304347a1760e21b81526001600160a01b038a16906310d1e85c90610e509033908f908f908e908e90600401612782565b600060405180830381600087803b158015610e6a57600080fd5b505af1158015610e7e573d6000803e3d6000fd5b505050505b610e8b611cb4565b9350610e95611dac565b92505050600089856001600160701b0316610eb091906127e5565b8311610ebd576000610eda565b610ed08a6001600160701b0387166127e5565b610eda90846127e5565b90506000610ef18a6001600160701b0387166127e5565b8311610efe576000610f1b565b610f118a6001600160701b0387166127e5565b610f1b90846127e5565b90506000821180610f2c5750600081115b610f845760405162461bcd60e51b8152602060048201526024808201527f556e697377617056323a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b6064820152608401610546565b604051639e397b1960e01b81526001600160a01b038a811660048301527f000000000000000000000000000000000000000000000000000000000000000091600091831690639e397b1990602401602060405180830381865afa158015610fef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110139190612846565b6040516301f9d02960e71b81526001600160a01b038d8116600483015291925060009184169063fce8148090602401602060405180830381865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190612846565b9050600061109763ffffffff8416876127f8565b6110a763ffffffff84168a6127f8565b6110b191906127e5565b905060006110c563ffffffff8516876127f8565b6110d563ffffffff85168a6127f8565b6110df91906127e5565b90506110ec600284612ac0565b6110fc9063ffffffff168b612817565b6001600160701b03168b6001600160701b031661111991906127f8565b61112382846127f8565b10156111605760405162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b6044820152606401610546565b505050505061096384848888611dda565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b03166354cf2aeb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f99190612846565b91505090565b6000600c546001146112475760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b6044820152606401610546565b6000600c8190556008546001600160701b0380821692600160701b909204169061126f611cb4565b9050600061127b611dac565b905060006112926001600160701b038616846127e5565b905060006112a96001600160701b038616846127e5565b905060006112b787876120bb565b600080549192508190036112f8576103e86112da6112d585876127f8565b612270565b6112e491906127e5565b98506112f360006103e86122e0565b61133f565b61133c6001600160701b03891661130f83876127f8565b6113199190612aeb565b6001600160701b03891661132d84876127f8565b6113379190612aeb565b612369565b98505b600089116113b55760405162461bcd60e51b815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4d494e5445440000000000000000000000000000000000000000000000006064820152608401610546565b6113bf8a8a6122e0565b6113cb86868a8a611dda565b81156113f4576008546113f0906001600160701b03600160701b8204811691166127f8565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c5460011461148b5760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b6044820152606401610546565b6000600c8190556008546006546007546001600160701b0380841694600160701b90940416926001600160a01b0392831692909116906114c9611cb4565b905060006114d5611dac565b306000908152600160205260408120549192506114f288886120bb565b600080549192508190036115485760405162461bcd60e51b815260206004820152601860248201527f546f74616c20737570706c79206d757374206265203e203000000000000000006044820152606401610546565b8061155386856127f8565b61155d9190612aeb565b9a508061156a85856127f8565b6115749190612aeb565b995060008b118015611586575060008a115b6115f85760405162461bcd60e51b815260206004820152602860248201527f556e697377617056323a20494e53554646494349454e545f4c4951554944495460448201527f595f4255524e45440000000000000000000000000000000000000000000000006064820152608401610546565b611602308461237f565b61160d878d8d611b99565b611618868d8c611b99565b611620611cb4565b945061162a611dac565b935061163885858b8b611dda565b81156116615760085461165d906001600160701b03600160701b8204811691166127f8565b600b555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b6060600580546116cc9061286c565b80601f01602080910402602001604051908101604052809291908181526020018280546116f89061286c565b80156117455780601f1061171a57610100808354040283529160200191611745565b820191906000526020600020905b81548152906001019060200180831161172857829003601f168201915b5050505050905090565b604051639e397b1960e01b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000091821690639e397b1990602401610af1565b60006109d733848461201a565b600c546001146117f55760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b6044820152606401610546565b6000600c556006546007546008546001600160a01b03928316929091169061183b90839085906001600160701b031661182c611cb4565b61183691906127e5565b611b99565b60085461185e9082908590600160701b90046001600160701b031661182c611dac565b50506001600c5550565b428410156118b85760405162461bcd60e51b815260206004820152601260248201527f556e697377617056323a204558504952454400000000000000000000000000006044820152606401610546565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761190b83612b0d565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161198492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156119ef573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611a255750886001600160a01b0316816001600160a01b0316145b611a715760405162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e4154555245000000006044820152606401610546565b611a7c898989611fb8565b505050505050505050565b600c54600114611acd5760405162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b6044820152606401610546565b6000600c819055611adc611cb4565b90506000611ae8611dac565b9050600082118015611afa5750600081115b611b6c5760405162461bcd60e51b815260206004820152602b60248201527f556e697377617056322373796e6328293a2062616c616e636530206f7220626160448201527f6c616e63653120697320300000000000000000000000000000000000000000006064820152608401610546565b600854611b9090839083906001600160701b0380821691600160701b900416611dda565b50506001600c55565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691611bf59190612b26565b6000604051808303816000865af19150503d8060008114611c32576040519150601f19603f3d011682016040523d82523d6000602084013e611c37565b606091505b5091509150818015611c61575080511580611c61575080806020019051810190611c619190612b42565b611cad5760405162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c45440000000000006044820152606401610546565b5050505050565b600654604051306024820152600091829182916001600160a01b0316906370a0823160e01b906044015b60408051601f198184030181529181526020820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611d349190612b26565b600060405180830381855afa9150503d8060008114611d6f576040519150601f19603f3d011682016040523d82523d6000602084013e611d74565b606091505b5091509150818015611d8857506020815110155b611d9157600080fd5b80806020019051810190611da59190612b64565b9250505090565b600754604051306024820152600091829182916001600160a01b0316906370a0823160e01b90604401611cde565b6001600160701b038411801590611df857506001600160701b038311155b611e445760405162461bcd60e51b815260206004820152601360248201527f556e697377617056323a204f564552464c4f57000000000000000000000000006044820152606401610546565b60085463ffffffff42811691600160e01b90048116820390811615801590611e7457506001600160701b03841615155b8015611e8857506001600160701b03831615155b15611f075763ffffffff8116611eb885600160701b6001600160701b038716025b6001600160e01b031690612402565b600980546001600160e01b03929092169290920201905563ffffffff8116611eef84600160701b6001600160701b03881602611ea9565b600a80546001600160e01b0392909216929092020190555b506008805463ffffffff92909216600160e01b026001600160e01b036001600160701b03878116600160701b9081027fffffffff000000000000000000000000000000000000000000000000000000009096168a83161795909517918216831793849055604080519382169282169290921783529390920490921660208301527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a150505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316600090815260016020526040812080548392906120429084906127e5565b90915550506001600160a01b0382166000908152600160205260408120805483929061206f908490612b7d565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161200d91815260200190565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663a64e4f8a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561211f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121439190612b42565b600b54909250821561225c5780156122575760006121706112d56001600160701b038088169089166127f8565b9050600061217d83612270565b90508082111561225457600061219382846127e5565b6000546121a091906127f8565b6121ab9060086127f8565b905060006121ba8360086127f8565b6121c58560116127f8565b6121cf9190612b7d565b905060006121dd8284612aeb565b9050801561225057612250876001600160a01b031663e8a353926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224a9190612b90565b826122e0565b5050505b50505b612268565b8015612268576000600b555b505092915050565b600060038211156122d1575080600061228a600283612aeb565b612295906001612b7d565b90505b818110156122cb579050806002816122b08186612aeb565b6122ba9190612b7d565b6122c49190612aeb565b9050612298565b50919050565b81156122db575060015b919050565b806000808282546122f19190612b7d565b90915550506001600160a01b0382166000908152600160205260408120805483929061231e908490612b7d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008183106123785781610b32565b5090919050565b6001600160a01b038216600090815260016020526040812080548392906123a79084906127e5565b92505081905550806000808282546123bf91906127e5565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161235d565b6000816001600160701b031660000361242e576040516301de42a960e41b815260040160405180910390fd5b6001600160701b0382166001600160e01b0384168161244f5761244f612ad5565b049392505050565b6001600160a01b038116811461246c57600080fd5b50565b60008060008060006080868803121561248757600080fd5b853594506020860135935060408601356124a081612457565b9250606086013567ffffffffffffffff808211156124bd57600080fd5b818801915088601f8301126124d157600080fd5b8135818111156124e057600080fd5b8960208285010111156124f257600080fd5b9699959850939650602001949392505050565b60005b83811015612520578181015183820152602001612508565b50506000910152565b6020815260008251806020840152612548816040850160208701612505565b601f01601f19169190910160400192915050565b6000806040838503121561256f57600080fd5b823561257a81612457565b946020939093013593505050565b60008060006060848603121561259d57600080fd5b83356125a881612457565b925060208401356125b881612457565b929592945050506040919091013590565b6000602082840312156125db57600080fd5b8135610b3281612457565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561261157600080fd5b833561261c81612457565b9250602084013561262c81612457565b9150604084013567ffffffffffffffff8082111561264957600080fd5b818601915086601f83011261265d57600080fd5b81358181111561266f5761266f6125e6565b604051601f8201601f19908116603f01168101908382118183101715612697576126976125e6565b816040528281528960208487010111156126b057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080600080600080600060e0888a0312156126ed57600080fd5b87356126f881612457565b9650602088013561270881612457565b95506040880135945060608801359350608088013560ff8116811461272c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561275c57600080fd5b823561276781612457565b9150602083013561277781612457565b809150509250929050565b6001600160a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109db576109db6127cf565b6000816000190483118215151615612812576128126127cf565b500290565b60006001600160701b038083168185168183048111821515161561283d5761283d6127cf565b02949350505050565b60006020828403121561285857600080fd5b815163ffffffff81168114610b3257600080fd5b600181811c9082168061288057607f821691505b6020821081036122cb57634e487b7160e01b600052602260045260246000fd5b601f8211156128ea57600081815260208120601f850160051c810160208610156128c75750805b601f850160051c820191505b818110156128e6578281556001016128d3565b5050505b505050565b815167ffffffffffffffff811115612909576129096125e6565b61291d81612917845461286c565b846128a0565b602080601f831160018114612952576000841561293a5750858301515b600019600386901b1c1916600185901b1785556128e6565b600085815260208120601f198616915b8281101561298157888601518255948401946001909101908401612962565b508582101561299f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156129ec578163ffffffff048211156129d2576129d26127cf565b808516156129df57918102915b93841c93908002906129b4565b509250929050565b600082612a03575060016109db565b81612a10575060006109db565b8160018114612a265760028114612a3057612a61565b60019150506109db565b60ff841115612a4157612a416127cf565b6001841b915063ffffffff821115612a5b57612a5b6127cf565b506109db565b5060208310610133831016604e8410600b8410161715612a98575081810a63ffffffff811115612a9357612a936127cf565b6109db565b612aa283836129af565b8063ffffffff04821115612ab857612ab86127cf565b029392505050565b6000610b3260ff841663ffffffff84166129f4565b634e487b7160e01b600052601260045260246000fd5b600082612b0857634e487b7160e01b600052601260045260246000fd5b500490565b600060018201612b1f57612b1f6127cf565b5060010190565b60008251612b38818460208701612505565b9190910192915050565b600060208284031215612b5457600080fd5b81518015158114610b3257600080fd5b600060208284031215612b7657600080fd5b5051919050565b808201808211156109db576109db6127cf565b600060208284031215612ba257600080fd5b8151610b328161245756fea164736f6c6343000810000a
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.