Address Contract Verified
Address
0x2b6bd16f20E789091Fc2DDD06e39463951f56EE9
Balance
0 ETH
Nonce
1
Code Size
3048 bytes
Creator
0x94Baa529...715d at tx 0x486ab63b...98152b
Indexed Transactions
0
Contract Bytecode
3048 bytes
0x6080604052600436106100f2575f3560e01c80638129fc1c11610087578063bedac10011610057578063bedac1001461026f578063d0febe4c14610284578063e086e5ec1461028c578063f2fde38b146102a0575f80fd5b80638129fc1c146101f25780638da5cb5b146102065780639d76ea5814610236578063b06b4ad61461025a575f80fd5b806369b372f1116100c257806369b372f1146101965780636bebe8e0146101aa578063715018a6146101bf5780637156ec7b146101d3575f80fd5b80632456274714610105578063392e53cd1461012d57806344c4dcc11461015657806345a00cc914610181575f80fd5b36610101576100ff6102bf565b005b5f80fd5b348015610110575f80fd5b5061011a60025481565b6040519081526020015b60405180910390f35b348015610138575f80fd5b506007546101469060ff1681565b6040519015158152602001610124565b348015610161575f80fd5b5061011a610170366004610a9c565b60016020525f908152604090205481565b34801561018c575f80fd5b5061011a60035481565b3480156101a1575f80fd5b506100ff61068b565b3480156101b5575f80fd5b5061011a60045481565b3480156101ca575f80fd5b506100ff61079b565b3480156101de575f80fd5b506100ff6101ed366004610a9c565b61080c565b3480156101fd575f80fd5b506100ff61085d565b348015610211575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610124565b348015610241575f80fd5b5060075461021e9061010090046001600160a01b031681565b348015610265575f80fd5b5061011a60055481565b34801561027a575f80fd5b5061011a60065481565b6100ff6102bf565b348015610297575f80fd5b506100ff6108f2565b3480156102ab575f80fd5b506100ff6102ba366004610a9c565b6109b5565b60075460ff166103165760405162461bcd60e51b815260206004820152601760248201527f507269766174652073616c65206e6f742061637469766500000000000000000060448201526064015b60405180910390fd5b5f34116103655760405162461bcd60e51b815260206004820152601b60248201527f4d7573742073656e642045544820746f2067657420746f6b656e730000000000604482015260640161030d565b6004546103729034610add565b156103d45760405162461bcd60e51b815260206004820152602c60248201527f4d7573742062757920696e20696e6372656d656e7473206f66204d696e696d7560448201526b1b4811551208105b5bdd5b9d60a21b606482015260840161030d565b600354335f908152600160205260409020546103f09034610b04565b11156104495760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420627579206d6f7265207468616e204d617845544820416d6f756044820152611b9d60f21b606482015260840161030d565b6005546006546104599034610b04565b11156104b35760405162461bcd60e51b8152602060048201526024808201527f4e6f206d6f726520746f6b656e7320617661696c61626c6520666f722070726560448201526373616c6560e01b606482015260840161030d565b335f90815260016020526040812080543492906104d1908490610b04565b925050819055503460065f8282546104e99190610b04565b90915550506002545f90670de0b6b3a7640000906105079034610b1d565b6105119190610b34565b6007546040516370a0823160e01b815230600482015291925061010090046001600160a01b031690829082906370a0823190602401602060405180830381865afa158015610561573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105859190610b47565b10156105e15760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676820746f6b656e73206f6e20636f6e747261637420746f604482015264081cd95b9960da1b606482015260840161030d565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303815f875af115801561062b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064f9190610b5e565b50604051828152339034907fbbf80c42c358eb37b815c747f36853be301e08325584261ceb02b03425bb24f19060200160405180910390a35050565b5f546001600160a01b031633146106b45760405162461bcd60e51b815260040161030d90610b7d565b6007546040516370a0823160e01b81523060048201526101009091046001600160a01b03169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190610b47565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107989190610b5e565b50565b5f546001600160a01b031633146107c45760405162461bcd60e51b815260040161030d90610b7d565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108355760405162461bcd60e51b815260040161030d90610b7d565b600780546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146108865760405162461bcd60e51b815260040161030d90610b7d565b60075460ff16156108e35760405162461bcd60e51b815260206004820152602160248201527f4d6179206e6f7420696e697469616c697a6520636f6e747261637420616761696044820152603760f91b606482015260840161030d565b6007805460ff19166001179055565b5f546001600160a01b0316331461091b5760405162461bcd60e51b815260040161030d90610b7d565b6040515f903390610bb890479084818181858888f193505050503d805f811461095f576040519150601f19603f3d011682016040523d82523d5f602084013e610964565b606091505b50509050806107985760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c000000604482015260640161030d565b5f546001600160a01b031633146109de5760405162461bcd60e51b815260040161030d90610b7d565b6001600160a01b038116610a435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161030d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610aac575f80fd5b81356001600160a01b0381168114610ac2575f80fd5b9392505050565b634e487b7160e01b5f52601260045260245ffd5b5f82610aeb57610aeb610ac9565b500690565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b1757610b17610af0565b92915050565b8082028115828204841417610b1757610b17610af0565b5f82610b4257610b42610ac9565b500490565b5f60208284031215610b57575f80fd5b5051919050565b5f60208284031215610b6e575f80fd5b81518015158114610ac2575f80fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122047842c8669f038e6db8ab63ade203f18b1908ee859c8df7aabf3fa359f3ac6bc64736f6c63430008190033
Verified Source Code Full Match
Compiler: v0.8.25+commit.b61c2a91
EVM: cancun
Optimization: Yes (200 runs)
TLNpriv.sol 243 lines
// SPDX-License-Identifier: MIT
// TAO Loans Seed sale bridge 10E [RATE = 1E = 1.2% supply or 120,000 $TLN]
// www.tao.loans
// t.me/taoloans
// t.me/taoloansbot
// twitter.com/TaoLonas
// stake.tao.loans
// github.com/taoloans
// tao.loans/documentation.html
// www.youtube.com/@TaoLoans
pragma solidity ^0.8.6;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
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 () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = 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");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract TLNpriv is Ownable {
mapping (address => uint256) public purchasedAmount;
event TokensBought(uint256 tokenAmount, uint256 indexed ETHAmount, address indexed sender);
uint256 public tokensPerETH = 120000*1e18; // 120, 000 $TLN tokens per ETH
uint256 public maxETHAmount = 1*1e18;
uint256 public minETHAmount = 5*1e17;
uint256 public totalETHCap = 10*1e18;
uint256 public totalPurchasedAmount;
bool public isInitialized = false;
address public tokenAddress;
constructor() {
address token = address(0xc667131960A431533E1cc60194a4751e09244479); // $TLN Token
tokenAddress = token;
}
receive() external payable {
buyTokens();
}
function buyTokens() payable public {
require(isInitialized, "Private sale not active");
require(msg.value > 0, "Must send ETH to get tokens");
require(msg.value % minETHAmount == 0, "Must buy in increments of Minimum ETH Amount");
require(msg.value + purchasedAmount[msg.sender] <= maxETHAmount, "Cannot buy more than MaxETH Amount");
require(msg.value + totalPurchasedAmount <= totalETHCap, "No more tokens available for presale");
purchasedAmount[msg.sender] += msg.value;
totalPurchasedAmount += msg.value;
uint256 tokenAmount = (msg.value * tokensPerETH)/1e18;
IERC20 token = IERC20(tokenAddress);
require(token.balanceOf(address(this)) >= tokenAmount, "Not enough tokens on contract to send");
token.transfer(msg.sender, tokenAmount);
emit TokensBought(tokenAmount, msg.value, msg.sender);
}
function initialize() external onlyOwner {
require(!isInitialized, "May not initialize contract again");
// Exclude the pair from fees so that users don't get taxed when selling.
isInitialized = true;
}
// only use in case of emergency
function emergencyTokenAddressUpdate(address newToken) external onlyOwner{
tokenAddress = newToken;
}
// only use in case of emergency or after presale is over
function emergencyWithdrawTokens() external onlyOwner {
IERC20(tokenAddress).transfer(msg.sender, IERC20(tokenAddress).balanceOf(address(this)));
}
// owner can withdraw ETH after people get tokens
function withdrawETH() external onlyOwner {
(bool success,) = msg.sender.call{value: address(this).balance, gas: 3000}("");
require(success, "Withdrawal was not successful");
}
}
Read Contract
isInitialized 0x392e53cd → bool
maxETHAmount 0x45a00cc9 → uint256
minETHAmount 0x6bebe8e0 → uint256
owner 0x8da5cb5b → address
purchasedAmount 0x44c4dcc1 → uint256
tokenAddress 0x9d76ea58 → address
tokensPerETH 0x24562747 → uint256
totalETHCap 0xb06b4ad6 → uint256
totalPurchasedAmount 0xbedac100 → uint256
Write Contract 7 functions
These functions modify contract state and require a wallet transaction to execute.
buyTokens 0xd0febe4c
No parameters
emergencyTokenAddressUpdate 0x7156ec7b
address newToken
emergencyWithdrawTokens 0x69b372f1
No parameters
initialize 0x8129fc1c
No parameters
renounceOwnership 0x715018a6
No parameters
transferOwnership 0xf2fde38b
address newOwner
withdrawETH 0xe086e5ec
No parameters
Recent Transactions
No transactions found for this address