// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragmasolidity ^0.8.0;/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/abstractcontractContext{
function_msgSender() internalviewvirtualreturns (address) {
returnmsg.sender;
}
function_msgData() internalviewvirtualreturns (bytescalldata) {
returnmsg.data;
}
}
// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)pragmasolidity ^0.8.0;/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/interfaceIERC20{
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/eventTransfer(addressindexedfrom, addressindexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/eventApproval(addressindexed owner, addressindexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/functiontotalSupply() externalviewreturns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/functionbalanceOf(address account) externalviewreturns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/functiontransfer(address to, uint256 amount) externalreturns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/functionallowance(address owner, address spender) externalviewreturns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/functionapprove(address spender, uint256 amount) externalreturns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/functiontransferFrom(addressfrom,
address to,
uint256 amount
) externalreturns (bool);
}
Contract Source Code
File 4 of 8: IFX1SportsToken.sol
//SPDX-License-Identifier: Nonepragmasolidity ^0.8.19;import"@openzeppelin/contracts/token/ERC20/IERC20.sol";
/// @title FX1 Sports Token/// @title https://fx1.io//// @title https://t.me/fx1_sports_portal/// @author https://PROOFplatform.io/// @author https://5thWeb.iointerfaceIFX1SportsTokenisIERC20{
structParam {
address proofRevenue;
address proofRewards;
address proofAdmin;
address marketingTaxRecv;
address dexRouter;
address teamAllocator_1;
address teamAllocator_2;
uint256 whitelistPeriod;
uint256 proofFeeDuration;
uint16 highPROOFFeeRate;
uint16 normalPROOFFeeRate;
uint16 marketingFeeRate;
uint16 liquidityFeeRate;
uint16 totalTeamAllocationRate;
uint16 teamAllocationRate_1;
uint16 teamAllocationRate_2;
}
structBuyFeeRate {
uint256 proofFeeDuration;
uint16 highTotalFeeRate;
uint16 normalTotalFeeRate;
uint16 highPROOFFeeRate;
uint16 normalPROOFFeeRate;
uint16 marketingFeeRate;
uint16 liquidityFeeRate;
}
structSellFeeRate {
uint256 proofFeeDuration;
uint16 highTotalFeeRate;
uint16 normalTotalFeeRate;
uint16 highPROOFFeeRate;
uint16 normalPROOFFeeRate;
uint16 marketingFeeRate;
uint16 liquidityFeeRate;
}
/// @notice Cancels Token from Fees and transfers ownership to PROOF./// @dev Only PROOF Admin can call this function.functioncancelToken() external;
/// @notice Remove PROOFFeeRate./// @dev Only PROOF Admin can call this function.functionformatPROOFFee() external;
/// @notice Locks trading until called. Cannont be called twice./// @dev Only owner can call this function.functionsetLaunchBegin()external;
/// @notice Set proofAdmin wallet address./// @dev Only PROOF Admin can call this function./// @param newAdmin The address of proofAdmin wallet.functionupdatePROOFAdmin(address newAdmin) external;
/// @notice Add bots./// @dev Only PROOF Admin can call this function./// @param bots_ The address of bot.functionsetBots(address[] memory bots_) external;
/// @notice Remove bots./// @dev Only PROOF Admin and Owner can call this function./// @param notbot The address to be removed from bots.functiondelBot(address notbot) external;
/// @notice Add/Remove whitelists./// @dev Only owner can call this function./// @param _accounts The address of whitelists./// @param _add True/False = Add/RemovefunctionaddWhitelists(address[] memory _accounts, bool _add) external;
/// @notice Add/Remove wallets to excludedMaxTransfer./// @dev Only owner can call this function./// @param _accounts The address of accounts./// @param _add True/False = Add/RemovefunctionexcludeWalletsFromMaxTransfer(address[] memory _accounts,
bool _add
) external;
/// @notice Add/Remove wallets to excludedMaxWallet./// @dev Only owner can call this function./// @param _accounts The address of accounts./// @param _add True/False = Add/RemovefunctionexcludeWalletsFromMaxWallets(address[] memory _accounts,
bool _add
) external;
/// @notice Add/Remove wallets to excludedFromFees./// @dev Only owner can call this function./// @param _accounts The address of accounts./// @param _add True/False = Add/RemovefunctionexcludeWalletsFromFees(address[] memory _accounts,
bool _add
) external;
/// @notice Set maxTransferAmount./// @dev Only owner can call this function./// @param _maxTransferAmount New maxTransferAmount.functionsetMaxTransferAmount(uint256 _maxTransferAmount) external;
/// @notice Set maxWalletAmount./// @dev Only owner can call this function./// @param _maxWalletAmount New maxWalletAmount.functionsetMaxWalletAmount(uint256 _maxWalletAmount) external;
/// @notice Set marketingTaxRecipient wallet address./// @dev Only owner can call this function./// @param _marketingTaxWallet The address of marketingTaxRecipient wallet.functionsetMarketingTaxWallet(address _marketingTaxWallet) external;
/// @notice Reduce PROOFFeeRate./// @dev Only owner can call this function.functionreducePROOFFeeRate() external;
/// @notice Set MarketingFeeRate./// @dev Only owner can call this function./// @dev Max Rate of 100(10%) 10 = 1%/// @param _marketingBuyFeeRate New MarketingBuyFeeRate./// @param _marketingSellFeeRate New MarketingSellFeeRate.functionsetMarketingFeeRate(uint16 _marketingBuyFeeRate,
uint16 _marketingSellFeeRate
) external;
/// @notice Set LiquidityFeeRate./// @dev Only owner can call this function./// @dev Max Rate of 100(10%) 10 = 1%/// @param _liquidityBuyFeeRate New liquiditySellFeeRate./// @param _liquiditySellFeeRate New liquidityBuyFeeRate.functionsetLiquidityFeeRate(uint16 _liquidityBuyFeeRate,
uint16 _liquiditySellFeeRate
) external;
/// @notice Set swapThreshold./// @dev Only owner can call this function./// @param _swapThreshold New swapThreshold amount.functionsetSwapThreshold(uint256 _swapThreshold) external;
}
// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)pragmasolidity ^0.8.0;import"../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/abstractcontractOwnableisContext{
addressprivate _owner;
eventOwnershipTransferred(addressindexed previousOwner, addressindexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/modifieronlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/functionowner() publicviewvirtualreturns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/function_checkOwner() internalviewvirtual{
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/functionrenounceOwnership() publicvirtualonlyOwner{
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/functiontransferOwnership(address newOwner) publicvirtualonlyOwner{
require(newOwner !=address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/function_transferOwnership(address newOwner) internalvirtual{
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
Contract Source Code
File 8 of 8: Ownable2Step.sol
// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol)pragmasolidity ^0.8.0;import"./Ownable.sol";
/**
* @dev Contract module which provides access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership} and {acceptOwnership}.
*
* This module is used through inheritance. It will make available all functions
* from parent (Ownable).
*/abstractcontractOwnable2StepisOwnable{
addressprivate _pendingOwner;
eventOwnershipTransferStarted(addressindexed previousOwner, addressindexed newOwner);
/**
* @dev Returns the address of the pending owner.
*/functionpendingOwner() publicviewvirtualreturns (address) {
return _pendingOwner;
}
/**
* @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
* Can only be called by the current owner.
*/functiontransferOwnership(address newOwner) publicvirtualoverrideonlyOwner{
_pendingOwner = newOwner;
emit OwnershipTransferStarted(owner(), newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
* Internal function without access restriction.
*/function_transferOwnership(address newOwner) internalvirtualoverride{
delete _pendingOwner;
super._transferOwnership(newOwner);
}
/**
* @dev The new owner accepts the ownership transfer.
*/functionacceptOwnership() external{
address sender = _msgSender();
require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
_transferOwnership(sender);
}
}