Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
- Contract name:
- EnergiswapPairProxy
- Optimization enabled
- true
- Compiler version
- v0.5.16+commit.9c3226ce
- Optimization runs
- 200
- EVM Version
- petersburg
- Verified at
- 2021-09-24 00:02:23.048414Z
Constructor Arguments
0000000000000000000000002d4eb90118f6fba1191f26eb39f7ff0573f63c220000000000000000000000005e20ef450d204809f23cf1681d8504bc3a18369a0000000000000000000000008b55fddbeeab53fbcf272b73f9466e69d922fdcd
Arg [0] (address) : 0x2d4eb90118f6fba1191f26eb39f7ff0573f63c22
Arg [1] (address) : 0x5e20ef450d204809f23cf1681d8504bc3a18369a
Arg [2] (address) : 0x8b55fddbeeab53fbcf272b73f9466e69d922fdcd
Contract source code
// File: ../energiswapPairsManager/IEnergiswapPairsManager.sol
// Copyright (C) 2020 Energi Core
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity >=0.5.0;
interface IEnergiswapPairsManager {
event Mint(address indexed pair, address indexed sender, uint amount0, uint amount1, address indexed to);
event Burn(address indexed pair, address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(address indexed sender, uint112 reserve0, uint112 reserve1);
function _storage() external view returns (address);
function destroy(address _newImpl) external;
function migrate(address _oldImpl) external;
function registerPair(address _pairProxy, address _pairStorage, address _erc20Storage) external;
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function approve(address spender, uint value) external returns (bool result);
function transfer(address to, uint value) external returns (bool result);
function transferFrom(address from, address to, uint value) external returns (bool result);
function redeemLiquidity(address router, address owner, uint value) external returns (bool result);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function emitApproval(address pair, address owner, address spender, uint value) external;
function emitTransfer(address pair, address from, address to, uint value) external;
function factory() external view returns (address _factory);
function getReserves(address pair) external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast);
function token0(address pair) external view returns (address _token0);
function token1(address pair) external view returns (address _token1);
function price0CumulativeLast(address pair) external view returns (uint _price0CumulativeLast);
function price1CumulativeLast(address pair) external view returns (uint _price1CumulativeLast);
function kLast(address pair) external view returns (uint _kLast);
}
// File: IEnergiswapPairProxy.sol
// Copyright 2019 The Energi Core Authors
// This file is part of Energi Core.
//
// Energi Core is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Energi Core is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Energi Core. If not, see <http://www.gnu.org/licenses/>.
// Energi Governance system is the fundamental part of Energi Core.
// NOTE: It's not allowed to change the compiler due to byte-to-byte
// match requirement.
pragma solidity >=0.5.0;
/**
* Genesis version of IGovernedProxy interface.
*
* Base Consensus interface for upgradable contracts proxy.
* Unlike common approach, the implementation is NOT expected to be
* called through delegatecall() to minimize risks of shared storage.
*
* NOTE: it MUST NOT change after blockchain launch!
*/
interface IEnergiswapPairProxy {
function pairsManagerProxy() external view returns (address);
function pairsERC20Proxy() external view returns (address);
function routerProxy() external view returns (address);
function emitMint(address sender, uint amount0, uint amount1, address to) external;
function emitBurn(address sender, uint amount0, uint amount1, address to) external;
function emitSwap(address sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address to) external;
function emitSync(uint112 reserve0, uint112 reserve1) external;
function emitApproval(address owner, address spender, uint value) external;
function emitTransfer(address from, address to, uint value) external;
function safeTransfer(address token, address to, uint value, bytes4 SELECTOR) external;
function getReserves() external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast);
function token0() external view returns (address _token0);
function token1() external view returns (address _token1);
function price0CumulativeLast() external view returns (uint _price0CumulativeLast);
function price1CumulativeLast() external view returns (uint _price1CumulativeLast);
function kLast() external view returns (uint _kLast);
function name() external view returns(string memory _name);
function symbol() external view returns(string memory _symbol);
function decimals() external view returns(uint8 _decimals);
function totalSupply() external view returns (uint _totalSupply);
function balanceOf(address account) external view returns (uint _balance);
function allowance(address owner, address spender) external view returns (uint _allowance);
function nonce(address owner) external view returns(uint _nonce);
function () external payable;
}
// File: ../energiswapPairsERC20/IEnergiswapPairsERC20.sol
// Copyright (C) 2020 Energi Core
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity >=0.5.0;
interface IEnergiswapPairsERC20 {
function initialized() external view returns (bool);
function _storage() external view returns (address);
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function initialize(address _pairsManagerProxy) external;
function destroy(address _newImpl) external;
function migrate(address _oldImpl) external;
function registerPair(address _pairProxy, address _erc20Storage) external;
function _mint(address pair, address to, uint value) external;
function _burn(address pair, address from, uint value) external;
function approve(address pair, address owner, address spender, uint value) external returns (bool);
function transfer(address pair, address from, address to, uint value) external returns (bool);
function transferFrom(address pair, address spender, address from, address to, uint value) external returns (bool);
function permit(address pair, address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
function nonce(address pair, address owner) external view returns(uint _nonce);
function name() external view returns(string memory _name);
function symbol() external view returns(string memory _symbol);
function decimals() external view returns(uint8 _decimals);
function totalSupply(address pair) external view returns (uint _totalSupply);
function balanceOf(address pair, address account) external view returns (uint _balance);
function allowance(address pair, address owner, address spender) external view returns (uint _allowance);
}
// File: ../interfaces/IGovernedContract.sol
// Copyright 2019 The Energi Core Authors
// This file is part of Energi Core.
//
// Energi Core is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Energi Core is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Energi Core. If not, see <http://www.gnu.org/licenses/>.
// Energi Governance system is the fundamental part of Energi Core.
// NOTE: It's not allowed to change the compiler due to byte-to-byte
// match requirement.
/**
* Genesis version of GovernedContract interface.
*
* Base Consensus interface for upgradable contracts.
* Unlike common approach, the implementation is NOT expected to be
* called through delegatecall() to minimize risks of shared storage.
*
* NOTE: it MUST NOT change after blockchain launch!
*/
interface IGovernedContract {
// Return actual proxy address for secure validation
function proxy() external returns(address);
// It must check that the caller is the proxy
// and copy all required data from the old address.
function migrate(IGovernedContract _oldImpl) external;
// It must check that the caller is the proxy
// and self destruct to the new address.
function destroy(IGovernedContract _newImpl) external;
// function () external payable; // This line (from original Energi IGovernedContract) is commented because it
// makes truffle migrations fail
}
// File: ../interfaces/IProposal.sol
// Copyright 2019 The Energi Core Authors
// This file is part of Energi Core.
//
// Energi Core is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Energi Core is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Energi Core. If not, see <http://www.gnu.org/licenses/>.
// Energi Governance system is the fundamental part of Energi Core.
// NOTE: It's not allowed to change the compiler due to byte-to-byte
// match requirement.
pragma solidity >=0.5.0;
interface IProposal {
function parent() external view returns(address);
function created_block() external view returns(uint);
function deadline() external view returns(uint);
function fee_payer() external view returns(address payable);
function fee_amount() external view returns(uint);
function accepted_weight() external view returns(uint);
function rejected_weight() external view returns(uint);
function total_weight() external view returns(uint);
function quorum_weight() external view returns(uint);
function isFinished() external view returns(bool);
function isAccepted() external view returns(bool);
function withdraw() external;
function destroy() external;
function collect() external;
function voteAccept() external;
function voteReject() external;
function setFee() external payable;
function canVote(address owner) external view returns(bool);
}
// File: ../interfaces/IUpgradeProposal.sol
// Copyright 2019 The Energi Core Authors
// This file is part of Energi Core.
//
// Energi Core is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Energi Core is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Energi Core. If not, see <http://www.gnu.org/licenses/>.
// Energi Governance system is the fundamental part of Energi Core.
// NOTE: It's not allowed to change the compiler due to byte-to-byte
// match requirement.
pragma solidity >=0.5.0;
/**
* Interface of UpgradeProposal
*/
contract IUpgradeProposal is IProposal {
function impl() external view returns(IGovernedContract);
}
// File: ../interfaces/IGovernedProxy.sol
// Copyright 2019 The Energi Core Authors
// This file is part of Energi Core.
//
// Energi Core is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Energi Core is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Energi Core. If not, see <http://www.gnu.org/licenses/>.
// Energi Governance system is the fundamental part of Energi Core.
// NOTE: It's not allowed to change the compiler due to byte-to-byte
// match requirement.
pragma solidity >=0.5.0;
//pragma experimental SMTChecker;
/**
* Genesis version of IGovernedProxy interface.
*
* Base Consensus interface for upgradable contracts proxy.
* Unlike common approach, the implementation is NOT expected to be
* called through delegatecall() to minimize risks of shared storage.
*
* NOTE: it MUST NOT change after blockchain launch!
*/
interface IGovernedProxy {
event UpgradeProposal(
IGovernedContract indexed impl,
IUpgradeProposal proposal
);
event Upgraded(
IGovernedContract indexed impl,
IUpgradeProposal proposal
);
function impl() external view returns(IGovernedContract);
function proposeUpgrade(IGovernedContract _newImpl, uint _period)
external payable returns(IUpgradeProposal);
function upgrade(IUpgradeProposal _proposal) external;
function upgradeProposalImpl(IUpgradeProposal _proposal) external view returns(IGovernedContract new_impl);
function listUpgradeProposals() external view returns(IUpgradeProposal[] memory proposals);
function collectUpgradeProposal(IUpgradeProposal _proposal) external;
function () external payable;
}
// File: EnergiswapPairProxy.sol
// Copyright (C) 2020 Energi Core
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
pragma solidity = 0.5.16;
/**
* SC-9: This contract has no chance of being updated. It must be stupid simple.
*
* If another upgrade logic is required in the future - it can be done as proxy stage II.
*/
contract EnergiswapPairProxy is IEnergiswapPairProxy {
address public pairsManagerProxy;
address public pairsERC20Proxy;
address public routerProxy;
function pairsManager() private view returns(address _pairsManager) {
_pairsManager = address(IGovernedProxy(address(uint160(pairsManagerProxy))).impl());
}
function pairsERC20() private view returns(address _pairsERC20) {
_pairsERC20 = address(IGovernedProxy(address(uint160(pairsERC20Proxy))).impl());
}
function router() private view returns(address _router) {
_router = address(IGovernedProxy(address(uint160(routerProxy))).impl());
}
modifier senderOrigin {
// solium-disable-next-line security/no-tx-origin
require(
tx.origin == msg.sender
|| msg.sender == router(),
"EnergiswapPairGovernedProxy: FORBIDDEN, not a direct call or a call from router");
_;
}
modifier requireManager {
require(msg.sender == pairsManager(), "EnergiswapPairGovernedProxy: FORBIDDEN, not pairsManager");
_;
}
event Mint(address indexed sender, uint amount0, uint amount1, address indexed to);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
constructor(address _routerProxy, address _pairsManagerProxy, address _pairsERC20Proxy) public {
routerProxy = _routerProxy;
pairsManagerProxy = _pairsManagerProxy;
pairsERC20Proxy = _pairsERC20Proxy;
}
// Emit Mint event
function emitMint(address sender, uint amount0, uint amount1, address to) external requireManager {
emit Mint(sender, amount0, amount1, to);
}
// Emit Burn event
function emitBurn(address sender, uint amount0, uint amount1, address to) external requireManager {
emit Burn(sender, amount0, amount1, to);
}
// Emit Swap event
function emitSwap(address sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address to) external requireManager {
emit Swap(sender, amount0In, amount1In, amount0Out, amount1Out, to);
}
// Emit Sync event
function emitSync(uint112 reserve0, uint112 reserve1) external requireManager {
emit Sync(reserve0, reserve1);
}
// Emit Approval event
function emitApproval(address owner, address spender, uint value) external requireManager {
emit Approval(owner, spender, value);
}
// Emit Transfer event
function emitTransfer(address from, address to, uint value) external requireManager {
emit Transfer(from, to, value);
}
// EnergiswapPairGovernedProxy holds pair assets. This function can be called by EnegiswapPairsManager to transfer funds
function safeTransfer(address token, address to, uint value, bytes4 SELECTOR) external requireManager {
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'EnergiswapPairGovernedProxy: TRANSFER_FAILED');
}
// Expose Pair getter functions
function getReserves() external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
(_reserve0, _reserve1, _blockTimestampLast) = IEnergiswapPairsManager(pairsManager()).getReserves(address(this));
}
function token0() external view returns (address _token0) {
_token0 = IEnergiswapPairsManager(pairsManager()).token0(address(this));
}
function token1() external view returns (address _token1) {
_token1 = IEnergiswapPairsManager(pairsManager()).token1(address(this));
}
function price0CumulativeLast() external view returns (uint _price0CumulativeLast) {
_price0CumulativeLast = IEnergiswapPairsManager(pairsManager()).price0CumulativeLast(address(this));
}
function price1CumulativeLast() external view returns (uint _price1CumulativeLast) {
_price1CumulativeLast = IEnergiswapPairsManager(pairsManager()).price1CumulativeLast(address(this));
}
function kLast() external view returns (uint _kLast) {
_kLast = IEnergiswapPairsManager(pairsManager()).kLast(address(this));
}
// Expose ERC20 getter functions
function name() external view returns(string memory _name) {
_name = IEnergiswapPairsERC20(pairsERC20()).name();
}
function symbol() external view returns(string memory _symbol) {
_symbol = IEnergiswapPairsERC20(pairsERC20()).symbol();
}
function decimals() external view returns(uint8 _decimals) {
_decimals = IEnergiswapPairsERC20(pairsERC20()).decimals();
}
function totalSupply() external view returns (uint _totalSupply) {
_totalSupply = IEnergiswapPairsERC20(pairsERC20()).totalSupply(address(this));
}
function balanceOf(address account) external view returns (uint _balance) {
_balance = IEnergiswapPairsERC20(pairsERC20()).balanceOf(address(this), account);
}
function allowance(address owner, address spender) external view returns (uint _allowance) {
_allowance = IEnergiswapPairsERC20(pairsERC20()).allowance(address(this), owner, spender);
}
function nonce(address owner) external view returns(uint _nonce) {
_nonce = IEnergiswapPairsERC20(pairsERC20()).nonce(address(this), owner);
}
/**
* Proxy all other calls to pairsManager.
*/
function ()
external
payable
senderOrigin
{
// SECURITY: senderOrigin() modifier is mandatory
IEnergiswapPairsManager _pairsManager = IEnergiswapPairsManager(pairsManager());
// solium-disable-next-line security/no-inline-assembly
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize())
let res := call(sub(gas(), 10000), _pairsManager, callvalue(), ptr, calldatasize(), 0, 0)
// NOTE: returndatasize should allow repeatable calls
// what should save one opcode.
returndatacopy(ptr, 0, returndatasize())
switch res
case 0 {
revert(ptr, returndatasize())
}
default {
return(ptr, returndatasize())
}
}
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"address","name":"_routerProxy","internalType":"address"},{"type":"address","name":"_pairsManagerProxy","internalType":"address"},{"type":"address","name":"_pairsERC20Proxy","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"uint256","name":"amount0","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount1","internalType":"uint256","indexed":false},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"uint256","name":"amount0","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount1","internalType":"uint256","indexed":false},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"uint256","name":"amount0In","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount1In","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount0Out","internalType":"uint256","indexed":false},{"type":"uint256","name":"amount1Out","internalType":"uint256","indexed":false},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Sync","inputs":[{"type":"uint112","name":"reserve0","internalType":"uint112","indexed":false},{"type":"uint112","name":"reserve1","internalType":"uint112","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"fallback","stateMutability":"payable","payable":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_allowance","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_balance","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":"_decimals","internalType":"uint8"}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitApproval","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitBurn","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"uint256","name":"amount0","internalType":"uint256"},{"type":"uint256","name":"amount1","internalType":"uint256"},{"type":"address","name":"to","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitMint","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"uint256","name":"amount0","internalType":"uint256"},{"type":"uint256","name":"amount1","internalType":"uint256"},{"type":"address","name":"to","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitSwap","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"uint256","name":"amount0In","internalType":"uint256"},{"type":"uint256","name":"amount1In","internalType":"uint256"},{"type":"uint256","name":"amount0Out","internalType":"uint256"},{"type":"uint256","name":"amount1Out","internalType":"uint256"},{"type":"address","name":"to","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitSync","inputs":[{"type":"uint112","name":"reserve0","internalType":"uint112"},{"type":"uint112","name":"reserve1","internalType":"uint112"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"emitTransfer","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint112","name":"_reserve0","internalType":"uint112"},{"type":"uint112","name":"_reserve1","internalType":"uint112"},{"type":"uint32","name":"_blockTimestampLast","internalType":"uint32"}],"name":"getReserves","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_kLast","internalType":"uint256"}],"name":"kLast","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"_name","internalType":"string"}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_nonce","internalType":"uint256"}],"name":"nonce","inputs":[{"type":"address","name":"owner","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pairsERC20Proxy","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pairsManagerProxy","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_price0CumulativeLast","internalType":"uint256"}],"name":"price0CumulativeLast","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_price1CumulativeLast","internalType":"uint256"}],"name":"price1CumulativeLast","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"routerProxy","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"safeTransfer","inputs":[{"type":"address","name":"token","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"bytes4","name":"SELECTOR","internalType":"bytes4"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"_symbol","internalType":"string"}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"_token0","internalType":"address"}],"name":"token0","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"_token1","internalType":"address"}],"name":"token1","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_totalSupply","internalType":"uint256"}],"name":"totalSupply","inputs":[],"constant":true}]
Deployed ByteCode
0x6080604052600436106101405760003560e01c806370a08231116100b6578063b2cef4ef1161006f578063b2cef4ef146104f0578063d1841a3714610543578063d21220a71461058a578063dd62ed3e1461059f578063e634c486146105da578063fe06655c1461061557610140565b806370a082311461040457806370ae92d2146104375780637464fc3d1461046a5780637df172a61461047f5780638ad6c3c91461049457806395d89b41146104db57610140565b8063313ce56711610108578063313ce567146103425780633f397ebe1461036d5780635687f2b8146103825780635909c0d5146103c55780635a3d5493146103da578063651ddd64146103ef57610140565b806306fdde03146101d65780630902f1ac146102605780630dfe1681146102a557806318160ddd146102d657806323de6651146102fd575b323314806101665750610151610669565b6001600160a01b0316336001600160a01b0316145b6101a15760405162461bcd60e51b815260040180806020018281038252604f8152602001806113cd604f913960600191505060405180910390fd5b60006101ab6106df565b90506040513660008237600080368334866127105a03f13d6000833e8080156101d2573d83f35b3d83fd5b3480156101e257600080fd5b506101eb61072e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022557818101518382015260200161020d565b50505050905090810190601f1680156102525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026c57600080fd5b50610275610862565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b3480156102b157600080fd5b506102ba610907565b604080516001600160a01b039092168252519081900360200190f35b3480156102e257600080fd5b506102eb610966565b60408051918252519081900360200190f35b34801561030957600080fd5b506103406004803603606081101561032057600080fd5b506001600160a01b038135811691602081013590911690604001356109c5565b005b34801561034e57600080fd5b50610357610a6c565b6040805160ff9092168252519081900360200190f35b34801561037957600080fd5b506102ba610aae565b34801561038e57600080fd5b50610340600480360360608110156103a557600080fd5b506001600160a01b03813581169160208101359091169060400135610abd565b3480156103d157600080fd5b506102eb610b64565b3480156103e657600080fd5b506102eb610bc3565b3480156103fb57600080fd5b506102ba610c22565b34801561041057600080fd5b506102eb6004803603602081101561042757600080fd5b50356001600160a01b0316610c31565b34801561044357600080fd5b506102eb6004803603602081101561045a57600080fd5b50356001600160a01b0316610cbe565b34801561047657600080fd5b506102eb610d19565b34801561048b57600080fd5b506102ba610d78565b3480156104a057600080fd5b50610340600480360360808110156104b757600080fd5b506001600160a01b0381358116916020810135916040820135916060013516610d87565b3480156104e757600080fd5b506101eb610e37565b3480156104fc57600080fd5b50610340600480360360c081101561051357600080fd5b506001600160a01b03813581169160208101359160408201359160608101359160808201359160a0013516610e79565b34801561054f57600080fd5b506103406004803603608081101561056657600080fd5b506001600160a01b0381358116916020810135916040820135916060013516610f2f565b34801561059657600080fd5b506102ba610fdf565b3480156105ab57600080fd5b506102eb600480360360408110156105c257600080fd5b506001600160a01b038135811691602001351661103e565b3480156105e657600080fd5b50610340600480360360408110156105fd57600080fd5b506001600160701b03813581169160200135166110d4565b34801561062157600080fd5b506103406004803603608081101561063857600080fd5b5080356001600160a01b0390811691602081013590911690604081013590606001356001600160e01b031916611174565b60025460408051638abf607760e01b815290516000926001600160a01b031691638abf6077916004808301926020929190829003018186803b1580156106ae57600080fd5b505afa1580156106c2573d6000803e3d6000fd5b505050506040513d60208110156106d857600080fd5b5051919050565b60008060009054906101000a90046001600160a01b03166001600160a01b0316638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ae57600080fd5b6060610738611323565b6001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b15801561077057600080fd5b505afa158015610784573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107ad57600080fd5b81019080805160405193929190846401000000008211156107cd57600080fd5b9083019060208201858111156107e257600080fd5b82516401000000008111828201881017156107fc57600080fd5b82525081516020918201929091019080838360005b83811015610829578181015183820152602001610811565b50505050905090810190601f1680156108565780820380516001836020036101000a031916815260200191505b50604052505050905090565b600080600061086f6106df565b6001600160a01b0316633e99c1e4306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060606040518083038186803b1580156108c457600080fd5b505afa1580156108d8573d6000803e3d6000fd5b505050506040513d60608110156108ee57600080fd5b5080516020820151604090920151909591945092509050565b60006109116106df565b6001600160a01b03166376bf39a3306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6000610970611323565b6001600160a01b031663e4dc2aa4306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6109cd6106df565b6001600160a01b0316336001600160a01b031614610a1c5760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000610a76611323565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ae57600080fd5b6001546001600160a01b031681565b610ac56106df565b6001600160a01b0316336001600160a01b031614610b145760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000610b6e6106df565b6001600160a01b031663e267aa63306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6000610bcd6106df565b6001600160a01b031663db1d5a96306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6000546001600160a01b031681565b6000610c3b611323565b60408051633de222bb60e21b81523060048201526001600160a01b0385811660248301529151929091169163f7888aec91604480820192602092909190829003018186803b158015610c8c57600080fd5b505afa158015610ca0573d6000803e3d6000fd5b505050506040513d6020811015610cb657600080fd5b505192915050565b6000610cc8611323565b6040805163a719536760e01b81523060048201526001600160a01b0385811660248301529151929091169163a719536791604480820192602092909190829003018186803b158015610c8c57600080fd5b6000610d236106df565b6001600160a01b0316638529656d306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6002546001600160a01b031681565b610d8f6106df565b6001600160a01b0316336001600160a01b031614610dde5760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b806001600160a01b0316846001600160a01b03167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968585604051808381526020018281526020019250505060405180910390a350505050565b6060610e41611323565b6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561077057600080fd5b610e816106df565b6001600160a01b0316336001600160a01b031614610ed05760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b60408051868152602081018690528082018590526060810184905290516001600160a01b0380841692908916917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a3505050505050565b610f376106df565b6001600160a01b0316336001600160a01b031614610f865760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b806001600160a01b0316846001600160a01b03167fdbba30eb0402b389513e87f51f4db2db80bed454384ec6925a24097c3548a02a8585604051808381526020018281526020019250505060405180910390a350505050565b6000610fe96106df565b6001600160a01b03166337823795306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106ae57600080fd5b6000611048611323565b6040805163927da10560e01b81523060048201526001600160a01b03868116602483015285811660448301529151929091169163927da10591606480820192602092909190829003018186803b1580156110a157600080fd5b505afa1580156110b5573d6000803e3d6000fd5b505050506040513d60208110156110cb57600080fd5b50519392505050565b6110dc6106df565b6001600160a01b0316336001600160a01b03161461112b5760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b604080516001600160701b0380851682528316602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a15050565b61117c6106df565b6001600160a01b0316336001600160a01b0316146111cb5760405162461bcd60e51b81526004018080602001828103825260388152602001806113696038913960400191505060405180910390fd5b604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180516001600160e01b03166001600160e01b0319861617815292518251600094606094938a169392918291908083835b6020831061124b5780518252601f19909201916020918201910161122c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146112ad576040519150601f19603f3d011682016040523d82523d6000602084013e6112b2565b606091505b50915091508180156112e05750805115806112e057508080602001905160208110156112dd57600080fd5b50515b61131b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806113a1602c913960400191505060405180910390fd5b505050505050565b60015460408051638abf607760e01b815290516000926001600160a01b031691638abf6077916004808301926020929190829003018186803b1580156106ae57600080fdfe456e657267697377617050616972476f7665726e656450726f78793a20464f5242494444454e2c206e6f742070616972734d616e61676572456e657267697377617050616972476f7665726e656450726f78793a205452414e534645525f4641494c4544456e657267697377617050616972476f7665726e656450726f78793a20464f5242494444454e2c206e6f742061206469726563742063616c6c206f7220612063616c6c2066726f6d20726f75746572a265627a7a7231582010ab97f5e076ea659e9625373254266f417af2b549ad8d90a06eced41c37361264736f6c63430005100032