Warum zeigt mein benutzerdefiniertes Token 0 an?

Ich habe einen benutzerdefinierten Vanilla-Token über einen Vertrag auf Testnet erstellt und 10.000 Münzen darauf geprägt, und ich konnte die Token erfolgreich an einen Wallet-Vertrag an einer anderen Adresse senden. Wenn ich jedoch versuche, die Watch TokenFunktion zu verwenden und die Vertragsadresse einzufügen, ist der Kontostand immer Null, obwohl das Formular die anderen Vertragsvariablen automatisch lädt.

Sollte die Zahl neben dem Symbol nicht die Anzahl der benutzerdefinierten Token anzeigen, die mit der Hauptkontoadresse verknüpft sind?

Ich verwende Mist 0.8.10 im Ropsten Testnet.

Benutzerdefiniertes Token Vertragsdetails

Mein Vertrag ist ziemlich einfach:

pragma solidity ^0.4.11;

contract PractCoin {

    mapping (address => uint256) public monies;
    address public owner;
    uint public totalCoins;
    uint public initialSupply;
    string public name;
    uint8 decimalPlaces;

    function PractCoin(uint _totalCoins, uint _initialSupply, string _name, uint8 _decimalPlaces){
        owner = msg.sender;
        totalCoins = _totalCoins;
        initialSupply = _initialSupply;
        monies[owner] = initialSupply;
        name = _name;
        decimalPlaces = _decimalPlaces;
    }

    function sendCoins(address _to, uint _amount){
        if (monies[msg.sender] < _amount || 
            msg.sender == _to || 
            monies[_to] + _amount < _amount) throw;
        monies[msg.sender] -= _amount;
        monies[_to] += _amount;
        CoinTransfer(_amount, _to, msg.sender);
    }

    function destroyContract(){
        if (msg.sender == owner ) selfdestruct(owner);
        ContractDestroyed("Contract Destroyed!");

    }

    event CoinTransfer(uint _amount, address indexed _to, address indexed _from);
    event ContractDestroyed(string _message);
}
Ja ok das freut mich sehr und ich interessiere mich dafür

Antworten (1)

Ihr Vertrag ist nicht ERC20- konform. Es ist sehr wichtig, den ERC20-Standard beizubehalten, was bedeutet, dass alle Namen gleich bleiben. Siehe diesen Definitionsvertrag . Nebel sollte gemäß ERC20 nach den folgenden Eigenschaften suchen:

uint public supply;
string public name;
uint8 public decimals;
string public symbol;
string public version;

Sie sollten auch alle der folgenden Funktionen einbeziehen, um ERC20-konform zu sein:

function totalSupply() constant returns (uint) {
  return supply;
}

function balanceOf( address who ) constant returns (uint) {
  return balances[who];
}

function transfer( address to, uint value) returns (bool) {
  balances[msg.sender] = safeSub(balances[msg.sender], value);
  balances[to] = safeAdd(balances[to], value);
  Transfer( msg.sender, to, value );
  return true;
}

function transferFrom( address from, address to, uint value) returns (bool) {
  approvals[from][msg.sender] = safeSub(approvals[from][msg.sender], value);
  balances[from] = safeSub(balances[from], value);
  balances[to] = safeAdd(balances[to], value);
  Transfer( from, to, value );
  return true;
}

function approve(address spender, uint value) returns (bool) {
  approvals[msg.sender][spender] = value;
  Approval( msg.sender, spender, value );
  return true;
}

function allowance(address owner, address spender) constant returns (uint) {
  return approvals[owner][spender];
}