Wie wandle ich meine The DAO-Token in Ether der Ethereum Classic-Kette um?

Gemäß Whitehat Withdrawal contract – Update and Next Steps und Whitehat Withdrawal contract – Last update before deploying werden die Goodies die Auszahlungsverträge whetcwithdraw.sol , authorised_addresses.sol und whauthorizeaddress.sol bereitstellen , um die Auszahlung von Classic Ethers (ETCs) zu erleichtern auf Ihrem The DAO-Token DAO-Guthaben bei Block 1.919.999 kurz vor dem Hard Fork.

Wie verwende ich diese Verträge, um meine Classic Ethers (ETC) vom Auszahlungsvertrag abzuheben?



Die DAO-Rückerstattungen



Siehe auch:

Antworten (2)

Aktualisierung 12. April 2017

Sie haben nur noch 3 Tage Zeit, um Ihre Rückerstattungen aus dem WhitehatWithdraw-Vertrag abzuheben .

Im Auszahlungsvertrag verbleiben noch 1.651.062,7506 ETC (USD 4.292.763,15).

87 % der Konten haben ihre Rückerstattungen NICHT zurückgezogen .

Überprüfen Sie diese Tabelle , um zu bestätigen, dass Sie alle Ihre Rückerstattungen zurückgezogen haben.

Es folgt ein Diagramm des WhitehatWithdraw-Kontostands:

Geben Sie hier die Bildbeschreibung ein

Die neuesten Anweisungen finden Sie unter The DAO Refunds .



Aktualisierung 1. Januar 2017

Wie in DAO Token Holders dokumentiert, fordern Sie Ihr Geld an! , wird MyEtherWallet die Unterstützung für das Abheben von ETCs nach dem 1. Januar 2017 einstellen.

Aktualisierung vom 4. Januar 2017

Eine neue Version von MyEtherWallet wurde gerade mit einem Node Switcher veröffentlicht . DAO-zu-ETC-Abhebungen können weiterhin ausgeführt werden, indem Sie zum ETC-Knoten von MyEtherWallet wechseln, aber die Unterstützung für den ETC-Knoten wird im nächsten Monat eingestellt. Bitte beachten Sie, dass ETC-Transaktionen auf der ETH-Kette wiedergegeben werden . Wie in den Versionshinweisen erwähnt, verschieben Sie Ihr ETH-Guthaben an eine neue Adresse, bevor Sie Ihre ETC-Transaktionen ausführen!

Sie können auch die alte v3.37-Version von MyEtherWallet herunterladen und Ihre DAO-zu-ETC-Auszahlung mit Wiederholungsschutz ausführen, aber auch hier beabsichtigt MyEtherWallet, die Unterstützung für ihren ETC-Knoten im nächsten Monat einzustellen.

Aktualisierung 31. Januar 2017

Der Whitehat-Rücktrittsvertrag wurde um 2 Monate bis zum 15. April 2017 verlängert.

Update 29. März 2017

Die neuesten Anweisungen finden Sie unter The DAO Refunds .



Zusammenfassung

Vom Whitehat-Rücktrittsvertrag – Aktualisierung und nächste Schritte :

Wenn keine größeren Einwände oder Exploits festgestellt werden, wird der Auszahlungsvertrag am 30. August 2016 um 17:00 Uhr MEZ bereitgestellt . Alle Benutzer haben ab diesem Tag 6 Monate Zeit, um ihre Rückerstattung zu beantragen.

Der Abhebungsvertrag wird wahrscheinlich mehrmals aufgestockt, da es noch ein weiteres kleines DAO gibt, auf dessen Erstellung wir warten, und auch einige Gelder werden von Börsen gehalten. Die Leute müssten also jedes Mal, wenn Gelder an den Vertrag gesendet werden, den Rest ihres Anteils beanspruchen.

Wir arbeiten auch aktiv mit Börsen zusammen, um das Problem der eingefrorenen Gelder zu lösen, und werden ein Update veröffentlichen, sobald es neue Informationen gibt, damit diese Gelder auch dem Auszahlungsvertrag hinzugefügt werden können.

