Neler yeni
Kripto Para, Bitcoin, Ethereum, Cardano, Dogecoin, Shiba, Forumları, Yorumları, Teknik Analiz

Satoshiturk ailesine hoş geldin!

Burada, yatırım tavsiyesi vermeyip, hiçbir projeye para karşılığı destek çıkmadan, kripto dünyasının içinden gelen yöneticilerimizle doğru bilgiye ulaşabilirsin.

5 yıldır aksamadan yaptığımız ödemelerle güvenin adresiyiz.

Bizimle keşfet, öğren ve kripto sohbetlerine katıl. Seni aramızda görmekten mutluluk duyarız!

Bu kod bir token çıkarmak için uygunmudur ?

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IBEP20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BuyOnlyToken is IBEP20 {
string public name = "BuyOnlyToken";
string public symbol = "BOT";
uint8 public decimals = 18;
uint256 private _totalSupply;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _buyPrice;

constructor(uint256 initialSupply, uint256 buyPrice) {
_totalSupply = initialSupply * 10 ** uint256(decimals);
_balances[msg.sender] = _totalSupply;
_buyPrice = buyPrice;
emit Transfer(address(0), msg.sender, _totalSupply);
}

function totalSupply() external view override returns (uint256) {
return _totalSupply;
}

function balanceOf(address account) external view override returns (uint256) {
return _balances[account];
}

function transfer(address recipient, uint256 amount) external override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}

function allowance(address owner, address spender) external view override returns (uint256) {
return _allowances[owner][spender];
}

function approve(address spender, uint256 amount) external override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}

function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
return true;
}

function _transfer(address sender, address recipient, uint256 amount) private {
require(sender != address(0), "Transfer from the zero address");
require(recipient != address(0), "Transfer to the zero address");
require(_balances[sender] >= amount, "Insufficient balance");
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}

function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "Approve from the zero address");
require(spender != address(0), "Approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}

function buyTokens() external payable {
uint256 amount = msg.value / _buyPrice;
require(amount > 0, "Insufficient amount sent");
_transfer(address(this), msg.sender, amount);
}

receive() external payable {
buyTokens();
}
}
 
Bu kontratın kullanılması sağlıklı değil. güvenlik açığı var.
 
transfer, transferfrom ve buytokens işlevlerinde koruma yok openzeplin kontratlarını import ederek ReentrancyGuard işlevini ekleyebilirsiniz.
_approve işleminde bir sınırlama yok doğal olarak saldırıya açık.
 

Cüzdanınız

BNB
0.00000000

Forum istatistikleri

Konular
13,176
Mesajlar
61,226
Kullanıcılar
6,689
Son üye
SavKripto
Geri
Üst