ETFFIN Finance >> Finanzbildung >  >> fund >> Fondsinformationen

Was ist Solidität?

Solidität ist die Programmiersprache, die verwendet wird, um zu schreiben, schaffen, und implementieren Smart Contracts. Wenn Sie Smart Contracts lernen möchten, Sie können dies nicht tun, ohne Solidität zu verstehen und zu lernen.

Es wurde ursprünglich im Jahr 2014 von Gavin Wood vorgeschlagen. wurde aber später von Christian Reitwiessner entwickelt und auf den Markt gebracht, Alex Beregszaszi, Yoichi Hirai, und mehrere ehemalige Ethereum-Kernbeitragszahler, Solidity ermöglicht die Erstellung und das Schreiben von Smart Contracts auf Blockchain-Plattformen wie Ethereum, Ethereum-Klassiker, Tron, unter anderen.

Es dient als primäre Sprache auf der Virtual Machine (EVM) von Ethereum.

Ähnlich wie Javascript

In seiner einfachsten Form, es ist eine „lose typisierte Sprache“. Die Sprache funktioniert sehr ähnlich wie C und Javascript, integriert aber zusätzliche Unterstützung für Zustandsvariablen, Datentypen, und Programmierfunktionen.

Als Wood dies zum ersten Mal entwarf, er sagte, es sei, um es bestehenden Webentwicklern vertraut und einfach zu machen. Im Gegensatz zu Javascript, Solidity hat statische Typisierung und variadische Rückgabetypen.

Mit Solidität, Blockchain-Entwickler sind in der Lage, Anwendungen zu schreiben, die eine sich selbst durchsetzende (selbstverwaltete) Geschäftslogik implementieren, die in Smart Contracts enthalten ist. Im Klartext, dies ermöglicht die Selbstausführung der Verträge, keine menschliche Beteiligung erforderlich, sobald der Code geschrieben ist.

Für erfahrene Programmierer, Diese Sprache ist ziemlich einfach. An den Laien, jedoch, es braucht zeit und geduld.

Syntax und allgemeine Datentypen verstehen

Solidity unterstützt generische Werttypen, speziell boolesche Werte, ganze Zahlen, Adressen, String-Literale, und Modifikatoren. Lassen Sie uns jeden erkunden.

Boolesche Werte

In der Informatik, Der boolesche Datentyp ist ein Datentyp mit zwei möglichen Werten – wahr oder falsch. Diese Werte sollen die beiden Wahrheitswerte der Logik und der Booleschen Algebra darstellen. Für weitere Informationen hierzu, Bitte klicken Sie hier.

Die logischen Operatoren, die boolesche Datentypen zurückgeben:

  • ! Logische Negation
  • &&logische Konjunktion, "und"
  • || logische Disjunktion, "oder"
  • ==Gleichheit
  • !=Ungleichheit

Ganzzahlen

Solidity unterstützt int/unit sowohl für vorzeichenbehaftete als auch für vorzeichenlose Ganzzahlen. Diese Speicherzuweisungen können verschiedene Größen haben. Schlüsselwörter wie uint8 und uint256 können verwendet werden, um eine Speichergröße von 8 Bit bzw. 256 Bit zuzuweisen. Standardmäßig, die Belegung beträgt 256 Bit. Das ist, uint und int können anstelle von uint256 und int256 verwendet werden.

Die mit Integer-Datentypen kompatiblen Operatoren sind:

  • Vergleiche:<=, <, ==, !=,> =,> . Diese werden verwendet, um bool auszuwerten.
  • Bitoperatoren:&, |, ^ bitweise exklusives 'oder', ~ bitweise Negation, "nicht".
  • Arithmetische Operatoren:+, -, einstellig -, unär +, *, /, % Rest, ** Potenzierung, <> rechte Shifttaste.

Die EVM gibt eine Laufzeitausnahme zurück, wenn der Modulus-Operator auf die Null einer Operation „dividieren durch Null“ angewendet wird.