Nach 6 Monaten werden alle verbleibenden Gelder an eine von der Whitehat-Gruppe kontrollierte Multisig gesendet und entweder als Spende für die Bemühungen behalten, die sie unternommen haben, um diesen Wert den Token-Inhabern zurückzugeben, oder für Community-Entwicklungen gespendet.

Die 6-Monatsfrist beträgt 24 Wochen ab Bereitstellung des Rücktrittsvertrags. Alle verbleibenden Gelder werden am 13. Februar 2017 aus dem Auszahlungsvertrag entfernt . Führen Sie Ihre Auszahlungen vor diesem Zeitpunkt durch, wenn Sie Ihre ETCs beanspruchen möchten.

Der Kanal #withdrawal_support auf thedao.slack.com wurde für Benutzer erstellt, um Unterstützung für den Widerrufsvertragsprozess zu erhalten (und zu geben). Und Spendenadressen für die Goodies sind 0xf63d257fc3576f9736fd9014cf0f0e1f0e7dd531 auf der ETH-Kette und 0xe79aca5c8cda44d834efa969906a377cb987e02e auf der ETC-Kette.

Sie sollten jetzt in der Lage sein, etwa 0,60417219365076306985 ETC pro 1 ETH-Token (100 DAOs) abzuheben. Der Auszahlungsvertrag wird mit weiteren ~ 0,11 ETC pro 1 ETH-Token (100 DAOs) aufgestockt. Weitere Auszahlungen können bei einer späteren Aufladung des Auszahlungsvertrages erfolgen. Aus dem Skript am Ende dieser Antwort:

WH Total Funds      :  6971038.689221082299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.60417219365076306985

Am 4. September 2016 um 07:02 UTC verbleiben noch 2749352,9709 ETCs im Auszahlungskontrakt bei 0x9f5304da62a5408416ea58a17a92611019bd5ce3 . Etwa 60 % der verfügbaren Mittel (6971038,6892 ETCs) wurden abgezogen.

Am 6. September 2016 um 15:05 Uhr UTC verbleiben noch 2697281,1240 ETCs im Auszahlungsvertrag. Etwa 61 % der verfügbaren Mittel wurden abgezogen. Und die Baddies haben in 7 Stunden Zugriff auf 3641694 ETCs.

Am 7. September 2016 um 01:38 Uhr UTC verbleiben noch 4132558,4010 ETCs im Auszahlungsvertrag. Der Auszahlungsvertrag wurde mit der endgültigen Einzahlung aufgestockt, einschließlich eines Bonus von 186.516,63 aus Wechselkursbewegungen. Hier ein Update der Statistik:

WH Total Funds      :  8440400.269846492299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.73152013260357357102

Ab wann haben die Baddies Zugriff auf die gehackten Gelder der Ethereum Classic-Kette? :

Stolen booty: 3641694.241898506992612606
The DAO Total Supply: 11538165.381458511407837618
Steal Factor: 0.3156
Steal + WH Fill Factor: 1.0471

Von @lefteris:

Hey ... wenn der Angreifer hier ist und die Lücke liest ... würden Sie ein Held werden und dieses DAO-Kapitel wunderbar beenden, wenn Sie alle ETC, die Sie gerade erhalten haben, in den Auszahlungsvertrag einzahlen, damit der DTH sie abrufen kann.

Verwenden Sie die Funktion deposit()für die Adresse 0x9f5304da62a5408416ea58a17a92611019bd5ce3mit msg.valueder Menge an ETC.

Unter https://whwithdraw.bity.com/ können Sie die Menge der ausgezahlten ETCs, die Menge der ETCs, die Sie abheben können, überprüfen und die ETCs abheben (hierfür müssen Sie eine Unterschrift leisten - siehe Methode 5 unten) .

Sie können den DAO-Saldo Ihres Kontos im Pre-Hard-Fork-Block 1.919.999 in DAOTokenBalance_20160819_155742UTC_balance.xlsx überprüfen . Sie können den ETC-Saldo und die Transaktionen Ihres Kontos mit dem Classic Chain Block Explorer unter https://gastracker.io/ überprüfen .


