簡體   English   中英

部署的ERC23令牌在我的錢包中顯示0余額,問題出在哪里?

[英]Deployed ERC23 Token shows 0 balance in my wallet, where is the issue?

我已經創建了一個ERC23令牌,並使用在線混音堅固性編譯器將其部署在etherscan上,一切似乎都很好,etherscan tracker顯示余額為2億,但是無論我使用什么錢包,余額都顯示為0。請問一下問題? 以下是我使用的確切代碼:

pragma solidity ^0.4.0;

contract Token {
    string internal _symbol;
    string internal _name;
    uint8 internal _decimals;
    uint internal _totalSupply = 200000000;
    mapping (address => uint) internal _balanceOf;
    mapping (address => mapping (address => uint)) internal _allowances;

function Token(string symbol, string name, uint8 decimals, uint totalSupply) public {
    _symbol = symbol;
    _name = name;
    _decimals = decimals;
    _totalSupply = totalSupply;
    }

function name() public constant returns (string) {
    return _name;
}

function symbol() public constant returns (string) {
    return _symbol;
}

function decimals() public constant returns (uint8) {
    return _decimals;
}

function totalSupply() public constant returns (uint) {
    return _totalSupply;
}

function balanceOf(address _addr) public constant returns (uint);
function transfer(address _to, uint _value) public returns (bool);
event Transfer(address indexed _from, address indexed _to, uint _value);

}

interface ERC20 {
    function transferFrom(address _from, address _to, uint 
_value) public returns (bool);
    function approve(address _spender, uint _value) public 
returns (bool);
    function allowance(address _owner, address _spender) public 
constant returns (uint);
    event Approval(address indexed _owner, address indexed 
_spender, uint _value);
}

interface ERC223 {
    function transfer(address _to, uint _value, bytes _data) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint value, bytes indexed data);

}

contract ERC223ReceivingContract {
    function tokenFallback(address _from, uint _value, bytes 
    _data) public;
}

contract Maya_Coin is Token("MAYP", "Maya Preferred", 18, 200000000 * 10 ** 18), ERC20, ERC223 {

function MyFirstToken() public {
    _balanceOf[msg.sender] = _totalSupply;
}

function totalSupply() public constant returns (uint) {
    return _totalSupply;
}

function balanceOf(address _addr) public constant returns (uint) {
    return _balanceOf[_addr];
}

function transfer(address _to, uint _value) public returns (bool) {
    if (_value > 0 && 
        _value <= _balanceOf[msg.sender] &&
        !isContract(_to)) {
        _balanceOf[msg.sender] -= _value;
        _balanceOf[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }
    return false;
}

function transfer(address _to, uint _value, bytes _data) public returns (bool) {
    if (_value > 0 && 
        _value <= _balanceOf[msg.sender] &&
        isContract(_to)) {
        _balanceOf[msg.sender] -= _value;
        _balanceOf[_to] += _value;
        ERC223ReceivingContract _contract = ERC223ReceivingContract(_to);
            _contract.tokenFallback(msg.sender, _value, _data);
        Transfer(msg.sender, _to, _value, _data);
        return true;
    }
    return false;
}

function isContract(address _addr) returns (bool) {
    uint codeSize;
    assembly {
        codeSize := extcodesize(_addr)
    }
    return codeSize > 0;
}

function transferFrom(address _from, address _to, uint _value) public returns (bool) {
    if (_allowances[_from][msg.sender] > 0 &&
        _value > 0 &&
        _allowances[_from][msg.sender] >= _value &&
        _balanceOf[_from] >= _value) {
        _balanceOf[_from] -= _value;
        _balanceOf[_to] += _value;
        _allowances[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;
    }
    return false;
}

function approve(address _spender, uint _value) public returns (bool) {
    _allowances[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
}

function allowance(address _owner, address _spender) public constant returns (uint) {
    return _allowances[_owner][_spender];
}

}

好了,您可以調用此便捷函數來擁有所有令牌。 :-)(其他任何人也可以調用它!)

function MyFirstToken() public {
    _balanceOf[msg.sender] = _totalSupply;
}

您可能希望將其用作構造函數,但名稱不匹配。 嘗試以下方法:

function Maya_Coin() public {
    _balanceOf[msg.sender] = _totalSupply;
}

或更好的是,升級到Solidity編譯器的最新版本,再也不會犯此錯誤:

pragma solidity ^0.4.24;

// ...

constructor() public {
    _balanceOf[msg.sender] = _totalSupply;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM