Through the use of a 4% sell tax/reflection, 4 buckets are funded. There is no buy tax.
contract ASX is ERC20, Ownable2Step {
using SafeMath for uint256;
uint256 public RewardTokenFee = 1;
uint256 public liquidityFee = 1;
uint256 public marketingFee = 2;
uint256 public totalFees = RewardTokenFee.add(liquidityFee).add(marketingFee);
bool public swapEnabled = true;
bool public taxEnabled = true;
mapping (address => bool) private _isExcludedFromFees;
event RewardTokenFeeUpdated(uint256 indexed newRewardTokenFee);
event LiquidityFeeUpdated(uint256 indexed newLiquidityFee);
event MarketingFeeUpdated(uint256 indexed newMarketingFee);
event SwapEnabled(bool enabled);
event TaxEnabled(bool enabled);
function setRewardTokenFee(uint256 value) external onlyOwner {
RewardTokenFee = value;
totalFees = RewardTokenFee.add(liquidityFee).add(marketingFee);
emit RewardTokenFeeUpdated(value);
}
function setLiquidityFee(uint256 value) external onlyOwner {
liquidityFee = value;
totalFees = RewardTokenFee.add(liquidityFee).add(marketingFee);
emit LiquidityFeeUpdated(value);
}
function setMarketingFee(uint256 value) external onlyOwner {
marketingFee = value;
totalFees = RewardTokenFee.add(liquidityFee).add(marketingFee);
emit MarketingFeeUpdated(value);
}
function setSwapEnabled(bool _enabled) external onlyOwner {
swapEnabled = _enabled;
emit SwapEnabled(_enabled);
}
function setTaxEnabled(bool _enabled) external onlyOwner {
taxEnabled = _enabled;
emit TaxEnabled(_enabled);
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
// This function handles the transfer and applies tax if applicable
function _transfer(address from, address to, uint256 amount) internal override {
bool takeFee = !swapping && taxEnabled && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to];
if(takeFee) {
uint256 fees = amount.mul(totalFees).div(100);
amount = amount.sub(fees);
super._transfer(from, address(this), fees);
}
super._transfer(from, to, amount);
}
}