Unten sind 6 Methoden aufgeführt, mit denen Sie Ihren ETC abheben können

  • Methode 1 – Abhebung mit MyEtherWallet Dies ist die einfachste Methode, um Ihr ETC abzuheben. Richten Sie Ihren Browser auf https://www.myetherwallet.com/#the-dao (WICHTIG, um diese korrekte URL zu verwenden, da jeden Tag Phishing-Sites auftauchen). Siehe auch das obige Update vom 4. Januar 2017 .

  • Methode 2 – Auszahlung mit Ethereum Wallet auf der Classic Chain Synchronisieren Sie Ethereum Wallet 0.8.1 (NICHT 0.8.2) mit der Classic Chain und führen Sie die WhitehatWithdraw.withdraw(...)Funktion aus.

  • Methode 3 – Auszahlung mit gethOn The Classic Chain Sync geth1.4.10 oder höher mit der --oppose-dao-forkOption und Funktion ausführen WhitehatWithdraw.withdraw(...).

  • [GESCHLOSSEN] Methode 4 – Bereitstellung Ihrer Absichtsunterschrift auf der ETH-Kette, damit die Goodies Ihre Auszahlung ausführen – nur für Wallet-Verträge Kette. Sie müssen dann nicht mit der Ethereum Classic-Kette synchronisieren. Diese Unterschrift musste vor dem 30. August 2016 um 17:00 Uhr MEZ ausgeführt werden, wenn der WhitehatWithdrawVertrag bereitgestellt wurde.

  • Methode 5 – Verwenden von sign() für die Whitehat-Auszahlung in der ETH-Kette – Für Nicht-Wallet-Vertragskonten Weitere Informationen finden Sie unter Verwendung von sign() für die Whitehat - Auszahlung . Beachten Sie, dass Sie für jede neue Auszahlung eine neue Signatur erstellen müssen, selbst wenn Sie dieselben Parameter angeben (von @jbaylina in thedao.slack.com/messages/withdraw_support ).

  • Methode 6 – Verwenden von WHETCWithdraw aus einem Mist-Kontrakt auf der klassischen Kette Siehe Verwenden von whetcwithdraw aus einem Mist-Kontrakt .


Wichtig

  • Ihre Adressen müssen alle in Kleinbuchstaben geschrieben sein, da diese bei der Erstellung der Zuordnungsschlüssel im Auszahlungsvertrag verwendet wurden. Verwenden Sie https://convertcase.net/ .
  • Wie von und auf thedao.slack.com/messages/withdraw_support vorgeschlagen@kirkdameron , können Sie ein neues Konto in der ETH-Kette (oder ETC, da die Konten gleich sind) erstellen und dieses neue Konto bei der Ausführung als Ihr Konto verwenden die Funktion. In MyEtherWallet können Sie Ihre neuen Konten als ETC-Zieladresse angeben. Verwenden Sie dieses neue Konto nicht in der ETH-Kette. Sie sind jetzt vor den Transaktionswiederholungen sicher.@lunejy@bocrypto_beneficiaryWhitehatWithdraw.withdraw(...)
  • Möglicherweise möchten Sie Ihre ETCs übertragen, nachdem Sie sie abgehoben haben. Um die Wiederholung Ihrer ETC-Transfertransaktion auf der Hard-Fork-ETH-Kette zu verhindern, lesen Sie So senden Sie Ether bedingt an ein anderes Konto nach der Hard-Fork, um sich vor Replay-Angriffen zu schützen .


DENKEN SIE DARAN, DASS ES MEHR RÜCKERSTATTUNGSRUNDEN GIBT – wenn die Goodies diesen Auszahlungsvertrag auffüllen. Überprüfen Sie regelmäßig das https://thedao.slack.com/messages/withdraw_support/-Forum und https://www.reddit.com/r/ethereum/ . Ich werde auch diese Seite aktualisieren.


21:26 31. August 2016 21:26 Kraken hat die eingefrorenen Gelder in diesen Auszahlungsvertrag eingezahlt. Sie können den zur Auszahlung verfügbaren Betrag mit der Funktion "Auszahlung berechnen" in der Ethereum-Wallet oder mit der unten dokumentierten whitehatWithdraw.calculateWithdraw(myAccount)Funktion überprüfen.geth

