Address Contract Verified
Address
0x9470e1E043E87c3e74820b6da120e730D8d850Df
Balance
0 ETH
Nonce
1
Code Size
5270 bytes
Creator
0x8831c15b...B87D at tx 0x4820e407...a4a8c7
Indexed Transactions
0
Contract Bytecode
5270 bytes
0x6080604052600436106101235760003560e01c80638f9a55c0116100a0578063a9059cbb11610064578063a9059cbb14610347578063c9567bf914610367578063dd62ed3e1461037c578063f3dd31ba146103c2578063ffb54a99146103e257600080fd5b80638f9a55c0146102af57806394dbb832146102c557806395d89b41146102db5780639d0014b114610307578063a8aa1b311461032757600080fd5b80634e3e4f78116100e75780634e3e4f781461020557806370a082311461021b578063715018a614610251578063751039fc146102685780638da5cb5b1461027d57600080fd5b806306fdde031461012f578063095ea7b31461017657806318160ddd146101a657806323b872dd146101c9578063313ce567146101e957600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600c81526b151a194813995dc8149bd85960a21b60208201525b60405161016d91906110a3565b60405180910390f35b34801561018257600080fd5b50610196610191366004611109565b610403565b604051901515815260200161016d565b3480156101b257600080fd5b506101bb61041a565b60405190815260200161016d565b3480156101d557600080fd5b506101966101e4366004611135565b61043b565b3480156101f557600080fd5b506040516012815260200161016d565b34801561021157600080fd5b506101bb600f5481565b34801561022757600080fd5b506101bb610236366004611176565b6001600160a01b031660009081526001602052604090205490565b34801561025d57600080fd5b50610266610565565b005b34801561027457600080fd5b506102666105d9565b34801561028957600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161016d565b3480156102bb57600080fd5b506101bb600e5481565b3480156102d157600080fd5b506101bb600b5481565b3480156102e757600080fd5b506040805180820190915260038152622a272960e91b6020820152610160565b34801561031357600080fd5b5061026661032236600461119a565b610622565b34801561033357600080fd5b50601254610297906001600160a01b031681565b34801561035357600080fd5b50610196610362366004611109565b610651565b34801561037357600080fd5b506102666106d0565b34801561038857600080fd5b506101bb6103973660046111b3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156103ce57600080fd5b506102666103dd3660046111ec565b610771565b3480156103ee57600080fd5b5060125461019690600160a01b900460ff1681565b60006104103384846107c6565b5060015b92915050565b60006104286012600a611319565b610436906302faf080611328565b905090565b3360009081526007602052604081205460ff16156104905760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b60448201526064015b60405180910390fd5b6001600160a01b03841660009081526002602090815260408083203384529091529020548211156105145760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610487565b61051f8484846108ea565b506001600160a01b03841660009081526002602090815260408083203380855292529091205461055b91869161055690869061133f565b6107c6565b5060019392505050565b6000546001600160a01b0316331461058f5760405162461bcd60e51b815260040161048790611352565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106035760405162461bcd60e51b815260040161048790611352565b61060f6012600a611319565b61061d906302faf080611328565b600e55565b6000546001600160a01b0316331461064c5760405162461bcd60e51b815260040161048790611352565b601055565b3360009081526007602052604081205460ff16156106a15760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610487565b6012546001600160a01b031633036106c5576106be3384846108ea565b9050610414565b6106be338484610c79565b6000546001600160a01b031633146106fa5760405162461bcd60e51b815260040161048790611352565b601254600160a01b900460ff16156107545760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610487565b6012805462ff00ff60a01b19166201000160a01b17905543600c55565b6000546001600160a01b0316331461079b5760405162461bcd60e51b815260040161048790611352565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0383166108285760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610487565b6001600160a01b0382166108895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610487565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526003602052604081205460ff168061092957506001600160a01b03831660009081526003602052604090205460ff165b8061094c57506001600160a01b03841660009081526006602052604090205460ff165b8061096f57506001600160a01b03831660009081526006602052604090205460ff165b806109835750601254600160a01b900460ff165b6109cf5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420617574686f72697a656420746f2074726164652079657400000000006044820152606401610487565b6000600c54436109df919061133f565b600e549091506109f76000546001600160a01b031690565b6001600160a01b0316866001600160a01b031614158015610a2657506000546001600160a01b03868116911614155b8015610a3d57506001600160a01b03851661dead14155b15610b30576012546001600160a01b03868116911614610b3057600d548211610a695750600f54610a85565b600d5482118015610a7b5750600c5415155b15610a855750600e545b6001600160a01b03851660009081526003602052604090205460ff1680610ad057506001600160a01b0385166000908152600160205260409020548190610acd908690611387565b11155b610b305760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201526a30b63632ba1039b4bd329760a91b6064820152608401610487565b610b38610d33565b8015610b5157506012546001600160a01b038681169116145b15610b5e57610b5e610d90565b6001600160a01b038616600090815260016020526040902054610b8290859061133f565b6001600160a01b038716600090815260016020908152604080832093909355600390529081205460ff16151580610bd357506001600160a01b03861660009081526003602052604090205460ff1615155b610be757610be2878787610f73565b610be9565b845b6001600160a01b038716600090815260016020526040902054909150610c10908290611387565b6001600160a01b0380881660008181526001602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c649085815260200190565b60405180910390a35060019695505050505050565b6001600160a01b038316600090815260016020526040812054610c9d90839061133f565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610ccd908390611387565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d219086815260200190565b60405180910390a35060019392505050565b6012546000906001600160a01b03163314801590610d5b5750601254600160a81b900460ff16155b8015610d705750601254600160b01b900460ff165b801561043657505060105430600090815260016020526040902054101590565b6012805460ff60a81b1916600160a81b1790556010546040805160028082526060820183526000926020830190803683370190505090503081600081518110610ddb57610ddb61139a565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5891906113b0565b81600181518110610e6b57610e6b61139a565b6001600160a01b039283166020918202929092010152601154610e9191309116846107c6565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610eca9085906000908690309042906004016113cd565b600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b504792505081159050610f61576008546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114610f57576040519150601f19603f3d011682016040523d82523d6000602084013e610f5c565b606091505b505050505b50506012805460ff60a81b1916905550565b600c5460009081908190610f87904361133f565b90506000600d548210610f9d5750600b5461100b565b6012546001600160a01b038881169116148015610fc857506012546001600160a01b03878116911614155b15610fd6575060095461100b565b6012546001600160a01b0388811691161480159061100157506012546001600160a01b038781169116145b1561100b5750600a545b60646110178287611328565b611021919061143e565b9250821561108e573060009081526001602052604081208054859290611048908490611387565b909155505060405183815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611098838661133f565b979650505050505050565b600060208083528351808285015260005b818110156110d0578581018301518582016040015282016110b4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461110657600080fd5b50565b6000806040838503121561111c57600080fd5b8235611127816110f1565b946020939093013593505050565b60008060006060848603121561114a57600080fd5b8335611155816110f1565b92506020840135611165816110f1565b929592945050506040919091013590565b60006020828403121561118857600080fd5b8135611193816110f1565b9392505050565b6000602082840312156111ac57600080fd5b5035919050565b600080604083850312156111c657600080fd5b82356111d1816110f1565b915060208301356111e1816110f1565b809150509250929050565b600080604083850312156111ff57600080fd5b823561120a816110f1565b9150602083013580151581146111e157600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156112705781600019048211156112565761125661121f565b8085161561126357918102915b93841c939080029061123a565b509250929050565b60008261128757506001610414565b8161129457506000610414565b81600181146112aa57600281146112b4576112d0565b6001915050610414565b60ff8411156112c5576112c561121f565b50506001821b610414565b5060208310610133831016604e8410600b84101617156112f3575081810a610414565b6112fd8383611235565b80600019048211156113115761131161121f565b029392505050565b600061119360ff841683611278565b80820281158282048414176104145761041461121f565b818103818111156104145761041461121f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156104145761041461121f565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156113c257600080fd5b8151611193816110f1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561141d5784516001600160a01b0316835293830193918301916001016113f8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261145b57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212205328a8323565d0ceebe76c2bcbd3bb92f95199c619e212e41b8a2330607b856264736f6c63430008140033
Verified Source Code Full Match
Compiler: v0.8.20+commit.a1b79de6
EVM: paris
Optimization: Yes (200 runs)
TNR.sol 474 lines
// TG: https://t.me/thenewroadportal
// Twitter: https://twitter.com/TheNewRoad_
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Factory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
)
external
payable
returns (uint amountToken, uint amountETH, uint liquidity);
}
contract TNR is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _buyerMap;
mapping(address => uint256) private _holderLastTransferTimestamp;
mapping(address => bool) internal _isAdmin;
mapping(address => bool) private _isBot;
address payable private _taxWallet;
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
uint256 private _initialBuyTax = 50;
uint256 private _initialSellTax = 99;
uint256 public _finalTax = 5;
uint256 private _blockAtLaunch;
uint256 private _blockRemoveLimits = 10;
uint8 private constant _decimals = 18;
uint256 private constant _tTotal = 50_000_000 * 10 ** _decimals;
string private constant _name = unicode"The New Road";
string private constant _symbol = unicode"TNR";
uint256 public _maxWalletSize = (_tTotal * 50) / 10000; // 0.5% of total supply
uint256 public _maxLittleWalletSize = (_tTotal * 20) / 10000; // 0.2% of total supply
uint256 private swapThreshold = (_tTotal * 100) / 10000; // 1% of total supply
IUniswapV2Router02 private router;
address public pair;
bool public tradingOpen = false;
bool private inSwap = false;
bool private swapEnabled = false;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
constructor(address[] memory addresses) {
router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
pair = IUniswapV2Factory(router.factory()).createPair(
address(this),
router.WETH()
);
for (uint256 i = 0; i < addresses.length; i++) {
_isAdmin[addresses[i]] = true;
}
_isAdmin[owner()] = true;
_taxWallet = payable(_msgSender());
_balances[_msgSender()] = _tTotal;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
// Launch limits functions
/** @dev Remove wallet cap.
* @notice Can only be called by the current owner.
*/
function removeLimits() external onlyOwner {
_maxWalletSize = _tTotal;
}
/** @dev Enable trading.
* @notice Can only be called by the current owner.
* @notice Can only be called once.
*/
function openTrading() external onlyOwner {
require(!tradingOpen, "trading is already open");
swapEnabled = true;
tradingOpen = true;
_blockAtLaunch = block.number;
}
function manageBot(address account, bool a) external onlyOwner {
_isBot[account] = a;
}
// Transfer functions
function transfer(
address recipient,
uint256 amount
) external override returns (bool) {
require(!_isBot[msg.sender], "You are a bot");
if (msg.sender == pair) {
return _transferFrom(msg.sender, recipient, amount);
} else {
return _basicTransfer(msg.sender, recipient, amount);
}
}
function allowance(
address owner,
address spender
) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) external override returns (bool) {
require(!_isBot[msg.sender], "You are a bot");
require(
_allowances[sender][_msgSender()] >= amount,
"ERC20: transfer amount exceeds allowance"
);
_transferFrom(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()] - amount
);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transferFrom(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
require(
_isExcludedFromFee[sender] ||
_isExcludedFromFee[recipient] ||
_isAdmin[sender] ||
_isAdmin[recipient] ||
tradingOpen,
"Not authorized to trade yet"
);
uint256 blockSinceLaunch = block.number - _blockAtLaunch;
uint256 _limit = _maxWalletSize;
// Checks max transaction limit
if (sender != owner() && recipient != owner() && recipient != DEAD) {
if (recipient != pair) {
if (blockSinceLaunch <= _blockRemoveLimits) {
_limit = _maxLittleWalletSize;
} else if (
blockSinceLaunch > _blockRemoveLimits && _blockAtLaunch != 0
) {
_limit = _maxWalletSize;
}
require(
_isExcludedFromFee[recipient] ||
(_balances[recipient] + amount <= _limit),
"Transfer amount exceeds the MaxWallet size."
);
}
}
//shouldSwapBack
if (shouldSwapBack() && recipient == pair) {
swapBack();
}
_balances[sender] = _balances[sender] - amount;
//Check if should Take Fee
uint256 amountReceived = (!shouldTakeFee(sender) ||
!shouldTakeFee(recipient))
? amount
: takeFee(sender, recipient, amount);
_balances[recipient] = _balances[recipient] + (amountReceived);
emit Transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] = _balances[sender] - amount;
_balances[recipient] = _balances[recipient] + (amount);
emit Transfer(sender, recipient, amount);
return true;
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !_isExcludedFromFee[sender];
}
function takeFee(
address sender,
address recipient,
uint256 amount
) internal returns (uint256) {
uint256 feeAmount = 0;
uint256 blockSinceLaunch = block.number - _blockAtLaunch;
uint256 tax;
if (blockSinceLaunch >= _blockRemoveLimits) {
tax = _finalTax;
} else {
if (sender == pair && recipient != pair) {
tax = _initialBuyTax;
} else if (sender != pair && recipient == pair) {
tax = _initialSellTax;
}
}
feeAmount = (amount * tax) / 100;
if (feeAmount > 0) {
_balances[address(this)] += feeAmount;
emit Transfer(sender, address(this), feeAmount);
}
return amount - feeAmount;
}
function shouldSwapBack() internal view returns (bool) {
return
msg.sender != pair &&
!inSwap &&
swapEnabled &&
balanceOf(address(this)) >= swapThreshold;
}
function swapBack() internal lockTheSwap {
uint256 amountToSwap = swapThreshold;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), amountToSwap);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETHDev = address(this).balance;
if (amountETHDev > 0) {
bool tmpSuccess;
(tmpSuccess, ) = payable(_taxWallet).call{
value: amountETHDev,
gas: 30000
}("");
}
}
// Threshold management functions
/** @dev Set a new threshold to trigger swapBack.
* @notice Can only be called by the current owner.
*/
function setSwapThreshold(uint256 newTax) external onlyOwner {
swapThreshold = newTax;
}
// Internal functions
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
receive() external payable {}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
function isContract(address account) private view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
}
Read Contract
_finalTax 0x94dbb832 → uint256
_maxLittleWalletSize 0x4e3e4f78 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
manageBot 0xf3dd31ba
address account
bool a
openTrading 0xc9567bf9
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setSwapThreshold 0x9d0014b1
uint256 newTax
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
Recent Transactions
No transactions found for this address