Ethereum Bug schickt Smart Contracts in die Entwicklung zurück

Danny de Boer

von Danny de Boer

Am · Lesezeit: 6 Minuten

Danny de Boer

Als Informatiker schaut Danny de Boer kritisch auf die Blockchain-Entwicklung und Kryptographie. Zwischen Komplexität und Hype erklärt er allgemeinverständlich und anwendungsbezogen. Seit 2014 berichtet er für BTC-ECHO aus der Krypto-Szene.

Teilen
Stethoscope on blurry keyboard

Quelle: © denisismagilov - Fotolia.com

ETH353.57 $ -2.97%

Bugs sind ein normaler Bestandteil von Software, im Fall von Ethereum können sie sich aber als besonders schwerwiegend herausstellen.

Der Artikel wurde zuletzt aktualisiert am 30. Juni 2019 05:06 Uhr von Mark Preuss

Dies ist die Lektion die wir diese Woche aus einem Bug der Ethereum Programmiersprache mitnehmen können. Dieser Bug betrifft einen bestimmten Typ Smart Contracts und aufgrund der Arbeitsweise von Ethereum (Anwendungen laufen genau so wie sie programmiert worden sind) können die meisten Contracts die betroffen sind weder abgeschaltet noch verändert werden.


Genau genommen können Ersteller von dezentralen Smart Contracts (diejenigen die nicht durch einen Eigentümer geupgraded werden können) nichts gegen den Bug unternehmen.

Zwei Tage nachdem der Bug Report heraus gekommen war, haben Entwickler einen Fix für die Solidity Version 0.4.4 herausgebracht. Der Bug betrifft aber einige Adressen und Datentypen in diesen Contracts die selbst durch das Update nicht verändert werden können.

Anzeige

Clever und sicher investieren mit Krypto-Arbitrage

Bis zu 45% auf deine BTC, ETH, USDT, EUR

Mit dem Wallet und der Arbitrage-Handelsplattform von Arbismart verdienen Tausende Anleger ein passives Einkommen (10,8-45% pro Jahr). Die vollautomatische Krypto-Arbitrage-Plattform bietet risikoarme, renditestarke Investitionen. ArbiSmart ist EU lizenziert und reguliert.

Mehr erfahren


Die gute Nachricht ist, dass der Bug nicht viele Smart Contracts betreffen soll.

Solidity Entwickler Christian Reitwiessner erklärte CoinDesk, dass er eine “halb-automatische” Analyse jedes Ethereum Programms, aufgelistet durch einen bekannten Block Explorer, durchführte. Von rund 12.000 Contracts sollen nur vier Exploits aufweisen.

Reitwiessner sagte, dass keiner dieser Contracts Ether enthielt und damit wahrscheinlich nur zu Testzwecken genutzt worden sind. Es bleibt aber interessant, da nicht alle Contracts auf Etherscan, dem verwendeten Explorer, angezeigt werden. (Es gibt insgesamt mehr als 200.000 Contracts, es bleibt also immer noch schwer zu sagen wie sicher die verbleibenden Contract Funds bleiben).

Im Vergleich zum Fehler bei The DAO, scheint dies aber wirklich nur ein kleiner Fehler zu sein. Dennoch führte dies zu einer Diskussion über den Fall anderer großer Bugs die auftreten könnten, und was man mit den Smart Contracts anstellt, die nicht durch einen Eigentümer geupdatet werden können.

Beispielsweise beschrieb es ein Beobachter auf Social Media als “Maulwurfshügel neben einem Berg” ähnlicher Probleme.

Eine der eher radikaleren Ideen dieses Problem zu beheben ist es, Ethereum Contracts upgradebar auf kurze Sicht zu machen. Dies würde den Eigentümern der Smart Contracts die Möglichkeit geben eine Deaktivierung vorzunehmen oder den Code zu verändern, sollte mal ein Missgeschick entstehen. Die Angst die dabei mitschwingt ist aber, dass dieser Schritt die einzigartige Eigenschaft von Ethereum (oder anderen dezentralen Plattformen) entzieht.

Loi Luu, PhD Student der National University of Singapore, sagte, dass es womöglich besser wäre wenn die Nutzer die Einstellung von Smart Contracts auf die harte Tour lernen würden.

Luu sagte:

“Ich persönlich halte das für keine gute Idee. Dies ist grundlegend gegen alles wofür Smart Contracts stehen. Wenn Ethereum ein Beta Netzwerk ist, lasst Smart Contracts [auch mal] kaputt gehen, lasst die Leute ihre Lektionen lernen.”

Zwar bezieht sich Luus Kommentar eher auf die Vermeidung von upgradebaren Smart Contracts, doch es gibt auch noch andere Wege sich für zukünftige Bugs zu wappnen. Besonders solange Ethereum noch eine junge Technologie ist.

Das Problem beheben

Programme die in Ethereums Hochsprache Solidity oder Serpent geschrieben werden, sind zunächst einfach lesbar und werden in byte-level code kompiliert bevor sie der Blockchain hinzugefügt werden. Das Problem lag hier an der Technologie der Kompilierung.

Um das Problem zu beheben schlug Reitwiessner den Entwicklern zwei Dinge vor. Zuerst sollten Entwickler zur neuen Version von Solidity upgraden, wenn sie einen neuen Contract kompilieren wollen.

Der nächste Weg ist etwas eigenartig, da es das Upgraden oder Entziehen von Mitteln aus einem Smart Contract möglich machen soll – dies ist etwas was man bisher nicht für Ethereum möglich hielt.

Reitwiessner erläuterte seinen Ratschlag anhand der Erklärung zweier Arten von Contracts: zentral gesteuerte und dezentrale, die keine “speziellen Privilegien” haben.

