ERC-20
Overview
Max Total Supply
1,000,417,232.5 MEAT
Holders
171
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Butcher
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* Will you conquer your hunger or starve to death? - Website: https://butcher.money - App: https://app.butcher.money - Docs: https://docs.butcher.money - Telegram: https://t.me/butcher_portal - X: https://x.com/butchermoney */ pragma solidity ^0.8.0; import "./interfaces/IERC20.sol"; import "@openzeppelin/contracts/utils/Context.sol"; import "./Observer.sol"; import "./Operator.sol"; import "./interfaces/IEntityManager.sol"; import "./interfaces/IUniswapV2Router.sol"; contract Butcher is Context, IERC20, Operator { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; bool private swapping; bool private swappingEnabled; uint256 private swapTokensAtAmount; mapping(address => bool) private excludedFromFees; event SwapBackSuccess( uint256 tokenAmount, uint256 ethAmountReceived, bool success ); // Fees (in percentage) uint256 private chickenSellFee; uint256 private cowSellFee; uint256 private mooDengSellFee; uint256 private buyFee; uint256 private sellFee; address private MARKETING_WALLET_ADDRESS; address private DEV_WALLET_ADDRESS; bool public launchMode; uint256 launchBlock; // DEX Router address IUniswapV2Router02 public router; // Toggle observer bool public toggleObserver; // Toggle trading bool private canTrade; // wallet observer Observer public observer; // Entity manager IEntityManager public _manager; receive() external payable {} /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor( string memory name_, string memory symbol_, address router_, uint256 _buyFee, uint256 _sellFee, uint256 _mooDengSellFee, uint256 _chickenSellFee, uint256 _cowSellFee, address _marketingWallet, address _devWallet ) { _name = name_; _symbol = symbol_; router = IUniswapV2Router02(router_); _operators[msg.sender] = true; buyFee = _buyFee; sellFee = _sellFee; MARKETING_WALLET_ADDRESS = _marketingWallet; DEV_WALLET_ADDRESS = _devWallet; mooDengSellFee = _mooDengSellFee; chickenSellFee = _chickenSellFee; cowSellFee = _cowSellFee; toggleObserver = false; canTrade = false; launchMode = true; swapTokensAtAmount = 2100000000000000000000; _mint(msg.sender, 420000000000000000000000); _approve(address(this), router_, type(uint256).max); } function burn(uint256 amount) external { _burn(msg.sender, amount); } // Set DEX Router address function setRouter(address _router) external onlyOperator { router = IUniswapV2Router02(_router); } function setObserverEnabled(bool _value) external onlyOperator { toggleObserver = _value; } // Set fee wallet function setWallets( address _marketingWallet, address _devWallet ) external onlyOperator { MARKETING_WALLET_ADDRESS = _marketingWallet; DEV_WALLET_ADDRESS = _devWallet; } function setCanTrade(bool _value) external onlyOperator { canTrade = _value; launchBlock = block.number; swappingEnabled = true; } function setExcludedFromFees( address _address, bool _value ) external onlyOperator { excludedFromFees[_address] = _value; } function setRates(uint buyTax, uint sellTax) external onlyOperator { require(buyTax <= 5, "Butcher: Buy tax must be less than 5"); require(sellTax <= 15, "Butcher: Sell tax must be less than 15"); buyFee = buyTax; sellFee = sellTax; } function getBuyFee() external view returns (uint256) { return buyFee; } function getSellFee() external view returns (uint256) { return sellFee; } function setSwapTokensAtAmount(uint256 _value) external onlyOperator { swapTokensAtAmount = _value; } function setSwappingEnabled(bool _value) external onlyOperator { swappingEnabled = _value; } function rescueTokens(address _token, address _to) external onlyOperator { IERC20(_token).transfer(_to, IERC20(_token).balanceOf(address(this))); } function rescueETH(address _to) external onlyOperator { payable(_to).transfer(address(this).balance); } function setLaunchMode(bool _value) external onlyOperator { launchMode = _value; } // Set entity manager function setEntityManager(address _managerAddress) external onlyOperator { _manager = IEntityManager(_managerAddress); } // Set observer function setObserver(address _observer) external onlyOperator { observer = Observer(_observer); } // Mint rewards function mint(address _to, uint256 _amount) external onlyOperator { _mint(_to, _amount); } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer( address to, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); if ( !_operators[from] && !_operators[to] && to != address(this) && from != address(this) ) { require(canTrade, "Butcher: Trading is disabled"); _beforeTokenTransfer(from, to, amount); if (toggleObserver) { require( observer.beforeTokenTransfer(msg.sender, from, to, amount), "WalletObserver: Rate limit" ); } if (launchMode && buyFee > 5 && sellFee >= 15) { uint256 steps = (block.number - launchBlock) / 5; if (steps > 0) { buyFee -= 5; if (sellFee > 15) { sellFee -= 5; } } launchBlock = block.number; } if ( swappingEnabled && //if this is true !swapping && //if this is false !observer.isLpToken(from) && //if this is false !excludedFromFees[from] && //if this is false !excludedFromFees[to] //if this is false ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (excludedFromFees[from] || excludedFromFees[to]) { takeFee = false; } if (takeFee) { // Sell, fee applied if (observer.isLpToken(to)) { uint256 feeAmount = (amount / 100) * sellFee; if (!launchMode) { if (_manager.isChickenOwner(from)) { feeAmount = (amount / 100) * chickenSellFee; } else if (_manager.isCowOwner(from)) { feeAmount = (amount / 100) * cowSellFee; } else if (_manager.isMooDengOwner(from)) { feeAmount = (amount / 100) * mooDengSellFee; } } if (feeAmount > 0) { unchecked { _balances[from] = fromBalance - amount; _balances[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); _balances[to] += amount - feeAmount; emit Transfer(from, to, amount - feeAmount); } } else { unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; emit Transfer(from, to, amount); } } } // // Buy, fee applied else if (observer.isLpToken(from)) { uint256 feeAmount = (amount / 100) * buyFee; if (feeAmount > 0) { unchecked { _balances[from] = fromBalance - amount; _balances[address(this)] += feeAmount; emit Transfer(from, address(this), feeAmount); _balances[to] += amount - feeAmount; emit Transfer(from, to, amount - feeAmount); } } else { unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; emit Transfer(from, to, amount); } } } // Classic transfer, no fees. else { unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } } } } else { unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; emit Transfer(from, to, amount); } } _afterTokenTransfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { bool success; if (balanceOf(address(this)) == 0) { return; } if (balanceOf(address(this)) >= swapTokensAtAmount) { uint256 amountToSwapForETH = swapTokensAtAmount; swapTokensForEth(amountToSwapForETH); uint256 amountEthToSend = address(this).balance; (success, ) = address(MARKETING_WALLET_ADDRESS).call{ value: amountEthToSend / 2 }(""); (success, ) = address(DEV_WALLET_ADDRESS).call{ value: amountEthToSend / 2 }(""); emit SwapBackSuccess(amountToSwapForETH, amountEthToSend, success); } } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (spender != address(_manager)) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); } unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.20; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in * case an upgrade adds a module that needs to be initialized. * * For example: * * [.hljs-theme-light.nopadding] * ```solidity * contract MyToken is ERC20Upgradeable { * function initialize() initializer public { * __ERC20_init("MyToken", "MTK"); * } * } * * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { * function initializeV2() reinitializer(2) public { * __ERC20Permit_init("MyToken"); * } * } * ``` * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() { * _disableInitializers(); * } * ``` * ==== */ abstract contract Initializable { /** * @dev Storage of the initializable contract. * * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions * when using with upgradeable contracts. * * @custom:storage-location erc7201:openzeppelin.storage.Initializable */ struct InitializableStorage { /** * @dev Indicates that the contract has been initialized. */ uint64 _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool _initializing; } // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Initializable")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00; /** * @dev The contract is already initialized. */ error InvalidInitialization(); /** * @dev The contract is not initializing. */ error NotInitializing(); /** * @dev Triggered when the contract has been initialized or reinitialized. */ event Initialized(uint64 version); /** * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, * `onlyInitializing` functions can be used to initialize parent contracts. * * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in * production. * * Emits an {Initialized} event. */ modifier initializer() { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); // Cache values to avoid duplicated sloads bool isTopLevelCall = !$._initializing; uint64 initialized = $._initialized; // Allowed calls: // - initialSetup: the contract is not in the initializing state and no previous version was // initialized // - construction: the contract is initialized at version 1 (no reininitialization) and the // current contract is just being deployed bool initialSetup = initialized == 0 && isTopLevelCall; bool construction = initialized == 1 && address(this).code.length == 0; if (!initialSetup && !construction) { revert InvalidInitialization(); } $._initialized = 1; if (isTopLevelCall) { $._initializing = true; } _; if (isTopLevelCall) { $._initializing = false; emit Initialized(1); } } /** * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be * used to initialize parent contracts. * * A reinitializer may be used after the original initialization step. This is essential to configure modules that * are added through upgrades and that require initialization. * * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer` * cannot be nested. If one is invoked in the context of another, execution will revert. * * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in * a contract, executing them in the right order is up to the developer or operator. * * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization. * * Emits an {Initialized} event. */ modifier reinitializer(uint64 version) { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing || $._initialized >= version) { revert InvalidInitialization(); } $._initialized = version; $._initializing = true; _; $._initializing = false; emit Initialized(version); } /** * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the * {initializer} and {reinitializer} modifiers, directly or indirectly. */ modifier onlyInitializing() { _checkInitializing(); _; } /** * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}. */ function _checkInitializing() internal view virtual { if (!_isInitializing()) { revert NotInitializing(); } } /** * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized * to any version. It is recommended to use this to lock implementation contracts that are designed to be called * through proxies. * * Emits an {Initialized} event the first time it is successfully executed. */ function _disableInitializers() internal virtual { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing) { revert InvalidInitialization(); } if ($._initialized != type(uint64).max) { $._initialized = type(uint64).max; emit Initialized(type(uint64).max); } } /** * @dev Returns the highest version that has been initialized. See {reinitializer}. */ function _getInitializedVersion() internal view returns (uint64) { return _getInitializableStorage()._initialized; } /** * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}. */ function _isInitializing() internal view returns (bool) { return _getInitializableStorage()._initializing; } /** * @dev Returns a pointer to the storage namespace. */ // solhint-disable-next-line var-name-mixedcase function _getInitializableStorage() private pure returns (InitializableStorage storage $) { assembly { $.slot := INITIALIZABLE_STORAGE } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
interface IEntityManager { function approve(address to, uint256 tokenId) external; function balanceOf(address owner) external view returns (uint256); function calculateRewards(uint256 _entityId) external view returns (uint256); function createEntity( uint256 _type, string memory _entityName, address _referrer ) external; function decrement(uint256 value) external view returns (uint256); function getApproved(uint256 tokenId) external view returns (address); function getDailyReward(uint256 _entityId) external view returns (uint256); function getEntityIdsOf( address account ) external view returns (uint256[] memory); function getEntityInfo( uint256 _entityId ) external view returns (string memory, uint256, bool); function getEntityName( uint256 _entityId ) external view returns (string memory); function getEntityTypeName( uint256 _entityId ) external view returns (string memory); function getPercentageOf( uint256 value, uint256 percentage ) external view returns (uint256); function getTypeImageURI( uint256 _entityId ) external view returns (string memory); function increment(uint256 value) external view returns (uint256); function initialize( address butcher, address rwPool, address treasuryWallet ) external; function int2str( uint256 _i ) external view returns (string memory _uintAsString); function isApprovedForAll( address owner, address operator ) external view returns (bool); function isChickenOwner(address _user) external view returns (bool); function isCowOwner(address _user) external view returns (bool); function isEntityValid(uint256 _entityId) external view returns (bool); function isMooDengOwner(address _user) external view returns (bool); function name() external view returns (string memory); function ownerOf(uint256 tokenId) external view returns (address); function printAttributes( uint256 _entityId ) external view returns (string memory); function safeTransferFrom(address from, address to, uint256 tokenId) external; function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory data ) external; function setApprovalForAll(address operator, bool approved) external; function setEntityType( uint256 _type, uint256 _price, uint256 _rewardPerSecond, uint256 _epochTime, uint256 _incubationTime, string memory _name, string memory _imageURI ) external; function setOperator(address user, bool value) external; function setWallets(address treasury, address rewardPool) external; function slaughter(uint256 _entityId) external; function supportsInterface(bytes4 interfaceId) external view returns (bool); function symbol() external view returns (string memory); function tokenByIndex(uint256 index) external view returns (uint256); function tokenOfOwnerByIndex( address owner, uint256 index ) external view returns (uint256); function tokenURI(uint256 tokenId) external view returns (string memory); function totalSupply() external view returns (uint256); function transferFrom(address from, address to, uint256 tokenId) external; }
pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); }
pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance( address owner, address spender ) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom( address from, address to, uint value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit( address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn( address indexed sender, uint amount0, uint amount1, address indexed to ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap( uint amount0Out, uint amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapTokensForExactETH( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactTokensForETH( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function quote( uint amountA, uint reserveA, uint reserveB ) external pure returns (uint amountB); function getAmountOut( uint amountIn, uint reserveIn, uint reserveOut ) external pure returns (uint amountOut); function getAmountIn( uint amountOut, uint reserveIn, uint reserveOut ) external pure returns (uint amountIn); function getAmountsOut( uint amountIn, address[] calldata path ) external view returns (uint[] memory amounts); function getAmountsIn( uint amountOut, address[] calldata path ) external view returns (uint[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
/* Will you conquer your hunger or starve to death? - Website: butcher.money - App: app.butcher.money - Docs: docs.butcher.money - Telegram: t.me/butcher_portal - X: x.com/butchermoney */ pragma solidity ^0.8.0; import "./interfaces/IUniswapV2Pair.sol"; import "./interfaces/IERC20.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "./Operator.sol"; contract Observer is Initializable { mapping(uint256 => mapping(address => int256)) public _inTokens; mapping(uint256 => mapping(address => uint256)) public _outTokens; mapping(address => bool) public _isDenied; mapping(address => bool) public _isExcludedFromObserver; event WalletObserverEventBuy( address indexed _sender, address indexed from, address indexed to ); event WalletObserverEventSellOrLiquidityAdd( address indexed _sender, address indexed from, address indexed to ); event WalletObserverEventTransfer( address indexed _sender, address indexed from, address indexed to ); event WalletObserverLiquidityWithdrawal(bool indexed _status); mapping(address => bool) internal _operators; modifier onlyOperator() { require(_operators[msg.sender] == true, "Not operator"); _; } function setOperator(address _user, bool _value) external onlyOperator { _operators[_user] = _value; } modifier onlyToken() { require(msg.sender == address(butcherToken), "WalletObserver: Only token"); _; } // Current time window uint256 private timeframeCurrent; IERC20 public butcherToken; address[] public lpTokens; uint public totalLp; address public router; address private marketingWallet; address private devWallet; function changeLp(address _lp, uint index) public onlyOperator { if (totalLp == 0 || index > totalLp) { lpTokens.push(_lp); totalLp++; } else lpTokens[index] = _lp; } function getRegisteredLp(uint index) public view returns (address) { return lpTokens[index]; } function isLpToken(address _lp) public view returns (bool) { for (uint i = 0; i < lpTokens.length; i++) { if (lpTokens[i] == _lp) { return true; } } return false; } function isRouter(address to) public view returns (bool) { return router == to; } function isFeeReceiver(address account) public view returns (bool) { return marketingWallet == account || devWallet == account; } uint256 private maxTokenPerWallet; // The TIMEFRAME in seconds uint256 private timeframeExpiresAfter; // The token amount limit per timeframe given to a wallet uint256 private timeframeQuotaIn; uint256 private timeframeQuotaOut; bool private _decode_771274418637067024507; // Maximum amount of coins a wallet can hold in percentage // If equal or above, transfers and buys will be denied // He can still claim rewards uint8 public maxTokenPerWalletPercent; mapping(address => uint256) public _lastBuyOf; mapping(address => uint256) public _lastSellOf; function initialize( address token, address _router, address _marketingWallet, address _devWallet, uint maxIn, uint maxOut, uint8 maxWallet ) public initializer { // __Ownable_init(); _decode_771274418637067024507 = false; _operators[msg.sender] = true; // By default set every day setTimeframeExpiresAfter(4 hours); butcherToken = IERC20(token); router = _router; marketingWallet = _marketingWallet; devWallet = _devWallet; // Timeframe buys / transfers to 0.2% of the supply per wallet setTimeframeQuotaIn((butcherToken.totalSupply() * maxIn) / 1000); setTimeframeQuotaOut((butcherToken.totalSupply() * maxOut) / 1000); // Limit token to 2% of the supply per wallet (we don't count rewards) setMaxTokenPerWalletPercent(maxWallet); excludeFromObserver(msg.sender, true); } modifier checkTimeframe() { uint256 _currentTime = block.timestamp; if (_currentTime > timeframeCurrent + timeframeExpiresAfter) { timeframeCurrent = _currentTime; } _; } modifier isNotDenied( address _sender, address from, address to, address txOrigin ) { // Allow owner to receive tokens from denied addresses // Useful in case of refunds if (!_operators[txOrigin] && !_operators[to]) { require( !_isDenied[_sender] && !_isDenied[from] && !_isDenied[to] && !_isDenied[txOrigin], "WalletObserverUpgradeable: Denied address" ); } _; } // Temporary function isPair(address _sender, address from) internal view returns (bool) { return isLpToken(_sender) && isLpToken(from); } function beforeTokenTransfer( address _sender, address from, address to, uint256 amount ) external onlyToken checkTimeframe isNotDenied(_sender, from, to, tx.origin) returns (bool) { // Exclusions are automatically set to the following: owner, pairs themselves, self-transfers, mint / burn txs // Do not observe self-transfers if (from == to) { return true; } // Do not observe mint / burn if (from == address(0) || to == address(0)) { return true; } // Prevent inter-LP transfers if (isPair(from, from) && isPair(to, to)) { revert( "WalletObserverUpgradeable: Cannot directly transfer from one LP to another" ); } bool isBuy = false; bool isSellOrLiquidityAdd = false; if (isPair(_sender, from)) { isBuy = true; if (!isExcludedFromObserver(to)) { _inTokens[timeframeCurrent][to] += int256(amount); } emit WalletObserverEventBuy(_sender, from, to); } else if (isRouter(_sender) && isPair(to, to)) { isSellOrLiquidityAdd = true; _outTokens[timeframeCurrent][from] += uint256(amount); emit WalletObserverEventSellOrLiquidityAdd(_sender, from, to); } else { if (!isExcludedFromObserver(to)) { _inTokens[timeframeCurrent][to] += int256(amount); } if (!isExcludedFromObserver(from)) { _outTokens[timeframeCurrent][from] += amount; } emit WalletObserverEventTransfer(_sender, from, to); } // Have a minimum per buy / sell //if (isBuy || isSellOrLiquidityAdd) { //} if (!isExcludedFromObserver(to)) { // Revert if the receiving wallet exceed the maximum a wallet can hold require( getMaxTokenPerWallet() >= butcherToken.balanceOf(to) + amount, "WalletObserverUpgradeable: Cannot transfer to this wallet, it would exceed the limit per wallet. [balanceOf > maxTokenPerWallet]" ); int256 remainingTransfersIn = getRemainingTransfersIn(to); // Revert if receiving wallet exceed daily limit require( getRemainingTransfersIn(to) >= 0, "WalletObserverUpgradeable: Cannot transfer to this wallet for this timeframe, it would exceed the limit per timeframe. [_inTokens > timeframeLimit]" ); } if (!isExcludedFromObserver(from)) { int256 remainingTransfersOut = getRemainingTransfersOut(from); if (isSellOrLiquidityAdd) { _lastSellOf[from] = block.number; } require( getRemainingTransfersOut(from) >= 0, "WalletObserverUpgradeable: Cannot sell from this wallet for this timeframe, it would exceed the limit per timeframe. [_outTokens > timeframeLimit]" ); } return true; } function getMaxTokenPerWallet() public view returns (uint256) { // 1% - variable return (butcherToken.totalSupply() * maxTokenPerWalletPercent) / 100; } function getTimeframeExpiresAfter() external view returns (uint256) { return timeframeExpiresAfter; } function getTimeframeCurrent() external view returns (uint256) { return timeframeCurrent; } function getRemainingTransfersOut( address account ) private view returns (int256) { return int256(timeframeQuotaOut) - int256(_outTokens[timeframeCurrent][account]); } function getRemainingTransfersIn( address account ) private view returns (int256) { return int256(timeframeQuotaIn) - _inTokens[timeframeCurrent][account]; } function getOverviewOf( address account ) external view returns (uint256, uint256, uint256, int256, int256) { return ( timeframeCurrent + timeframeExpiresAfter, timeframeQuotaIn, timeframeQuotaOut, getRemainingTransfersIn(account), getRemainingTransfersOut(account) ); } function isExcludedFromObserver(address account) public view returns (bool) { return _isExcludedFromObserver[account] || isRouter(account) || isLpToken(account) || isFeeReceiver(account); } function setMaxTokenPerWalletPercent( uint8 _maxTokenPerWalletPercent ) public onlyOperator { require( _maxTokenPerWalletPercent > 0, "WalletObserverUpgradeable: Max token per wallet percentage cannot be 0" ); // Modifying this with a lower value won't brick wallets // It will just prevent transferring / buys to be made for them maxTokenPerWalletPercent = _maxTokenPerWalletPercent; require( getMaxTokenPerWallet() >= timeframeQuotaIn, "WalletObserverUpgradeable: Max token per wallet must be above or equal to timeframeQuotaIn" ); } function setTimeframeExpiresAfter( uint256 _timeframeExpiresAfter ) public onlyOperator { require( _timeframeExpiresAfter > 0, "WalletObserverUpgradeable: Timeframe expiration cannot be 0" ); timeframeExpiresAfter = _timeframeExpiresAfter; } function setTimeframeQuotaIn(uint256 _timeframeQuotaIn) public onlyOperator { require( _timeframeQuotaIn > 0, "WalletObserverUpgradeable: Timeframe token quota in cannot be 0" ); timeframeQuotaIn = _timeframeQuotaIn; } function setTimeframeQuotaOut( uint256 _timeframeQuotaOut ) public onlyOperator { require( _timeframeQuotaOut > 0, "WalletObserverUpgradeable: Timeframe token quota out cannot be 0" ); timeframeQuotaOut = _timeframeQuotaOut; } function denyMalicious(address account, bool status) external onlyOperator { _isDenied[account] = status; } function excludeFromObserver( address account, bool status ) public onlyOperator { _isExcludedFromObserver[account] = status; } function totalSupply() external view returns (uint256) { uint256 _totalSupply = butcherToken.totalSupply(); // Ignore Treasury wallets _totalSupply -= butcherToken.balanceOf( 0x8884E46A87255Dd90b8F08B245a3aAd108E2AF79 // Multi-sig ); _totalSupply -= butcherToken.balanceOf( 0x747218E40fF47bE6869d7Ea3BDc74ae879dac7c4 // Marketing ); _totalSupply -= butcherToken.balanceOf( 0x1acC825C922BBC9c6e4c03ECD929Bc8f73F9e363 // Donations ); _totalSupply -= butcherToken.balanceOf( 0x070b2b1F138FdEC6D6Cb3c47d8A74D5715c26Abf // Dev ); _totalSupply -= butcherToken.balanceOf( 0x20e5D2308F560060C7eC1a8454774209D9Bf1F31 // Treasury Invest ); return _totalSupply; } }
pragma solidity ^0.8.0; contract Operator { mapping(address => bool) internal _operators; constructor() { _operators[msg.sender] = true; } modifier onlyOperator() { require(_operators[msg.sender] == true, "Not operator"); _; } function setOperator(address _user, bool _value) external onlyOperator { _operators[_user] = _value; } }
{ "viaIR": true, "optimizer": { "enabled": true, "runs": 1000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_mooDengSellFee","type":"uint256"},{"internalType":"uint256","name":"_chickenSellFee","type":"uint256"},{"internalType":"uint256","name":"_cowSellFee","type":"uint256"},{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","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":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountReceived","type":"uint256"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"SwapBackSuccess","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":[],"name":"_manager","outputs":[{"internalType":"contract IEntityManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"launchMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"observer","outputs":[{"internalType":"contract Observer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setCanTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_managerAddress","type":"address"}],"name":"setEntityManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setLaunchMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_observer","type":"address"}],"name":"setObserver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setObserverEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSwappingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleObserver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052346105e85761261180380380610019816105ed565b9283398101610140828203126105e85781516001600160401b0381116105e85781610045918401610612565b602083015190916001600160401b0382116105e857610065918401610612565b916100726040820161067d565b9260608201519360808301519260a08101519360c08201519260e0830151946100ab6101206100a4610100870161067d565b950161067d565b336000908152602081905260409020805460ff19166001179055885190986001600160401b0382116104e55760045490600182811c921680156105de575b60208310146104c55781601f84931161056e575b50602090601f8311600114610506576000926104fb575b50508160011b916000199060031b1c1916176004555b8051906001600160401b0382116104e55760055490600182811c921680156104db575b60208310146104c55781601f849311610471575b50602090601f8311600114610409576000926103fe575b50508160011b916000199060031b1c1916176005555b60018060a01b0316968760018060a01b031960115416176011553360005260006020526040600020600160ff19825416179055600c55600d5560018060a01b031660018060a01b0319600e541617600e55600f5492600b55600955600a5561ffff60a01b1960115416601155600160a01b9160018060a01b03169060018060a81b0319161717600f556871d75ab9b92050000060075533156103b9576003546958f03ee118a13e80000081018091116103a35760035533600052600160205260406000206958f03ee118a13e80000081540190556040516958f03ee118a13e800000815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a33015610352578015610302573060005260026020526040600020816000526020526040600020600019905560405160001981527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203092a3604051611f7f90816106928239f35b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b015190503880610178565b600560009081528281209350601f198516905b8181106104595750908460019594939210610440575b505050811b0160055561018e565b015160001960f88460031b161c19169055388080610432565b9293602060018192878601518155019501930161041c565b90915060056000526020600020601f840160051c810191602085106104bb575b90601f859493920160051c01905b8181106104ac5750610161565b6000815584935060010161049f565b9091508190610491565b634e487b7160e01b600052602260045260246000fd5b91607f169161014d565b634e487b7160e01b600052604160045260246000fd5b015190503880610114565b600460009081528281209350601f198516905b818110610556575090846001959493921061053d575b505050811b0160045561012a565b015160001960f88460031b161c1916905538808061052f565b92936020600181928786015181550195019301610519565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810191602085106105d4575b90601f859493920160051c01905b8181106105c557506100fd565b600081558493506001016105b8565b90915081906105aa565b91607f16916100e9565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176104e557604052565b81601f820112156105e8578051906001600160401b0382116104e557610641601f8301601f19166020016105ed565b92828452602083830101116105e85760005b82811061066857505060206000918301015290565b80602080928401015182828701015201610653565b51906001600160a01b03821682036105e85756fe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304824e701461102e57806306fdde0314610f6f578063095ea7b314610f495780630f959bb714610eb157806318160ddd14610e9357806323b872dd14610db8578063289af0d814610d9a5780632f1db31f14610d42578063313ce56714610d265780633950935114610cd357806340c10f1914610bf457806342966c6814610aa75780635431c94e14610958578063558a7297146108ed578063590ffdce1461088257806364ea519e1461082e5780636f077396146107d657806370a082311461079c57806385df8977146107455780638f818b901461072757806394d9c9c7146106d057806395d89b41146105c8578063a457c2d714610509578063a9059cbb146104d8578063ac6af280146103b6578063afa4f3b21461037e578063b37dd69014610358578063c0d7865514610301578063d3f6a1571461028e578063dcf34a6414610268578063dd62ed3e14610210578063eb70e498146101e9578063f0329f6b146101c25763f887ea400361000e57346101bd5760003660031901126101bd5760206001600160a01b0360115416604051908152f35b600080fd5b346101bd5760003660031901126101bd5760206001600160a01b0360135416604051908152f35b346101bd5760003660031901126101bd5760206001600160a01b0360125416604051908152f35b346101bd5760403660031901126101bd5761022961108f565b6001600160a01b036102396110a5565b911660005260026020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b346101bd5760003660031901126101bd57602060ff60115460a01c166040519015158152f35b346101bd5760403660031901126101bd576001600160a01b036102af61108f565b816102b86110a5565b913360005260006020526102d8600160ff60406000205416151514611122565b166001600160a01b0319600e541617600e55166001600160a01b0319600f541617600f55600080f35b346101bd5760203660031901126101bd576001600160a01b0361032261108f565b336000526000602052610341600160ff60406000205416151514611122565b166001600160a01b03196011541617601155600080f35b346101bd5760003660031901126101bd57602060ff600f5460a01c166040519015158152f35b346101bd5760203660031901126101bd573360005260006020526103ae600160ff60406000205416151514611122565b600435600755005b346101bd5760403660031901126101bd57600435602435903360005260006020526103ed600160ff60406000205416151514611122565b6005811161046f57600f821161040557600c55600d55005b608460405162461bcd60e51b815260206004820152602660248201527f427574636865723a2053656c6c20746178206d757374206265206c657373207460448201527f68616e20313500000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f427574636865723a2042757920746178206d757374206265206c65737320746860448201527f616e2035000000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760403660031901126101bd576104fe6104f461108f565b602435903361132d565b602060405160018152f35b346101bd5760403660031901126101bd5761052261108f565b6024359033600052600260205260406000206001600160a01b0382166000526020526040600020549180831061055e576104fe920390336111e0565b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760003660031901126101bd5760405160006005548060011c906001811680156106c6575b6020831081146106b25782855290811561068e575060011461062e575b61062a8361061e8185038261116d565b604051918291826110bb565b0390f35b91905060056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0916000905b8082106106745750909150810160200161061e61060e565b91926001816020925483858801015201910190929161065c565b60ff191660208086019190915291151560051b8401909101915061061e905061060e565b602484634e487b7160e01b81526022600452fd5b91607f16916105f1565b346101bd5760203660031901126101bd576001600160a01b036106f161108f565b336000526000602052610710600160ff60406000205416151514611122565b166001600160a01b03196012541617601255600080f35b346101bd5760003660031901126101bd576020600c54604051908152f35b346101bd5760203660031901126101bd576001600160a01b0361076661108f565b336000526000602052610785600160ff60406000205416151514611122565b166001600160a01b03196013541617601355600080f35b346101bd5760203660031901126101bd576001600160a01b036107bd61108f565b1660005260016020526020604060002054604051908152f35b346101bd5760203660031901126101bd576107ef611104565b33600052600060205261080e600160ff60406000205416151514611122565b60ff60a01b1960ff60a01b600f5492151560a01b16911617600f55600080f35b346101bd5760203660031901126101bd57610847611104565b336000526000602052610866600160ff60406000205416151514611122565b61ff0060065491151560081b169061ff00191617600655600080f35b346101bd5760403660031901126101bd5761001961089e61108f565b6001600160a01b036108ae611113565b913360005260006020526108ce600160ff60406000205416151514611122565b16600052600860205260406000209060ff801983541691151516179055565b346101bd5760403660031901126101bd5761001961090961108f565b6001600160a01b03610919611113565b91336000526000602052610939600160ff60406000205416151514611122565b16600052600060205260406000209060ff801983541691151516179055565b346101bd5760403660031901126101bd5761097161108f565b6001600160a01b036109816110a5565b913360005260006020526109a1600160ff60406000205416151514611122565b1690604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa918215610a6657600092610a72575b5060446001600160a01b039160006020949560405196879586947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af18015610a6657610a3e57005b6100199060203d602011610a5f575b610a57818361116d565b8101906111c8565b503d610a4d565b6040513d6000823e3d90fd5b91506020823d602011610a9f575b81610a8d6020938361116d565b810103126101bd5790519060446109e8565b3d9150610a80565b346101bd5760203660031901126101bd576004353315610b8a5733600052600160205260406000205490808210610b205780600092338452600160205203604083205580600354036003556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3005b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760403660031901126101bd57610c0d61108f565b6001600160a01b0360243591336000526000602052610c38600160ff60406000205416151514611122565b16908115610c8f577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082610c726000946003546111a5565b6003558484526001825260408420818154019055604051908152a3005b606460405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b346101bd5760403660031901126101bd576104fe610cef61108f565b33600052600260205260406000206001600160a01b038216600052602052610d1f604060002060243590546111a5565b90336111e0565b346101bd5760003660031901126101bd57602060405160128152f35b346101bd5760203660031901126101bd57610d5b611104565b336000526000602052610d7a600160ff60406000205416151514611122565b60ff60a01b1960ff60a01b60115492151560a01b16911617601155600080f35b346101bd5760003660031901126101bd576020600d54604051908152f35b346101bd5760603660031901126101bd57610dd161108f565b610dd96110a5565b604435906001600160a01b038316600052600260205260406000206001600160a01b033316600052602052604060002054926000198403610e1f575b6104fe935061132d565b6001600160a01b03601354163303610e47575b610e42836104fe950333836111e0565b610e15565b82841015610e3257606460405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b346101bd5760003660031901126101bd576020600354604051908152f35b346101bd5760203660031901126101bd57610eca611104565b336000526000602052610ee9600160ff60406000205416151514611122565b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff75ff00000000000000000000000000000000000000000060115492151560a81b169116176011554360105561010061ff00196006541617600655600080f35b346101bd5760403660031901126101bd576104fe610f6561108f565b60243590336111e0565b346101bd5760003660031901126101bd5760405160006004548060011c90600181168015611024575b6020831081146106b25782855290811561068e5750600114610fc45761062a8361061e8185038261116d565b91905060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b916000905b80821061100a5750909150810160200161061e61060e565b919260018160209254838588010152019101909291610ff2565b91607f1691610f98565b346101bd5760203660031901126101bd57600080808061104c61108f565b33825281602052611068600160ff604085205416151514611122565b479082908215611085575b6001600160a01b031690f115610a6657005b6108fc9150611073565b600435906001600160a01b03821682036101bd57565b602435906001600160a01b03821682036101bd57565b91909160208152825180602083015260005b8181106110ee575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016110cd565b6004359081151582036101bd57565b6024359081151582036101bd57565b1561112957565b606460405162461bcd60e51b815260206004820152600c60248201527f4e6f74206f70657261746f7200000000000000000000000000000000000000006044820152fd5b90601f8019910116810190811067ffffffffffffffff82111761118f57604052565b634e487b7160e01b600052604160045260246000fd5b919082018092116111b257565b634e487b7160e01b600052601160045260246000fd5b908160209103126101bd575180151581036101bd5790565b6001600160a01b03169081156112b1576001600160a01b03169182156112475760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260028252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b818102929181159184041417156111b257565b6001600160a01b0316908115611c10576001600160a01b0316908115611ba657806000526001602052604060002054838110611b3c5781600052600060205260ff604060002054161580611b23575b80611b19575b80611b0f575b15611abc5760115460ff8160a81c1615611a785760a01c60ff166119ab575b60ff600f5460a01c168061199f575b80611992575b61193b575b60065460ff8160081c1680611930575b806118d1575b806118b8575b8061189f575b61187d575b5060ff600654161582600052600860205260ff604060002054168015611865575b61185d575b611419575b50505050565b6001600160a01b0360125416604051630f24ca7d60e01b8152846004820152602081602481855afa908115610a665760009161183e575b50156117365750909192606481049161146b600d548461131a565b9260ff600f5460a01c161561152f575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092909182156114fe578190866000526001855203604060002055306000526001835260406000208281540190556040518281528585853093a30384600052600182526040600020818154019055604051908152a35b38808080611413565b81925085600052600184520360406000205584600052600182526040600020818154019055604051908152a36114f5565b90926001600160a01b03601354166040517f022c9a50000000000000000000000000000000000000000000000000000000008152866004820152602081602481855afa908115610a6657600091611717575b50156115c6575050916020916115bb7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef946009549061131a565b915b9193509161147b565b6040517fe090cad2000000000000000000000000000000000000000000000000000000008152866004820152602081602481855afa908115610a66576000916116f8575b501561164a575050916020916116447fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600a549061131a565b916115bd565b936020602494929395604051958680927f53c700880000000000000000000000000000000000000000000000000000000082528a60048301525afa948515610a66577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef956020956000916116db575b506116c5575b506115bd565b6116d4919350600b549061131a565b91386116bf565b6116f29150863d8811610a5f57610a57818361116d565b386116b9565b611711915060203d602011610a5f57610a57818361116d565b3861160a565b611730915060203d602011610a5f57610a57818361116d565b38611581565b602060249160405192838092630f24ca7d60e01b82528760048301525afa908115610a665760009161181f575b50156117f6576020907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939461179f600c546064830461131a565b9182156114fe578190866000526001855203604060002055306000526001835260406000208281540190556040518281528585853093a30384600052600182526040600020818154019055604051908152a36114f5565b8391600052600160205203604060002055600052600160205260406000209081540190556114f5565b611838915060203d602011610a5f57610a57818361116d565b38611763565b611857915060203d602011610a5f57610a57818361116d565b38611450565b50600061140e565b5083600052600860205260ff60406000205416611409565b60ff191660011760065561188f611cba565b60ff1960065416600655386113e8565b5083600052600860205260ff60406000205416156113e3565b5082600052600860205260ff60406000205416156113dd565b50602460206001600160a01b036012541660405192838092630f24ca7d60e01b82528860048301525afa908115610a6657600091611911575b50156113d7565b61192a915060203d602011610a5f57610a57818361116d565b3861190a565b5060ff8116156113d1565b60105443034381116111b25760059004611959575b436010556113c1565b600c5460041981019081116111b257600c55600d54600f811161197d575b50611950565b60041981019081116111b257600d5538611977565b50600f600d5410156113bc565b506005600c54116113b6565b600060206001600160a01b03601254166084604051809481937f37be75a00000000000000000000000000000000000000000000000000000000083523360048401528860248401528960448401528a60648401525af1908115610a6657600091611a59575b506113a757606460405162461bcd60e51b815260206004820152601a60248201527f57616c6c65744f627365727665723a2052617465206c696d69740000000000006044820152fd5b611a72915060203d602011610a5f57610a57818361116d565b38611a10565b606460405162461bcd60e51b815260206004820152601c60248201527f427574636865723a2054726164696e672069732064697361626c6564000000006044820152fd5b838293946020927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600052600184520360406000205584600052600182526040600020818154019055604051908152a3565b5030821415611388565b5030831415611382565b5082600052600060205260ff604060002054161561137c565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b3d15611cb5573d9067ffffffffffffffff821161118f5760405191611ca9601f8201601f19166020018461116d565b82523d6000602084013e565b606090565b60003081526001602052604081205415611f4657308152600160205260408120549060075480921015611ceb575050565b604051611cf960608261116d565b60028152602081016040368237815115611f32573081526001600160a01b03601154166040517fad5c4648000000000000000000000000000000000000000000000000000000008152602081600481855afa908115611f27578591611ee1575b50835160011015611ecd576001600160a01b03166040840152611d7e908590306111e0565b6001600160a01b036011541690813b15611ec9579183916040519384927f791ac94700000000000000000000000000000000000000000000000000000000845260a484019088600486015285602486015260a060448601525180915260c484019190855b818110611ea4575050508383809230606483015242608483015203925af18015611e9957917fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff939181606094611e89575b505047908080806001600160a01b03600e5416818080808960011c80955af150611e5b611c7a565b506001600160a01b03600f54165af190611e73611c7a565b50604051928352602083015215156040820152a1565b611e929161116d565b3881611e33565b6040513d84823e3d90fd5b82516001600160a01b0316845288965087955060209384019390920191600101611de2565b8380fd5b602485634e487b7160e01b81526032600452fd5b90506020813d602011611f1f575b81611efc6020938361116d565b81010312611f1b57516001600160a01b0381168103611f1b5738611d59565b8480fd5b3d9150611eef565b6040513d87823e3d90fd5b602483634e487b7160e01b81526032600452fd5b5056fea26469706673582212200efa7bf30521d42b6d3693e955be5c133c143bec957adf92d22bc24f719a2fd264736f6c634300081b0033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000ed896a98765adde9cfb0a0dfed828ae8c8a1ac04000000000000000000000000bd03841cc415fd08514fdfe5b4b29248e96c514a0000000000000000000000000000000000000000000000000000000000000007425554434845520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d45415400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806304824e701461102e57806306fdde0314610f6f578063095ea7b314610f495780630f959bb714610eb157806318160ddd14610e9357806323b872dd14610db8578063289af0d814610d9a5780632f1db31f14610d42578063313ce56714610d265780633950935114610cd357806340c10f1914610bf457806342966c6814610aa75780635431c94e14610958578063558a7297146108ed578063590ffdce1461088257806364ea519e1461082e5780636f077396146107d657806370a082311461079c57806385df8977146107455780638f818b901461072757806394d9c9c7146106d057806395d89b41146105c8578063a457c2d714610509578063a9059cbb146104d8578063ac6af280146103b6578063afa4f3b21461037e578063b37dd69014610358578063c0d7865514610301578063d3f6a1571461028e578063dcf34a6414610268578063dd62ed3e14610210578063eb70e498146101e9578063f0329f6b146101c25763f887ea400361000e57346101bd5760003660031901126101bd5760206001600160a01b0360115416604051908152f35b600080fd5b346101bd5760003660031901126101bd5760206001600160a01b0360135416604051908152f35b346101bd5760003660031901126101bd5760206001600160a01b0360125416604051908152f35b346101bd5760403660031901126101bd5761022961108f565b6001600160a01b036102396110a5565b911660005260026020526001600160a01b03604060002091166000526020526020604060002054604051908152f35b346101bd5760003660031901126101bd57602060ff60115460a01c166040519015158152f35b346101bd5760403660031901126101bd576001600160a01b036102af61108f565b816102b86110a5565b913360005260006020526102d8600160ff60406000205416151514611122565b166001600160a01b0319600e541617600e55166001600160a01b0319600f541617600f55600080f35b346101bd5760203660031901126101bd576001600160a01b0361032261108f565b336000526000602052610341600160ff60406000205416151514611122565b166001600160a01b03196011541617601155600080f35b346101bd5760003660031901126101bd57602060ff600f5460a01c166040519015158152f35b346101bd5760203660031901126101bd573360005260006020526103ae600160ff60406000205416151514611122565b600435600755005b346101bd5760403660031901126101bd57600435602435903360005260006020526103ed600160ff60406000205416151514611122565b6005811161046f57600f821161040557600c55600d55005b608460405162461bcd60e51b815260206004820152602660248201527f427574636865723a2053656c6c20746178206d757374206265206c657373207460448201527f68616e20313500000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f427574636865723a2042757920746178206d757374206265206c65737320746860448201527f616e2035000000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760403660031901126101bd576104fe6104f461108f565b602435903361132d565b602060405160018152f35b346101bd5760403660031901126101bd5761052261108f565b6024359033600052600260205260406000206001600160a01b0382166000526020526040600020549180831061055e576104fe920390336111e0565b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760003660031901126101bd5760405160006005548060011c906001811680156106c6575b6020831081146106b25782855290811561068e575060011461062e575b61062a8361061e8185038261116d565b604051918291826110bb565b0390f35b91905060056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0916000905b8082106106745750909150810160200161061e61060e565b91926001816020925483858801015201910190929161065c565b60ff191660208086019190915291151560051b8401909101915061061e905061060e565b602484634e487b7160e01b81526022600452fd5b91607f16916105f1565b346101bd5760203660031901126101bd576001600160a01b036106f161108f565b336000526000602052610710600160ff60406000205416151514611122565b166001600160a01b03196012541617601255600080f35b346101bd5760003660031901126101bd576020600c54604051908152f35b346101bd5760203660031901126101bd576001600160a01b0361076661108f565b336000526000602052610785600160ff60406000205416151514611122565b166001600160a01b03196013541617601355600080f35b346101bd5760203660031901126101bd576001600160a01b036107bd61108f565b1660005260016020526020604060002054604051908152f35b346101bd5760203660031901126101bd576107ef611104565b33600052600060205261080e600160ff60406000205416151514611122565b60ff60a01b1960ff60a01b600f5492151560a01b16911617600f55600080f35b346101bd5760203660031901126101bd57610847611104565b336000526000602052610866600160ff60406000205416151514611122565b61ff0060065491151560081b169061ff00191617600655600080f35b346101bd5760403660031901126101bd5761001961089e61108f565b6001600160a01b036108ae611113565b913360005260006020526108ce600160ff60406000205416151514611122565b16600052600860205260406000209060ff801983541691151516179055565b346101bd5760403660031901126101bd5761001961090961108f565b6001600160a01b03610919611113565b91336000526000602052610939600160ff60406000205416151514611122565b16600052600060205260406000209060ff801983541691151516179055565b346101bd5760403660031901126101bd5761097161108f565b6001600160a01b036109816110a5565b913360005260006020526109a1600160ff60406000205416151514611122565b1690604051907f70a08231000000000000000000000000000000000000000000000000000000008252306004830152602082602481865afa918215610a6657600092610a72575b5060446001600160a01b039160006020949560405196879586947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af18015610a6657610a3e57005b6100199060203d602011610a5f575b610a57818361116d565b8101906111c8565b503d610a4d565b6040513d6000823e3d90fd5b91506020823d602011610a9f575b81610a8d6020938361116d565b810103126101bd5790519060446109e8565b3d9150610a80565b346101bd5760203660031901126101bd576004353315610b8a5733600052600160205260406000205490808210610b205780600092338452600160205203604083205580600354036003556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3005b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b346101bd5760403660031901126101bd57610c0d61108f565b6001600160a01b0360243591336000526000602052610c38600160ff60406000205416151514611122565b16908115610c8f577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082610c726000946003546111a5565b6003558484526001825260408420818154019055604051908152a3005b606460405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b346101bd5760403660031901126101bd576104fe610cef61108f565b33600052600260205260406000206001600160a01b038216600052602052610d1f604060002060243590546111a5565b90336111e0565b346101bd5760003660031901126101bd57602060405160128152f35b346101bd5760203660031901126101bd57610d5b611104565b336000526000602052610d7a600160ff60406000205416151514611122565b60ff60a01b1960ff60a01b60115492151560a01b16911617601155600080f35b346101bd5760003660031901126101bd576020600d54604051908152f35b346101bd5760603660031901126101bd57610dd161108f565b610dd96110a5565b604435906001600160a01b038316600052600260205260406000206001600160a01b033316600052602052604060002054926000198403610e1f575b6104fe935061132d565b6001600160a01b03601354163303610e47575b610e42836104fe950333836111e0565b610e15565b82841015610e3257606460405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b346101bd5760003660031901126101bd576020600354604051908152f35b346101bd5760203660031901126101bd57610eca611104565b336000526000602052610ee9600160ff60406000205416151514611122565b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff75ff00000000000000000000000000000000000000000060115492151560a81b169116176011554360105561010061ff00196006541617600655600080f35b346101bd5760403660031901126101bd576104fe610f6561108f565b60243590336111e0565b346101bd5760003660031901126101bd5760405160006004548060011c90600181168015611024575b6020831081146106b25782855290811561068e5750600114610fc45761062a8361061e8185038261116d565b91905060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b916000905b80821061100a5750909150810160200161061e61060e565b919260018160209254838588010152019101909291610ff2565b91607f1691610f98565b346101bd5760203660031901126101bd57600080808061104c61108f565b33825281602052611068600160ff604085205416151514611122565b479082908215611085575b6001600160a01b031690f115610a6657005b6108fc9150611073565b600435906001600160a01b03821682036101bd57565b602435906001600160a01b03821682036101bd57565b91909160208152825180602083015260005b8181106110ee575060409293506000838284010152601f8019910116010190565b80602080928701015160408286010152016110cd565b6004359081151582036101bd57565b6024359081151582036101bd57565b1561112957565b606460405162461bcd60e51b815260206004820152600c60248201527f4e6f74206f70657261746f7200000000000000000000000000000000000000006044820152fd5b90601f8019910116810190811067ffffffffffffffff82111761118f57604052565b634e487b7160e01b600052604160045260246000fd5b919082018092116111b257565b634e487b7160e01b600052601160045260246000fd5b908160209103126101bd575180151581036101bd5790565b6001600160a01b03169081156112b1576001600160a01b03169182156112475760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260028252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b818102929181159184041417156111b257565b6001600160a01b0316908115611c10576001600160a01b0316908115611ba657806000526001602052604060002054838110611b3c5781600052600060205260ff604060002054161580611b23575b80611b19575b80611b0f575b15611abc5760115460ff8160a81c1615611a785760a01c60ff166119ab575b60ff600f5460a01c168061199f575b80611992575b61193b575b60065460ff8160081c1680611930575b806118d1575b806118b8575b8061189f575b61187d575b5060ff600654161582600052600860205260ff604060002054168015611865575b61185d575b611419575b50505050565b6001600160a01b0360125416604051630f24ca7d60e01b8152846004820152602081602481855afa908115610a665760009161183e575b50156117365750909192606481049161146b600d548461131a565b9260ff600f5460a01c161561152f575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092909182156114fe578190866000526001855203604060002055306000526001835260406000208281540190556040518281528585853093a30384600052600182526040600020818154019055604051908152a35b38808080611413565b81925085600052600184520360406000205584600052600182526040600020818154019055604051908152a36114f5565b90926001600160a01b03601354166040517f022c9a50000000000000000000000000000000000000000000000000000000008152866004820152602081602481855afa908115610a6657600091611717575b50156115c6575050916020916115bb7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef946009549061131a565b915b9193509161147b565b6040517fe090cad2000000000000000000000000000000000000000000000000000000008152866004820152602081602481855afa908115610a66576000916116f8575b501561164a575050916020916116447fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600a549061131a565b916115bd565b936020602494929395604051958680927f53c700880000000000000000000000000000000000000000000000000000000082528a60048301525afa948515610a66577fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef956020956000916116db575b506116c5575b506115bd565b6116d4919350600b549061131a565b91386116bf565b6116f29150863d8811610a5f57610a57818361116d565b386116b9565b611711915060203d602011610a5f57610a57818361116d565b3861160a565b611730915060203d602011610a5f57610a57818361116d565b38611581565b602060249160405192838092630f24ca7d60e01b82528760048301525afa908115610a665760009161181f575b50156117f6576020907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92939461179f600c546064830461131a565b9182156114fe578190866000526001855203604060002055306000526001835260406000208281540190556040518281528585853093a30384600052600182526040600020818154019055604051908152a36114f5565b8391600052600160205203604060002055600052600160205260406000209081540190556114f5565b611838915060203d602011610a5f57610a57818361116d565b38611763565b611857915060203d602011610a5f57610a57818361116d565b38611450565b50600061140e565b5083600052600860205260ff60406000205416611409565b60ff191660011760065561188f611cba565b60ff1960065416600655386113e8565b5083600052600860205260ff60406000205416156113e3565b5082600052600860205260ff60406000205416156113dd565b50602460206001600160a01b036012541660405192838092630f24ca7d60e01b82528860048301525afa908115610a6657600091611911575b50156113d7565b61192a915060203d602011610a5f57610a57818361116d565b3861190a565b5060ff8116156113d1565b60105443034381116111b25760059004611959575b436010556113c1565b600c5460041981019081116111b257600c55600d54600f811161197d575b50611950565b60041981019081116111b257600d5538611977565b50600f600d5410156113bc565b506005600c54116113b6565b600060206001600160a01b03601254166084604051809481937f37be75a00000000000000000000000000000000000000000000000000000000083523360048401528860248401528960448401528a60648401525af1908115610a6657600091611a59575b506113a757606460405162461bcd60e51b815260206004820152601a60248201527f57616c6c65744f627365727665723a2052617465206c696d69740000000000006044820152fd5b611a72915060203d602011610a5f57610a57818361116d565b38611a10565b606460405162461bcd60e51b815260206004820152601c60248201527f427574636865723a2054726164696e672069732064697361626c6564000000006044820152fd5b838293946020927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef94600052600184520360406000205584600052600182526040600020818154019055604051908152a3565b5030821415611388565b5030831415611382565b5082600052600060205260ff604060002054161561137c565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b3d15611cb5573d9067ffffffffffffffff821161118f5760405191611ca9601f8201601f19166020018461116d565b82523d6000602084013e565b606090565b60003081526001602052604081205415611f4657308152600160205260408120549060075480921015611ceb575050565b604051611cf960608261116d565b60028152602081016040368237815115611f32573081526001600160a01b03601154166040517fad5c4648000000000000000000000000000000000000000000000000000000008152602081600481855afa908115611f27578591611ee1575b50835160011015611ecd576001600160a01b03166040840152611d7e908590306111e0565b6001600160a01b036011541690813b15611ec9579183916040519384927f791ac94700000000000000000000000000000000000000000000000000000000845260a484019088600486015285602486015260a060448601525180915260c484019190855b818110611ea4575050508383809230606483015242608483015203925af18015611e9957917fe9f689eb4d290dd3a40869ea626055ee4a55d40f20286208d04ef55f39254cff939181606094611e89575b505047908080806001600160a01b03600e5416818080808960011c80955af150611e5b611c7a565b506001600160a01b03600f54165af190611e73611c7a565b50604051928352602083015215156040820152a1565b611e929161116d565b3881611e33565b6040513d84823e3d90fd5b82516001600160a01b0316845288965087955060209384019390920191600101611de2565b8380fd5b602485634e487b7160e01b81526032600452fd5b90506020813d602011611f1f575b81611efc6020938361116d565b81010312611f1b57516001600160a01b0381168103611f1b5738611d59565b8480fd5b3d9150611eef565b6040513d87823e3d90fd5b602483634e487b7160e01b81526032600452fd5b5056fea26469706673582212200efa7bf30521d42b6d3693e955be5c133c143bec957adf92d22bc24f719a2fd264736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000ed896a98765adde9cfb0a0dfed828ae8c8a1ac04000000000000000000000000bd03841cc415fd08514fdfe5b4b29248e96c514a0000000000000000000000000000000000000000000000000000000000000007425554434845520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d45415400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): BUTCHER
Arg [1] : symbol_ (string): MEAT
Arg [2] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [3] : _buyFee (uint256): 35
Arg [4] : _sellFee (uint256): 35
Arg [5] : _mooDengSellFee (uint256): 0
Arg [6] : _chickenSellFee (uint256): 5
Arg [7] : _cowSellFee (uint256): 10
Arg [8] : _marketingWallet (address): 0xEd896a98765aDDe9cFB0A0dfED828AE8C8A1aC04
Arg [9] : _devWallet (address): 0xbD03841cC415fd08514Fdfe5b4B29248e96c514a
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000023
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000023
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [8] : 000000000000000000000000ed896a98765adde9cfb0a0dfed828ae8c8a1ac04
Arg [9] : 000000000000000000000000bd03841cc415fd08514fdfe5b4b29248e96c514a
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [11] : 4255544348455200000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [13] : 4d45415400000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.