TheDAO wird derzeit angegriffen und ein Gegenangriff durch Spam wurde von Stephan Tual https://blog.slock.it/dao-security-advisory-live-updates-2a0a42a2d07b#.r3wg8cxlw vorgeschlagen
Was macht dieser Code eigentlich?
for (var i = 0; i < 100; i++) {
eth.sendTransaction({from: eth.accounts[0], gas: 2300000,
gasPrice: web3.toWei(20, “shannon”),
data: “0x5b620186a05a131560135760016020526000565b600080601f600039601f565b6000f3”}) }
}
Ich dachte, dass es 100 Transaktionen von Konto 0 mit einigen Daten sendet. Aber was sind das für Daten und wie helfen sie dem DAO, nicht ausgelaugt zu werden?
Der Angriff lebt davon, dass man mit dem gleichen Guthaben auf seinem Konto eine Funktion zweimal aufrufen kann. Erst nach Ausführung des Funktionsaufrufs wird Ihr Geld abgebucht. So hilft der Spam Zeit zu gewinnen, damit das Geld nicht doppelt ausgegeben wird. Mehr hier: http://vessenes.com/deconstructing-thedao-attack-a-brief-code-tour/
Die Transaktionen erzeugen viele leere Verträge . Dadurch bekommt der Spammer Konkurrenz . Die leeren Vertragskreationen. Wofür konkurrieren sie? Für das Blockgaslimit :
Auch Blöcke haben ein Feld namens Gaslimit. Es definiert die maximale Gasmenge, die alle Transaktionen im gesamten Block zusammen verbrauchen dürfen. Ähnlich wie die maximale Blockgröße bei Bitcoin (gemessen in Bytes) dient sie dazu, die Blockausbreitung und Verarbeitungszeit gering zu halten und damit ein ausreichend dezentrales Netzwerk zu ermöglichen.
Der Angriff kann also den Reentrant-Aufruf nicht ausführen, da das Blockgaslimit durch die Vertragserstellungen erreicht wird, was den Vorteil hat, dass es sich um einen teuren Opcode handelt.
Roland Köfler
SCBürgel
Datenschutz ist ein Menschenrecht.eth