Solidity – Die Sprache für Smart Contracts auf der Ethereum-Blockchain

Solidity ist eine objektorientierte, anwendungsspezifische höhere Programmiersprache zum Entwickeln von Smart Contracts für Blockchain-Plattformen. Die Sprache ist von C++, Python und JavaScript beeinflusst und läuft auf Blockchain-Plattformen wie Ethereum oder Tron.

Bei Solidity handelt es sich um die primäre Sprache auf Ethereum sowie auf anderen privaten Blockchains, wie der unternehmensorientierten Hyperledger Fabric Blockchain. SWIFT (The Society for Worldwide Interbank Financial Telecommunication) hat ein Proof of Concept mit Solidity auf Hyperledger Fabric implementiert.

Was ist SWIFT?

SWIFT ist eine Organisation, die ein besonders sicheres Telekommunikationsnetz (das SWIFTNet) betreibt. Mehr als 11.000 Banken weltweit nutzen das SWIFTNet. Darüber hinaus standardisiert SWIFT den Nachrichtenverkehr der Finanzinstitute untereinander und bietet Software sowie Services im Bereich der Finanztransaktionen an. SWIFT ist eine Genossenschaft im Besitz der Banken und ist dem EU-Recht unterworfen.

Die erste Spezifikation von Solidity erfolgte durch Gavin Wood im August 2014. Nachfolgend übernahm die Ethereum Foundation unter Leitung von Christian Reitwiessner die Weiterentwicklung. Solidity ist die vierte und am weitesten entwickelte Sprache, die man für die Ethereum Virtual Machine (EVM) entwickelt hat.

Beschaffenheit von Solidity

Wie anfangs angesprochen, basiert Solidity auf JavaScript. Sie ist in ihrer Beschaffenheit eine statische typisierte Programmiersprache. Entwickelt, um Smart Contracts für die Ethereum Virtual Machine (EVM) zu programmieren. Solidity-Contracts kann man in Bytecode kompilieren und von der EVM ausführen lassen. Gegebenenfalls lädt man dies dann über die Ethereum-Geth-Konsole in die EthereumBlockchain hoch.

Kompilierung von Solidity Code

Man kann den Code über verschiedene Wege kompilieren. Zum einen über den Online-Compiler, über den Kommandozeilen-Solidity-Compiler solc oder über den in die Ethereum-IDE Mix eingebauten Compiler.

Die Solidity-Syntax ist stark an die ECMAScript-Syntax angelehnt, um Webentwicklern den Einstieg in die Smart-Contract-Entwicklung zu erleichtern. Im Unterschied zu ECMAScript ist sie aber statisch typisiert und unterstützt variadische Rückgabewerte. Im Vergleich mit den zuvor bestehenden, vergleichbaren Sprachen (LLL, Serpent, Mutan) unterstützt Solidity komplexe Variablentypen wie hierarchische Mappings und Structs, die auch verschachtelt werden können, sowie die Vererbung für Contracts. Es wurde auch ein Application Binary Interface (ABI) spezifiziert, sodass Interaktionen externer Anwendungen und Bibliotheken wie beispielsweise Web3.js mit Ethereum-Contracts möglich sind. Solidity geriet mit dem Hack von „The DAO“ in die Schlagzeilen.

Was ist eine DAO?

Unter DAO versteht man eine Dezentralisierte Autonome Organisation. Die Steuerung dieser Organisation wird durch ein transparentes Computerprogramm bewerkstelligt. Das Programm wird weder von Aktionären gesteuert noch von einer zentralen Regierung beeinflusst. Die Aufzeichnung der Finanztransaktionen und die Programmregeln einer DAO werden auf einer Distributed-Ledger-Technologie (DLT) aufrechterhalten. Die erste DAO war übrigens Dash.

The Dao

The DAO ist die bekannteste DAO, die bislang in der EthereumBlockchain implementiert wurde. Die Firma Slock.it war für die Entwicklung und Veröffentlichung verantwortlich. Liest sich ja fast wie eine Anschuldigung. Grüße an Jeffrey Berns 😉 Grob zusammengefasst besteht die Aufgabe von The DAO darin, Ether durch Verkauf von Stimmberechtigungsanteilen einzunehmen, ein Entscheidungsgremium über die Verwendung gesammelter Ether abzuhalten und zu überweisen. Es handelt sich im Grunde genommen um eine autonome und automatisierte Investmentfirma. The DAO wurde im April 2016 in die Blockchain hochgeladen und durchlief ein Crowdfunding bis zum 28. Mai 2016. Zahlungsmittel war Ether. The-DAO-Token, die zur Stimmabgabe, für die in The DAO getroffenen Entscheidungen berechtigen, können immer noch auf diversen Kryptobörsen gehandelt werden.

Am 17. Juni 2016 machte ein Unbekannter durch einen Fehler im Smart Contract von The DAO 3,6 Millionen Ether unbrauchbar. Diese waren damals rund 65 Millionen Euro wert. Eine harte Abspaltung (englisch ‚hard fork‘), die den Angriff rückgängig macht, wurde mehrheitlich beschlossen. Durch diese harte Abspaltung wurde der angegriffenen DAO das gesamte Ether entzogen. Durch diesen Prozess entstanden zwei Blockchains, von denen die ursprüngliche als Ethereum Classic (ETC) weitergeführt wird. Die Ethereum Foundation hat anhand verschiedener Metriken und der Abstimmung der Community entschieden, ihre Entwicklungstätigkeit nur auf die abgespaltene (oder geforkte) Hauptblockchain (weiterhin Ethereum genannt) zu beschränken und sich nicht mehr mit Ethereum Classic zu beschäftigen.

Übrigens ist Uniswap, Thema vor 2 Tagen, ebenfalls in Solidity geschrieben 😉

Mir ist beim Schreiben aufgefallen, dass ich meinen Beitrag bzgl. Ethereum noch etwas ausarbeiten werde. Ich werde dies in den kommenden Tagen in Angriff nehmen 😉

So langsam wandelt sich dieses Vorhaben mit dem Blog zu einer lebenden und wachsenden Dokumentation.

Allen ein schönes und erholsames Wochenende!