03:00 Sep 1 2016 UTC Poloniex hat die eingefrorenen Gelder in den Auszahlungsvertrag eingezahlt.

08:36 1. September 2016 UTC Bonus geth+ bashSkript, um Ihnen die für Ihr Konto gezahlten und ausstehenden Whitehat-Auszahlungsbeträge anzuzeigen - siehe unten in dieser Antwort.

01:38 7. September 2016 UTC Whitehat-Auszahlungsvertrag – Endgültige Einzahlung ist verfügbar . Der Abhebungsvertrag wurde endgültig mit 269.566,58 ETC (von childDAO #101) und 1.199.777,62 ETC (von umgewandelten ETCs) aufgeladen – Sie müssen den Abhebungsprozess ein letztes Mal durchführen. Gute Arbeit insgesamt Goodies!



Einzelheiten

Details basierend auf den Verträgen in github am 27. August 2016 um 16:01 Uhr.

Methode 1 – Auszahlung mit MyEtherWallet

Update 1. Januar 2017 – MyEtherWallet wird die ETC-Auszahlungsunterstützung nach dem 1. Januar 2017 einstellen.

LEBEN UND ARBEITEN

Führen Sie MyEtherWallet von https://www.myetherwallet.com/#the-dao aus (Seien Sie vorsichtig, da es gefälschte MyEtherWallet-Sites mit ähnlichen URLs gibt, die über das Internet auftauchen und darauf abzielen, Ihre privaten Schlüssel zu stehlen.)Geben Sie hier die Bildbeschreibung ein

Und die Spendenadresse von MyEtherWallet ist 0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8 .



Methode 2 – Auszahlung mit Ethereum Wallet auf der klassischen Kette

LEBEN UND ARBEITEN - VERGESSEN SIE NICHT, DIES AUF DER KLASSISCHEN KETTE AUSZUFÜHREN

Wenn Sie den WhitehatWithdraw- Vertrag verwenden möchten, um auf ein reguläres Konto abzuheben (anstelle eines Wallet-Vertrags), müssen Sie die folgende Funktion ausführen:

withdraw(address _beneficiary, uint _percentageWHG)

Sie benötigen Ethereum Wallet 0.8.1 , um das Wallet der Classic-Kette zu verwenden.

Beachten Sie, dass Ethereum Wallet 0.8.2 NICHT auf der Classic-Kette ausgeführt wird, sondern Sie stattdessen auffordert, die Tools von https://ethereumclassic.github.io herunterzuladen .

Wenn Sie Ethereum Wallet 0.8.1 starten, werden Sie gefragt: „Möchten Sie die Kette aktivieren, in der mit dem Exploit verbundene Gelder in einen Vertrag zurückgeführt werden, wo sie von The DAO-Token-Inhabern abgehoben werden können?“. Antworten Sie mit Nein , um Ethereum Wallet in der Classic-Kette zu verwenden. Ethereum Wallet weist dann die gepackte gethausführbare Datei an, die Classic-Kette --fastautomatisch herunterzuladen. Möglicherweise werden Sie auch gefragt, ob Sie die neue Version herunterladen möchten - schließen Sie einfach das Dialogfeld.

Siehe Wie synchronisiere ich die Ethereum-Wallet und/oder Geth mit der Ethereum Classic-Kette, ohne meine Hard-Fork-Ethereum-Kette zu beeinträchtigen? für Anweisungen zum Laufen der Classic-Kette neben der Hard-Fork-Kette - zu unterschiedlichen Zeiten.

WhitehatWithdrawVertrag ansehen

Klicken Sie auf der Registerkarte Verträge auf Vertrag beobachten und dann:

  • Legen Sie den Vertragsnamen fest aufWhitehatWithdraw
  • Setzen Sie die Vertragsadresse auf 0x9f5304da62a5408416ea58a17a92611019bd5ce3(dies ist die neu bereitgestellte Adresse)
  • Stellen Sie die JSON-Schnittstelle auf ein[{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"escapeHatch","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_additionalSeconds","type":"uint256"}],"name":"extendClosingTime","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getWHGDonationAddress","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getMyBalance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"claimRemaining","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"proxyWithdraw","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"getTotalFunds","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"},{"inputs":[{"name":"_whg_donation","type":"address"},{"name":"_daoBalanceSnapshotAddress","type":"address"},{"name":"_escapeAddress","type":"address"},{"name":"_remainingBeneficiary","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dth","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"percentageWHG","type":"uint256"},{"indexed":false,"name":"withdrawType","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_depositor","type":"address"},{"indexed":false,"name":"_allowed","type":"bool"}],"name":"CertifiedDepositorsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"RemainingClaimed","type":"event"}]
  • Klicken Sie auf OK

  • So sollte Ihr Bildschirm aussehen, mit der entsprechenden Adresse, wenn er angekündigt wird:Geben Sie hier die Bildbeschreibung ein


