Hello
I'm having trouble testing the contract through sopelia
I don't know if uniswaprouter V2 supports sepolia
Because the deployment of the contract still fails
I wanted to test through goerli but the faucets don't work
I will be glad if someone helps me
When someone has time to look at my contract
1 Like
Rahaman
September 25, 2023, 5:21pm
2
Please provide the code of the token contract you're trying to deploy and test.
1 Like
Hi, i can help you. let me know your codebase.
```// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
// CustomToken inherits from ERC20, ERC20Burnable, ReentrancyGuard, and Ownable
contract CustomToken is ERC20, ERC20Burnable, ReentrancyGuard, Ownable {
// Wallet addresses for marketing and development
address public marketingWallet;
address public developerWallet;
// Uniswap router and pair addresses
address public uniswapV2RouterAddress;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
// Tax rate for transactions and total supply
uint256 public taxRate = 5;
uint256 public constant TOTAL_SUPPLY = 450000000000000 * 10**18;
uint256 public minEthBeforeLiquidity = 0.05 ether;
// Constructor to initialize the token
constructor(
string memory name,
string memory symbol,
address _marketingWallet,
address _developerWallet,
address _uniswapV2RouterAddress
) ERC20(name, symbol) {
marketingWallet = _marketingWallet;
developerWallet = _developerWallet;
uniswapV2RouterAddress = _uniswapV2RouterAddress;
// Initialize Uniswap router and create a pair
uniswapV2Router = IUniswapV2Router02(uniswapV2RouterAddress);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
// Mint the total supply to the sender
_mint(msg.sender, TOTAL_SUPPLY);
}
// Override the transfer function to include tax and distribution
function _transfer(address sender, address recipient, uint256 amount) internal override nonReentrant {
uint256 taxAmount = (amount * taxRate) / 100;
uint256 marketingAmount = (taxAmount * 49) / 100; // 49% of the tax
uint256 liquidityAmount = (taxAmount * 50) / 100; // 50% of the tax
uint256 developerAmount = (taxAmount * 1) / 100; // 1% of the tax
// Transfer tax to marketing and developer wallets
super._transfer(sender, marketingWallet, marketingAmount);
super._transfer(sender, developerWallet, developerAmount);
// Add liquidity if the contract balance is above the minimum
if (address(this).balance >= minEthBeforeLiquidity) {
addLiquidity(liquidityAmount);
}
// Transfer the remaining amount to the recipient
uint256 sendAmount = amount - taxAmount;
super._transfer(sender, recipient, sendAmount);
}
// Function to add liquidity to Uniswap
function addLiquidity(uint256 tokenAmount) internal onlyOwner {
uint256 half = tokenAmount / 2;
uint256 otherHalf = tokenAmount - half;
uint256 balanceBeforeSwap = address(this).balance;
swapTokensForEth(half);
uint256 ethReceived = address(this).balance - balanceBeforeSwap;
// Add liquidity to Uniswap
uniswapV2Router.addLiquidityETH{value: ethReceived}(address(this), otherHalf, 0, 0, address(this), block.timestamp);
}
// Function to swap tokens for ETH
function swapTokensForEth(uint256 tokenAmount) internal {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
// Approve the router to spend tokens
_approve(address(this), uniswapV2RouterAddress, tokenAmount);
// Perform the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
}
}
please, if someone can check it, I will be grateful
Plz share your contract codebase so that i can check.
jayito
September 26, 2023, 4:43pm
8
I guess there was a net problem when you tried to deploy contract.
I deployed your contract to the goerli successfully.
The Contract Address 0xa6a907f9438a49f60eb198b2f2c73098aee7165f page allows users to view the source code, transactions, balances, and analytics for the contract address. Users can also interact and make transactions to the contract directly on...
1 Like
yes, I see, thank you, I want to ask if the tax test will be done?
the point is that the 2% tax for liquidity is set in such a way that the 2% tax is 1% automatically converted to eth and then sent to liquidity but only when it reaches 0.05 eth due to the gas load.