Smart Contracts: Die Nachteile intelligenter Verträge

Was ist der sogenannte „Zählerüberlauf“ und warum sollten Sie darüber Bescheid wissen?

Interessieren Sie sich für intelligente Verträge (Smart Contracts)? Wissen Sie, was ein Zählerüberlauf ist? Tatsächlich handelt es sich bei einem solchen Überlauf um ein Problem aus dem Bereich der Programmierung und ein intelligenter Vertrag ist im Wesentlichen nichts anderes als ein simples Programm. Im Anschluss erfahren Sie, weshalb Sie unbedingt mehr darüber wissen sollten!

Wird eine vorzeichenlose Ganzzahl in einer einzelnen, bytelangen Speicherzelle gespeichert, kann sie lediglich Werte im Bereich von 0 bis 255 erfassen bzw. annehmen. Wenn keine weiteren Bedingungen gegeben sind, bedeutet dies, dass 255 + 1 = 0 ist und 0 – 1 = 255. Auf diese Weise werden Daten von den meisten modernen Prozessoren verarbeitet.

In vielen modernen Programmiersprachen steuert das Programm selbst, ob bei arithmetischen Operationen ein Überlauf aufgetreten ist oder nicht. Sollte dies der Fall sein, ist es sehr wahrscheinlich, dass dies nicht die ursprüngliche Absicht des Programmierers gewesen ist. Daher sollte das Programm an dieser Stelle unterbrochen und gewährleistet werden, dass aufgrunddessen später keine Bugs zustande kommen.

Was haben Smart Contracts damit zu tun?

In intelligenten Verträgen für Ethereum ist eine solche Kontrolle beim Geldverarbeitungsprozess nicht geboten. Mit anderen Worten: Wenn Sie null Token haben und einen Token an einen Freund senden, erhalten Sie daraufhin eine Trillionen Token. Offensichtlich sollte das Programm an dieser Stelle sofort unterbrochen und die falsche Transaktion abgebrochen werden.

Warum Ethereum-Entwickler ihre Arithmetik auf diese Art und Weise implementieren, ist ein Rätsel. Damit universelle menschliche Mathematikregeln jedoch für intelligente Verträge gelten, müssen jedem Smart Contract mehr als 100 Codezeilen hinzugefügt werden, die die normalen Funktionen für Addition, Multiplikation usw. enthalten.

Andernfalls wären mit einer Trillion Token auf dem Konto der Phantasie und den Möglichkeiten keine Grenzen gesetzt. Betrüger könnten auf Kryptowährungsbörsen auf diese Weise so viele Bitcoins und Ethereums kaufen, wie sie wollen.

Dieses Szenario ist nicht rein theoretisch und tatsächlich bereits mehrere Male mit verschiedenen Währungstypen genau so passiert. Normalerweise erfahren wir etwas über das Code-Problem, nachdem der Täter den Trick bereits zu seinen Gunsten genutzt hat und sich mit vollen Taschen vom Acker gemacht hat. Aber selbst danach kann nichts getan werden: Denn intelligente Verträge sind in Stein gemeißelt und können weder geändert noch gepatcht werden.

Überlauf & Bitcoin

Um ehrlich zu sein, ist das Problem des Zählerüberlaufs nicht nur auf Ethereum beschränkt: Bitcoin hatte das gleiche Problem bereits lange zuvor.

Am 15. August 2010 hatte ein solcher Zählerüberlauf die Gutschrift von insgesamt 184 Milliarden Bitcoins auf zwei Bitcoin-Wallets zur Folge – eine, sagen wir, weniger erfreuliche Botschaft für die Gründer. Sie (d. H. Satoshi Nakamoto) änderten den Code umgehend, fixten den Bug, setzten den Finanzverlauf zurück und taten so, als wäre nichts passiert.

Wenn man an diesem spezifischen Tag also beispielsweise Bitcoins im Wert von 10.000 USD gekauft hätte, würde dieses sogenannte Rollback dazu führen, dass die Bitcoins zwar zu ihrem Verkäufer, das entsprechende Geld aber nicht zum Käufer zurückfinden würde. Und wenn ein Rollback jetzt und nicht im Jahre 2010 durchgeführt werden würde, wären die Konsequenzen deutlich verheerender, denn aktuell werden täglich Bitcoin-Trades im Wert von etwa 5 Milliarden US-Dollar getätigt.

Der vorangegangene und auch andere Fälle zeigen, dass die Blockchain also nur dann unveränderlich ist, wenn alles nach Plan verläuft. Andernfalls können sowohl der ursprüngliche Plan als auch die Blockchain geändert werden.

Zurück zu intelligenten Verträgen

Die Entscheidung der Entwickler von Ethereum erscheint auf den ersten Blick ziemlich seltsam – es sieht nämlich ganz so aus, als hätten sie absichtlich kleine Fallen für Smart-Contract-Programmierer platziert. Diese müssen sehr erfahren oder fokussiert sein (oder beides), um sich selbst oder Ihre Investoren davor zu bewahren, über Nacht Ihr gesamtes Geld zu verlieren. Dies ist ein weiterer Grund, warum der Smart Contract Code einer sorgfältigen Überprüfung bedarf. Im Rahmen von Kaspersky Token Offering Security überprüfen unsere Experten den Code intelligenter Verträge auf undokumentierte Funktionen. Weitere Informationen dazu finden Sie auf unserer Seite Token Offering Security.

Tipps