1
1
pragma solidity = 0.5.16 ;
2
2
3
- import './interfaces/IUniswapV2Factory.sol ' ;
4
3
import './UniswapV2Pair.sol ' ;
4
+ import "./Ownable.sol " ;
5
+
6
+ contract UniswapV2Factory is Ownable {
5
7
6
- contract UniswapV2Factory is IUniswapV2Factory {
7
- address public feeTo;
8
- address public feeToSetter;
9
8
address public constant BNB = 0x0000000000000000000000000000000000000001 ;
10
9
11
10
mapping (address => mapping (address => address )) public getPair;
12
11
address [] public allPairs;
13
12
13
+ mapping (address => bool ) isAllowedAddress;
14
14
event PairCreated (address indexed token0 , address indexed token1 , address pair , uint );
15
15
16
- constructor (address _feeToSetter ) public {
17
- feeToSetter = _feeToSetter;
16
+ function changeAllowedAddress (address _which ,bool _bool ) external onlyOwner returns (bool ){
17
+ isAllowedAddress[_which] = _bool;
18
+ return true ;
18
19
}
19
20
21
+
20
22
function allPairsLength () external view returns (uint ) {
21
23
return allPairs.length ;
22
24
}
@@ -38,18 +40,22 @@ contract UniswapV2Factory is IUniswapV2Factory {
38
40
emit PairCreated (token0, token1, pair, allPairs.length );
39
41
}
40
42
41
- function setFeeTo (address _feeTo ) external {
42
- require (msg .sender == feeToSetter, 'UniswapV2: FORBIDDEN ' );
43
- feeTo = _feeTo;
44
- }
43
+ function cratePool (address tokenA , address tokenB , uint amountA , uint amountB , address payable to ) external payable returns (address pair , uint liquidity ) {
44
+ pair = createPair (tokenA, tokenB);
45
+ bool isBNB;
46
+ if (tokenA == BNB) isBNB = true ;
47
+ else safeTransferFrom (tokenA, msg .sender , pair, amountA);
45
48
46
- function setFeeToSetter (address _feeToSetter ) external {
47
- require (msg .sender == feeToSetter, 'UniswapV2: FORBIDDEN ' );
48
- feeToSetter = _feeToSetter;
49
+ if (tokenB == BNB) isBNB = true ;
50
+ else safeTransferFrom (tokenB, msg .sender , pair, amountB);
51
+
52
+ if (isBNB) liquidity = IUniswapV2Pair (pair).mint.value (msg .value )(to);
53
+ else liquidity = IUniswapV2Pair (pair).mint (to);
49
54
}
50
55
51
- function cratePool (address tokenA , address tokenB , uint amountA , uint amountB , address payable to ) external payable returns (address pair , uint liquidity ) {
52
- pair = createPair (tokenA, tokenB);
56
+ function mint (address tokenA , address tokenB , uint amountA , uint amountB , address payable to ) external payable returns (uint liquidity ) {
57
+ require (isAllowedAddress[msg .sender ],"ERR_ALLOWED_ADDRESS_ONLY " );
58
+ address pair = getPair[tokenA][tokenB];
53
59
bool isBNB;
54
60
if (tokenA == BNB) isBNB = true ;
55
61
else safeTransferFrom (tokenA, msg .sender , pair, amountA);
0 commit comments