Wie erhalte ich alle Ethereum-Adresslisten, die mein Token haben?

Ich möchte eine Liste aller Ethereum-Adressen, die mein ERC20-Token in ihrem Konto haben. Hat jemand eine Idee, wie man eine Listenadresse bekommt. Weil ich jedem Konto, das mein ERC20-Token hat, eine Aufteilung geben möchte.

Sie können die Ereignisse verwenden, um die Adressliste abzurufen, oder ein neues Array zum Speichern von Adressen in Ihrem Vertrag verwenden.
Von welchem ​​Ereignis bekomme ich?
Haben Sie ein TransferEreignis in Ihrem Vertrag, in dem die Parameter fromAddress, toAddress, tokenCount angegeben sind? Können Sie bitte den Code einfügen?
Ja, ich habe Transfer und TokenCount
Funktion transfer (Adresse _to, uint256 _value) öffentliche Rückgaben (bool Erfolg) { validateTransfer (msg.sender, _to, _value); //Gesamtzahl der Verkaufstoken zuweisen if(address(saleToken) == _to) { saleToken.setTotalToken(_value); } super.transfer(_to, _value) zurückgeben; }
..Scheint, dass Sie ein Übertragungsereignis``` event Transfer(address indexed _from, address indexed _to, uint256 _value);````` haben
Listen Sie also die Ereignisse in Ihrem js auf

Antworten (1)

Verwenden Sie dazu Ihre TransferVeranstaltung in Ihrem Vertrag.

    var myEvent = contract.Transfer({},{fromBlock: 0, toBlock: 'latest'});
    myEvent.get((error, result) => {
               console.log(result);
      });

Verwenden fromBlockSie param als 5933218den Block, in dem der Vertrag erstellt wurde

Aber mein Token-Vertrag und mein ico-Vertrag sind zwei verschiedene Verträge. Also bekomme ich kein Transfer-Ereignis. Haben Sie eine Idee, wie Sie alle Adressen erhalten?
@sagarjethi Sie müssen die Instanz des Token-Vertrags in Ihrem js abrufen und den obigen Code ausführen, um das Ereignisprotokoll abzurufen.
ContractObj = new web3.eth.Contract(CONTRACT_ABI, ContractAddress); contractObj.getPastEvents('Transfer' || 'allEvents', { fromBlock: 0, toBlock: 'latest' },function(err,res){ console.log(err,res); });
contractObj.Transfer({},{ fromBlock: 0, toBlock: 'latest' },function(err,res){ console.log(err,res); });