<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=Solidity</id>
	<title>Solidity - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=Solidity"/>
	<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=Solidity&amp;action=history"/>
	<updated>2026-09-15T08:52:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Kryptowiki - Die freie Enzyklopädie der Kryptowährungen</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://kryptowiki.eu/index.php?title=Solidity&amp;diff=1566&amp;oldid=prev</id>
		<title>C1ph4: Die Seite wurde neu angelegt: „'''Solidity''' ist eine objektorientierte, anwendungsspezifische höhere Programmiersprache mit einer JavaScript-ähnlichen Syntax zum Entwickeln von […“</title>
		<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=Solidity&amp;diff=1566&amp;oldid=prev"/>
		<updated>2017-11-09T20:52:06Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Solidity&amp;#039;&amp;#039;&amp;#039; ist eine objektorientierte, anwendungsspezifische &lt;a href=&quot;/index.php?title=H%C3%B6here_Programmiersprache&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Höhere Programmiersprache (Seite nicht vorhanden)&quot;&gt;höhere Programmiersprache&lt;/a&gt; mit einer &lt;a href=&quot;/index.php?title=JavaScript&quot; title=&quot;JavaScript&quot;&gt;JavaScript&lt;/a&gt;-ähnlichen Syntax zum Entwickeln von […“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Solidity''' ist eine objektorientierte, anwendungsspezifische [[höhere Programmiersprache]] mit einer [[JavaScript]]-ähnlichen Syntax zum Entwickeln von [[Smart Contract|Smart Contracts]] für die [[Ethereum]]-Blockchain-Plattform.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Internetquelle |url=https://solidity.readthedocs.io/en/develop/ |titel=Solidity — Solidity 0.2.0 documentation |werk=solidity.readthedocs.io |zugriff=2016-09-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
Die erste Spezifikation von Solidity wurde im August 2014 von Gavin Wood ausgearbeitet.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://stackedit.io/viewer#!url=https://gist.githubusercontent.com/gavofyork/31b35cd2252a00d0d057/raw/16de06189d2175d2e31b300f1f8531e20c927635/solidity-original |titel=StackEdit Viewer |autor=Benoit Schweblin |werk=stackedit.io |zugriff=2016-09-09}}&amp;lt;/ref&amp;gt; Die weitere Entwicklung übernahm die Ethereum Foundation unter Leitung von Christian Reitwiessner. Solidity ist die 4. für die [[Ethereum Virtual Machine]] (EVM) entwickelte Sprache - nach den [[Go (Programmiersprache)|Go]]-ähnlichen Sprache Mutan, LLL - einer [[Lisp]]-artigen Sprache - sowie der [[Python (Programmiersprache)|Python]]-ähnlichen Sprache Serpent. Solidity ist die bedeutendste und am stärksten weiterentwickelte dieser Sprachen. Mutan wurde 2015 zugunsten von Solidity abgesetzt&amp;lt;ref&amp;gt;{{Internetquelle |url=https://forum.ethereum.org/discussion/922/mutan-faq |titel=Mutan FAQ |zugriff=2016-09-11}}&amp;lt;/ref&amp;gt; und auch LLL wird wenig verwendet.&amp;lt;ref&amp;gt;{{Internetquelle |url=http://ethereum.stackexchange.com/questions/348/is-lll-still-used-as-language/362#362 |titel=Is LLL still used as language? |werk=ethereum.stackexchange.com |zugriff=2016-09-11}}&amp;lt;/ref&amp;gt; Serpent wird weiterentwickelt, könnte aber ebenfalls von Solidity ersetzt werden.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://forum.ethereum.org/discussion/1460/solidity-faq |titel=Solidity FAQ |zugriff=2016-09-11}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
Solidity ist eine auf JavaScript basierende [[Statische Typisierung|statisch typisierte]] Programmiersprache, die entwickelt wurde um [[Smart Contract]]s für die Ethereum Virtual Machine (EVM) zu programmieren.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; Solidity Contracts können in [[Bytecode]] kompiliert werden, der von der EVM ausgeführt werden kann, um dann (zum Beispiel über die Ethereum-Geth-Konsole) in die Ethereum Blockchain hochgeladen zu werden. Es gibt mehrere Methoden, um Solidity-Code zu kompilieren, zum Beispiel über den Online-Compiler,&amp;lt;ref&amp;gt;{{Internetquelle |url=https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.1+commit.4fc6fc2c.js |titel=Solidity realtime compiler and runtime |werk=ethereum.github.io |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt; den Kommandozeilen-Solidity-Compiler solc oder den in die Ethereum-IDE Mix eingebauten Compiler.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://github.com/ethereum/wiki/wiki/Mix:-The-DApp-IDE |titel=Mix IDE |autor= |hrsg= |werk= |datum= |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 bestehenden Sprachen (LLL, Serpent, Mutan), unterstützt Solidity komplexe Variablentypen wie hierarchische Mappings und Structs, die auch verschachtelt werden können, sowie [[Vererbung (Programmierung)|Vererbung]] für Contracts. Es wurde auch ein Application Binary Interface (ABI) spezifiziert, um externen Applikationen und Libraries (zum Beispiel [[Web3.js]]) die Interaktion mit Ethereum-Contracts zu ermöglichen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI |titel=Ethereum Contract ABI |autor= |hrsg= |werk= |datum= |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielcode für einen in Solidity geschriebenen Contract:&amp;lt;ref&amp;gt;{{Internetquelle |url=https://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html |titel=Introduction to Smart Contracts |autor= |hrsg= |werk= |datum= |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
contract TestCoin {&lt;br /&gt;
    // Das Schlüsselwort &amp;quot;public&amp;quot; erlaubt es auch anderen Smart Contracts, die Variable auszulesen.&lt;br /&gt;
    // Diese Variable hat den Typ &amp;quot;address&amp;quot; und steht für die Adresse eines Ethereum Accounts.&lt;br /&gt;
    address public minter;&lt;br /&gt;
    mapping (address =&amp;gt; uint) public balances;&lt;br /&gt;
&lt;br /&gt;
    // Events erlauben es Ethereum-Clients, auf Ereignisse des Contracts zu reagieren.&lt;br /&gt;
    event Sent(address from, address to, uint amount);&lt;br /&gt;
&lt;br /&gt;
    // Die Funktion mit demselben Namen wie der Smart Contract ist der Konstruktor.&lt;br /&gt;
    // Diese Funktion wird ein einziges Mal bei der Erstellung des Contracts aufgerufen.&lt;br /&gt;
    function TestCoin() {&lt;br /&gt;
        minter = msg.sender;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Mit dieser Funktion kann der &amp;quot;minter&amp;quot; Ethereum Account anderen Accounts einen beliebigen&lt;br /&gt;
    // Betrag des &amp;quot;TestCoin&amp;quot; überweisen.&lt;br /&gt;
    function mint(address receiver, uint amount) {&lt;br /&gt;
        if (msg.sender != minter) return;&lt;br /&gt;
        balances[receiver] += amount;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Diese Funktion erlaubt es Ethereum-Accounts, sich gegenseitig TestCoin zu überweisen.&lt;br /&gt;
    function send(address receiver, uint amount) {&lt;br /&gt;
        if (balances[msg.sender] &amp;lt; amount) return;&lt;br /&gt;
        balances[msg.sender] -= amount;&lt;br /&gt;
        balances[receiver] += amount;&lt;br /&gt;
        Sent(msg.sender, receiver, amount);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kritik ==&lt;br /&gt;
&lt;br /&gt;
Solidity geriet besonders nach dem medial stark aufgegriffenen Hack von [[The DAO]], aber auch durch das Entdecken weiterer Exploits, in Kritik ernsthafte Sicherheitsprobleme zu haben.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://daohub.org/ |titel=The DAO - Home |autor=The DAO's Community |werk=daohub.org |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.heise.de/newsticker/meldung/Nach-dem-DAO-Hack-Ethereum-glueckt-der-harte-Fork-3273618.html |titel=Nach dem DAO-Hack: Ethereum glückt der harte Fork |autor=heise online |werk=heise online |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt; Es wird unter anderem kritisiert, dass Solidity zu permissiv ist, und auf JavaScript-ähnlichen Konzepten basiert, anstatt auf wissenschaftlicher Forschung zum Thema Formale Sprachen für Contracts aufzubauen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://blog.blockstack.org/solar-storm-a-serious-security-exploit-with-ethereum-not-just-the-dao-a03d797d98fa |titel=Solarstorm: A security exploit with Ethereum’s Solidity language, not just the DAO |autor=Muneeb Ali |werk=Blockstack Blog |datum=2016-06-20 |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Internetquelle |url=https://medium.com/@Hibryda/why-solidity-isnt-solid-3341af77fc1c#.5riebmpgn |titel=Why Solidity isn’t solid |autor= |hrsg= |werk=Blockstack Blog |datum=2016-06-20 |zugriff=2016-09-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Externe Links ==&lt;br /&gt;
* [[Markus Völter]]: [http://omegataupodcast.net/265-ethereum-and-solidity/ Ethereum und Solidity] [[Omega tau|Omega Tau]] Folge 265 (Interview mit Solidity-Entwickler Christian Reitwiessner, 2017, 2h 20min)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Objektorientierte Programmiersprache]]&lt;br /&gt;
[[Kategorie:Funktionale Programmiersprache]]&lt;/div&gt;</summary>
		<author><name>C1ph4</name></author>
	</entry>
</feed>