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] | ||
---|---|---|---|---|---|---|---|---|
0x1bc0f9060de878e20e3d8194218e00de2dfcbb0c29d3e2424cb34bd1eb9de008 | Add Liquidity ET... | 20443988 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4832349233 FTM | 0.079963557346 |
0xdb04a14829184fbe289de4af2696d120fa5b44d10888fb235e9fbb9fa7d761d7 | Add Liquidity ET... | 20443964 | 457 days 12 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4832349233 FTM | 0.081895616356 |
0x5330c44109444ced50ea86f4a300c19a74d28b19ea26b34bc4fd6f48a7d2d00f | Add Liquidity ET... | 20443734 | 457 days 12 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4832349233 FTM | 0.085432586628 |
0x361945083c5432fe1e43dc0ef05bdcf5f88d3b1344802df6712187a0ee65e023 | Add Liquidity ET... | 20443711 | 457 days 12 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4832349233 FTM | 0.085389765611 |
0xd7fcabe5ab5bc6ea3b3ca4edc401f595627fd5611a38e6d5c5d3c801c752418e | Add Liquidity ET... | 20443665 | 457 days 12 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4833655067 FTM | 0.085855301061 |
0x8b17001260239d019b76f7f1c3ad18e3dbc1d56b745b78241f99a377eb740db4 | Add Liquidity ET... | 20443563 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4833655067 FTM | 0.081750918627 |
0x2e713162bb622cf75239d159abfe89144e74ce3034973ecdd2eac804ec54bc94 | Add Liquidity ET... | 20443011 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4833737629 FTM | 0.097080119061 |
0x172505053914850429188042aaae92d7264f1d27c719cbc9bc4944ad080e79c5 | Add Liquidity ET... | 20442870 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4833737629 FTM | 0.087504415956 |
0xb2810ee73d26583e6b801c74d33a4991a936cec1960666fb37bce2b0d2d463c9 | Add Liquidity ET... | 20442838 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.4833737629 FTM | 0.087504415956 |
0x05e2b9387e0ec76a31a5f4948f1a8014bd6e90b114757d755a2a942731adbc37 | Add Liquidity ET... | 20442744 | 457 days 12 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.486547 FTM | 0.090428050205 |
0xcd6a9b8590cb4b84db13814cf8b7230cd3223bdab801b8fbd42567efb03ab78e | Add Liquidity ET... | 20437083 | 457 days 13 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.486547 FTM | 0.066342872761 |
0x06a9abf775973afe41fa19f671b704dabd49872bae3e412f2bbc0e7729b5602e | Add Liquidity ET... | 20436928 | 457 days 13 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.486547 FTM | 0.04244406767 |
0x7ee6198493fb3aab1991a8ddd459585d2813db2d71a6b6ac67078bbc7796aaa0 | Add Liquidity ET... | 20436897 | 457 days 13 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.486547 FTM | 0.04305630723 |
0x8f89a527df6a1136137de0adfe90b7bb11588d7f7d495efb705c3c8bbc287a9e | Add Liquidity ET... | 20436775 | 457 days 13 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.483547 FTM | 0.044198426769 |
0xfbb0da34751e97ca87b900814d7592a5a0ec6dd1a0ceee3674bdea4e8d475308 | Add Liquidity ET... | 20436604 | 457 days 13 hrs ago | 0x6ea8d23189ae68f1423c6fc8f93b602b5c0524a7 | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.473547 FTM | 0.0431232204 |
0x17661752e652b1ac3f89b091d0ec094da16149e305a2f1fec4bacacfa3c45572 | Add Liquidity Ta... | 20436372 | 457 days 13 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.05765747238 |
0xb49f53380e72982b95d38a8a836e232425436a84cc3e591e3ff1b716b840b59d | Add Liquidity ET... | 20436346 | 457 days 13 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.473547 FTM | 0.064512106219 |
0x6330ac5f4a9308ae8b6c92b3e4571c62dd2de16caf89424c2d85decd4a1a1b7c | Add Liquidity Ta... | 20436256 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.056595075677 |
0xdaffacc75b96d8006539f6a7a6a261754e00461afb1b884e93f3262ae2dfc2bb | Add Liquidity ET... | 20436235 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.473547 FTM | 0.067632813917 |
0x98c6d2ff19c4ea6709785c9c48b071040213c05878fbfd8ede4cc9e7e56b6ec5 | Add Liquidity Ta... | 20435707 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.058793029131 |
0xe5ea2988db42ca215c955c8e2199cd2578e63a916d494f0379c9cd38e874a262 | Add Liquidity Ta... | 20435646 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.057369934732 |
0x176f64fcee550f6edc9e2142857e37cdb823acc0be2c30714af4d8456a198390 | Add Liquidity ET... | 20433776 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0.473547 FTM | 0.070921667915 |
0x7152e223a1d522678e37c36ef16f782daa819b63cbf7cd5a202274511cc1bef0 | Set Uni Router | 20433693 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.00339736105 |
0x1cb23c3366f761c3ac7bc9de347e9d480bba6be16325cb1473c25cd83c1e90e6 | Add Liquidity Ta... | 20432971 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.057365922597 |
0xafc788e2d79e59a575a04ee45804c7b5784e8b53f14b8b1d2f5aed73cb3db27d | Add Liquidity Ta... | 20432821 | 457 days 14 hrs ago | Coffin Finance: Deployer | IN | 0x0aa37a35473989e2ef16477171ea06d8e9cdde9f | 0 FTM | 0.057221986638 |
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
TaxOffice
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 500 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 TaxOffice is Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; address public coffin; address public wftm = address(0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83); 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 onlyOwner 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 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 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": 500 }, "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":"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":[],"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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"setTaxExclusionForAddress","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":[{"internalType":"address","name":"","type":"address"}],"name":"taxExclusionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"taxFreeTransferFrom","outputs":[],"stateMutability":"nonpayable","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
6080604052600280546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c83179091556003805490911673f491e7b69e4244ad4002bc14e878a34207e38c2917905534801561005857600080fd5b5061006233610067565b6100b7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6124f6806100c66000396000f3fe6080604052600436106101f95760003560e01c80637fcd79c71161010d578063cba0e996116100a0578063e1d8752e1161006f578063e1d8752e146105af578063ee4e2687146105cf578063f2fde38b146105ef578063f4f45b461461060f578063ff87fc7c1461062f57600080fd5b8063cba0e9961461053a578063cd428af31461055a578063ced695a41461057a578063d1d31a371461058f57600080fd5b8063a0025c4a116100dc578063a0025c4a146104c5578063a0e47bf6146104e5578063be8ec6d214610505578063be94f86b1461051a57600080fd5b80637fcd79c7146104475780638da5cb5b146104675780638e6c7722146104855780639d6b5f21146104a557600080fd5b806353eb3bcf1161019057806365bbacd91161015f57806365bbacd9146103b557806369356d47146103ca578063715018a6146103ea5780637403456f146103ff578063771a3a1d1461041f57600080fd5b806353eb3bcf14610328578063593a48c11461033d5780635c26606a1461037557806362b8b2e51461039557600080fd5b80632084acbc116101cc5780632084acbc146102b35780633a987489146102d3578063522d0c1e146102f357806353788a6b1461031357600080fd5b806307a212be146101fe57806307cf5b861461022057806313762bdc1461025357806319db099d14610293575b600080fd5b34801561020a57600080fd5b5061021e61021936600461233e565b610644565b005b61023361022e36600461239e565b6106f3565b604080519384526020840192909252908201526060015b60405180910390f35b34801561025f57600080fd5b5061028361026e3660046121d6565b60046020526000908152604090205460ff1681565b604051901515815260200161024a565b34801561029f57600080fd5b506102836102ae3660046121d6565b610972565b3480156102bf57600080fd5b5061021e6102ce3660046123d0565b6109ca565b3480156102df57600080fd5b5061021e6102ee3660046123d0565b610a48565b3480156102ff57600080fd5b5061021e61030e3660046122d6565b610ac6565b34801561031f57600080fd5b5061021e610ba0565b34801561033457600080fd5b5061021e610c52565b34801561034957600080fd5b5060015461035d906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561038157600080fd5b5061021e610390366004612304565b610cea565b3480156103a157600080fd5b506102336103b036600461226d565b610d66565b3480156103c157600080fd5b5061021e61113e565b3480156103d657600080fd5b5061021e6103e53660046121d6565b6111d6565b3480156103f657600080fd5b5061021e611250565b34801561040b57600080fd5b5061021e61041a3660046121d6565b6112a4565b34801561042b57600080fd5b5061043461135c565b60405161ffff909116815260200161024a565b34801561045357600080fd5b5061021e610462366004612234565b6113de565b34801561047357600080fd5b506000546001600160a01b031661035d565b34801561049157600080fd5b5061021e6104a03660046121d6565b611451565b3480156104b157600080fd5b5061021e6104c036600461233e565b6114cb565b3480156104d157600080fd5b5061021e6104e0366004612304565b611544565b3480156104f157600080fd5b5060035461035d906001600160a01b031681565b34801561051157600080fd5b5061021e6115c0565b34801561052657600080fd5b506102836105353660046121d6565b611658565b34801561054657600080fd5b506102836105553660046121d6565b6116aa565b34801561056657600080fd5b5061021e610575366004612304565b611770565b34801561058657600080fd5b5061021e6117ec565b34801561059b57600080fd5b5061021e6105aa3660046121d6565b611884565b3480156105bb57600080fd5b5061021e6105ca3660046121f3565b6118fe565b3480156105db57600080fd5b5061021e6105ea3660046121d6565b611a13565b3480156105fb57600080fd5b5061021e61060a3660046121d6565b611acb565b34801561061b57600080fd5b5060025461035d906001600160a01b031681565b34801561063b57600080fd5b5061021e611b84565b6000546001600160a01b031633146106915760405162461bcd60e51b815260206004820181905260248201526000805160206124ca83398151915260448201526064015b60405180910390fd5b6001546040516303d1095f60e11b8152600481018390526001600160a01b03909116906307a212be906024015b600060405180830381600087803b1580156106d857600080fd5b505af11580156106ec573d6000803e3d6000fd5b5050505050565b60008080861580159061070557503415155b6107465760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b6044820152606401610688565b61074f33611c1c565b506001546040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b03909116906323b872dd90606401602060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da91906122b9565b506001546003546107f7916001600160a01b039081169116611d02565b61080033611e0d565b5060035460015460405163f305d71960e01b81526001600160a01b039182166004820152602481018a9052604481018990526064810188905233608482015260a481018790526000928392839291169063f305d71990349060c4016060604051808303818588803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108ad9190612370565b9194509250905060006108c08b85611ec2565b1115610962576001546001600160a01b031663a9059cbb336108e28d87611ec2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561092857600080fd5b505af115801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906122b9565b505b9199909850909650945050505050565b600080546001600160a01b031633146109bb5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6109c482611e0d565b92915050565b6000546001600160a01b03163314610a125760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001546040516308212b2f60e21b815263ffffffff831660048201526001600160a01b0390911690632084acbc906024016106be565b6000546001600160a01b03163314610a905760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600154604051633a98748960e01b815263ffffffff831660048201526001600160a01b0390911690633a987489906024016106be565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6040516370a0823160e01b8152306004820152610b9c9082906001600160a01b038516906370a082319060240160206040518083038186803b158015610b5357600080fd5b505afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b9190612357565b6001600160a01b0385169190611ed5565b5050565b6000546001600160a01b03163314610be85760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b03166353788a6b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b505af1158015610c4c573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b03166353eb3bcf6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b6000546001600160a01b03163314610d325760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600154604051632e13303560e11b815261ffff831660048201526001600160a01b0390911690635c26606a906024016106be565b600080808715801590610d7857508615155b610db95760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74732063616e277420626520360741b6044820152606401610688565b610dc233611c1c565b506001546040516323b872dd60e01b8152336004820152306024820152604481018a90526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4d91906122b9565b506040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038a16906323b872dd90606401602060405180830381600087803b158015610e9c57600080fd5b505af1158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906122b9565b50600154600354610ef1916001600160a01b039081169116611d02565b600354610f08908a906001600160a01b0316611d02565b610f1133611e0d565b5060035460015460405162e8e33760e81b81526001600160a01b0391821660048201528b82166024820152604481018b9052606481018a90526084810189905260a481018890523360c482015260e481018790526000928392839291169063e8e337009061010401606060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190612370565b919450925090506000610fde8c85611ec2565b1115611080576001546001600160a01b031663a9059cbb336110008e87611ec2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107e91906122b9565b505b600061108c8b84611ec2565b111561112c576001600160a01b038c1663a9059cbb336110ac8d86611ec2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a91906122b9565b505b919b909a509098509650505050505050565b6000546001600160a01b031633146111865760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b03166365bbacd96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b6000546001600160a01b0316331461121e5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001546040516369356d4760e01b81526001600160a01b038381166004830152909116906369356d47906024016106be565b6000546001600160a01b031633146112985760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6112a26000611f3c565b565b6000546001600160a01b031633146112ec5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001600160a01b03811661133a5760405162461bcd60e51b8152602060048201526015602482015274031b7b33334b71030b2323932b9b99032b93937b91605d1b6044820152606401610688565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60015460408051635373d58b60e11b815290516000926001600160a01b03169163a6e7ab16916004808301926020929190829003018186803b1580156113a157600080fd5b505afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d99190612321565b905090565b6000546001600160a01b031633146114265760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114995760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001546040516347363b9160e11b81526001600160a01b03838116600483015290911690638e6c7722906024016106be565b6000546001600160a01b031633146115135760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600154604051639d6b5f2160e01b8152600481018390526001600160a01b0390911690639d6b5f21906024016106be565b6000546001600160a01b0316331461158c5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001546040516350012e2560e11b815261ffff831660048201526001600160a01b039091169063a0025c4a906024016106be565b6000546001600160a01b031633146116085760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b031663be8ec6d26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b600080546001600160a01b031633146116a15760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6109c482611c1c565b600080546001600160a01b031633146116f35760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001546040516365d074cb60e11b81526001600160a01b0384811660048301529091169063cba0e9969060240160206040518083038186803b15801561173857600080fd5b505afa15801561174c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c491906122b9565b6000546001600160a01b031633146117b85760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b60015460405163cd428af360e01b815261ffff831660048201526001600160a01b039091169063cd428af3906024016106be565b6000546001600160a01b031633146118345760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b031663ced695a46040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b6000546001600160a01b031633146118cc5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600154604051631f83ebb560e11b81526001600160a01b03838116600483015290911690633f07d76a906024016106be565b3360009081526004602052604090205460ff166119715760405162461bcd60e51b815260206004820152602b60248201527f41646472657373206e6f7420617070726f76656420666f72207461782066726560448201526a65207472616e736665727360a81b6064820152608401610688565b61197a83611c1c565b506001546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052909116906323b872dd90606401602060405180830381600087803b1580156119d157600080fd5b505af11580156119e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0991906122b9565b50610c4c83611e0d565b6000546001600160a01b03163314611a5b5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001600160a01b038116611aa95760405162461bcd60e51b8152602060048201526015602482015274031b7b33334b71030b2323932b9b99032b93937b91605d1b6044820152606401610688565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b135760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b6001600160a01b038116611b785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610688565b611b8181611f3c565b50565b6000546001600160a01b03163314611bcc5760405162461bcd60e51b815260206004820181905260248201526000805160206124ca8339815191526044820152606401610688565b600160009054906101000a90046001600160a01b03166001600160a01b031663ff87fc7c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c3857600080fd5b6001546040516365d074cb60e11b81526001600160a01b038381166004830152600092169063cba0e9969060240160206040518083038186803b158015611c6257600080fd5b505afa158015611c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9a91906122b9565b611cfa5760015460405163be94f86b60e01b81526001600160a01b0384811660048301529091169063be94f86b906024015b602060405180830381600087803b158015611ce657600080fd5b505af115801561174c573d6000803e3d6000fd5b506000919050565b604051636eb1769f60e11b81523060048201526001600160a01b03828116602483015283169063dd62ed3e9060440160206040518083038186803b158015611d4957600080fd5b505afa158015611d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d819190612357565b610b9c5760405163095ea7b360e01b81526001600160a01b038281166004830152600019602483015283169063095ea7b390604401602060405180830381600087803b158015611dd057600080fd5b505af1158015611de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0891906122b9565b505050565b6001546040516365d074cb60e11b81526001600160a01b038381166004830152600092169063cba0e9969060240160206040518083038186803b158015611e5357600080fd5b505afa158015611e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8b91906122b9565b15611cfa576001546040516319db099d60e01b81526001600160a01b038481166004830152909116906319db099d90602401611ccc565b6000611ece8284612445565b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052611e08908490611f8c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611fe1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661205e9092919063ffffffff16565b805190915015611e085780806020019051810190611fff91906122b9565b611e085760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610688565b606061206d8484600085612075565b949350505050565b6060824710156120d65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610688565b843b6121245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610688565b600080866001600160a01b0316858760405161214091906123f6565b60006040518083038185875af1925050503d806000811461217d576040519150601f19603f3d011682016040523d82523d6000602084013e612182565b606091505b509150915061219282828661219d565b979650505050505050565b606083156121ac575081611ece565b8251156121bc5782518084602001fd5b8160405162461bcd60e51b81526004016106889190612412565b6000602082840312156121e857600080fd5b8135611ece81612496565b60008060006060848603121561220857600080fd5b833561221381612496565b9250602084013561222381612496565b929592945050506040919091013590565b6000806040838503121561224757600080fd5b823561225281612496565b91506020830135612262816124ab565b809150509250929050565b60008060008060008060c0878903121561228657600080fd5b863561229181612496565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b6000602082840312156122cb57600080fd5b8151611ece816124ab565b600080604083850312156122e957600080fd5b82356122f481612496565b9150602083013561226281612496565b60006020828403121561231657600080fd5b8135611ece816124b9565b60006020828403121561233357600080fd5b8151611ece816124b9565b60006020828403121561235057600080fd5b5035919050565b60006020828403121561236957600080fd5b5051919050565b60008060006060848603121561238557600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156123b457600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156123e257600080fd5b813563ffffffff81168114611ece57600080fd5b6000825161240881846020870161246a565b9190910192915050565b602081526000825180602084015261243181604085016020870161246a565b601f01601f19169190910160400192915050565b60008282101561246557634e487b7160e01b600052601160045260246000fd5b500390565b60005b8381101561248557818101518382015260200161246d565b83811115610c4c5750506000910152565b6001600160a01b0381168114611b8157600080fd5b8015158114611b8157600080fd5b61ffff81168114611b8157600080fdfe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a164736f6c6343000807000a
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.