{"id":20008,"date":"2019-08-30T13:05:54","date_gmt":"2019-08-30T11:05:54","guid":{"rendered":"https:\/\/www.kaspersky.de\/blog\/?p=20008"},"modified":"2019-11-22T12:01:10","modified_gmt":"2019-11-22T10:01:10","slug":"integer-overflow-ethereum","status":"publish","type":"post","link":"https:\/\/www.kaspersky.de\/blog\/integer-overflow-ethereum\/20008\/","title":{"rendered":"Smart Contracts: Die Nachteile intelligenter Vertr\u00e4ge"},"content":{"rendered":"<p>Interessieren Sie sich f\u00fcr intelligente Vertr\u00e4ge (Smart Contracts)? Wissen Sie, was ein Z\u00e4hler\u00fcberlauf ist? Tats\u00e4chlich handelt es sich bei einem solchen \u00dcberlauf 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\u00fcber wissen sollten!<\/p>\n<p>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 \u2013 1 = 255. Auf diese Weise werden Daten von den meisten modernen Prozessoren verarbeitet.<\/p>\n<p>In vielen modernen Programmiersprachen steuert das Programm selbst, ob bei arithmetischen Operationen ein \u00dcberlauf aufgetreten ist oder nicht. Sollte dies der Fall sein, ist es sehr wahrscheinlich, dass dies nicht die urspr\u00fcngliche Absicht des Programmierers gewesen ist. Daher sollte das Programm an dieser Stelle unterbrochen und gew\u00e4hrleistet werden, dass aufgrunddessen sp\u00e4ter keine Bugs zustande kommen.<\/p>\n<h2>Was haben Smart Contracts damit zu tun?<\/h2>\n<p>In intelligenten Vertr\u00e4gen f\u00fcr 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.<\/p>\n<p>Warum Ethereum-Entwickler ihre Arithmetik auf diese Art und Weise implementieren, ist ein R\u00e4tsel. Damit universelle menschliche Mathematikregeln jedoch f\u00fcr intelligente Vertr\u00e4ge gelten, m\u00fcssen jedem Smart Contract mehr als 100 Codezeilen hinzugef\u00fcgt werden, die die normalen Funktionen f\u00fcr Addition, Multiplikation usw. enthalten.<\/p>\n<p>Andernfalls w\u00e4ren mit einer Trillion Token auf dem Konto der Phantasie und den M\u00f6glichkeiten keine Grenzen gesetzt. Betr\u00fcger k\u00f6nnten auf Kryptow\u00e4hrungsb\u00f6rsen auf diese Weise so viele Bitcoins und Ethereums kaufen, wie sie wollen.<\/p>\n<p>Dieses Szenario ist nicht rein theoretisch und tats\u00e4chlich bereits mehrere Male mit verschiedenen W\u00e4hrungstypen genau so passiert. Normalerweise erfahren wir etwas \u00fcber das Code-Problem<a href=\"https:\/\/etherscan.io\/tx\/0xfd2d1ab0bb7ca5df5228aa3ac714ba160f57e6bc153e10b490e92bf50dc9f566\" target=\"_blank\" rel=\"noopener nofollow\">, nachdem der T\u00e4ter den Trick bereits zu seinen Gunsten genutzt hat und sich mit vollen Taschen vom Acker gemacht hat<\/a>. Aber selbst danach kann nichts getan werden: Denn intelligente Vertr\u00e4ge sind in Stein gemei\u00dfelt und k\u00f6nnen weder ge\u00e4ndert noch gepatcht werden.<\/p>\n<h2>\u00dcberlauf &amp; Bitcoin<\/h2>\n<p>Um ehrlich zu sein, ist das Problem des Z\u00e4hler\u00fcberlaufs nicht nur auf Ethereum beschr\u00e4nkt: Bitcoin hatte das gleiche Problem bereits lange zuvor.<\/p>\n<p>Am 15. August 2010 hatte ein solcher Z\u00e4hler\u00fcberlauf die Gutschrift von insgesamt <a href=\"https:\/\/en.bitcoin.it\/wiki\/Value_overflow_incident\" target=\"_blank\" rel=\"noopener nofollow\">184 Milliarden Bitcoins<\/a> auf zwei Bitcoin-Wallets zur Folge \u2013 eine, sagen wir, weniger erfreuliche Botschaft f\u00fcr die Gr\u00fcnder. Sie (d. H. Satoshi Nakamoto) \u00e4nderten den Code umgehend, fixten den Bug, setzten den Finanzverlauf zur\u00fcck und taten so, als w\u00e4re nichts passiert.<\/p>\n<p>Wenn man an diesem spezifischen Tag also beispielsweise Bitcoins im Wert von 10.000 USD gekauft h\u00e4tte, w\u00fcrde dieses sogenannte <em>Rollback<\/em> dazu f\u00fchren, dass die Bitcoins zwar zu ihrem Verk\u00e4ufer, das entsprechende Geld aber nicht zum K\u00e4ufer zur\u00fcckfinden w\u00fcrde. Und wenn ein Rollback jetzt und nicht im Jahre 2010 durchgef\u00fchrt werden w\u00fcrde, w\u00e4ren die Konsequenzen deutlich verheerender, denn aktuell werden t\u00e4glich Bitcoin-Trades im Wert von etwa 5 Milliarden US-Dollar get\u00e4tigt.<\/p>\n<p>Der vorangegangene und auch andere F\u00e4lle zeigen, dass die Blockchain also nur dann unver\u00e4nderlich ist, wenn alles nach Plan verl\u00e4uft. Andernfalls k\u00f6nnen sowohl der urspr\u00fcngliche Plan als auch die Blockchain ge\u00e4ndert werden.<\/p>\n<h2>Zur\u00fcck zu intelligenten Vertr\u00e4gen<\/h2>\n<p>Die Entscheidung der Entwickler von Ethereum erscheint auf den ersten Blick ziemlich seltsam \u2013 es sieht n\u00e4mlich ganz so aus, als h\u00e4tten sie absichtlich kleine Fallen f\u00fcr Smart-Contract-Programmierer platziert. Diese m\u00fcssen sehr erfahren oder fokussiert sein (oder beides), um sich selbst oder Ihre Investoren davor zu bewahren, \u00fcber Nacht Ihr gesamtes Geld zu verlieren. Dies ist ein weiterer Grund, warum der Smart Contract Code einer sorgf\u00e4ltigen \u00dcberpr\u00fcfung bedarf. Im Rahmen von Kaspersky Token Offering Security \u00fcberpr\u00fcfen unsere Experten den Code intelligenter Vertr\u00e4ge auf undokumentierte Funktionen. Weitere Informationen dazu finden Sie auf unserer Seite <a href=\"https:\/\/www.kaspersky.com\/enterprise-security\/ico-sto-security\" target=\"_blank\" rel=\"noopener nofollow\">Token Offering Security<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was ist der sogenannte &#8222;Z\u00e4hler\u00fcberlauf&#8220; und warum sollten Sie dar\u00fcber Bescheid wissen?<\/p>\n","protected":false},"author":669,"featured_media":20009,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1848,3107],"tags":[1400,2744,3369,2746],"class_list":{"0":"post-20008","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"tag-blockchain","10":"tag-ethereum","11":"tag-intelligente-vertrage","12":"tag-smart-contracts"},"hreflang":[{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/integer-overflow-ethereum\/20008\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/integer-overflow-ethereum\/16601\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/integer-overflow-ethereum\/13993\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/integer-overflow-ethereum\/18541\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/integer-overflow-ethereum\/16633\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/integer-overflow-ethereum\/15286\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/integer-overflow-ethereum\/19176\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/integer-overflow-ethereum\/17870\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/integer-overflow-ethereum\/28140\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/integer-overflow-ethereum\/28188\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/integer-overflow-ethereum\/12204\/"},{"hreflang":"pl","url":"https:\/\/plblog.kaspersky.com\/integer-overflow-ethereum\/11109\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/integer-overflow-ethereum\/24216\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/integer-overflow-ethereum\/22060\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/integer-overflow-ethereum\/23322\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/integer-overflow-ethereum\/23233\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.de\/blog\/tag\/smart-contracts\/","name":"Smart Contracts"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/20008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/users\/669"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/comments?post=20008"}],"version-history":[{"count":4,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/20008\/revisions"}],"predecessor-version":[{"id":20772,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/20008\/revisions\/20772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media\/20009"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media?parent=20008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/categories?post=20008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/tags?post=20008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}