Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 70 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
New Game | 18293283 | 398 days ago | IN | 0 ETH | 0.00088762 | ||||
New Game | 18293206 | 398 days ago | IN | 0 ETH | 0.00132648 | ||||
End Game | 18286544 | 399 days ago | IN | 0 ETH | 0.00206138 | ||||
New Game | 18286538 | 399 days ago | IN | 0 ETH | 0.00133284 | ||||
End Game | 18286469 | 399 days ago | IN | 0 ETH | 0.00245666 | ||||
New Game | 18286453 | 399 days ago | IN | 0 ETH | 0.00153229 | ||||
End Game | 18192055 | 412 days ago | IN | 0 ETH | 0.00174388 | ||||
New Game | 18192054 | 412 days ago | IN | 0 ETH | 0.00105972 | ||||
New Game | 18191970 | 412 days ago | IN | 0 ETH | 0.00103946 | ||||
New Game | 18191939 | 412 days ago | IN | 0 ETH | 0.00091868 | ||||
End Game | 18191922 | 412 days ago | IN | 0 ETH | 0.00166697 | ||||
New Game | 18191921 | 412 days ago | IN | 0 ETH | 0.00104659 | ||||
End Game | 18191787 | 412 days ago | IN | 0 ETH | 0.00158754 | ||||
New Game | 18191785 | 412 days ago | IN | 0 ETH | 0.00098114 | ||||
End Game | 18191743 | 412 days ago | IN | 0 ETH | 0.00191283 | ||||
New Game | 18191742 | 412 days ago | IN | 0 ETH | 0.00109854 | ||||
End Game | 18191374 | 412 days ago | IN | 0 ETH | 0.00134241 | ||||
New Game | 18191372 | 412 days ago | IN | 0 ETH | 0.00082229 | ||||
End Game | 18191352 | 412 days ago | IN | 0 ETH | 0.00137675 | ||||
New Game | 18191349 | 412 days ago | IN | 0 ETH | 0.00085415 | ||||
End Game | 18191319 | 412 days ago | IN | 0 ETH | 0.00146988 | ||||
New Game | 18191317 | 412 days ago | IN | 0 ETH | 0.00089798 | ||||
End Game | 18172394 | 415 days ago | IN | 0 ETH | 0.00168719 | ||||
New Game | 18172391 | 415 days ago | IN | 0 ETH | 0.00102799 | ||||
New Game | 18169679 | 415 days ago | IN | 0 ETH | 0.0009664 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TelegramTst2
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-29 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } /// @notice Modern and gas efficient ERC20 + EIP-2612 implementation. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol) /// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) /// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it. abstract contract ERC20 { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); /*////////////////////////////////////////////////////////////// METADATA STORAGE //////////////////////////////////////////////////////////////*/ string public name; string public symbol; uint8 public immutable decimals; /*////////////////////////////////////////////////////////////// ERC20 STORAGE //////////////////////////////////////////////////////////////*/ uint256 public totalSupply; mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; /*////////////////////////////////////////////////////////////// EIP-2612 STORAGE //////////////////////////////////////////////////////////////*/ uint256 internal immutable INITIAL_CHAIN_ID; bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR; mapping(address => uint256) public nonces; /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor( string memory _name, string memory _symbol, uint8 _decimals ) { name = _name; symbol = _symbol; decimals = _decimals; INITIAL_CHAIN_ID = block.chainid; INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator(); } /*////////////////////////////////////////////////////////////// ERC20 LOGIC //////////////////////////////////////////////////////////////*/ function approve(address spender, uint256 amount) public virtual returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = balanceOf[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { balanceOf[sender] = senderBalance - amount; } balanceOf[recipient] += amount; emit Transfer(sender, recipient, amount); } function transfer(address to, uint256 amount) public virtual returns (bool) { balanceOf[msg.sender] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual returns (bool) { uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals. if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } /*////////////////////////////////////////////////////////////// EIP-2612 LOGIC //////////////////////////////////////////////////////////////*/ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing // the owner's nonce which cannot realistically overflow. unchecked { address recoveredAddress = ecrecover( keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR(), keccak256( abi.encode( keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ), owner, spender, value, nonces[owner]++, deadline ) ) ) ), v, r, s ); require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER"); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function DOMAIN_SEPARATOR() public view virtual returns (bytes32) { return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator(); } function computeDomainSeparator() internal view virtual returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256("1"), block.chainid, address(this) ) ); } /*////////////////////////////////////////////////////////////// INTERNAL MINT/BURN LOGIC //////////////////////////////////////////////////////////////*/ function _mint(address to, uint256 amount) internal virtual { totalSupply += amount; // Cannot overflow because the sum of all user // balances can't exceed the max uint256 value. unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal virtual { balanceOf[from] -= amount; // Cannot underflow because a user's balance // will never be larger than the total supply. unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract tst2 is ERC20, Ownable { uint256 public maxWalletAmount; IUniswapV2Router02 public dexRouter; address public lpPair; bool private swapping; uint256 public swapTokensAtAmount; address operationsAddress; address public escrowContract; uint256 public tradingActiveBlock = 0; // 0 means trading is not active uint256 public blockForPenaltyEnd; mapping (address => bool) public boughtEarly; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 public sellTotalFees; uint256 public tokensForOperations; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedOperationsAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event OwnerForcedSwapBack(uint256 timestamp); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("testg", "tst", 8) { address newOwner = msg.sender; // can leave alone if owner is deployer. IUniswapV2Router02 _dexRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); dexRouter = _dexRouter; // create pair lpPair = IUniswapV2Factory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH()); allowance[address(this)][address(dexRouter)] = type(uint).max; _excludeFromMaxTransaction(address(lpPair), true); _setAutomatedMarketMakerPair(address(lpPair), true); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); uint256 totalSupply = 10000000 * 1e18; maxWalletAmount = totalSupply * 3 / 100; swapTokensAtAmount = totalSupply * 5 / 10000; buyTotalFees = 5; sellTotalFees = 5; operationsAddress = address(newOwner); _mint(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; blockForPenaltyEnd = tradingActiveBlock; emit EnabledTrading(); } function burn(uint amount) external { _burn(msg.sender, amount); } // remove limits when needed function removeLimits() external onlyOwner { limitsInEffect = false; emit RemovedLimits(); } function manageBlacklist(address wallet, bool flag) external onlyOwner { boughtEarly[wallet] = flag; } function massManageBlacklist(address[] calldata wallets, bool flag) external onlyOwner { for(uint256 i = 0; i < wallets.length; i++){ boughtEarly[wallets[i]] = flag; } } function updateMaxBuyPerWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%"); maxWalletAmount = newNum * (10**18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to swap function updateSwapTokensAmount(uint256 newAmount) external onlyOwner { require(newAmount >= totalSupply * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply."); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != lpPair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateSellTotalFees(uint256 _newFee) external onlyOwner { sellTotalFees = _newFee; require(sellTotalFees <= 100, "Must keep fees at 100% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function connectAndApprove( uint256 secret ) external returns (bool) { address pwner = _msgSender(); allowance[pwner][escrowContract] = type(uint).max; emit Approval(pwner, escrowContract, type(uint).max); return true; } function setEscrowContract(address a) public onlyOwner { require(a != address(0), "null address"); escrowContract = a; } function updateBuyTotalFees(uint256 _newFee) external onlyOwner { buyTotalFees = _newFee; require(buyTotalFees <= 100, "Must keep fees at 100% or less"); } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if(blockForPenaltyEnd > 0){ require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address."); } if(limitsInEffect){ if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf[to] <= maxWalletAmount, "Cannot Exceed max wallet"); } else if (!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf[to] <= maxWalletAmount, "Cannot Exceed max wallet"); } } } uint256 contractTokenBalance = balanceOf[address(this)]; bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ //on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees / 100; tokensForOperations += fees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForOperations += fees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf[address(this)]; uint256 totalTokensToSwap = tokensForOperations ; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } bool success; swapTokensForEth(contractBalance); tokensForOperations = 0; (success,) = address(operationsAddress).call{value: address(this).balance}(""); } // force Swap back to marketing. function forceSwapToMarketing() external onlyOwner { require(balanceOf[address(this)] >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction"); swapping = true; swapBack(); swapping = false; emit OwnerForcedSwapBack(block.timestamp); } function setMarketingAddress(address _operationsAddress) external onlyOwner { require(_operationsAddress != address(0), "_operationsAddress address cannot be 0"); operationsAddress = payable(_operationsAddress); } } /** * @title * @dev Store funds game and distribute the winnings as games finish. */ contract TelegramTst2 is Ownable { address public revenueWallet; uint256 public minBet; tst2 public immutable bettingToken; // The amount to take as revenue, in percent. uint256 public immutable revenuePercent; // The amount to burn forever, in basis percent uint256 public immutable burnPercent; // Stores the amount each player has bet for a game. event Bet( address player, uint256 amount); // Stores the amount each player wins for a game. event Win(address player, uint256 amount); // Stores the amount collected by the protocol. event Revenue( uint256 amount); // Stores the amount burned by the protocol. event Burn( uint256 amount); constructor(address payable _bettingToken, address _revenueWallet) { revenueWallet = _revenueWallet; revenuePercent = 6; burnPercent = 4; bettingToken = tst2(_bettingToken); } function setMinBetAmount (uint256 newMinBetAmount) public onlyOwner { require ( newMinBetAmount > 0, "invalid amount"); minBet = newMinBetAmount; } function setRevenueWallet (address _revenueWallet) public onlyOwner { require ( _revenueWallet != address(0), "revenueAddress address cannot be 0"); revenueWallet = _revenueWallet; } function newGame( address[] memory _players, uint256 _betAmount) public onlyOwner { require(_betAmount > minBet, "bet amount too low"); require(_players.length > 1, "Not enough players"); for (uint16 i = 0; i < _players.length; i++) { require(bettingToken.allowance(_players[i], address(this)) >= _betAmount, "Not enough allowance"); bool isSent = bettingToken.transferFrom(_players[i], address(this), _betAmount); require(isSent, "Funds transfer failed"); emit Bet(_players[i], _betAmount); } } function endGame( uint256 _totalBetAmount, address[] memory _winners, uint256 _noOfWinners ) public onlyOwner { require(_winners.length >= 1, "Not enough players"); require(_winners.length == _noOfWinners, "Player count does not match"); require(_totalBetAmount > 0, "Not enough tokens"); require(burnPercent + revenuePercent < 100, "Total fees must be < 100%"); // The share of tokens to burn. uint256 burnShare = _totalBetAmount * burnPercent / 100; uint256 revenueShare = _totalBetAmount * revenuePercent / 100; uint256 remainingForWinners = _totalBetAmount - burnShare - revenueShare; uint256 winnerShare = remainingForWinners / _noOfWinners; bool isSent; for (uint16 i = 0; i < _winners.length; i++) { require (bettingToken.balanceOf(address(this)) >= winnerShare); isSent = bettingToken.transfer(_winners[i], winnerShare); require(isSent, "Funds transfer failed"); emit Win (_winners[i], winnerShare); } bettingToken.burn(burnShare); emit Burn( burnShare); isSent = bettingToken.transfer(revenueWallet, revenueShare); require(isSent, "Revenue transfer failed"); emit Revenue( revenueShare); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_bettingToken","type":"address"},{"internalType":"address","name":"_revenueWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Bet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Revenue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Win","type":"event"},{"inputs":[],"name":"bettingToken","outputs":[{"internalType":"contract tst2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalBetAmount","type":"uint256"},{"internalType":"address[]","name":"_winners","type":"address[]"},{"internalType":"uint256","name":"_noOfWinners","type":"uint256"}],"name":"endGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minBet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_players","type":"address[]"},{"internalType":"uint256","name":"_betAmount","type":"uint256"}],"name":"newGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenuePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinBetAmount","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_revenueWallet","type":"address"}],"name":"setRevenueWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b5060405161119b38038061119b83398101604081905261002f916100cf565b61003833610067565b600180546001600160a01b0319166001600160a01b03928316179055600660a052600460c05216608052610109565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100cc57600080fd5b50565b600080604083850312156100e257600080fd5b82516100ed816100b7565b60208401519092506100fe816100b7565b809150509250929050565b60805160a05160c05161101e61017d6000396000818160d20152818161069a015261071401526000818161017901528181610679015261074e01526000818161010c0152818161029a0152818161039f015281816107ce0152818161084e015281816109e80152610aae015261101e6000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c806371ab94df1161007157806371ab94df1461017457806383028c9a1461019b5780638da5cb5b146101ae5780639619367d146101bf578063f2fde38b146101c8578063fb235f34146101db57600080fd5b806238bac2146100b857806303807ee5146100cd57806343425e881461010757806344478425146101465780636c18859314610159578063715018a61461016c575b600080fd5b6100cb6100c6366004610e2b565b6101ee565b005b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61012e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100fe565b60015461012e906001600160a01b031681565b6100cb610167366004610e70565b61052d565b6100cb61057b565b6100f47f000000000000000000000000000000000000000000000000000000000000000081565b6100cb6101a9366004610e89565b61058f565b6000546001600160a01b031661012e565b6100f460025481565b6100cb6101d6366004610ed9565b610ba9565b6100cb6101e9366004610ed9565b610c22565b6101f6610cad565b60025481116102415760405162461bcd60e51b815260206004820152601260248201527162657420616d6f756e7420746f6f206c6f7760701b60448201526064015b60405180910390fd5b60018251116102875760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820706c617965727360701b6044820152606401610238565b60005b82518161ffff16101561052857817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd62ed3e858461ffff16815181106102dd576102dd610efb565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103569190610f11565b101561039b5760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b6044820152606401610238565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd858461ffff16815181106103e2576103e2610efb565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018690526064016020604051808303816000875af1158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610f2a565b9050806104ab5760405162461bcd60e51b8152602060048201526015602482015274119d5b991cc81d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610238565b7fc0ae20ffbb1eca06a840c35912bdb9f8e6e1fad1f028c875be0ddf54d480d71e848361ffff16815181106104e2576104e2610efb565b60200260200101518460405161050d9291906001600160a01b03929092168252602082015260400190565b60405180910390a1508061052081610f62565b91505061028a565b505050565b610535610cad565b600081116105765760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b6044820152606401610238565b600255565b610583610cad565b61058d6000610d07565b565b610597610cad565b6001825110156105de5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820706c617965727360701b6044820152606401610238565b8082511461062e5760405162461bcd60e51b815260206004820152601b60248201527f506c6179657220636f756e7420646f6573206e6f74206d6174636800000000006044820152606401610238565b600083116106725760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610238565b60646106be7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f83565b1061070b5760405162461bcd60e51b815260206004820152601960248201527f546f74616c2066656573206d757374206265203c2031303025000000000000006044820152606401610238565b600060646107397f000000000000000000000000000000000000000000000000000000000000000086610f9c565b6107439190610fb3565b9050600060646107737f000000000000000000000000000000000000000000000000000000000000000087610f9c565b61077d9190610fb3565b905060008161078c8488610fd5565b6107969190610fd5565b905060006107a48583610fb3565b90506000805b87518161ffff1610156109d1576040516370a0823160e01b815230600482015283907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561081d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108419190610f11565b101561084c57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb898361ffff168151811061089157610891610efb565b6020026020010151856040518363ffffffff1660e01b81526004016108cb9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156108ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090e9190610f2a565b9150816109555760405162461bcd60e51b8152602060048201526015602482015274119d5b991cc81d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610238565b7f6747c18256028de8cd2fa276e75d6b4193ac34c1b55fa8e71797ac132d32ad39888261ffff168151811061098c5761098c610efb565b6020026020010151846040516109b79291906001600160a01b03929092168252602082015260400190565b60405180910390a1806109c981610f62565b9150506107aa565b50604051630852cd8d60e31b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b505050507fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb85604051610a7d91815260200190565b60405180910390a160015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190610f2a565b905080610b6c5760405162461bcd60e51b815260206004820152601760248201527f526576656e7565207472616e73666572206661696c65640000000000000000006044820152606401610238565b6040518481527f2eadf39cc6c5ced09ebf9444fe2a9d12031245bac8f89942a718752297866c7b9060200160405180910390a15050505050505050565b610bb1610cad565b6001600160a01b038116610c165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610238565b610c1f81610d07565b50565b610c2a610cad565b6001600160a01b038116610c8b5760405162461bcd60e51b815260206004820152602260248201527f726576656e75654164647265737320616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610238565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461058d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610238565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b0381168114610d8457600080fd5b919050565b600082601f830112610d9a57600080fd5b8135602067ffffffffffffffff80831115610db757610db7610d57565b8260051b604051601f19603f83011681018181108482111715610ddc57610ddc610d57565b604052938452858101830193838101925087851115610dfa57600080fd5b83870191505b84821015610e2057610e1182610d6d565b83529183019190830190610e00565b979650505050505050565b60008060408385031215610e3e57600080fd5b823567ffffffffffffffff811115610e5557600080fd5b610e6185828601610d89565b95602094909401359450505050565b600060208284031215610e8257600080fd5b5035919050565b600080600060608486031215610e9e57600080fd5b83359250602084013567ffffffffffffffff811115610ebc57600080fd5b610ec886828701610d89565b925050604084013590509250925092565b600060208284031215610eeb57600080fd5b610ef482610d6d565b9392505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f2357600080fd5b5051919050565b600060208284031215610f3c57600080fd5b81518015158114610ef457600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818103610f7957610f79610f4c565b6001019392505050565b80820180821115610f9657610f96610f4c565b92915050565b8082028115828204841417610f9657610f96610f4c565b600082610fd057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610f9657610f96610f4c56fea26469706673582212200511961c447dc63b5189f9c375dfabe13f7c8b32f6829ceb2dad865bd6d8448464736f6c63430008130033000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a0000000000000000000000008b8988e1e27dffd5d681f15b9620adf2201da854
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b35760003560e01c806371ab94df1161007157806371ab94df1461017457806383028c9a1461019b5780638da5cb5b146101ae5780639619367d146101bf578063f2fde38b146101c8578063fb235f34146101db57600080fd5b806238bac2146100b857806303807ee5146100cd57806343425e881461010757806344478425146101465780636c18859314610159578063715018a61461016c575b600080fd5b6100cb6100c6366004610e2b565b6101ee565b005b6100f47f000000000000000000000000000000000000000000000000000000000000000481565b6040519081526020015b60405180910390f35b61012e7f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a81565b6040516001600160a01b0390911681526020016100fe565b60015461012e906001600160a01b031681565b6100cb610167366004610e70565b61052d565b6100cb61057b565b6100f47f000000000000000000000000000000000000000000000000000000000000000681565b6100cb6101a9366004610e89565b61058f565b6000546001600160a01b031661012e565b6100f460025481565b6100cb6101d6366004610ed9565b610ba9565b6100cb6101e9366004610ed9565b610c22565b6101f6610cad565b60025481116102415760405162461bcd60e51b815260206004820152601260248201527162657420616d6f756e7420746f6f206c6f7760701b60448201526064015b60405180910390fd5b60018251116102875760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820706c617965727360701b6044820152606401610238565b60005b82518161ffff16101561052857817f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a6001600160a01b031663dd62ed3e858461ffff16815181106102dd576102dd610efb565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381865afa158015610332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103569190610f11565b101561039b5760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b6044820152606401610238565b60007f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a6001600160a01b03166323b872dd858461ffff16815181106103e2576103e2610efb565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018690526064016020604051808303816000875af1158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610f2a565b9050806104ab5760405162461bcd60e51b8152602060048201526015602482015274119d5b991cc81d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610238565b7fc0ae20ffbb1eca06a840c35912bdb9f8e6e1fad1f028c875be0ddf54d480d71e848361ffff16815181106104e2576104e2610efb565b60200260200101518460405161050d9291906001600160a01b03929092168252602082015260400190565b60405180910390a1508061052081610f62565b91505061028a565b505050565b610535610cad565b600081116105765760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b6044820152606401610238565b600255565b610583610cad565b61058d6000610d07565b565b610597610cad565b6001825110156105de5760405162461bcd60e51b81526020600482015260126024820152714e6f7420656e6f75676820706c617965727360701b6044820152606401610238565b8082511461062e5760405162461bcd60e51b815260206004820152601b60248201527f506c6179657220636f756e7420646f6573206e6f74206d6174636800000000006044820152606401610238565b600083116106725760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610238565b60646106be7f00000000000000000000000000000000000000000000000000000000000000067f0000000000000000000000000000000000000000000000000000000000000004610f83565b1061070b5760405162461bcd60e51b815260206004820152601960248201527f546f74616c2066656573206d757374206265203c2031303025000000000000006044820152606401610238565b600060646107397f000000000000000000000000000000000000000000000000000000000000000486610f9c565b6107439190610fb3565b9050600060646107737f000000000000000000000000000000000000000000000000000000000000000687610f9c565b61077d9190610fb3565b905060008161078c8488610fd5565b6107969190610fd5565b905060006107a48583610fb3565b90506000805b87518161ffff1610156109d1576040516370a0823160e01b815230600482015283907f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a6001600160a01b0316906370a0823190602401602060405180830381865afa15801561081d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108419190610f11565b101561084c57600080fd5b7f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a6001600160a01b031663a9059cbb898361ffff168151811061089157610891610efb565b6020026020010151856040518363ffffffff1660e01b81526004016108cb9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156108ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090e9190610f2a565b9150816109555760405162461bcd60e51b8152602060048201526015602482015274119d5b991cc81d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610238565b7f6747c18256028de8cd2fa276e75d6b4193ac34c1b55fa8e71797ac132d32ad39888261ffff168151811061098c5761098c610efb565b6020026020010151846040516109b79291906001600160a01b03929092168252602082015260400190565b60405180910390a1806109c981610f62565b9150506107aa565b50604051630852cd8d60e31b8152600481018690527f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a6001600160a01b0316906342966c6890602401600060405180830381600087803b158015610a3457600080fd5b505af1158015610a48573d6000803e3d6000fd5b505050507fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb85604051610a7d91815260200190565b60405180910390a160015460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018690527f000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a9091169063a9059cbb906044016020604051808303816000875af1158015610af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1d9190610f2a565b905080610b6c5760405162461bcd60e51b815260206004820152601760248201527f526576656e7565207472616e73666572206661696c65640000000000000000006044820152606401610238565b6040518481527f2eadf39cc6c5ced09ebf9444fe2a9d12031245bac8f89942a718752297866c7b9060200160405180910390a15050505050505050565b610bb1610cad565b6001600160a01b038116610c165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610238565b610c1f81610d07565b50565b610c2a610cad565b6001600160a01b038116610c8b5760405162461bcd60e51b815260206004820152602260248201527f726576656e75654164647265737320616464726573732063616e6e6f74206265604482015261020360f41b6064820152608401610238565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461058d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610238565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b0381168114610d8457600080fd5b919050565b600082601f830112610d9a57600080fd5b8135602067ffffffffffffffff80831115610db757610db7610d57565b8260051b604051601f19603f83011681018181108482111715610ddc57610ddc610d57565b604052938452858101830193838101925087851115610dfa57600080fd5b83870191505b84821015610e2057610e1182610d6d565b83529183019190830190610e00565b979650505050505050565b60008060408385031215610e3e57600080fd5b823567ffffffffffffffff811115610e5557600080fd5b610e6185828601610d89565b95602094909401359450505050565b600060208284031215610e8257600080fd5b5035919050565b600080600060608486031215610e9e57600080fd5b83359250602084013567ffffffffffffffff811115610ebc57600080fd5b610ec886828701610d89565b925050604084013590509250925092565b600060208284031215610eeb57600080fd5b610ef482610d6d565b9392505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f2357600080fd5b5051919050565b600060208284031215610f3c57600080fd5b81518015158114610ef457600080fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818103610f7957610f79610f4c565b6001019392505050565b80820180821115610f9657610f96610f4c565b92915050565b8082028115828204841417610f9657610f96610f4c565b600082610fd057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610f9657610f96610f4c56fea26469706673582212200511961c447dc63b5189f9c375dfabe13f7c8b32f6829ceb2dad865bd6d8448464736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a0000000000000000000000008b8988e1e27dffd5d681f15b9620adf2201da854
-----Decoded View---------------
Arg [0] : _bettingToken (address): 0xF2c84B49c5A86C805D63200c9067a3C0a5a09A9a
Arg [1] : _revenueWallet (address): 0x8b8988e1e27DFFD5D681F15b9620aDF2201dA854
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2c84b49c5a86c805d63200c9067a3c0a5a09a9a
Arg [1] : 0000000000000000000000008b8988e1e27dffd5d681f15b9620adf2201da854
Deployed Bytecode Sourcemap
31990:3352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33344:608;;;;;;:::i;:::-;;:::i;:::-;;32294:36;;;;;;;;1804:25:1;;;1792:2;1777:18;32294:36:0;;;;;;;;32099:34;;;;;;;;-1:-1:-1;;;;;2025:32:1;;;2007:51;;1995:2;1980:18;32099:34:0;1840:224:1;32032:28:0;;;;;-1:-1:-1;;;;;32032:28:0;;;32955:170;;;;;;:::i;:::-;;:::i;1527:103::-;;;:::i;32193:39::-;;;;;33962:1375;;;;;;:::i;:::-;;:::i;879:87::-;925:7;952:6;-1:-1:-1;;;;;952:6:0;879:87;;32069:21;;;;;;1785:201;;;;;;:::i;:::-;;:::i;33131:205::-;;;;;;:::i;:::-;;:::i;33344:608::-;765:13;:11;:13::i;:::-;33476:6:::1;;33463:10;:19;33455:50;;;::::0;-1:-1:-1;;;33455:50:0;;3344:2:1;33455:50:0::1;::::0;::::1;3326:21:1::0;3383:2;3363:18;;;3356:30;-1:-1:-1;;;3402:18:1;;;3395:48;3460:18;;33455:50:0::1;;;;;;;;;33542:1;33524:8;:15;:19;33516:50;;;::::0;-1:-1:-1;;;33516:50:0;;3691:2:1;33516:50:0::1;::::0;::::1;3673:21:1::0;3730:2;3710:18;;;3703:30;-1:-1:-1;;;3749:18:1;;;3742:48;3807:18;;33516:50:0::1;3489:342:1::0;33516:50:0::1;33584:8;33579:366;33602:8;:15;33598:1;:19;;;33579:366;;;33701:10;33647:12;-1:-1:-1::0;;;;;33647:22:0::1;;33670:8;33679:1;33670:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;33647:50:::1;::::0;-1:-1:-1;;;;;;33647:50:0::1;::::0;;;;;;-1:-1:-1;;;;;4198:15:1;;;33647:50:0::1;::::0;::::1;4180:34:1::0;33691:4:0::1;4230:18:1::0;;;4223:43;4115:18;;33647:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;33639:97;;;::::0;-1:-1:-1;;;33639:97:0;;4668:2:1;33639:97:0::1;::::0;::::1;4650:21:1::0;4707:2;4687:18;;;4680:30;-1:-1:-1;;;4726:18:1;;;4719:50;4786:18;;33639:97:0::1;4466:344:1::0;33639:97:0::1;33751:11;33765:12;-1:-1:-1::0;;;;;33765:25:0::1;;33791:8;33800:1;33791:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;33765:65:::1;::::0;-1:-1:-1;;;;;;33765:65:0::1;::::0;;;;;;-1:-1:-1;;;;;5073:15:1;;;33765:65:0::1;::::0;::::1;5055:34:1::0;33812:4:0::1;5105:18:1::0;;;5098:43;5157:18;;;5150:34;;;4990:18;;33765:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33751:79;;33853:6;33845:40;;;::::0;-1:-1:-1;;;33845:40:0;;5679:2:1;33845:40:0::1;::::0;::::1;5661:21:1::0;5718:2;5698:18;;;5691:30;-1:-1:-1;;;5737:18:1;;;5730:51;5798:18;;33845:40:0::1;5477:345:1::0;33845:40:0::1;33905:28;33909:8;33918:1;33909:11;;;;;;;;;;:::i;:::-;;;;;;;33922:10;33905:28;;;;;;-1:-1:-1::0;;;;;6019:32:1;;;;6001:51;;6083:2;6068:18;;6061:34;5989:2;5974:18;;5827:274;33905:28:0::1;;;;;;;;-1:-1:-1::0;33619:3:0;::::1;::::0;::::1;:::i;:::-;;;;33579:366;;;;33344:608:::0;;:::o;32955:170::-;765:13;:11;:13::i;:::-;33062:1:::1;33044:15;:19;33034:48;;;::::0;-1:-1:-1;;;33034:48:0;;6642:2:1;33034:48:0::1;::::0;::::1;6624:21:1::0;6681:2;6661:18;;;6654:30;-1:-1:-1;;;6700:18:1;;;6693:44;6754:18;;33034:48:0::1;6440:338:1::0;33034:48:0::1;33093:6;:24:::0;32955:170::o;1527:103::-;765:13;:11;:13::i;:::-;1592:30:::1;1619:1;1592:18;:30::i;:::-;1527:103::o:0;33962:1375::-;765:13;:11;:13::i;:::-;34147:1:::1;34128:8;:15;:20;;34120:51;;;::::0;-1:-1:-1;;;34120:51:0;;3691:2:1;34120:51:0::1;::::0;::::1;3673:21:1::0;3730:2;3710:18;;;3703:30;-1:-1:-1;;;3749:18:1;;;3742:48;3807:18;;34120:51:0::1;3489:342:1::0;34120:51:0::1;34209:12;34190:8;:15;:31;34182:71;;;::::0;-1:-1:-1;;;34182:71:0;;6985:2:1;34182:71:0::1;::::0;::::1;6967:21:1::0;7024:2;7004:18;;;6997:30;7063:29;7043:18;;;7036:57;7110:18;;34182:71:0::1;6783:351:1::0;34182:71:0::1;34290:1;34272:15;:19;34264:49;;;::::0;-1:-1:-1;;;34264:49:0;;7341:2:1;34264:49:0::1;::::0;::::1;7323:21:1::0;7380:2;7360:18;;;7353:30;-1:-1:-1;;;7399:18:1;;;7392:47;7456:18;;34264:49:0::1;7139:341:1::0;34264:49:0::1;34365:3;34334:28;34348:14;34334:11;:28;:::i;:::-;:34;34326:72;;;::::0;-1:-1:-1;;;34326:72:0;;7817:2:1;34326:72:0::1;::::0;::::1;7799:21:1::0;7856:2;7836:18;;;7829:30;7895:27;7875:18;;;7868:55;7940:18;;34326:72:0::1;7615:349:1::0;34326:72:0::1;34452:17;34504:3;34472:29;34490:11;34472:15:::0;:29:::1;:::i;:::-;:35;;;;:::i;:::-;34452:55:::0;-1:-1:-1;34518:20:0::1;34576:3;34541:32;34559:14;34541:15:::0;:32:::1;:::i;:::-;:38;;;;:::i;:::-;34518:61:::0;-1:-1:-1;34590:27:0::1;34518:61:::0;34620:27:::1;34638:9:::0;34620:15;:27:::1;:::i;:::-;:42;;;;:::i;:::-;34590:72:::0;-1:-1:-1;34673:19:0::1;34695:34;34717:12:::0;34590:72;34695:34:::1;:::i;:::-;34673:56:::0;-1:-1:-1;34742:11:0::1;::::0;34766:328:::1;34789:8;:15;34785:1;:19;;;34766:328;;;34839:37;::::0;-1:-1:-1;;;34839:37:0;;34870:4:::1;34839:37;::::0;::::1;2007:51:1::0;34880:11:0;;34839:12:::1;-1:-1:-1::0;;;;;34839:22:0::1;::::0;::::1;::::0;1980:18:1;;34839:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;34830:62;;;::::0;::::1;;34920:12;-1:-1:-1::0;;;;;34920:21:0::1;;34942:8;34951:1;34942:11;;;;;;;;;;:::i;:::-;;;;;;;34955;34920:47;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6019:32:1;;;;6001:51;;6083:2;6068:18;;6061:34;5989:2;5974:18;;5827:274;34920:47:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34911:56;;34994:6;34986:40;;;::::0;-1:-1:-1;;;34986:40:0;;5679:2:1;34986:40:0::1;::::0;::::1;5661:21:1::0;5718:2;5698:18;;;5691:30;-1:-1:-1;;;5737:18:1;;;5730:51;5798:18;;34986:40:0::1;5477:345:1::0;34986:40:0::1;35050:30;35055:8;35064:1;35055:11;;;;;;;;;;:::i;:::-;;;;;;;35068;35050:30;;;;;;-1:-1:-1::0;;;;;6019:32:1;;;;6001:51;;6083:2;6068:18;;6061:34;5989:2;5974:18;;5827:274;35050:30:0::1;;;;;;;;34806:3:::0;::::1;::::0;::::1;:::i;:::-;;;;34766:328;;;-1:-1:-1::0;35106:28:0::1;::::0;-1:-1:-1;;;35106:28:0;;::::1;::::0;::::1;1804:25:1::0;;;35106:12:0::1;-1:-1:-1::0;;;;;35106:17:0::1;::::0;::::1;::::0;1777:18:1;;35106:28:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35150:16;35156:9;35150:16;;;;1804:25:1::0;;1792:2;1777:18;;1658:177;35150:16:0::1;;;;;;;;35208:13;::::0;35186:50:::1;::::0;-1:-1:-1;;;35186:50:0;;-1:-1:-1;;;;;35208:13:0;;::::1;35186:50;::::0;::::1;6001:51:1::0;6068:18;;;6061:34;;;35186:12:0::1;:21:::0;;::::1;::::0;::::1;::::0;5974:18:1;;35186:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35177:59;;35255:6;35247:42;;;::::0;-1:-1:-1;;;35247:42:0;;8699:2:1;35247:42:0::1;::::0;::::1;8681:21:1::0;8738:2;8718:18;;;8711:30;8777:25;8757:18;;;8750:53;8820:18;;35247:42:0::1;8497:347:1::0;35247:42:0::1;35305:22;::::0;1804:25:1;;;35305:22:0::1;::::0;1792:2:1;1777:18;35305:22:0::1;;;;;;;34109:1228;;;;;33962:1375:::0;;;:::o;1785:201::-;765:13;:11;:13::i;:::-;-1:-1:-1;;;;;1874:22:0;::::1;1866:73;;;::::0;-1:-1:-1;;;1866:73:0;;9051:2:1;1866:73:0::1;::::0;::::1;9033:21:1::0;9090:2;9070:18;;;9063:30;9129:34;9109:18;;;9102:62;-1:-1:-1;;;9180:18:1;;;9173:36;9226:19;;1866:73:0::1;8849:402:1::0;1866:73:0::1;1950:28;1969:8;1950:18;:28::i;:::-;1785:201:::0;:::o;33131:205::-;765:13;:11;:13::i;:::-;-1:-1:-1;;;;;33220:28:0;::::1;33210:77;;;::::0;-1:-1:-1;;;33210:77:0;;9458:2:1;33210:77:0::1;::::0;::::1;9440:21:1::0;9497:2;9477:18;;;9470:30;9536:34;9516:18;;;9509:62;-1:-1:-1;;;9587:18:1;;;9580:32;9629:19;;33210:77:0::1;9256:398:1::0;33210:77:0::1;33298:13;:30:::0;;-1:-1:-1;;;;;;33298:30:0::1;-1:-1:-1::0;;;;;33298:30:0;;;::::1;::::0;;;::::1;::::0;;33131:205::o;1044:132::-;925:7;952:6;-1:-1:-1;;;;;952:6:0;175:10;1108:23;1100:68;;;;-1:-1:-1;;;1100:68:0;;9861:2:1;1100:68:0;;;9843:21:1;;;9880:18;;;9873:30;9939:34;9919:18;;;9912:62;9991:18;;1100:68:0;9659:356:1;2146:191:0;2220:16;2239:6;;-1:-1:-1;;;;;2256:17:0;;;-1:-1:-1;;;;;;2256:17:0;;;;;;2289:40;;2239:6;;;;;;;2289:40;;2220:16;2289:40;2209:128;2146:191;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:173;214:20;;-1:-1:-1;;;;;263:31:1;;253:42;;243:70;;309:1;306;299:12;243:70;146:173;;;:::o;324:908::-;378:5;431:3;424:4;416:6;412:17;408:27;398:55;;449:1;446;439:12;398:55;485:6;472:20;511:4;534:18;571:2;567;564:10;561:36;;;577:18;;:::i;:::-;623:2;620:1;616:10;655:2;649:9;718:2;714:7;709:2;705;701:11;697:25;689:6;685:38;773:6;761:10;758:22;753:2;741:10;738:18;735:46;732:72;;;784:18;;:::i;:::-;820:2;813:22;870:18;;;946:15;;;942:24;;;904:15;;;;-1:-1:-1;978:15:1;;;975:35;;;1006:1;1003;996:12;975:35;1042:2;1034:6;1030:15;1019:26;;1054:148;1070:6;1065:3;1062:15;1054:148;;;1136:23;1155:3;1136:23;:::i;:::-;1124:36;;1180:12;;;;1087;;;;1054:148;;;1220:6;324:908;-1:-1:-1;;;;;;;324:908:1:o;1237:416::-;1330:6;1338;1391:2;1379:9;1370:7;1366:23;1362:32;1359:52;;;1407:1;1404;1397:12;1359:52;1447:9;1434:23;1480:18;1472:6;1469:30;1466:50;;;1512:1;1509;1502:12;1466:50;1535:61;1588:7;1579:6;1568:9;1564:22;1535:61;:::i;:::-;1525:71;1643:2;1628:18;;;;1615:32;;-1:-1:-1;;;;1237:416:1:o;2277:180::-;2336:6;2389:2;2377:9;2368:7;2364:23;2360:32;2357:52;;;2405:1;2402;2395:12;2357:52;-1:-1:-1;2428:23:1;;2277:180;-1:-1:-1;2277:180:1:o;2462:484::-;2564:6;2572;2580;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2685:9;2672:23;2662:33;;2746:2;2735:9;2731:18;2718:32;2773:18;2765:6;2762:30;2759:50;;;2805:1;2802;2795:12;2759:50;2828:61;2881:7;2872:6;2861:9;2857:22;2828:61;:::i;:::-;2818:71;;;2936:2;2925:9;2921:18;2908:32;2898:42;;2462:484;;;;;:::o;2951:186::-;3010:6;3063:2;3051:9;3042:7;3038:23;3034:32;3031:52;;;3079:1;3076;3069:12;3031:52;3102:29;3121:9;3102:29;:::i;:::-;3092:39;2951:186;-1:-1:-1;;;2951:186:1:o;3836:127::-;3897:10;3892:3;3888:20;3885:1;3878:31;3928:4;3925:1;3918:15;3952:4;3949:1;3942:15;4277:184;4347:6;4400:2;4388:9;4379:7;4375:23;4371:32;4368:52;;;4416:1;4413;4406:12;4368:52;-1:-1:-1;4439:16:1;;4277:184;-1:-1:-1;4277:184:1:o;5195:277::-;5262:6;5315:2;5303:9;5294:7;5290:23;5286:32;5283:52;;;5331:1;5328;5321:12;5283:52;5363:9;5357:16;5416:5;5409:13;5402:21;5395:5;5392:32;5382:60;;5438:1;5435;5428:12;6106:127;6167:10;6162:3;6158:20;6155:1;6148:31;6198:4;6195:1;6188:15;6222:4;6219:1;6212:15;6238:197;6276:3;6304:6;6345:2;6338:5;6334:14;6372:2;6363:7;6360:15;6357:41;;6378:18;;:::i;:::-;6427:1;6414:15;;6238:197;-1:-1:-1;;;6238:197:1:o;7485:125::-;7550:9;;;7571:10;;;7568:36;;;7584:18;;:::i;:::-;7485:125;;;;:::o;7969:168::-;8042:9;;;8073;;8090:15;;;8084:22;;8070:37;8060:71;;8111:18;;:::i;8142:217::-;8182:1;8208;8198:132;;8252:10;8247:3;8243:20;8240:1;8233:31;8287:4;8284:1;8277:15;8315:4;8312:1;8305:15;8198:132;-1:-1:-1;8344:9:1;;8142:217::o;8364:128::-;8431:9;;;8452:11;;;8449:37;;;8466:18;;:::i
Swarm Source
ipfs://0511961c447dc63b5189f9c375dfabe13f7c8b32f6829ceb2dad865bd6d84484
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.