Die erste Art bietet einen Upgrade-Mechanismus und einen Weg um Mittel aus dem Smart Contract zu extrahieren.

Bei dem zweiten gestaltet sich das schwieriger. Andersherum können Trustless Ethereum Smart Contracts nicht abgeschaltet oder modifiziert werden nachdem sie eingesetzt wurden. Es gibt nicht viel was Entwickler tun können, wenn sie nicht von Anfang an zentralisierte Smart Contracts genutzt haben.

Reitwiessner erzählte jedoch, dass Entwickler ein paar Dinge tun können, um sich gegen zukünftige Probleme (wie die mit Solidity) zu schützen.

“Meine Empfehlung wäre es, die Smart Contracts kurzlebig einzustellen, sodass die möglichen negativen Effekte begrenzt bleiben, oder aber eine genaue formale Analyse des Bytecodes des Contracts anzustellen. Wir entwickeln zurzeit Tools, die dabei helfen so etwas anzustellen”, sagte er.

Upgradebare Contracts

Es gibt aber Wege die daran vorbei führen.

External Relations Lead der Ethereum Stiftung, Hudson Jameson, beschrieb einen Weg Smart Contracts dezentral zu upgraden. Er ist der Meinung, dass es möglich sein muss live-code ein Upgrade aufzuspielen.

“Das allgemeine Gefühl das von unseren Entwicklern durchkommt ist, dass es für diese frühe Entwicklungsphase einen Fail-Safe im Code geben muss, der den Contract sicher abschaltet oder Contracts upgradet, die eine Menge Wert enthalten”, sagte er.

Jameson beschrieb einige potenzielle Smart Contract “Fail-Safes”, die den Eigentümern die Möglichkeit gibt ihre Smart Contracts nach dem Einsetzen auf der Blockchain upzugraden. Dies soll auch die Möglichkeit geben festzustellen, ob etwas nicht richtig funktioniert.

Er sagte, dass sie nicht unbedingt zentralisiert sein müssen, oder generell unter der Kontrolle eines Besitzers. Man könnte beispielsweise einen Smart Contract mit einem Limit aufsetzen, welches die Auszahlung eines Assets auf eine bestimmte Zeitspanne festsetzt.

“Sollte also ein Angreifer versuchen alle Mittel oder alle Assets zu stehlen, so könnte dies eine Nachricht an alle Teilnehmer schicken und den Angreifer zunächst aussperren. Die Nutzer würden dann darüber informiert, dass sie ihre Mittel aus dem Smart Contract entfernen sollten”, sagte er.

Er beschrieb noch einige andere Methoden, darunter einen Hacking Detektor, Abschaltfunktionen und Multi-Signature Transaktionen bei denen man mehr als eine Person benötigt um eine Transaktion von Ether einzuleiten.

Blick in die Zukunft

Smart Contracts auf Ethereum Classic (der Gruppe die sich aufgrund ideologischer Differenzen von der Ethereum Blockchain getrennt hat) sind ebenfalls von diesem Bug betroffen, da ihre Blockchain zum größten Teil mit denselben Tools arbeitet.

Laut ihres Lead Organizers Arvicco suchen die Entwickler dort aber nach einem Weg, um langfristig ihre Programmiersprache gegen Bugs zu sichern.

“Einer der möglichen Wege wäre es die Smart Contract Sprache von objekt/prozeduralen zum funktionalen Modell zu ändern”, sagte er.

Was auch immer der mögliche Fix für die Situation ist, die Diskussion zeigt, dass die Ethereum Entwickler nicht erwarten sollten, dass ihre Smart Contracts vollständig ohne potenziell negative Konsequenzen arbeiten. Dies kann jenen die ihren Code ins Netzwerk eingesetzt haben bereits klar oder eben nicht klar sein.

Gerade für Solidity könnte es sein, dass es in Zukunft einen nicht aufzuhaltenden Bug geben könnte, der die Smart Contracts beeinflussen könnte.

Reitwiessner betonte, dass es immer möglich sei das ein Compiler einen Bug einführt. Es ist möglich, dass Solidity oder Serpent (Ethereums Smart Contract Sprache) andere unentdeckte Probleme aufweisen.

Dieser Bug, so sagte er, sei aber in zwei Jahren Entwicklung der erste schwere Bug der in der Smart Contract Language gefunden wurde.

BTC-Echo

Englische Originalfassung von Alyssa Hertig via coindesk

Anzeige

Bitcoin handeln auf Plus500

Bitcoin, Ethereum, Ripple, IOTA und die bekanntesten Kryptowährungen (CFD) auf Plus500 sicher handeln.

Warum Plus500? Führende CFD Handelsplattform; 40.000 EUR Demo-Konto; Mobile Trading-App; starker Hebel; große Auswahl an verschiedenen Finanzprodukten (Kryptowährungen, Gold Aktien, Rohstoffe, ETFs, Devisen, Indizies).

Jetzt Konto eröffnen

76,4% der Kleinanlegerkonten verlieren Geld beim CFD-Handel mit diesem Anbieter [Anzeige].



Teilen

Die aktuellsten News kostenlos per E-Mail

Ich stimme zu, dass meine E-Mail-Adresse für den Versand des Newsletters gespeichert und verarbeitet wird. Weitere Hinweise
BTC-ACADEMY

Kryptowährungen einfach handeln

Plus500 der führende CFD Anbieter

  • Direkt mobil handeln
  • Einzahlung per Kreditkarte oder PayPal
  • Bitcoin,Ether,IOTA,Ripple, uvm.
  • inkl. Demokonto

76,4% der Kleinanlegerkonten verlieren Geld beim CFD Handel mit diesem Anbieter