Die Anschrift

Eine Adresse kann einen 20-Byte-Wert enthalten, der der Größe einer Ethereum-Adresse entspricht. Diese Adresstypen werden mit Mitgliedern gesichert, die als Vertragsbasis dienen.

Weitere Informationen zu „Byte-Werten“ Bitte klicken Sie hier.

String-Literale

Ein „String-Literal“ oder anonymer String, ist eine Art Literal in der Programmierung zur Darstellung eines „String“-Werts im Quellcode eines Computerprogramms. Für weitere Informationen hierzu, Bitte klicken Sie hier.

Im Gegensatz zur C-Sprache, Zeichenfolgenliterale in Solidity implizieren nachfolgende Wertnullen. Diese können entweder durch einfache oder doppelte Anführungszeichen dargestellt werden --- „foo“ oder „bar“.

Zum Beispiel, „bar“ stellt ein 3-Byte-Element dar, statt vier (4).

Ähnlich, mit ganzzahligen Literalen, die Literale sind von Natur aus konvertierbar, mit dem entsprechenden Fit--Byte oder String.

Modifikator

Bei intelligenten Verträgen Modifikatoren helfen, die Kohärenz der definierten Bedingungen zu gewährleisten, bevor Sie den Code ausführen. Mit anderen Worten, es stellt sicher, dass die Bedingungen richtig definiert sind, um eine ungenaue Berechnung und damit Ausführung zu riskieren.

Zuordnungen

Solidity bietet grundlegende Arrays, Aufzählungen, Betreiber, und Hash-Werte, um eine Datenstruktur zu erstellen, als „Mappings“ bekannt. Diese werden verwendet, um Werte zurückzugeben, die einem bestimmten Speicherort zugeordnet sind.

Ein „Array“ ist eine zusammenhängende Speicherzuweisung einer vom Programmierer definierten Größe, wobei, wenn die Größe als „K“ initialisiert wird, und der Elementtyp wird als „T“ instanziiert, das Array kann als T [k] geschrieben werden.

Dynamische Arrays

Arrays können auch mit der Notation uint [ ] [6] dynamisch instanziiert werden. Dies bedeutet, dass ein dynamisches Array mit sechs zusammenhängenden Speicherzuordnungen initiiert wird, während ein zweidimensionales Array als arr [2] [4] initialisiert werden kann, wobei die beiden Indizes die Dimensionen der Matrix anzeigen.

Beispiel für Festigkeitscode

Ragma-Festigkeit> =0,5,0 <0,7,0;

Contract Coin { // Das Schlüsselwort "public" macht Variablen
// aus anderen Verträgen zugänglich
Adresse des öffentlichen Münzmeisters;
Zuordnung (Adresse => uint) öffentliche Guthaben; // Ereignisse ermöglichen es den Kunden, auf bestimmte zu reagieren
// Vertragsänderungen, die Sie erklären
Ereignis gesendet (Adresse von, richten an, Betrag); // Konstruktorcode wird nur ausgeführt, wenn der Vertrag
// geschaffen
Konstruktor() öffentlich {
minter =msg.sender; } // Sendet eine Menge neu erstellter Coins an eine Adresse
// Kann nur vom Vertragsersteller aufgerufen werden
Funktion Minze (Adressempfänger, Einheitsbetrag) öffentlich {
require(msg.sender ==minter); erfordern(Betrag <1e60); Salden[Empfänger] +=Betrag; } // Sendet eine Menge vorhandener Coins
// von jedem Anrufer an eine Adresse
Funktion senden (Empfängeradresse, Einheitsbetrag) öffentlich {
verlangen(Betrag <=Guthaben[msg.sender], "Mangelhaftes Gleichgewicht."); Salden[msg.sender] -=Betrag; Salden[Empfänger] +=Betrag; Gesendet (msg.sender, Empfänger, betragen); } }