browser / Test.sol: 5: 21: TypeError: Определение базы должно предшествовать определению производного контракта, тест принадлежит ^ --- ^

У меня проблема, которую я действительно не знаю, как решить, я делал учебник по созданию смарт-контрактов о надежности для запуска на Ethereum для будущего университетского проекта. Я получал ошибку, указанную выше в заголовке. Я скопирую код, чтобы вы могли увидеть, что у меня было, и выделить строку кода ошибки. Я не мог понять, в чем была проблема, потому что у меня была двусмысленная ошибка типа, плюс я новичок в солидности.

pragma solidity ^0.4.24;

contract NLtoken is owned
{
    
    uint public totalSupply;
    string public name;
    string public symbol;
    uint8 public decimals = 18;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowence;
    event Transfer (address indexed _from, address indexed _to, uint tokens);
    event Approval (address indexed _tokenOwner, address indexed _spender, uint tokens);
    
    constructor  (string tokenName, string tokenSymbol, uint initialSupply) public {
        totalSupply = initialSupply*10**uint256(decimals);
        balanceOf[msg.sender] = initialSupply;
        name = tokenName;
        symbol = tokenSymbol;
    }
    function _transfer (address _from, address _to, uint256 _value) internal returns(bool success){
       require(_to != 0x0);
        require(balanceOf[_from] >= _value);
        require(balanceOf[_to] + _value >= balanceOf[_to]);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
        return true;
    }
    
    function transfer (address _to, uint256 _value) public returns (bool success)
    {
        _transfer(msg.sender, _to, _value);
        return true;
    }
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
    {
        require(_value <= allowence[_from][msg.sender]);
        allowence[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
        
    }
    function approve(address _spender, uint256 _value) public returns (bool success)
    {
        allowence[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
        
    }
    function mintToken (address _target, uint256 _mintedAmount) onlyOwner  {
        balanceOf[_target] += _mintedAmount;
        totalSupply += _mintedAmount;
        emit transfer(0, owner, _mintedAmount);
        emit transfer (owner, _target,_mintedAmount);
    }
     function burn (uint256 _value)  onlyOwner returns (bool succes)
    {
        require (balanceOf[msg.sender] >= _value);
        balanceOf[msg.sender] -= _value;
        totalSupply -= _value;
        emit burn(msg.sender, _value);
        return true;
        
    }

        
}
contract owned  {
    
    address public owner;
    constructor ()
    {
        owner = msg.sender;
    }
     modifier  onlyOwner
    {
        require(msg.sender == owner);
        _;
    }
    function transferOwnership(address  newOwner) onlyOwner {
        owner = newOwner;
    }
    
}


person alex schobel    schedule 05.01.2021    source источник


Ответы (1)


Объявите принадлежащий контракт перед контрактом NLtoken. И имейте в виду, что имя события чувствительно к регистру:

emit Transfer(0, owner, _mintedAmount);
emit Transfer (owner, _target,_mintedAmount);
person Mad Jackal    schedule 05.01.2021