Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | ||
---|---|---|---|---|---|---|---|---|
0xc3ce193b016dc715efdba8247fd8980c74f4bb358a5cde508716886188049fb9 | Add Liquidity Ta... | 21541367 | 446 days 10 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.089112276135 |
0x44c95a9f8a9663c554ccd3643898d7f1a6a82d6d27d1369e69ab81b9bdd11282 | Add Liquidity Ta... | 21513713 | 446 days 17 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.102939895844 |
0x484f062d1c04c402841c0836a9d0b6bb7eab13000cf2cf4b195df5d29c059bfc | Add Liquidity ET... | 21503849 | 446 days 19 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 4.99999908931899 FTM | 0.106257427345 |
0x2a2cb538516982ea1047eeddfd373529cb83222e4c8322c38bcf582c96cd4d66 | Add Liquidity Ta... | 21503540 | 446 days 19 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.094120773275 |
0xb443fe7397b089802fb41d81e049566cab43a92f045f308ca28d0db092b9c44c | Add Liquidity ET... | 21503356 | 446 days 19 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 19.828375812040046 FTM | 0.115575168652 |
0x9c38fd2cae43bf5afd717c2912c8e32986844afef36e4352417575aaa0605b4f | Add Liquidity ET... | 21503237 | 446 days 19 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 13.769883560797443 FTM | 0.091063151835 |
0x30d89bb870ceab09319c81ed9a0b26a636955954b48daf9aaf9f147260925e7a | Add Liquidity ET... | 21502987 | 446 days 20 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 2.754139258677304 FTM | 0.10236831079 |
0x05119ec253b0a738573176311bdfd176e485ae166b69acee6e27730e5a2a5baf | Add Liquidity Ta... | 21502775 | 446 days 20 hrs ago | 0xe0c15e9fe90d56472d8a43da5d3ef34ae955583c | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.090781112871 |
0xcc3522ccac474f61e7ad3152aef3311317d27e45b932dcab87c29174546368af | Add Liquidity Ta... | 20470742 | 457 days 6 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.148891552748 |
0xe88c4bd029dca6f9d4cf13cb9431c47990d5bd8184fbdedae28b4af616b2e7ba | Add Liquidity ET... | 20470169 | 457 days 6 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0.04708990526 FTM | 0.124351242032 |
0x36ce8aaf8037954d83d8d73eed85a0d1386627eac8bdaa4a44c52547559d4f17 | Add Liquidity ET... | 20469855 | 457 days 6 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0.04708990526 FTM | 0.110295543725 |
0xbfba3aee42ee631cdf2bd30cbc3960cda676accdd8bf4c2ba4eb5f88ded9efa3 | Add Liquidity ET... | 20469784 | 457 days 6 hrs ago | 0x35b28008fae79977b37c58bd9dc8eb7dcac880e1 | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0.04708990526 FTM | 0.082381796066 |
0x66a47b9d906d9d2e9ec14d12eaf63a67e516ca663d45db9693eda25633537d9b | Add Liquidity Ta... | 20457143 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.104181335549 |
0xbced9c0896f0e08f3eb58fc2ae03685d243ebb7930fcaed364a1aa18848b0f94 | Add Liquidity Ta... | 20457065 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.067918205211 |
0x1027de4dd170867cb882387ce32eacad7852558e32001f410e3d40613363e046 | Add Liquidity ET... | 20457045 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0.0470075197 FTM | 0.095525913184 |
0xfa40099f19fc39a631906d5dd4b5547c9a4ed7a9984ecb87a869a80cea1e2c6c | Set Coffin | 20457020 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.005880391509 |
0x152209cf462c8444baf8d2a8e9e780fb832a1d247a473b3ae06e6f8266cc79f4 | Add Liquidity ET... | 20456860 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0.0470075197 FTM | 0.056737502422 |
0xc124e2a8e58756556ee60c33ab026289120960bb1a6852aeeac58f3e41bc283b | Add Liquidity Ta... | 20456819 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | 0xd8d4c67c68b4024f6ad41724d071e9f44c76184d | 0 FTM | 0.056817510535 |
0x45431a1e42dba75d68dbbed581cfb4a25d4ea6410bf786d846b03a7a50a086a0 | 0x60806040 | 20456756 | 457 days 9 hrs ago | Coffin Finance: Deployer | IN | Create: TaxOfficeV2 | 0 FTM | 0.339478543248 |
[ Download CSV Export ]
Latest 8 internal transactions
[ Download CSV Export ]
Contract Name:
TaxOfficeV2
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 450 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "./interfaces/ITaxableToken.sol"; import "./interfaces/IUniswapV2Router02.sol"; contract TaxOfficeV2 is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; address public coffin; address public wftm = address(0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83); address public spookyUniRouter = address(0xF491e7B69E4244ad4002BC14e878a34207E38c29); address public spiritUniRouter = address(0x16327E3FbDaCA3bcF7E38F5Af2599D2DDc33aE52); address public uniRouter = address(0xF491e7B69E4244ad4002BC14e878a34207E38c29); mapping(address => bool) public taxExclusionEnabled; function setCoffin(address _coffin) external onlyOwner { require(_coffin!=address(0), "coffin address error "); coffin = _coffin; } function setUniRouter(address _uniRouter) external onlyOwner { require(_uniRouter!=address(0), "coffin address error "); uniRouter = _uniRouter; } function enableAutoCalculateTax() public onlyOwner { ITaxableToken(coffin).enableAutoCalculateTax(); } function disableAutoCalculateTax() public onlyOwner { ITaxableToken(coffin).disableAutoCalculateTax(); } function setTaxThreshold(uint256 _taxThreshold) public onlyOwner { ITaxableToken(coffin).setTaxThreshold(_taxThreshold); } function setBurnThreshold(uint256 _burnThreshold) public onlyOwner { ITaxableToken(coffin).setBurnThreshold(_burnThreshold); } function setBasisTaxRate(uint16 _val) public onlyOwner { ITaxableToken(coffin).setBasisTaxRate(_val); } function setTaxCollectorAddress( address _taxCollectorAddress ) public onlyOwner { ITaxableToken(coffin).setTaxCollectorAddress(_taxCollectorAddress); } function excludeAddressFromTax(address _address) external onlyOwner returns (bool) { // return ITaxableToken(coffin).excludeAddressFromTax(_address); return _excludeAddressFromTax(_address); } function _excludeAddressFromTax(address _address) private returns (bool) { if (!ITaxableToken(coffin).isExcluded(_address)) { // update return ITaxableToken(coffin).excludeAddressFromTax(_address); } return false; // already } function includeAddressInTax(address _address) external onlyOwner returns (bool) { // return ITaxableToken(coffin).includeAddressInTax(_address); return _includeAddressInTax(_address); } function _includeAddressInTax(address _address) private returns (bool) { if (ITaxableToken(coffin).isExcluded(_address)) { return ITaxableToken(coffin).includeAddressInTax(_address); } return false; // already } function isExcluded(address _address) public view returns (bool) { return ITaxableToken(coffin).isExcluded(_address); } function taxRate() external view returns (uint16) { return ITaxableToken(coffin).latestTaxRate(); } function enableTwap() public onlyOwner { ITaxableToken(coffin).enableTwap(); } function disablTwap() public onlyOwner { ITaxableToken(coffin).disablTwap(); } function enableTax() public onlyOwner { ITaxableToken(coffin).enableTax(); } function disableTax() public onlyOwner { ITaxableToken(coffin).disableTax(); } function setCoffinOracle(address _coffinOracle) external onlyOwner { ITaxableToken(coffin).setCoffinOracle(_coffinOracle); } function transferTaxOffice(address _newTaxOffice) external onlyOwner { ITaxableToken(coffin).setTaxOffice(_newTaxOffice); } function setAdjustTaxRateA(uint32 _adjustTaxRate) external onlyOwner { ITaxableToken(coffin).setAdjustTaxRateA(_adjustTaxRate); } function setAdjustTaxRateB(uint32 _adjustTaxRate) external onlyOwner { ITaxableToken(coffin).setAdjustTaxRateB(_adjustTaxRate); } function setStaticTaxRate(uint16 _staticTaxRate) external onlyOwner { ITaxableToken(coffin).setStaticTaxRate(_staticTaxRate); } function setMaxTaxRate(uint16 _maxTaxRate) external onlyOwner { ITaxableToken(coffin).setMaxTaxRate(_maxTaxRate); } function rescueFund(IERC20 _token, address _to) external onlyOwner { IERC20(_token).safeTransfer( _to, IERC20(_token).balanceOf(address(this)) ); } function addLiquidityTaxFreeSpookySwap( address token, uint256 amtCoffin, uint256 amtToken, uint256 amtCoffinMin, uint256 amtTokenMin, uint256 deadline ) external returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && amtToken != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); IERC20(token).transferFrom(msg.sender, address(this), amtToken); _approveTokenIfNeeded(coffin, uniRouter); _approveTokenIfNeeded(token, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtToken; uint256 liquidity; (resultAmtCoffin, resultAmtToken, liquidity) = IUniswapV2Router02(spookyUniRouter).addLiquidity( coffin, token, amtCoffin, amtToken, amtCoffinMin, amtTokenMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } if(amtToken.sub(resultAmtToken) > 0) { IERC20(token).transfer(msg.sender, amtToken.sub(resultAmtToken)); } return (resultAmtCoffin, resultAmtToken, liquidity); } function addLiquidityTaxFreeSpiritSwap( address token, uint256 amtCoffin, uint256 amtToken, uint256 amtCoffinMin, uint256 amtTokenMin, uint256 deadline ) external returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && amtToken != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); IERC20(token).transferFrom(msg.sender, address(this), amtToken); _approveTokenIfNeeded(coffin, uniRouter); _approveTokenIfNeeded(token, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtToken; uint256 liquidity; (resultAmtCoffin, resultAmtToken, liquidity) = IUniswapV2Router02(spiritUniRouter).addLiquidity( coffin, token, amtCoffin, amtToken, amtCoffinMin, amtTokenMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } if(amtToken.sub(resultAmtToken) > 0) { IERC20(token).transfer(msg.sender, amtToken.sub(resultAmtToken)); } return (resultAmtCoffin, resultAmtToken, liquidity); } function addLiquidityTaxFree( address token, uint256 amtCoffin, uint256 amtToken, uint256 amtCoffinMin, uint256 amtTokenMin, uint256 deadline ) external returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && amtToken != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); IERC20(token).transferFrom(msg.sender, address(this), amtToken); _approveTokenIfNeeded(coffin, uniRouter); _approveTokenIfNeeded(token, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtToken; uint256 liquidity; (resultAmtCoffin, resultAmtToken, liquidity) = IUniswapV2Router02(uniRouter).addLiquidity( coffin, token, amtCoffin, amtToken, amtCoffinMin, amtTokenMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } if(amtToken.sub(resultAmtToken) > 0) { IERC20(token).transfer(msg.sender, amtToken.sub(resultAmtToken)); } return (resultAmtCoffin, resultAmtToken, liquidity); } function addLiquidityETHTaxFreeSpookySwap( uint256 amtCoffin, uint256 amtCoffinMin, uint256 amtFtmMin, uint256 deadline ) external payable returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && msg.value != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); _approveTokenIfNeeded(coffin, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtFtm; uint256 liquidity; (resultAmtCoffin, resultAmtFtm, liquidity) = IUniswapV2Router02(spookyUniRouter).addLiquidityETH{value: msg.value}( coffin, amtCoffin, amtCoffinMin, amtFtmMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } return (resultAmtCoffin, resultAmtFtm, liquidity); } function addLiquidityETHTaxFreeSpiritSwap( uint256 amtCoffin, uint256 amtCoffinMin, uint256 amtFtmMin, uint256 deadline ) external payable returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && msg.value != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); _approveTokenIfNeeded(coffin, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtFtm; uint256 liquidity; (resultAmtCoffin, resultAmtFtm, liquidity) = IUniswapV2Router02(spiritUniRouter).addLiquidityETH{value: msg.value}( coffin, amtCoffin, amtCoffinMin, amtFtmMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } return (resultAmtCoffin, resultAmtFtm, liquidity); } function addLiquidityETHTaxFree( uint256 amtCoffin, uint256 amtCoffinMin, uint256 amtFtmMin, uint256 deadline ) external payable returns ( uint256, uint256, uint256 ) { require(amtCoffin != 0 && msg.value != 0, "amounts can't be 0"); // _excludeAddressFromTax(msg.sender); IERC20(coffin).transferFrom(msg.sender, address(this), amtCoffin); _approveTokenIfNeeded(coffin, uniRouter); // _includeAddressInTax(msg.sender); uint256 resultAmtCoffin; uint256 resultAmtFtm; uint256 liquidity; (resultAmtCoffin, resultAmtFtm, liquidity) = IUniswapV2Router02(uniRouter).addLiquidityETH{value: msg.value}( coffin, amtCoffin, amtCoffinMin, amtFtmMin, msg.sender, deadline // block.timestamp ); if(amtCoffin.sub(resultAmtCoffin) > 0) { IERC20(coffin).transfer(msg.sender, amtCoffin.sub(resultAmtCoffin)); } return (resultAmtCoffin, resultAmtFtm, liquidity); } // function taxFreeTransferFrom( // address _sender, // address _recipient, // uint256 _amt // ) external { // require(taxExclusionEnabled[msg.sender], "Address not approved for tax free transfers"); // _excludeAddressFromTax(_sender); // IERC20(coffin).transferFrom(_sender, _recipient, _amt); // _includeAddressInTax(_sender); // } // function setTaxExclusionForAddress(address _address, bool _excluded) external onlyOwner { // taxExclusionEnabled[_address] = _excluded; // } function _approveTokenIfNeeded(address _token, address _router) private { if (IERC20(_token).allowance(address(this), _router) == 0) { IERC20(_token).approve(_router, type(uint256).max); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC20.sol"; import "../../../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface ITaxableToken { function enableTax() external; function disableTax() external; function enableAutoCalculateTax() external; function disableAutoCalculateTax() external; function setTaxCollectorAddress(address _taxCollectorAddress) external; function setTaxThreshold(uint256 _taxThreshold) external; function setBurnThreshold(uint256 _burnThreshold) external; function setBasisTaxRate(uint16 _val) external; function enableTwap() external; function disablTwap() external ; function includeAddressInTax(address _address) external returns (bool); function excludeAddressFromTax(address _address) external returns (bool); function isExcluded(address _address) external view returns (bool); function setCoffinOracle(address _coffinOracle) external; function setStaticTaxRate(uint16 _staticTaxRate) external; function setTaxOffice(address _taxOffice) external; function setAdjustTaxRateA(uint32 _adjustTaxRate) external; function setAdjustTaxRateB(uint32 _adjustTaxRate) external; function setMaxTaxRate(uint16 _maxTaxRate) external; function latestTaxRate() view external returns(uint16); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.11; import "./IUniswapV2Router01.sol"; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface IUniswapV2Router01 { function factory() external view returns (address); function WETH() external view 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); }
{ "optimizer": { "enabled": true, "runs": 450 }, "metadata": { "bytecodeHash": "none", "useLiteralContent": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtFtmMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETHTaxFree","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtFtmMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETHTaxFreeSpiritSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtFtmMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETHTaxFreeSpookySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtToken","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtTokenMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityTaxFree","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtToken","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtTokenMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityTaxFreeSpiritSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amtCoffin","type":"uint256"},{"internalType":"uint256","name":"amtToken","type":"uint256"},{"internalType":"uint256","name":"amtCoffinMin","type":"uint256"},{"internalType":"uint256","name":"amtTokenMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityTaxFreeSpookySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coffin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disablTwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableAutoCalculateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableAutoCalculateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"excludeAddressFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"includeAddressInTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"rescueFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_adjustTaxRate","type":"uint32"}],"name":"setAdjustTaxRateA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_adjustTaxRate","type":"uint32"}],"name":"setAdjustTaxRateB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_val","type":"uint16"}],"name":"setBasisTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnThreshold","type":"uint256"}],"name":"setBurnThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_coffin","type":"address"}],"name":"setCoffin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_coffinOracle","type":"address"}],"name":"setCoffinOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_maxTaxRate","type":"uint16"}],"name":"setMaxTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_staticTaxRate","type":"uint16"}],"name":"setStaticTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxCollectorAddress","type":"address"}],"name":"setTaxCollectorAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxThreshold","type":"uint256"}],"name":"setTaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniRouter","type":"address"}],"name":"setUniRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spiritUniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spookyUniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"taxExclusionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRate","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTaxOffice","type":"address"}],"name":"transferTaxOffice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wftm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600280546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790915560038054821673f491e7b69e4244ad4002bc14e878a34207e38c299081179091556004805483167316327e3fbdaca3bcf7e38f5af2599d2ddc33ae521790556005805490921617905534801561008257600080fd5b5061008c33610091565b6100e1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6129d8806100f06000396000f3fe6080604052600436106102255760003560e01c80637403456f11610123578063be94f86b116100ab578063ee4e26871161006f578063ee4e268714610641578063f2fde38b14610661578063f4f45b4614610681578063fbe2f9d7146106a1578063ff87fc7c146106c157600080fd5b8063be94f86b146105ac578063cba0e996146105cc578063cd428af3146105ec578063ced695a41461060c578063d1d31a371461062157600080fd5b80639d6b5f21116100f25780639d6b5f21146105175780639e3cb7cb14610537578063a0025c4a14610557578063a0e47bf614610577578063be8ec6d21461059757600080fd5b80637403456f14610491578063771a3a1d146104b15780638da5cb5b146104d95780638e6c7722146104f757600080fd5b80633fa09639116101b15780635c26606a116101755780635c26606a1461040757806362b8b2e51461042757806365bbacd91461044757806369356d471461045c578063715018a61461047c57600080fd5b80633fa096391461038a578063522d0c1e1461039d57806353788a6b146103bd57806353eb3bcf146103d2578063593a48c1146103e757600080fd5b80631711063b116101f85780631711063b146102f757806319db099d146103175780632084acbc1461033757806335c9de7e146103575780633a9874891461036a57600080fd5b806307a212be1461022a57806307cf5b861461024c5780630a4f20f81461027f57806313762bdc146102b7575b600080fd5b34801561023657600080fd5b5061024a61024536600461282e565b6106d6565b005b61025f61025a36600461288e565b610785565b604080519384526020840192909252908201526060015b60405180910390f35b34801561028b57600080fd5b5060035461029f906001600160a01b031681565b6040516001600160a01b039091168152602001610276565b3480156102c357600080fd5b506102e76102d2366004612730565b60066020526000908152604090205460ff1681565b6040519015158152602001610276565b34801561030357600080fd5b5060045461029f906001600160a01b031681565b34801561032357600080fd5b506102e7610332366004612730565b6109f1565b34801561034357600080fd5b5061024a6103523660046128c0565b610a49565b61025f61036536600461288e565b610ac7565b34801561037657600080fd5b5061024a6103853660046128c0565b610c20565b61025f61039836600461288e565b610c9e565b3480156103a957600080fd5b5061024a6103b83660046127bb565b610df9565b3480156103c957600080fd5b5061024a610ed3565b3480156103de57600080fd5b5061024a610f85565b3480156103f357600080fd5b5060015461029f906001600160a01b031681565b34801561041357600080fd5b5061024a6104223660046127f4565b61101d565b34801561043357600080fd5b5061025f61044236600461274d565b611099565b34801561045357600080fd5b5061024a61145e565b34801561046857600080fd5b5061024a610477366004612730565b6114f6565b34801561048857600080fd5b5061024a611570565b34801561049d57600080fd5b5061024a6104ac366004612730565b6115c4565b3480156104bd57600080fd5b506104c661167c565b60405161ffff9091168152602001610276565b3480156104e557600080fd5b506000546001600160a01b031661029f565b34801561050357600080fd5b5061024a610512366004612730565b6116fe565b34801561052357600080fd5b5061024a61053236600461282e565b611778565b34801561054357600080fd5b5061025f61055236600461274d565b6117f1565b34801561056357600080fd5b5061024a6105723660046127f4565b6119f7565b34801561058357600080fd5b5060055461029f906001600160a01b031681565b3480156105a357600080fd5b5061024a611a73565b3480156105b857600080fd5b506102e76105c7366004612730565b611b0b565b3480156105d857600080fd5b506102e76105e7366004612730565b611b5d565b3480156105f857600080fd5b5061024a6106073660046127f4565b611bdb565b34801561061857600080fd5b5061024a611c57565b34801561062d57600080fd5b5061024a61063c366004612730565b611cef565b34801561064d57600080fd5b5061024a61065c366004612730565b611d69565b34801561066d57600080fd5b5061024a61067c366004612730565b611e21565b34801561068d57600080fd5b5060025461029f906001600160a01b031681565b3480156106ad57600080fd5b5061025f6106bc36600461274d565b611eda565b3480156106cd57600080fd5b5061024a6120de565b6000546001600160a01b031633146107235760405162461bcd60e51b815260206004820181905260248201526000805160206129ac83398151915260448201526064015b60405180910390fd5b6001546040516303d1095f60e11b8152600481018390526001600160a01b03909116906307a212be906024015b600060405180830381600087803b15801561076a57600080fd5b505af115801561077e573d6000803e3d6000fd5b5050505050565b60008080861580159061079757503415155b6107d85760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190612799565b5060015460055461087f916001600160a01b039081169116612176565b60055460015460405163f305d71960e01b81526001600160a01b039182166004820152602481018a9052604481018990526064810188905233608482015260a481018790526000928392839291169063f305d71990349060c4015b6060604051808303818588803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061092c9190612860565b91945092509050600061093f8b85612281565b11156109e1576001546001600160a01b031663a9059cbb336109618d87612281565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190612799565b505b9199909850909650945050505050565b600080546001600160a01b03163314610a3a5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b610a4382612294565b92915050565b6000546001600160a01b03163314610a915760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001546040516308212b2f60e21b815263ffffffff831660048201526001600160a01b0390911690632084acbc90602401610750565b600080808615801590610ad957503415155b610b1a5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba49190612799565b50600154600554610bc1916001600160a01b039081169116612176565b60035460015460405163f305d71960e01b81526001600160a01b039182166004820152602481018a9052604481018990526064810188905233608482015260a481018790526000928392839291169063f305d71990349060c4016108da565b6000546001600160a01b03163314610c685760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600154604051633a98748960e01b815263ffffffff831660048201526001600160a01b0390911690633a98748990602401610750565b600080808615801590610cb057503415155b610cf15760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015610d4357600080fd5b505af1158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190612799565b50600154600554610d98916001600160a01b039081169116612176565b6004805460015460405163f305d71960e01b81526001600160a01b0391821693810193909352602483018a9052604483018990526064830188905233608484015260a4830187905260009283928392169063f305d71990349060c4016108da565b6000546001600160a01b03163314610e415760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6040516370a0823160e01b8152306004820152610ecf9082906001600160a01b038516906370a082319060240160206040518083038186803b158015610e8657600080fd5b505afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190612847565b6001600160a01b038516919061237b565b5050565b6000546001600160a01b03163314610f1b5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b03166353788a6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b505af1158015610f7f573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610fcd5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b03166353eb3bcf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b6000546001600160a01b031633146110655760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600154604051632e13303560e11b815261ffff831660048201526001600160a01b0390911690635c26606a90602401610750565b6000808087158015906110ab57508615155b6110ec5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018a90526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561113e57600080fd5b505af1158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190612799565b506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038a16906323b872dd90606401602060405180830381600087803b1580156111c557600080fd5b505af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fd9190612799565b5060015460055461121a916001600160a01b039081169116612176565b600554611231908a906001600160a01b0316612176565b60055460015460405162e8e33760e81b81526001600160a01b0391821660048201528b82166024820152604481018b9052606481018a90526084810189905260a481018890523360c482015260e481018790526000928392839291169063e8e3370090610104015b606060405180830381600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112eb9190612860565b9194509250905060006112fe8c85612281565b11156113a0576001546001600160a01b031663a9059cbb336113208e87612281565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561136657600080fd5b505af115801561137a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139e9190612799565b505b60006113ac8b84612281565b111561144c576001600160a01b038c1663a9059cbb336113cc8d86612281565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561141257600080fd5b505af1158015611426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144a9190612799565b505b919b909a509098509650505050505050565b6000546001600160a01b031633146114a65760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b03166365bbacd96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b6000546001600160a01b0316331461153e5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001546040516369356d4760e01b81526001600160a01b038381166004830152909116906369356d4790602401610750565b6000546001600160a01b031633146115b85760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6115c260006123e2565b565b6000546001600160a01b0316331461160c5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001600160a01b03811661165a5760405162461bcd60e51b8152602060048201526015602482015274031b7b33334b71030b2323932b9b99032b93937b91605d1b604482015260640161071a565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460408051635373d58b60e11b815290516000926001600160a01b03169163a6e7ab16916004808301926020929190829003018186803b1580156116c157600080fd5b505afa1580156116d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f99190612811565b905090565b6000546001600160a01b031633146117465760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001546040516347363b9160e11b81526001600160a01b03838116600483015290911690638e6c772290602401610750565b6000546001600160a01b031633146117c05760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600154604051639d6b5f2160e01b8152600481018390526001600160a01b0390911690639d6b5f2190602401610750565b60008080871580159061180357508615155b6118445760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018a90526001600160a01b03909116906323b872dd90606401602060405180830381600087803b15801561189657600080fd5b505af11580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ce9190612799565b506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038a16906323b872dd90606401602060405180830381600087803b15801561191d57600080fd5b505af1158015611931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119559190612799565b50600154600554611972916001600160a01b039081169116612176565b600554611989908a906001600160a01b0316612176565b6004805460015460405162e8e33760e81b81526001600160a01b03918216938101939093528b81166024840152604483018b9052606483018a90526084830189905260a483018890523360c484015260e4830187905260009283928392169063e8e337009061010401611299565b6000546001600160a01b03163314611a3f5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001546040516350012e2560e11b815261ffff831660048201526001600160a01b039091169063a0025c4a90602401610750565b6000546001600160a01b03163314611abb5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b031663be8ec6d26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b600080546001600160a01b03163314611b545760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b610a4382612432565b6001546040516365d074cb60e11b81526001600160a01b038381166004830152600092169063cba0e9969060240160206040518083038186803b158015611ba357600080fd5b505afa158015611bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190612799565b6000546001600160a01b03163314611c235760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b60015460405163cd428af360e01b815261ffff831660048201526001600160a01b039091169063cd428af390602401610750565b6000546001600160a01b03163314611c9f5760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b031663ced695a46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b6000546001600160a01b03163314611d375760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600154604051631f83ebb560e11b81526001600160a01b03838116600483015290911690633f07d76a90602401610750565b6000546001600160a01b03163314611db15760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001600160a01b038116611dff5760405162461bcd60e51b8152602060048201526015602482015274031b7b33334b71030b2323932b9b99032b93937b91605d1b604482015260640161071a565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611e695760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b6001600160a01b038116611ece5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071a565b611ed7816123e2565b50565b600080808715801590611eec57508615155b611f2d5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b604482015260640161071a565b6001546040516323b872dd60e01b8152336004820152306024820152604481018a90526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015611f7f57600080fd5b505af1158015611f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb79190612799565b506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038a16906323b872dd90606401602060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e9190612799565b5060015460055461205b916001600160a01b039081169116612176565b600554612072908a906001600160a01b0316612176565b60035460015460405162e8e33760e81b81526001600160a01b0391821660048201528b82166024820152604481018b9052606481018a90526084810189905260a481018890523360c482015260e481018790526000928392839291169063e8e337009061010401611299565b6000546001600160a01b031633146121265760405162461bcd60e51b815260206004820181905260248201526000805160206129ac833981519152604482015260640161071a565b600160009054906101000a90046001600160a01b03166001600160a01b031663ff87fc7c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610f6b57600080fd5b604051636eb1769f60e11b81523060048201526001600160a01b03828116602483015283169063dd62ed3e9060440160206040518083038186803b1580156121bd57600080fd5b505afa1580156121d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f59190612847565b610ecf5760405163095ea7b360e01b81526001600160a01b038281166004830152600019602483015283169063095ea7b390604401602060405180830381600087803b15801561224457600080fd5b505af1158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190612799565b505050565b600061228d8284612935565b9392505050565b6001546040516365d074cb60e11b81526001600160a01b038381166004830152600092169063cba0e9969060240160206040518083038186803b1580156122da57600080fd5b505afa1580156122ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123129190612799565b15612373576001546040516319db099d60e01b81526001600160a01b038481166004830152909116906319db099d906024015b602060405180830381600087803b15801561235f57600080fd5b505af1158015611bb7573d6000803e3d6000fd5b506000919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261227c9084906124e6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546040516365d074cb60e11b81526001600160a01b038381166004830152600092169063cba0e9969060240160206040518083038186803b15801561247857600080fd5b505afa15801561248c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b09190612799565b6123735760015460405163be94f86b60e01b81526001600160a01b0384811660048301529091169063be94f86b90602401612345565b600061253b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125b89092919063ffffffff16565b80519091501561227c57808060200190518101906125599190612799565b61227c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161071a565b60606125c784846000856125cf565b949350505050565b6060824710156126305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161071a565b843b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161071a565b600080866001600160a01b0316858760405161269a91906128e6565b60006040518083038185875af1925050503d80600081146126d7576040519150601f19603f3d011682016040523d82523d6000602084013e6126dc565b606091505b50915091506126ec8282866126f7565b979650505050505050565b6060831561270657508161228d565b8251156127165782518084602001fd5b8160405162461bcd60e51b815260040161071a9190612902565b60006020828403121561274257600080fd5b813561228d81612986565b60008060008060008060c0878903121561276657600080fd5b863561277181612986565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b6000602082840312156127ab57600080fd5b8151801515811461228d57600080fd5b600080604083850312156127ce57600080fd5b82356127d981612986565b915060208301356127e981612986565b809150509250929050565b60006020828403121561280657600080fd5b813561228d8161299b565b60006020828403121561282357600080fd5b815161228d8161299b565b60006020828403121561284057600080fd5b5035919050565b60006020828403121561285957600080fd5b5051919050565b60008060006060848603121561287557600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156128a457600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156128d257600080fd5b813563ffffffff8116811461228d57600080fd5b600082516128f881846020870161295a565b9190910192915050565b602081526000825180602084015261292181604085016020870161295a565b601f01601f19169190910160400192915050565b60008282101561295557634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561297557818101518382015260200161295d565b83811115610f7f5750506000910152565b6001600160a01b0381168114611ed757600080fd5b61ffff81168114611ed757600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a164736f6c6343000807000a
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.