Address Contract Partially Verified
Address
0x951AfD9E496030Fb24a55c55C5a2f2f1520Bdfa5
Balance
0 ETH
Nonce
1
Code Size
5074 bytes
Creator
0xD98cE20B...09EE at tx 0x4f62e4c0...48ea85
Indexed Transactions
0
Contract Bytecode
5074 bytes
0x608060405260043610610134575f3560e01c8063a0a6e940116100a8578063c5c4744c1161006d578063c5c4744c14610342578063d0febe4c14610357578063d94439231461035f578063e086e5ec14610388578063f89be5931461039c578063fc0c546a146103b7575f80fd5b8063a0a6e940146102b0578063aaffadf3146102c4578063b071cbe6146102de578063b753bfe9146102f9578063b89ea40214610317575f80fd5b806360219c7b116100f957806360219c7b146101f0578063735de9f71461020f57806378e979251461024e5780638d3d6576146102635780638d8f2adb1461027e5780638da5cb5b14610292575f80fd5b80632c4e722e146101475780633197cbb61461017157806342e94c901461018657806348c54b9d146101b15780635eb7413a146101c5575f80fd5b36610143576101416103d6565b005b5f80fd5b348015610152575f80fd5b5061015e630196e6aa81565b6040519081526020015b60405180910390f35b34801561017c575f80fd5b5061015e60045481565b348015610191575f80fd5b5061015e6101a0366004611220565b60066020525f908152604090205481565b3480156101bc575f80fd5b50610141610761565b3480156101d0575f80fd5b5061015e6101df366004611220565b60076020525f908152604090205481565b3480156101fb575f80fd5b5061015e6b014adf4b7320334b9000000081565b34801561021a575f80fd5b50610236737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610168565b348015610259575f80fd5b5061015e60035481565b34801561026e575f80fd5b5061015e670214e8348c4f000081565b348015610289575f80fd5b506101416109e1565b34801561029d575f80fd5b505f54610236906001600160a01b031681565b3480156102bb575f80fd5b50610141610c13565b3480156102cf575f80fd5b5061015e660aa87bee53800081565b3480156102e9575f80fd5b5061015e67cec76f0e7152000081565b348015610304575f80fd5b5061015e6aa56fa5b99019a5c800000081565b348015610322575f80fd5b5061015e610331366004611220565b60086020525f908152604090205481565b34801561034d575f80fd5b5061015e60025481565b6101416103d6565b34801561036a575f80fd5b506005546103789060ff1681565b6040519015158152602001610168565b348015610393575f80fd5b50610141611072565b3480156103a7575f80fd5b5061015e677ce66c50e284000081565b3480156103c2575f80fd5b50600154610236906001600160a01b031681565b60035442101580156103ea57506004544211155b6104335760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b60448201526064015b60405180910390fd5b660aa87bee53800034101580156104525750670214e8348c4f00003411155b61049e5760405162461bcd60e51b815260206004820152601960248201527f436f6e747269627574696f6e206f7574206f662072616e676500000000000000604482015260640161042a565b67cec76f0e71520000346002546104b59190611261565b11156104f55760405162461bcd60e51b815260206004820152600f60248201526e12185c9918d85c081c995858da1959608a1b604482015260640161042a565b5f610504630196e6aa3461127a565b90505f610512600283611291565b90505f61051f82846112b0565b6001546040516370a0823160e01b815230600482015291925084916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561056a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058e91906112c3565b10156105ac5760405162461bcd60e51b815260040161042a906112da565b60015460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156105fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061061e9190611311565b6106625760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015260640161042a565b335f9081526006602052604081208054349290610680908490611261565b9091555050335f90815260076020526040812080548392906106a3908490611261565b9091555050600454335f90815260086020526040812091909155600280543492906106cf908490611261565b9091555050604080513481526020810185905233917f8fafebcaf9d154343dad25669bfa277f4fbacd7ac6b0c4fed522580e040a0f33910160405180910390a2677ce66c50e28400006002541061075c577f5e840495534ac9193f14baff8d8610fdf55c574be9b8e5cfc9e1ec1ef6fca3d160025460405161075391815260200190565b60405180910390a15b505050565b335f908152600760205260409020546107b15760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b604482015260640161042a565b335f908152600760205260408120546004549091906107d090426112b0565b90505f6302c7ea0082106107e5575081610849565b62ed4e008210610801576107fa600284611291565b9050610849565b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e7320617265207374696c6c206c6f636b6564000000000000000000604482015260640161042a565b6001546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801561088f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b391906112c3565b10156108d15760405162461bcd60e51b815260040161042a906112da565b335f90815260076020526040812080548392906108ef9084906112b0565b909155505060015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610942573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109669190611311565b6109a75760405162461bcd60e51b8152602060048201526012602482015271151bdad95b8818db185a5b4819985a5b195960721b604482015260640161042a565b60405181815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a2505050565b5f546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161042a90611330565b677ce66c50e284000060025410610a635760405162461bcd60e51b815260206004820181905260248201527f536f667463617020726561636865642c2063616e6e6f74207769746864726177604482015260640161042a565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610aa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acd91906112c3565b90505f8111610b165760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b604482015260640161042a565b6001545f5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303815f875af1158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611311565b610bcf5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015260640161042a565b5f546040518281526001600160a01b03909116907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a250565b5f546001600160a01b03163314610c3c5760405162461bcd60e51b815260040161042a90611330565b6004544211610c8d5760405162461bcd60e51b815260206004820152601b60248201527f50726573616c65206973206e6f74207965742066696e69736865640000000000604482015260640161042a565b677ce66c50e28400006002541015610cdd5760405162461bcd60e51b815260206004820152601360248201527214dbd99d18d85c081b9bdd081c995858da1959606a1b604482015260640161042a565b60055460ff1615610d305760405162461bcd60e51b815260206004820152601760248201527f4c697175696469747920616c7265616479206164646564000000000000000000604482015260640161042a565b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610d76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9a91906112c3565b90505f610db26aa56fa5b99019a5c800000083611261565b6001546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2191906112c3565b1015610e3f5760405162461bcd60e51b815260040161042a906112da565b60015460405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152602481018390526001600160a01b039091169063095ea7b3906044016020604051808303815f875af1158015610ea1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec59190611311565b610f095760405162461bcd60e51b8152602060048201526015602482015274151bdad95b88185c1c1c9bdd985b0819985a5b1959605a1b604482015260640161042a565b6002546001545f8054737a250d5630b4cf539739df2c5dacb4c659f2488d9363f305d7199390926001600160a01b03918216928792829116610f4d4261012c611261565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015610fb8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fdd9190611371565b50506005805460ff19166001179055506002546040517f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b9161102a91849190918252602082015260400190565b60405180910390a160025460408051918252602082018390527fb4e6cb40663c1ac63bcd620dbe3d98c44526baa45e310f545f425ebaab36a293910160405180910390a15050565b5f546001600160a01b0316331461109b5760405162461bcd60e51b815260040161042a90611330565b677ce66c50e2840000600254106111065760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f742077697468647261772045544820616674657220736f667463616044820152681c081c995858da195960ba1b606482015260840161042a565b47806111495760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b604482015260640161042a565b5f80546040516001600160a01b039091169083908381818185875af1925050503d805f8114611193576040519150601f19603f3d011682016040523d82523d5f602084013e611198565b606091505b50509050806111db5760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b604482015260640161042a565b5f546040518381526001600160a01b03909116907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a25050565b5f60208284031215611230575f80fd5b81356001600160a01b0381168114611246575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156112745761127461124d565b92915050565b80820281158282048414176112745761127461124d565b5f826112ab57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156112745761127461124d565b5f602082840312156112d3575f80fd5b5051919050565b6020808252601d908201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e7472616374000000604082015260600190565b5f60208284031215611321575f80fd5b81518015158114611246575f80fd5b60208082526021908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6040820152603760f91b606082015260800190565b5f805f60608486031215611383575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220fbd81a8602d1aa4ebf46a2c75e9d85bc896225251c40a3b44c27c860228ec84a64736f6c63430008140033
Verified Source Code Partial Match
Compiler: v0.8.20+commit.a1b79de6
EVM: shanghai
Optimization: Yes (200 runs)
tGtPresale.sol 167 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
function transfer(address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
interface IUniswapV2Router02 {
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract tGtPresale {
address public owner;
IERC20 public token;
uint256 public constant rate = 26666666; // 1 ETH = 26,666,666 tGt
uint256 public constant totalTokensForSale = 400_000_000 * 10**18; // 400M tGt
uint256 public constant liquidityReserve = 200_000_000 * 10**18; // 200M tGt Uniswap likidite için
uint256 public constant softcap = 9 ether;
uint256 public constant hardcap = 14.9 ether;
uint256 public constant minContribution = 0.003 ether;
uint256 public constant maxContribution = 0.15 ether;
uint256 public totalRaised;
uint256 public startTime;
uint256 public endTime;
bool public liquidityAdded = false;
address public constant uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uniswap V2 Router (Ethereum için)
mapping(address => uint256) public contributions;
mapping(address => uint256) public lockedTokens;
mapping(address => uint256) public claimTimes;
event TokensPurchased(address indexed buyer, uint256 ethAmount, uint256 tokenAmount);
event TokensClaimed(address indexed user, uint256 amount);
event LiquidityAdded(uint256 amountToken, uint256 amountETH);
event Withdrawn(address indexed owner, uint256 amount);
event SoftcapReached(uint256 totalRaised);
event PresaleEnded(uint256 totalETH, uint256 totalTokens);
modifier onlyOwner() {
require(msg.sender == owner, "Only owner can call this function");
_;
}
modifier isActive() {
require(block.timestamp >= startTime && block.timestamp <= endTime, "Presale is not active");
_;
}
constructor(address _tokenAddress, uint256 _startTime, uint256 _endTime) {
require(_startTime < _endTime, "Start time must be before end time");
owner = msg.sender;
token = IERC20(_tokenAddress);
startTime = _startTime;
endTime = _endTime;
}
function buyTokens() public payable isActive {
require(msg.value >= minContribution && msg.value <= maxContribution, "Contribution out of range");
require(totalRaised + msg.value <= hardcap, "Hardcap reached");
uint256 totalTokenAmount = msg.value * rate;
uint256 immediateTokens = totalTokenAmount / 2;
uint256 lockedAmount = totalTokenAmount - immediateTokens;
require(token.balanceOf(address(this)) >= totalTokenAmount, "Not enough tokens in contract");
// Önce token transferini yap
require(token.transfer(msg.sender, immediateTokens), "Token transfer failed");
// Sonra state değişkenlerini güncelle
contributions[msg.sender] += msg.value;
lockedTokens[msg.sender] += lockedAmount;
claimTimes[msg.sender] = endTime;
totalRaised += msg.value;
emit TokensPurchased(msg.sender, msg.value, totalTokenAmount);
if (totalRaised >= softcap) {
emit SoftcapReached(totalRaised);
}
}
function claimTokens() public {
require(lockedTokens[msg.sender] > 0, "No tokens to claim");
uint256 totalLocked = lockedTokens[msg.sender];
uint256 timeSinceListing = block.timestamp - endTime;
uint256 claimableAmount = 0;
if (timeSinceListing >= 540 days) {
claimableAmount = totalLocked;
} else if (timeSinceListing >= 180 days) {
claimableAmount = totalLocked / 2;
} else {
revert("Tokens are still locked");
}
require(token.balanceOf(address(this)) >= claimableAmount, "Not enough tokens in contract");
lockedTokens[msg.sender] -= claimableAmount;
require(token.transfer(msg.sender, claimableAmount), "Token claim failed");
emit TokensClaimed(msg.sender, claimableAmount);
}
function finalizePresale() external onlyOwner {
require(block.timestamp > endTime, "Presale is not yet finished");
require(totalRaised >= softcap, "Softcap not reached");
require(!liquidityAdded, "Liquidity already added");
uint256 remainingTokens = token.balanceOf(address(this));
uint256 totalLiquidityTokens = remainingTokens + liquidityReserve;
require(token.balanceOf(address(this)) >= totalLiquidityTokens, "Not enough tokens in contract");
require(token.approve(uniswapRouter, totalLiquidityTokens), "Token approval failed");
IUniswapV2Router02(uniswapRouter).addLiquidityETH{value: totalRaised}(
address(token),
totalLiquidityTokens,
0,
0,
owner,
block.timestamp + 300
);
liquidityAdded = true;
emit LiquidityAdded(totalLiquidityTokens, totalRaised);
emit PresaleEnded(totalRaised, totalLiquidityTokens);
}
function withdrawTokens() external onlyOwner {
require(totalRaised < softcap, "Softcap reached, cannot withdraw");
uint256 contractBalance = token.balanceOf(address(this));
require(contractBalance > 0, "No tokens to withdraw");
require(token.transfer(owner, contractBalance), "Token transfer failed");
emit Withdrawn(owner, contractBalance);
}
function withdrawETH() external onlyOwner {
require(totalRaised < softcap, "Cannot withdraw ETH after softcap reached");
uint256 balance = address(this).balance;
require(balance > 0, "No ETH to withdraw");
(bool success, ) = payable(owner).call{value: balance}("");
require(success, "Withdraw failed");
emit Withdrawn(owner, balance);
}
receive() external payable {
buyTokens();
}
}
Read Contract
claimTimes 0xb89ea402 → uint256
contributions 0x42e94c90 → uint256
endTime 0x3197cbb6 → uint256
hardcap 0xb071cbe6 → uint256
liquidityAdded 0xd9443923 → bool
liquidityReserve 0xb753bfe9 → uint256
lockedTokens 0x5eb7413a → uint256
maxContribution 0x8d3d6576 → uint256
minContribution 0xaaffadf3 → uint256
owner 0x8da5cb5b → address
rate 0x2c4e722e → uint256
softcap 0xf89be593 → uint256
startTime 0x78e97925 → uint256
token 0xfc0c546a → address
totalRaised 0xc5c4744c → uint256
totalTokensForSale 0x60219c7b → uint256
uniswapRouter 0x735de9f7 → address
Write Contract 5 functions
These functions modify contract state and require a wallet transaction to execute.
buyTokens 0xd0febe4c
No parameters
claimTokens 0x48c54b9d
No parameters
finalizePresale 0xa0a6e940
No parameters
withdrawETH 0xe086e5ec
No parameters
withdrawTokens 0x8d8f2adb
No parameters
Recent Transactions
No transactions found for this address