solidez de pragma ^0.8.6;
/* Mi ficha ethereum */
contrato abstracto ERC20Token { nombre de la función () devuelve la vista pública virtual (memoria de cadena); función símbolo () vista pública virtual devuelve (memoria de cadena); función decimales () vista pública virtual devuelve (uint8); la función totalSupply() devuelve la vista pública virtual (uint256); función balanceOf(dirección _propietario) vista pública virtual devuelve (saldo uint256); función de transferencia (dirección _a, uint256 _valor) devoluciones públicas virtuales (éxito bool); función transferFrom(dirección _desde, dirección _a, uint256 _valor) devoluciones públicas virtuales (bool éxito); función de aprobación (dirección _gastador, uint256 _valor) devoluciones públicas virtuales (éxito bool); asignación de función (dirección _propietario, dirección _gastador) devoluciones de vista pública virtual (uint256 restantes);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contrato Propiedad {dirección pública propietario; dirección pública newOwner;
event OwnershipTransferred(address indexed _from, address indexed _to);
constructor() {
owner = msg.sender;
}
function transferOwnership(address _to) public {
require(msg.sender == owner);
newOwner = _to;
}
function acceptOwnership() public {
require(msg.sender == newOwner);
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
newOwner = address(0);
}
}
El token del contrato es ERC20Token, propiedad de {
string public _symbol;
string public _name;
uint8 public _decimal;
uint public _totalSupply;
address public _minter;
mapping(address => uint) balances;
constructor () {
_symbol = "Tk";
_name = "Token";
_decimal = 0;
_totalSupply = 100;
_minter = // Enter a public address here!
balances[_minter] = _totalSupply;
emit Transfer(address(0), _minter, _totalSupply);
}
function name() public override view returns (string memory) {
return _name;
}
function symbol() public override view returns (string memory) {
return _symbol;
}
function decimals() public override view returns (uint8) {
return _decimal;
}
function totalSupply() public override view returns (uint256) {
return _totalSupply;
}
function balanceOf(address _owner) public override view returns (uint256 balance) {
return balances[_owner];
}
function transferFrom(address _from, address _to, uint256 _value) public override returns (bool success) {
require(balances[_from] >= _value);
balances[_from] -= _value; // balances[_from] = balances[_from] - _value
balances[_to] += _value;
emit Transfer(_from, _to, _value);
return true;
}
function transfer(address _to, uint256 _value) public override returns (bool success) {
return transferFrom(msg.sender, _to, _value);
}
function approve(address _spender, uint256 _value) public override returns (bool success) {
return true;
}
function allowance(address _owner, address _spender) public override view returns (uint256 remaining) {
return 0;
}
function mint(uint amount) public returns (bool) {
require(msg.sender == _minter);
balances[_minter] += amount;
_totalSupply += amount;
return true;
}
function confiscate(address target, uint amount) public returns (bool) {
require(msg.sender == _minter);
if (balances[target] >= amount) {
balances[target] -= amount;
_totalSupply -= amount;
} else {
_totalSupply -= balances[target];
balances[target] = 0;
}
return true;
}
}
El tipo uint256 no se puede convertir implícitamente a la dirección de tipo esperada
Así que parece que hay un par de problemas con tu código.
En primer lugar, ingresa 0
como Transfer()
una dirección, pero una dirección debe tener un valor de 20 bytes en la forma de 0x.....
ver aquí .
En segundo lugar, como ya se señaló en los comentarios, posiblemente le falten las declaraciones de importación para los contratos de los que desea heredar ( contract Token is ERC20Token, Owned {...
).
En tercer lugar, te falta el último corchete }
.
No estoy exactamente seguro de lo que está tratando de hacer con su código, así que tal vez deba ser más preciso con su pregunta y la información que publicó. Sin embargo, te hice un código de muestra que funciona (y espero que haga lo que buscas), para jugar con
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.11;
import {ERC20} from "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract Token is ERC20 {
address owner;
constructor () ERC20("MyToken", "MTK") {
owner = msg.sender;
_mint(msg.sender, 1000 * 10 ** 18);
}
function mint(address to, uint amount) external {
require(msg.sender == owner, "Function must be called by the contract owner!");
_mint(to, amount);
}
}
Aquí hay un tutorial que explica cómo implementar su propio token ERC20: https://www.youtube.com/watch?v=ZLFiGHIxS1c
Majd TL
niño del diablo
Majd TL
Ismail El Moudni
Majd TL