AusführenWhitehatWithdraw.withdraw(...)

Klicken Sie auf der Registerkarte „ Verträge “ auf den soeben erstellten benutzerdefinierten Vertrag von WHITEHATWITHDRAW und gehen Sie dann wie folgt vor:

  • Bevor Sie Ihre Auszahlung ausführen, können Sie Folgendes überprüfen:
    • Der Betrag, den Sie bereits bezahlt haben, indem Sie Ihre Adresse im Abschnitt Auszahlung erhalten auf der linken Seite des Bildschirms eingeben.
    • Der zur Auszahlung verfügbare Betrag, indem Sie Ihre Adresse im Abschnitt Auszahlung berechnen auf der linken Seite des Bildschirms eingeben.
  • Wählen Sie auf der rechten Seite unter Write To Contract die Funktion Withdraw .
  • Geben Sie im Feld Begünstigter Ihre Adresse ein.
  • Geben Sie im Feld „Prozent whg“ eine Zahl zwischen 0 und 100 ein. 0 bedeutet, dass Sie keinen Beitrag zu den Goodies für ihre harte Arbeit leisten werden, um die Ether aus dem gehackten The DAO-Vertrag zurückzufordern. 100 bedeutet, dass Sie alle Ihre ETCs für ihre harte Arbeit an die Goodies spenden.
  • Wählen Sie im Feld „ Ausführen von “ dieselbe Adresse aus, die Sie im Feld „Begünstigter“ angegeben haben.
  • Geben Sie im Feld Send ETHER 0 ein. Dadurch wird jede Übertragung von Ether verhindert, wenn/wenn die Transaktion auf der Hard-Fork-Kette wiederholt wird.
  • Klicken Sie auf AUSFÜHREN und geben Sie Ihr Passwort ein, um das ausgewählte Konto zu entsperren.

  • So sollte Ihr Bildschirm aussehen:Geben Sie hier die Bildbeschreibung ein

  • HINWEIS - Im Passwortbestätigungsbildschirm müssen Sie sicherstellen, dass Sie mindestens 200000 Gas bereitstellen

  • Das ETC-Guthaben auf Ihrer Adresse sollte bei ETCs im Verhältnis zu Ihrem The DAO-Token-Bestand multipliziert mit dem Prozentsatz der Gelder hinterlegt werden, die die Goodies zurückgefordert haben. Ihr Ethereum Wallet-Adressguthaben sollte mit dem neuen Guthaben aktualisiert werden.



Methode 3 – Auszahlung mit gethder klassischen Kette

LEBEN UND ARBEITEN - VERGESSEN SIE NICHT, DIES AUF DER KLASSISCHEN KETTE AUSZUFÜHREN

Stellen Sie sicher, dass Sie die Geth-Version 1.4.10 oder höher ausführen. Und führen Sie Ihre Geth-Befehle mit der --oppose-dao-forkOption aus, damit Sie sich auf der Ethereum Classic-Blockchain befinden. Die Befehle folgen - fügen Sie --datadir ~/classicchainvor dem consoleParameter hinzu, um die klassische Kette mit einem anderen Verzeichnis zu synchronisieren:

user@Kumquat:~$ geth --oppose-dao-fork --fast console
// Allow chain to sync
var percentageWHGDonation = 10; // MINIMUM 0, MAX 100

