文件 1 的 6:Address.sol
pragma solidity ^0.8.0;
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
文件 2 的 6:Context.sol
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
文件 3 的 6:IERC20.sol
pragma solidity ^0.8.0;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}
文件 4 的 6:LFG.sol
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/Context.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "./IERC20.sol";
contract LFG is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
address burn = 0x000000000000000000000000000000000000dEaD;
address public daoContractAddress;
address public tokenPairAddress;
address public royaltyAddress = 0x8e3E7850b360B9C152481aDd56b7A510880495e7;
mapping (address => uint256) private _reserveTokenBalance;
mapping (address => uint256) private _circulatingTokenBalance;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcluded;
address[] private _excluded;
uint256 private constant MAX = ~uint256(0);
uint256 private constant _totalSupply = 200000000000 * 10**6 * 10**9;
uint256 private _totalReserve = (MAX - (MAX % _totalSupply));
uint256 private _transactionFeeTotal;
bool private initialSellTaxActive = false;
bool private initialSellTaxSet = false;
uint8 private _decimals = 9;
string private _symbol = "LFG";
string private _name = "Lets Fucking GO!";
struct ReserveValues {
uint256 reserveAmount;
uint256 reserveFee;
uint256 reserveTransferAmount;
uint256 reserveTransferAmountDao;
uint256 reserveTransferAmountMooncakeRoyalty;
}
struct TransactionValues {
uint256 transactionFee;
uint256 transferAmount;
uint256 netTransferAmount;
uint256 daoTax;
uint256 mooncakeRoyalty;
}
constructor(
address _daoContractAddress,
address _opsWallet
) {
daoContractAddress = _daoContractAddress;
uint256 blackHole = _totalSupply.div(2);
uint256 presale = blackHole.mul(3).div(10);
uint256 lp = blackHole.mul(59).div(100);
uint256 dao = blackHole.div(10);
uint256 royalty = blackHole.div(100);
uint256 rate = getRate();
_reserveTokenBalance[burn] = blackHole.mul(rate);
_reserveTokenBalance[_opsWallet] = presale.mul(rate);
_reserveTokenBalance[_msgSender()] = lp.mul(rate);
_reserveTokenBalance[_daoContractAddress] = dao.mul(rate);
_reserveTokenBalance[royaltyAddress] = royalty.mul(rate);
emit Transfer(
address(0),
burn,
blackHole
);
emit Transfer(
address(0),
_opsWallet,
presale
);
emit Transfer(
address(0),
_msgSender(),
lp
);
emit Transfer(
address(0),
_daoContractAddress,
dao
);
emit Transfer(
address(0),
royaltyAddress,
royalty
);
}
function applyInitialSellTax() public onlyOwner() {
require(!initialSellTaxSet, "Initial sell tax has already been set.");
initialSellTaxSet = true;
initialSellTaxActive = true;
}
function removeInitialSellTax() public onlyOwner() {
initialSellTaxActive = false;
}
function setDaoAddress(address _daoContractAddress) public onlyOwner() {
daoContractAddress = _daoContractAddress;
}
function setTokenPairAddress(address _tokenPairAddress) public onlyOwner() {
tokenPairAddress = _tokenPairAddress;
}
function name() public view override returns (string memory) {
return _name;
}
function symbol() public view override returns (string memory) {
return _symbol;
}
function decimals() public view override returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _circulatingTokenBalance[account];
return tokenBalanceFromReserveAmount(_reserveTokenBalance[account]);
}
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(
_msgSender(),
recipient,
amount
);
return true;
}
function allowance(
address owner,
address spender
) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(
_msgSender(),
spender,
amount
);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(
sender,
recipient,
amount
);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
);
return true;
}
function increaseAllowance(
address spender,
uint256 addedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(
address spender,
uint256 subtractedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")
);
return true;
}
function getOwner() external override view returns (address) {
return owner();
}
function isExcluded(
address account
) public view returns (bool) {
return _isExcluded[account];
}
function totalFees() public view returns (uint256) {
return _transactionFeeTotal;
}
function distributeToAllHolders(
uint256 transferAmount
) public {
address sender = _msgSender();
require(!_isExcluded[sender], "Excluded addresses cannot call this function");
(
,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
_reserveTokenBalance[sender] = _reserveTokenBalance[sender].sub(reserveValues.reserveAmount);
_totalReserve = _totalReserve.sub(reserveValues.reserveAmount);
_transactionFeeTotal = _transactionFeeTotal.add(transferAmount);
}
function reserveBalanceFromTokenAmount(
uint256 transferAmount,
bool deductTransferReserveFee
) public view returns(uint256) {
(
,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
require(transferAmount <= _totalSupply, "Amount must be less than supply");
if (!deductTransferReserveFee) {
return reserveValues.reserveAmount;
} else {
return reserveValues.reserveTransferAmount;
}
}
function tokenBalanceFromReserveAmount(
uint256 reserveAmount
) public view returns(uint256) {
require(reserveAmount <= _totalReserve, "Amount must be less than total reflections");
uint256 currentRate = getRate();
return reserveAmount.div(currentRate);
}
function excludeAccount(
address account
) external onlyOwner() {
require(!_isExcluded[account], "Account is already excluded");
if(_reserveTokenBalance[account] > 0) {
_circulatingTokenBalance[account] = tokenBalanceFromReserveAmount(_reserveTokenBalance[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function includeAccount(
address account
) external onlyOwner() {
require(_isExcluded[account], "Account is already excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_circulatingTokenBalance[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function applyExternalTransactionTax(
ReserveValues memory reserveValues,
TransactionValues memory transactionValues,
address sender
) private {
_reserveTokenBalance[daoContractAddress] = _reserveTokenBalance[daoContractAddress].add(reserveValues.reserveTransferAmountDao);
emit Transfer(
sender,
daoContractAddress,
transactionValues.daoTax
);
_reserveTokenBalance[royaltyAddress] = _reserveTokenBalance[royaltyAddress].add(reserveValues.reserveTransferAmountMooncakeRoyalty);
emit Transfer(
sender,
royaltyAddress,
transactionValues.mooncakeRoyalty
);
}
function _transfer(
address sender,
address recipient,
uint256 amount
) private {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_transferFromExcluded(
sender,
recipient,
amount
);
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_transferToExcluded(
sender,
recipient,
amount
);
} else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
_transferStandard(
sender,
recipient,
amount
);
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_transferBothExcluded(
sender,
recipient,
amount
);
} else {
_transferStandard(
sender,
recipient,
amount
);
}
}
function _transferStandard(
address sender,
address recipient,
uint256 transferAmount
) private {
(
TransactionValues memory transactionValues,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
_reserveTokenBalance[sender] = _reserveTokenBalance[sender].sub(reserveValues.reserveAmount);
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveTransferAmount);
emit Transfer(
sender,
recipient,
transactionValues.netTransferAmount
);
applyExternalTransactionTax(
reserveValues,
transactionValues,
sender
);
_applyFees(
reserveValues.reserveFee,
transactionValues.transactionFee
);
}
function _transferToExcluded(
address sender,
address recipient,
uint256 transferAmount
) private {
(
TransactionValues memory transactionValues,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
_reserveTokenBalance[sender] = _reserveTokenBalance[sender].sub(reserveValues.reserveAmount);
if (recipient == tokenPairAddress) {
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveAmount);
_circulatingTokenBalance[recipient] = _circulatingTokenBalance[recipient].add(transferAmount);
emit Transfer(
sender,
recipient,
transferAmount
);
} else {
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveTransferAmount);
_circulatingTokenBalance[recipient] = _circulatingTokenBalance[recipient].add(transactionValues.netTransferAmount);
emit Transfer(
sender,
recipient,
transactionValues.netTransferAmount
);
applyExternalTransactionTax(
reserveValues,
transactionValues,
sender
);
_applyFees(
reserveValues.reserveFee,
transactionValues.transactionFee
);
}
}
function _transferFromExcluded(
address sender,
address recipient,
uint256 transferAmount
) private {
(
TransactionValues memory transactionValues,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
_circulatingTokenBalance[sender] = _circulatingTokenBalance[sender].sub(transferAmount);
_reserveTokenBalance[sender] = _reserveTokenBalance[sender].sub(reserveValues.reserveAmount);
if (!initialSellTaxActive) {
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveTransferAmount);
emit Transfer(
sender,
recipient,
transactionValues.netTransferAmount
);
applyExternalTransactionTax(
reserveValues,
transactionValues,
sender
);
_applyFees(
reserveValues.reserveFee,
transactionValues.transactionFee
);
} else {
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveAmount.div(10));
emit Transfer(
sender,
recipient,
transferAmount.div(10)
);
}
}
function _transferBothExcluded(
address sender,
address recipient,
uint256 transferAmount
) private {
(
TransactionValues memory transactionValues,
ReserveValues memory reserveValues
,
) = _getValues(transferAmount);
_circulatingTokenBalance[sender] = _circulatingTokenBalance[sender].sub(transferAmount);
_reserveTokenBalance[sender] = _reserveTokenBalance[sender].sub(reserveValues.reserveAmount);
_reserveTokenBalance[recipient] = _reserveTokenBalance[recipient].add(reserveValues.reserveTransferAmount);
_circulatingTokenBalance[recipient] = _circulatingTokenBalance[recipient].add(transactionValues.netTransferAmount);
emit Transfer(
sender,
recipient,
transactionValues.netTransferAmount
);
applyExternalTransactionTax(
reserveValues,
transactionValues,
sender
);
_applyFees(
reserveValues.reserveFee,
transactionValues.transactionFee
);
}
function _applyFees(
uint256 reserveFee,
uint256 transactionFee
) private {
_totalReserve = _totalReserve.sub(reserveFee);
_transactionFeeTotal = _transactionFeeTotal.add(transactionFee);
}
function _getValues(
uint256 transferAmount
) private view returns (TransactionValues memory, ReserveValues memory, uint256) {
TransactionValues memory transactionValues = _getTValues(transferAmount);
uint256 currentRate = getRate();
ReserveValues memory reserveValues = _getRValues(
transferAmount,
transactionValues,
currentRate
);
return (
transactionValues,
reserveValues,
currentRate
);
}
function _getTValues(
uint256 transferAmount
) private pure returns (TransactionValues memory) {
TransactionValues memory transactionValues;
transactionValues.transactionFee = transferAmount.div(20);
transactionValues.daoTax = transferAmount.mul(9).div(200);
transactionValues.mooncakeRoyalty = transferAmount.div(200);
transactionValues.netTransferAmount = transferAmount.sub(transactionValues.transactionFee).sub(transactionValues.daoTax).sub(transactionValues.mooncakeRoyalty);
return transactionValues;
}
function _getRValues(
uint256 transferAmount,
TransactionValues memory transactionValues,
uint256 currentRate
) private pure returns (ReserveValues memory) {
ReserveValues memory reserveValues;
reserveValues.reserveAmount = transferAmount.mul(currentRate);
reserveValues.reserveFee = transactionValues.transactionFee.mul(currentRate);
reserveValues.reserveTransferAmountDao = transactionValues.daoTax.mul(currentRate);
reserveValues.reserveTransferAmountMooncakeRoyalty = transactionValues.mooncakeRoyalty.mul(currentRate);
reserveValues.reserveTransferAmount = reserveValues.reserveAmount.sub(
reserveValues.reserveFee
).sub(
reserveValues.reserveTransferAmountDao
).sub(
reserveValues.reserveTransferAmountMooncakeRoyalty
);
return reserveValues;
}
function getRate() public view returns(uint256) {
(
uint256 reserveSupply,
uint256 totalTokenSupply
) = getCurrentSupply();
return reserveSupply.div(totalTokenSupply);
}
function getCurrentSupply() public view returns(uint256, uint256) {
uint256 reserveSupply = _totalReserve;
uint256 totalTokenSupply = _totalSupply;
for (uint256 i = 0; i < _excluded.length; i++) {
if (_reserveTokenBalance[_excluded[i]] > reserveSupply || _circulatingTokenBalance[_excluded[i]] > totalTokenSupply) return (_totalReserve, _totalSupply);
reserveSupply = reserveSupply.sub(_reserveTokenBalance[_excluded[i]]);
totalTokenSupply = totalTokenSupply.sub(_circulatingTokenBalance[_excluded[i]]);
}
if (reserveSupply < _totalReserve.div(_totalSupply)) return (_totalReserve, _totalSupply);
return (reserveSupply, totalTokenSupply);
}
}
文件 5 的 6:Ownable.sol
pragma solidity ^0.8.0;
import "../utils/Context.sol";
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
文件 6 的 6:SafeMath.sol
pragma solidity ^0.8.0;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
{
"compilationTarget": {
"contracts/LFG.sol": "LFG"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"_daoContractAddress","type":"address"},{"internalType":"address","name":"_opsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyInitialSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferAmount","type":"uint256"}],"name":"distributeToAllHolders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeInitialSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferReserveFee","type":"bool"}],"name":"reserveBalanceFromTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_daoContractAddress","type":"address"}],"name":"setDaoAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenPairAddress","type":"address"}],"name":"setTokenPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reserveAmount","type":"uint256"}],"name":"tokenBalanceFromReserveAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]