SavKripto
Trader
- BNB
- 0,00002100
Selam arkadaşlar, daha önce konusunu açtığımız prsale kontrat artık hizmetinizde.
Yazdığım solidity kodlarının tüm testlerini tamamlayıp SatoshiTürk ailesine hediye ediyorum. Sıkıntısız çalışmaktadır. İlerleyen süreçte Web sayfasına entegre edip tekrardan sizlerin kullanımına sunmaya çalışacağım. Ancak bu işlerin her biri ayrı bir zaman istemekte. İşten güçten vakit buldukça bu aileye birşeyler kazandırmaya yardımcı olmaya çalışıyorum. Siz değerli hocalarımın da katkılarıyla çok daha iyi olacaktır prsale projemiz..// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
contract SavKriptoPresale is Ownable, ReentrancyGuard {
IERC20 public token;
uint256 public price; // Price of 1 token (in BNB)
uint256 public tokensSold;
event TokensPurchased(address indexed buyer, uint256 amount);
event PresaleFunded(uint256 amount);
constructor() Ownable(msg.sender) {
token = IERC20(0x5fC457F7FE81868C960D9D47A6400B15c6bF5cbA); // token address
price = 0.000000001 ether; // Token price in BNB (1 token = 0.000000001 BNB)
}
function buyTokens() public payable nonReentrant {
require(msg.value > 0, "BNB amount cannot be 0");
// Calculate total tokens to buy (taking into account the decimals of the token)
uint256 amountToBuy = (msg.value * 10**18) / price;
// Check if there are enough tokens in the contract
require(token.balanceOf(address(this)) >= amountToBuy, "Not enough tokens available");
tokensSold += amountToBuy;
token.transfer(msg.sender, amountToBuy);
emit TokensPurchased(msg.sender, amountToBuy);
}
function fundPresale(uint256 _amount) external onlyOwner nonReentrant {
require(token.balanceOf(msg.sender) >= _amount, "Insufficient token balance");
token.transferFrom(msg.sender, address(this), _amount);
emit PresaleFunded(_amount);
}
function withdrawBNB() external onlyOwner nonReentrant {
uint256 balance = address(this).balance;
require(balance > 0, "No BNB to withdraw");
payable(owner()).transfer(balance);
}
function withdrawTokens(uint256 _amount) external onlyOwner nonReentrant {
require(token.balanceOf(address(this)) >= _amount, "Insufficient token balance");
token.transfer(owner(), _amount);
}
function updatePrice(uint256 _newPrice) external onlyOwner {
require(_newPrice > 0, "Price must be greater than 0");
price = _newPrice;
}
}