var whitehatWithdrawAddress = "0x9f5304da62a5408416ea58a17a92611019bd5ce3"; // New re-deployed address
var whitehatWithdrawABIFragment = [{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"}];
var whitehatWithdraw = eth.contract(whitehatWithdrawABIFragment).at(whitehatWithdrawAddress);    

var myAccount = "{your account}";
// var myAccount = "{your account}".toLowerCase(); // As suggested by @0x8000

// Check paid out amount
var paidoutAmount = whitehatWithdraw.getPaidOut(myAccount);
console.log("So far you have been paid " + web3.fromWei(paidoutAmount, "ether") + " ETC");

// Check withdrawal amount
var withdrawalAmount = whitehatWithdraw.calculateWithdraw(myAccount);
console.log("You can withdraw " + web3.fromWei(withdrawalAmount, "ether") + " ETC");

// Withdraw
personal.unlockAccount(myAccount, "{your password}");
var withdraw = whitehatWithdraw.withdraw(myAccount, percentageWHGDonation, {from: myAccount, value: 0, gas:200000});
console.log(withdraw);

Siehe Wie synchronisiere ich die Ethereum-Wallet und/oder Geth mit der Ethereum Classic-Kette, ohne meine Hard-Fork-Ethereum-Kette zu beeinträchtigen? für Anweisungen zum Laufen der Classic-Kette neben der Hard-Fork-Kette - zu unterschiedlichen Zeiten.



[GESCHLOSSEN] Methode 4 – Bereitstellung Ihrer Absichtsunterschrift auf der ETH-Kette für die Goodies zur Ausführung Ihrer Auszahlung – nur für Wallet-Verträge (autorisierte Adresse)

Sehen Sie sich den Abschnitt Authorizeaddress des Whitehat-Auszahlungsvertrags – Update und nächste Schritte an, wenn Sie möchten, dass Sie einen Wallet-Vertrag verwendet haben, um DAO-Token kurz vor dem Hard Fork zu halten.

Diese Unterschrift musste vor dem 30. August 2016 um 17:00 Uhr MEZ ausgeführt werden, wenn der WhitehatWithdrawVertrag bereitgestellt wurde.



Bonusskript gethzur Überprüfung Ihres Whitehat-Auszahlungsguthabens

Hier ist ein Skript, um Ihre Whitehat-Auszahlungssalden zu überprüfen. Speichern Sie es in einer Datei und sehen Sie sich die Anweisungen oben in der Datei an.

#!/bin/sh
# ------------------------------------------------------------------------------
# Retrieve information on the Whitehat ETC Withdrawal contract for your accounts
#
# This script runs in Linux and OS/X. This script may run in Windows with the
# Cygwin bash shell installed.
#
# Usage:
#   1. Download this script to getWHETCBalances .
#   2. `chmod 700 getWHETCBalances`
#   3. Run `geth --oppose-dao-fork console` in a window.
#   4. Then run this script `./getWHETCBalances` in a separate window.
#
# Enjoy. (c) BokkyPooBah 2016. The MIT licence.
# ------------------------------------------------------------------------------

geth attach << EOF | grep "INFO" | sed "s/^INFO//"

function padTokens(s, n) {
  var o = s.toFixed(0);
  while (o.length < n) {
    o = " " + o;
  }
  return o;
}

function padEthers(s, n) {
  var o = s.toFixed(18);
  while (o.length < 27) {
    o = " " + o;
  }
  return o;
}

function checkAllBalances() { 
  var theDAOABIFragment = [{ "type": "function", "outputs": [ { "type": "uint256", "name": "balance", "value": "0" } ], "name": "balanceOf", "inputs": [ { "type": "address", "name": "_owner" } ], "constant": true }, {"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"type":"function"}];
  var theDAOAddress = "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413";
  var theDAO = eth.contract(theDAOABIFragment).at(theDAOAddress);
  var whitehatWithdrawAddress = "0x9f5304da62a5408416ea58a17a92611019bd5ce3";
  var whitehatWithdrawABIFragment = [{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"}, {"constant":true,"inputs":[],"name":"getTotalFunds","outputs":[{"name":"","type":"uint256"}],"type":"function"}];
  var whitehatWithdraw = eth.contract(whitehatWithdrawABIFragment).at(whitehatWithdrawAddress);    
  var theDAOTotal = new BigNumber(0); 
  var ethersTotal = new BigNumber(0); 
  var whPaidoutAmountTotal = new BigNumber(0); 
  var whWithdrawalAmountTotal = new BigNumber(0); 

  var whTotalFunds = whitehatWithdraw.getTotalFunds();
  console.log("INFOWH Total Funds      :  " + web3.fromWei(whTotalFunds, "ether"));
  var totalSupply = theDAO.totalSupply();
  console.log("INFOThe DAO Total Supply: " + web3.fromWei(totalSupply, "ether"));
  var whFillFactor = whTotalFunds.div(totalSupply);
  console.log("INFOWH Fill Factor      : " + whFillFactor);

  console.log("INFO  #     Account                                        TheDAO                         ETC             WH Paid Out ETC           WH Withdrawal ETC");
  console.log("INFO------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------");
  var i =0; 
  eth.accounts.forEach( function(e) {
    var tokens = theDAO.balanceOf(e).div(1e16);
    theDAOTotal = theDAOTotal.add(tokens.toString());
    var ethers = web3.fromWei(eth.getBalance(e), "ether");
    ethersTotal = ethersTotal.add(ethers.toString());
    var whPaidoutAmount = web3.fromWei(whitehatWithdraw.getPaidOut(e), "ether");
    whPaidoutAmountTotal = whPaidoutAmountTotal.add(whPaidoutAmount);
    var whWithdrawalAmount = web3.fromWei(whitehatWithdraw.calculateWithdraw(e), "ether");
    whWithdrawalAmountTotal = whWithdrawalAmountTotal.add(whWithdrawalAmount);

    console.log("INFO  " + i + "\t" + e + " " + padTokens(tokens, 10) + " " + padEthers(ethers) + " " + padEthers(whPaidoutAmount) + " " + padEthers(whWithdrawalAmount)); 
    i++; 
  })
  console.log("INFO------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------");
  console.log("INFO  " + i + "    Total                                      " + padTokens(theDAOTotal, 10) + " " + padEthers(ethersTotal) + " " + padEthers(whPaidoutAmountTotal) + " " + padEthers(whWithdrawalAmountTotal));
}; 

checkAllBalances()

exit;

EOF

Und hier sind einige Beispielberichtsdaten aus dem obigen Skript.

user@Kumquat:~$ getWHETCBalances 
WH Total Funds      :  6971038.689221082299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.60417219365076306985
  #     Account                                        TheDAO                         ETC             WH Paid Out ETC           WH Withdrawal ETC
------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------
  0     0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa        367        0.111111111111111111        0.111111111111111111        0.111111111111111111
  1     0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        735        0.222222222222222222        0.222222222222222222        0.222222222222222222
  2     0xcccccccccccccccccccccccccccccccccccccccc       1103        0.333333333333333333        0.333333333333333333        0.333333333333333333
------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------
  3     Total                                            2205        0.666666666666666666        0.666666666666666666        0.666666666666666666



Aktualisierung am 02. September 2016 um 15:50 Uhr UTC

Wie von @Chevdor abgefragt, stimmt der Code, der den Solidity Online Compiler mit solcv0.3.5-2016-08-10-fc60839 verwendet, mit dem Code überein, der unter der ETC-Adresse bereitgestellt wird 0x9f5304da62a5408416ea58a17a92611019bd5ce3.

Hier ist der bereitgestellte Code:

user@Kumquat:~$ geth --exec 'eth.getCode("0x9f5304da62a5408416ea58a17a92611019bd5ce3").substr(0,160)' attach
"0x606060405236156100b95760e060020a600035046302ef6c8681146100c15780631554611f146100dc5780633e2640d6146100f15780633fb27b851461010557806357211ac01461013b57806364da"

Und hier ist der Solidity Online Compiler-Bildschirm, der den Laufzeitcode am unteren Rand des Bildschirms zeigt:Geben Sie hier die Bildbeschreibung ein

Und die Erstellungstransaktion finden Sie hier . Diese Transaktion wurde mit folgenden Parametern ausgeführt (Sie können diese Parameter in den Blöcken 76 bis 80 im Block-Explorer sehen):

In der Antwort geben Sie die New Yorker Zeit als "30. August 2016 um 09:00 Uhr" an. Sollte es nicht 10 Uhr sein? (Übrigens danke für die ausführliche Antwort)
Danke @AnthonyKong. Ich habe die Zeitzonenberechnungen korrigiert.
Um eine Adresse in Kleinbuchstaben in Geth zu haben, sollten Sie Folgendes haben:var myAccount = "{your account}".toLowerCase();
Warum heißt es hier, dass die Vertragsadresse der Auszahlung 0x9f5304da62a5408416ea58a17a92611019bd5ce3 lautet, aber der Blogbeitrag blog.bity.com/2016/08/29/… erwähnt eine andere Adresse: 0xd4fb7fd0c254a8c6211e441f7236fa9479708a99?
@knocte, ich konnte die abweichende Adresse 0xd4fb7fd0c254a8c6211e441f7236fa9479708a99im verlinkten Beitrag nicht finden. Im verlinkten Beitrag unten links findet ihr eine Auflistung zum nächsten Artikel. Dieser Artikel blog.bity.com/2016/08/29/… bezieht sich auf die Adresse 0x9f5304da62a5408416ea58a17a92611019bd5ce3.
Entschuldigung, ich meinte diese URL: blog.bity.com/2016/08/26/…
Der Vertrag auf der ETH-Kette etherscan.io/address/… ist ein Vertrag, bei dem Benutzer, die die ETC-Kette nicht herunterladen möchten, eine Anfrage an Bity stellen können, um die DAO -> ETC-Auszahlung im Namen des Benutzers automatisch auszuführen. Diese Option für Bity, die DAO -> ETC-Auszahlung im Namen eines Benutzers auszuführen, musste vom Benutzer ausgeführt werden, BEVOR der DAO -> ETC-Auszahlungsvertrag in der ETC-Kette bereitgestellt wurde, und steht nicht mehr zur Verwendung zur Verfügung.
/u/cdetrio auf Reddit machte mich darauf aufmerksam, dass die Verwendung von Kleinbuchstaben im JavaScript-Code nicht erforderlich ist, da die Adressen in Hex/Binär konvertiert werden und Groß- und Kleinschreibung daher keine Rolle spielt.

Ich denke, es bleibt eine gute Praxis, jeden Vertrag zu überprüfen, bevor er ausgeführt wird.

Der Vertrag scheint zu sein unter: https://github.com/BitySA/whetcwithdraw/blob/master/whetcwithdraw.sol

Gibt es eine Möglichkeit zu überprüfen, ob der Vertrag unter der Adresse 0x9f5304da62a5408416ea58a17a92611019bd5ce3 tatsächlich von der oben genannten Quelle stammt?

Um zu überprüfen, ob der bereitgestellte Vertrag tatsächlich mit der oben genannten Quelle übereinstimmt, könnten Sie bitte die 4 Parameter angeben, die zum Bereitstellen des Vertrags verwendet wurden? Vor allem die „Fluchtadresse“ und der „Restberechtigte“ sowie was sie bewirken?

Soweit ich das beurteilen kann, stimmt die ABI aus der Quelle mit der aus diesem Beitrag überein, mit Ausnahme der Entfernung der Füllmethode.

BEARBEITUNGEN: Die Parameter sind für die Überprüfung des Bytecodes NICHT relevant, und dank der Hilfe der Leute im Slack-Channel konnten ich und einige andere bestätigen, dass der Bytecode mit der Quelle übereinstimmt, solange die richtige Compiler-Version verwendet wird. Kurzgesagt:

Also bestätige ich jetzt auch auf meiner Seite, dass die Verwendung der richtigen (nightly sic ) Version des Compilers (ethereum.github.io/browser-solidity/#version=soljson-v0.3.5-2016-08-10-fc60839 . js&optimize=true) entspricht der Code unter https://raw.githubusercontent.com/BitySA/whetcwithdraw/master/whetcwithdraw.sol dem Bytecode an der Adresse 0x9f5304da62a5408416ea58a17a92611019bd5ce3.

Da wir über thedao.slack.com/messages/withdraw_support verifiziert haben, habe ich meine Verifizierung am Ende meiner Antwort hinzugefügt.