browser/Test.sol:5:21: TypeError: base 的定义必须先于派生合约的定义 test is own ^---^

问题描述

我遇到了一个我真的不知道如何解决的问题,我正在做一个关于制作关于 solidity 的智能合约的教程,以便在以太坊上为未来的大学项目启动。我得到的错误标题中的错误。我将复制代码,以便您可以查看我所拥有的内容并突出显示错误代码行。我无法弄清楚问题出在哪里,因为我要模糊类型错误,而且我是 solidity 的新手。

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,_value);
        return true;
    }
    function transferFrom(address _from,uint256 _value) public returns (bool success)
    {
        require(_value <= allowence[_from][msg.sender]);
        allowence[_from][msg.sender] -= _value;
        _transfer(_from,_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;
    }
    
}

解决方法

NLtoken合同之前声明拥有合同。 请记住,事件名称区分大小写:

emit Transfer(0,owner,_mintedAmount);
emit Transfer (owner,_target,_mintedAmount);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...