Ich verwende Ethereum Wallet 0.7.3 auf OSX El Capitan. Wenn ich zur DAO-Hub-Seite gehe, um mein Token-Guthaben zu überprüfen, wird es angezeigt
Besitz von DAO-Token: 3591,5
In Ethereum Wallet zeigt das Token-Widget 3701,5 DAO-Token an.
Aber wenn ich zu meiner DAO-Kontoansicht in Ethereum Wallet gehe, zeigt es mir die richtige (3591,5) Token-Anzahl.
Ich habe nur zwei Konten in meiner Ethereum-Wallet geladen, eines, mit dem ich ETH an die DAO gesendet habe, und mein Mining-Konto. Ich habe überprüft, dass das Mining-Konto keinem DAO-Token auf der DAO-Hub-Seite zugeordnet ist . Also sind alle Token, die ich habe und die in diesem Widget angezeigt werden sollen, mit dem ersten Konto verknüpft.
Ich habe einen Blockchain-Explorer verwendet , um den an die DAO gesendeten Betrag (mit 3 tx) erneut zu überprüfen, und es sind 35.915 ETH, also sind 3591,5 DAO-Token die richtige Zählung.
Jemand erlebt diese seltsame Sache? Wie ist der Unterschied zu erklären?
Vielen Dank.
Die DAO-Adresse besitzt nun tatsächlich 100 (110?) Tokens. Dies liegt höchstwahrscheinlich daran, dass jemand beim Senden einer Transaktion das Datenfeld verwendet, um die Token an die DAO-Adresse zu senden.
Grundsätzlich gibt es eine Funktion, die für Benutzer gedacht ist, die von einer Börse aus senden möchten. Wie Sie (hoffentlich) wissen, können Sie nicht direkt von einer Börse senden, da die DAO-Tokens an die Absenderadresse zurückgeschickt werden, die in diesem Fall die Hot Wallet von Kraken oder Poloniex oder wem auch immer wäre. Sie würden Ihre Token nicht erhalten.
Sie können jedoch einige Daten zum Datenfeld hinzufügen, das besagt: „Hey Vertrag! Senden Sie die Token nicht an diese Adresse zurück! Senden Sie sie stattdessen an diese Adresse!“. Jede Adresse kann vom Benutzer in dieses Datenfeld eingegeben werden, und es scheint, als hätte jemand die Adresse des DAO anstelle einer von ihm kontrollierten Adresse eingegeben.
Es kann ein Fehler gewesen sein, oder jemand hat sich gefragt: „Was würde passieren, wenn ich DAO-Tokens an das DAO schicke?! LOL!“
Die Antwort auf die letztere Frage: Alle sind jetzt super verwirrt darüber, warum sie mehr DOA-Token haben, als sie dachten. (LOL!)
Wenn Sie auf Verträge -> „The DAO“ klicken, sollte Ihnen angezeigt werden, dass „The DAO“ ein Token-Guthaben von 110 Ð hat.
Dieses Token-Guthaben ist mit dem „The DAO“ 0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413
-Konto verknüpft und Ethereum Wallet hat diesen Betrag zu Ihrem Gesamtguthaben hinzugefügt.
3.591,5 + 110 = 3.701,5 .
Ich konnte keine definitive Quelle finden, die die zusätzlichen mit dem 0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413
Konto verbundenen Token erklärt, aber von https://forum.daohub.org/t/help-why-i-have-more-dao-than-i-actually -gekauft/1560/2 :
Es ist alles richtig. Das sind Ihre Konten 7,6k Token und die Token-Vertragsadresse besitzt 100 Token (jemand hat die Proxy-Funktion mit 1 eth verwendet, um das DAO dazu zu bringen, sich 100 Token zu kaufen - keine Ahnung warum). Der Adressbildschirm des Hauptvertrags zeigt nicht Ihre Tokens, sondern die Tokens dieser Adresse. Aber wenn Sie zuschauen, sehen Sie die Gesamtsumme aller Konten, die Sie verfolgen, also 7,7.000
Diese 110 € waren vor ein paar Tagen noch 100 €. Jemand muss weitere 0,1 ETH durch die Proxy-Funktion hinzugefügt haben.
BEARBEITEN 16.05.2016@tayvano
- Anknüpfend an die Antwort des Teammitglieds .
Wenn Sie Ether auf normale Weise an TheDAO senden, ruft die Standardfunktion innerhalb des DAO-Vertrags die createTokenProxy()
Funktion mit der Absenderadresse auf.
// The DAO contract itself
contract DAO is DAOInterface, Token, TokenCreation {
...
function () returns (bool success) {
if (now < closingTime + creationGracePeriod && msg.sender != address(extraBalance))
return createTokenProxy(msg.sender);
else
return receiveEther();
}
...
Wenn Sie stattdessen createTokenProxy()
mit einer anderen Adresse als der des Nachrichtensenders anrufen, wird das TheDAO-Token der angegebenen Adresse zugewiesen.
Hier ist die TokenCreationInterface
Schnittstelle mit dem Kommentar, der erklärt, wie eine andere Adresse als Token-Inhaber angegeben werden kann:
contract TokenCreationInterface {
...
/// @notice Create Token with `_tokenHolder` as the initial owner of the Token
/// @param _tokenHolder The address of the Tokens's recipient
/// @return Whether the token creation was successful
function createTokenProxy(address _tokenHolder) returns (bool success);
...
Und hier ist die Implementierung von createTokenProxy(_tokenHolder)
mit der Anweisung balances[_tokenHolder] += token;
:
contract TokenCreation is TokenCreationInterface, Token {
...
function createTokenProxy(address _tokenHolder) returns (bool success) {
if (now < closingTime && msg.value > 0
&& (privateCreation == 0 || privateCreation == msg.sender)) {
uint token = (msg.value * 20) / divisor();
extraBalance.call.value(msg.value - token)();
balances[_tokenHolder] += token;
totalSupply += token;
...
return true;
}
throw;
}
...
Wie von @Tjaden angemerkt, handelt es sich bei den zusätzlichen Daten, die mit der Transaktion gesendet werden, um einen Aufruf der Funktion createTokenProxy()
mit der Adresse des DAO, die wahrscheinlich die zusätzlichen 110 Token erstellt hat.
Und es sind immer noch 110 Token. Aus der DAO-Kreation :
createTokenProxy()
_Zufällig habe ich mir die folgende Transaktion 0xfb2d580342988f20c9bd4b756555d6139f55ab2e5df2c5f99886c6195221faee in meiner Antwort auf What is the address and balance of the extraBalance account angeschaut :
Die Transaktion stammt aus dem Poloniex-Wallet und enthält die zusätzlichen Daten 0xbaac530000000000000000000000000003f59b7e25819a64fc2f7199e89457593fe3500d
.
Ich habe den folgenden Befehl eingegeben geth
, um festzustellen, dass die ersten 4 Bytes der sha3()
Funktion createTokenProxy()
mit dem ersten Teil der zusätzlichen Daten übereinstimmen, so werden Funktionen in Transaktionen aufgerufen.
> web3.sha3('createTokenProxy(address)').substr(0, 10)
"0xbaac5300"
Poloniex verwendet diesen Funktionsaufruf, wenn Einzelpersonen The DAO-Token über den Bildschirm Poloniex - DAO-Token erstellen kaufen .
Dieser UI-Fehler wurde in der neuesten Version von Mist (0.7.5) behoben. Wenn dieses Problem weiterhin auftritt, führen Sie ein Upgrade auf die neueste Version durch.
Nicolas Massart
Taywano
Nicolas Massart