Blockchain-Programmierung: Wie viele Programmiersprachen benötigen Sie für Blockchain?

Während sich die Menschheit der Digitalisierung von allem nähert, wird die grundlegende Kodierung selbst für den Durchschnittsbürger, der sich nicht für Technik interessiert, zu einem Muss. Diese Anforderung wird noch deutlicher, wenn es um die Blockchain-Sphäre geht. Wenn wir wirklich eine echte Dezentralisierung anstreben, sollte jeder von uns verstehen, wie die Dinge zumindest auf elementarer Ebene funktionieren. Unabhängig davon, ob Sie ein erfahrener Softwareentwickler oder ein durchschnittlicher Joe sind, sollten Sie zunächst eine Programmiersprache auswählen, bevor Sie lernen, wie Blockchain funktioniert.

Für eine neue, rumpelnde Technologie, die sich rasant entwickelt, ist es die Aufgabe, eine auszuwählen Programmiersprache kann entmutigend sein. Es gibt viele davon und verschiedene Startups und Open Source-Communities haben verschiedene Sprachen ausgewählt, um ihre Produkte zu entwickeln, da ihr Fokus und die gewünschten Funktionen variieren. Es gibt keinen Standard und zu diesem Zeitpunkt; Ihre Wahl würde so ziemlich Ihren persönlichen Kriterien und der Art der Anwendungen entsprechen, die Sie erstellen möchten.

In diesem Artikel werden die beliebtesten Programmiersprachen beschrieben, die in der Blockchain-Entwicklung verwendet werden, um Ihnen bei der Auswahl der am besten geeigneten Option zu helfen. Lassen Sie es uns nicht länger aufschieben und tief in das Kaninchenloch gehen!

Die beliebtesten Programmiersprachen in der Blockchain

In erster Linie müssen wir verstehen, welche der Programmiersprachen am häufigsten verwendet werden, wenn Code in die Blockchain geschrieben wird. Sie werden wahrscheinlich einige bekannte Namen auf dieser Liste sehen.

C.++

Um die Sprachen für die Blockchain-Programmierung zu überprüfen, müssen wir uns ihren Großvater – C ++ – ansehen. Diese Sprache wurde 1985 von Bjarne Stroustrup veröffentlicht, um das ursprüngliche C flexibler zu machen. Mehr als drei Jahrzehnte später wurde es verwendet, um Bitcoin zu bauen.

Im Gegensatz zum ursprünglichen C, das prozessorientiert ist, ist C ++ objektorientiert. Dieser Ansatz macht C ++ beim Schreiben von Code zeiteffizienter. Die Daten werden zusammen mit den Funktionen in sogenannten Objekten gespeichert, die später in anderen Programmen wiederverwendet werden können.

Aufgrund seiner Reife ist es keine Überraschung, dass featurewise C ++ in Bezug auf die Blockchain-Entwicklung recht robust ist. Diese Sprache verfügt über eine Speichersteuerung, die Geschwindigkeit durch effizientes CPU-Management gewährleistet, Threading, mit dem parallele / nicht parallele Aufgaben gleichzeitig ausgeführt werden können, eine Semantik zum bequemen Kopieren von Daten, einen Polymorphismus zur Kompilierungszeit für eine bessere Leistung durch Aufteilung der Verantwortlichkeiten und eine Codeisolierung zum Trennen von Datenstrukturen . Darüber hinaus besteht die Benutzerbasis aus mehr als vier Millionen Entwicklern.

Der Hauptnachteil von C ++ für Blockchain-Entwickler ist, dass es nicht für intelligente Verträge geeignet ist. Dies bedeutet nicht, dass ein intelligenter Vertrag unter C ++ nicht codiert werden kann, sondern dass einige Änderungen implementiert werden müssen. Dies ist der Grund, warum Blockchain-spezifische Sprachen auftauchten.

Vorteile: unabhängig und plattformübergreifend, schnell, ähnlich wie C.

Nachteile: ziemlich schwer zu meistern, komplex und manchmal schwer zu debuggen, keine Speicherbereinigung

Am besten geeignet für: fortgeschrittene Benutzer, die die Prinzipien von Bitcoin verstehen

C #

C # ist jünger als C ++, aber es ist auch ziemlich alt. Es wurde Ende der 90er Jahre bei Microsoft entwickelt und gewann schnell an Bedeutung in der Entwicklergemeinde. Es handelt sich um eine OOP-Sprache (Objective-Oriented Programming), die hervorragende Funktionen für Unternehmensanwendungen, Cloud- und plattformübergreifende Entwicklung bietet. Diese Sprache wird weitgehend von Microsoft unterstützt und ist sowohl für Profis als auch für Gelegenheitscodierer ein praktisches Tool.

C # ist nicht nur flexibel und leicht zu verstehen, wenn Sie mit C ++ oder Java vertraut sind, sondern bietet auch zahlreiche Funktionen. Zusätzlich zu einigen C ++ – Funktionen bietet C # das .NET-Framework & seine Klassenbibliothek, die Common Language Runtime und Entwicklungsframeworks (wie WPF, XAML und ASP.NET).

C # wird aus mehreren Gründen von großen Spielern in der Blockchain bevorzugt:

  • Die Syntax ist für die große Anzahl von Entwicklern, die bereits mit C ++ vertraut sind (4,4 Millionen Entwickler), leicht zu verstehen..

  • Es ist Open Source.

  • Es ermöglicht das Schreiben von tragbarem Code für mobile Geräte.

  • Es ist aufgrund des BizSpark-Programms erschwinglich.

Zu den bekanntesten Startups, die ihren Code auf C # basieren, gehören NEO und Stratis. Darüber hinaus verfügt C # über ein dediziertes Bitcoin-Framework (NBitcoin). Microsoft fällt nicht zurück und führt die vNext-Blockchain für seine Azure-Plattform ein.

Vorteile: objektorientierte, stark typisierte, dynamische Codeunterstützung

Nachteile: schwache Linux-Unterstützung

Am besten geeignet für: Erstellen von Infrastruktur-Blockchains, Windows-Benutzer

JavaScript

Dies ist vielleicht die mit Abstand anerkannteste Programmiersprache der Welt. Die Webseiten, durch die Sie täglich blättern, verwenden Javascript für ein ausgefallenes Aussehen und erweiterte Funktionen. 2007 prägte Jeff Atwood ein Gesetz:

“Jede Anwendung, die in JavaScript geschrieben werden kann, wird schließlich in JavaScript geschrieben.”

JavaScript ist eine OOP-Sprache, die leicht zu erlernen ist und dennoch vielseitig einsetzbar ist. Mit JS können Entwickler für Clients codieren & Server, IoT-Geräte und maschinelles Lernen. Einer der Hauptvorteile von JavaScript in Bezug auf die Blockchain ist die asynchrone Ausführung von Ereignissen, sodass Knoten frei und effizient kommunizieren können. Eine weitere Stärke von JS ist, dass keine Kompilierung erforderlich ist. Gleichzeitig ist Einfachheit mit Kosten verbunden. Trotz all seiner Funktionen ist JS weit entfernt von C ++, aber es ist eine großartige Sprache für Anfänger.

JavaScript war bei Blockchain-Entwicklern bis zum ICO-Ausbruch im Jahr 2017 nicht sehr beliebt. Derzeit gibt es auf CoinMarketCap mehrere Startups mit hohen Rängen, die auf dieser Sprache basieren, wie Lisk, Ark und Nimiq. Tron, einer der bekanntesten Konkurrenten von Ethereum, unterstützt auch JavaScript.

Vorteile: Objektorientiert, prototypbasiert, unterstützt funktionale Programmierung

Nachteile: Dynamisch, schwach getippt

Am besten geeignet für: Blockchain-Speicherplatz betreten, dApps erstellen

Python

Python wurde auf minimalistische Weise erstellt. Deshalb ist diese Sprache extrem einfach zu lernen und ein guter Einstiegspunkt für Anfänger. Es wurde 1991 gegründet und diente einer Vielzahl von Zwecken wie Anwendungsentwicklung, Entwicklung von Netzwerkservern, IoT und anderen. Es ist vielleicht noch nicht so anerkannt wie JS, aber es sorgt in der Technologiewelt sicherlich für mehr Aufsehen.

Python ist eine OOP-Sprache. Es ist eine Freude zu codieren und es ist universell. Um eine einfache Blockchain zu codieren, benötigen Sie nicht mehr als 50 Zeilen. Sobald der Code geschrieben ist, kann er auf mehreren Geräten mit einem anderen installierten Betriebssystem ausgeführt werden. Es gibt auch eine riesige Bibliothek von Frameworks wie Tensorflow und Django, obwohl deren Dokumentation in einigen Fällen unvollständig sein kann. Hinzu kommt derzeit, dass es spezielle Bibliotheken gibt, die sich der Blockchain-Entwicklung widmen. Wie JavaScript erfordert Python keine Kompilierung, kann jedoch wie C # und C ++ kompiliert werden. Kombinieren Sie es mit einer speziellen Testumgebung, die mitgeliefert wird, und Sie erhalten ein Schweizer Taschenmesser für Ihre Blockchain-Reise.

Python wurde von den Superstars der Branche anerkannt. IBM Hyperledger hat es in Sawtooth implementiert und Ethereum hat eine eigene Iteration dieser Sprache erstellt: Pyethereum.

Vorteile: Sehr einfach zu erlernen, vorgefertigte Bibliotheken und Frameworks, effizient

Nachteile: Meistens als Serversprache verwendet, nicht so intelligenter Kontext

Am besten geeignet für: Erstellen von dApps für Anfänger

Gehen

Golang (oder Go) ist eine Open-Source-Sprache, die von C abgeleitet ist. Es ist eine sehr junge Sprache, die 2007 von Entwicklern von Google eingeführt wurde. Die Implementierung der Syntax in Go ist eher Python-ähnlich – es ist einfach, Effizienz zu bieten und damit erstellte Projekte zukunftssicher zu machen.

Zu den Stärken von Go bei der Blockchain-Programmierung gehört die Verfügbarkeit modularer Programmierung, die den Entwicklungsprozess flexibel macht, bequeme Testwerkzeuge und eine riesige Funktionsbibliothek. Für Cloud-Computing-Entwickler wäre dies am attraktivsten, da verteilte Berechnungen in Bezug auf diese Sprache sehr einfach sind. Obwohl diese Sprache kompiliert werden muss, ist dies ein guter Sicherheitsfaktor, da alle Fehler der Person angezeigt werden, die den Code vor dem Start schreibt. Darüber hinaus erhöht die parallele Programmierung zusammen mit Goroutinen die Effizienz des Codes und den Durchsatz der Anwendungen. Dies ist entscheidend für die Skalierbarkeit, die heute im Blockchain-Bereich ein Problem darstellt. Schließlich läuft Go mit dem Betriebssystem, nicht darüber. Dadurch entfällt ein zusätzlicher Schritt beim Erstellen von EVMs, wodurch die Geschwindigkeit erhöht wird.

Go ist eine bekannte Sprache in der Blockchain-Sphäre. Betrachten Sie IBM Hyperledger, das Golang zum Codieren intelligenter Verträge auf seiner Fabric verwendet. Docker ist kein Blockchain-Startup, funktioniert jedoch mit den verteilten Systemen und wurde mit Go erstellt.

Vorteile: Speichersicherheit, Speicherbereinigung, stark typisiert

Nachteile: Nicht so einfach zu erlernen, relativ kleine Community, eine kleine Anzahl von Paketen

Am besten geeignet für: Erstellen von Cloud-dApps

Solidität

Solidität ist jung wie Golang. Es wurde 2014 von Christian Reitwiessner und seinem Team veröffentlicht. Es ist eine Sprache, die entwickelt wurde, um intelligente Verträge über Ethereum zu schreiben. Deshalb ist sie im Ethereum-Ökosystem am beliebtesten. Es ist erwähnenswert, dass das Ökosystem in den letzten zwei Jahren aufgrund der verschiedenen Startups, die den Markt überschwemmen, hunderte Male gewachsen ist. Infolgedessen hat Solidity eine große Benutzerbasis. Sein Standard (ERC20) ist zum Grundnahrungsmittel der Branche geworden.

Solidität ist OOP und eine kontaktorientierte Sprache. Es ist auch vollständig, was bedeutet, dass es verschiedene Datenmanipulationsregeln interpretieren kann. Die Syntax von Solidity ähnelt der von JavaScript, es gibt jedoch einige Ähnlichkeiten mit C.++ & Python auch. Trotz seines frühen Stadiums ist Solidity eine funktionale Sprache, sie bietet Vererbung, verschiedene Bibliotheken usw. Der Nachteil der Jugend sind die Probleme mit der Dokumentation, die einige Entwickler in eine schwierige Lage bringen können.

Derzeit sind EVM und Smart Contracts die wichtigsten Anwendungsfälle für Solidity. Es ist nicht viel, aber diese sind so wichtig und blockchain-spezifisch, wie es nur sein könnte. Wenn Sie eine dApp erstellen möchten, ist Solidity Ihre erste Wahl.

Vorteile: Statisch typisiert, leicht zu erlernen, trendy

Nachteile: Nicht universell, verletzlich

Am besten geeignet für: Entwicklung der Smart Contracts

Grundlagen der Codierung in der Blockchain

Nachdem wir die beliebtesten Programmiersprachen in der Blockchain überprüft haben, ist es an der Zeit, sich mit der eigentlichen Codierung die Hände schmutzig zu machen. Lassen Sie uns sehen, wie die grundlegenden Operationen in Begriffen über verschiedene Programmiersprachen ausgeführt werden.

Bevor wir beginnen, ist es eine gute Sache, unser Wissen darüber, was eine Blockchain ist, zu verfeinern. Eine Blockchain ist ein verteiltes Ledger mit Transaktionen, die in eine Blockkette eingegeben werden. Ein Block ist ein Platzhalter für Transaktionsdatensätze. Jeder neue Block hat einen Zeiger auf den vorherigen in Form einer Hash-Funktion. Nachdem der Block voll ist, wird mit allen Transaktionen ein Hash generiert und an ihn angehängt. Es gibt auch einen Zeitstempelserver, der doppelte Ausgaben verhindert, und einen Konsensmechanismus, mit dem Knoten sich auf die richtige Version des Hauptbuchs einigen können.

Zeit, die Theorie in die Praxis umzusetzen. Der Zweck ist nicht, eine vollständige App zu erstellen, sondern zu zeigen, wie der Prozess aussieht.

  1. C.++

    Jede Blockchain da draußen hat einen fest codierten Anfangsblock, der als Genesis-Block bezeichnet wird. Lassen Sie uns eine erstellen.

    C ++ Genesis BlockBild von Utoday

    Jetzt können wir einen weiteren Block erstellen. Dazu geben wir getLatestBlock () ein..

    C ++ Blöcke hinzufügenBild von Utoday

C ++ - KonsensBild von Utoday

Der Konsensmechanismus ist eine einfache “for” -Schleifenfunktion, die ab 1 über alle Blöcke läuft, da der 0-Genesis-Block nicht überarbeitet werden muss.

  1. C #

    Die Datenstruktur für eine Blockchain in C # ist ziemlich einfach. Es hat Block & Blockchain-Klassen. Hier sind sie.

    C # -BlockBild von UtodayC # BlockchainBild von Utoday

    Wenn wir die Struktur visualisieren, sieht es so aus:

C # Blockchain-StrukturBild von https://www.c-sharpcorner.com/

So fügen wir neue Blöcke hinzu:

C # Blöcke hinzufügenBild von Utoday

Um unsere Blockchain zu einem Konsens zu bringen, z. Validieren Sie es, wir benötigen nur 2 Codezeilen zusammen mit einer IsValid-Methode, die Daten in jedem der Blöcke überprüft und Hashes vergleicht.

C # -KonsensBild von Utoday

  1. JavaScript

    Jetzt erreichen wir Gebiete mit besser zugänglichen Sprachen. Dies sollte mehr Spaß machen, wenn Sie keine Programmiererfahrung haben. Um eine Blockchain zu erstellen, benötigen wir eine Laufzeitumgebung wie Node.js. Jeder der zusätzlichen Blöcke enthält die folgenden Daten: Index, Erstellungszeitpunkt, Sonstiges (wie Absender) & Empfängeradressen und der übertragene Betrag), der Hash des vorherigen Blocks, der eigene Hash. Sobald dies erledigt ist, ist es Zeit, zur Hardcodierung des Genesis-Blocks überzugehen:

    JavaScript-Genesis-BlockBild von Utoday

    Nachdem wir den Genesis-Block erhalten haben, werden wir nun Blöcke mit neuen Daten über eine nextBlock-Funktion hinzufügen. Diese Funktion durchläuft automatisch alle 5 Datentypen und fügt sie in jeden neuen Block ein.

    JavaScript-ErstellungsblockBild von Utoday

JavaScript fügt Blöcke hinzuBild von Utoday

  1. Python

    Dieses Mal werden wir zunächst verstehen, wie eine Transaktion in Python aussieht. Es ist ein einfacher Beitrag mit Zeitstempel und einigen angehängten Daten.

    Python-TransaktionBild von Utoday

    Diese Transaktionen werden in die Blöcke gelangen. Lassen Sie uns diese Klasse vorstellen.

Python-BlockBild von Utoday

Wir werden SHA-256 verwenden, das in Bitcoin verwendet wird, um Hashes zur Validierung der Integrität unserer Blockchain zu erstellen.

Python-HashBild von Utoday

Jetzt können wir die Blöcke hinzufügen, aber zuerst wollen wir den Proof-of-Work-Algorithmus einführen, der sicherstellt, dass die Daten in der Blockchain nicht beschädigt wurden.

Python PoWBild von Utoday

Danach können wir die Blockchain starten.

  1. Gehen

    Wir beginnen mit der Definition der Eigenschaften unserer Blöcke. BPM sind beliebige Daten wie Netzwerktransaktionen, Adressen usw..

    Golang BlockBild von Utoday

    Um Blöcke zu erstellen, müssen wir Daten in ihnen hashen und durch entsprechende Ergebnisse verketten. Der Code zum Hashing von Daten innerhalb eines Blocks in Go sieht folgendermaßen aus:

    Schließlich können wir mit der Funktion generateBlock neue Blöcke erstellen. Zeit zum Schreiben des Konsenses, der durch die Funktion isBlockValid dargestellt wird.

    Da alle Dinge festgelegt sind, sind wir bereit, den Blockproduktionsprozess zu starten. Beachten Sie, dass die Blockchain zu diesem Zeitpunkt einen Server benötigt, auf dem sie ausgeführt werden kann. Daher gibt es einige zusätzliche Codebits, die dies widerspiegeln.

    Golang-HaschBild von Utoday

  2. Solidität

    Das Erstellen intelligenter Verträge unterscheidet sich von dem, was wir gerade überprüft haben, ist aber immer noch einfach. Zuerst müssen wir einen Vertrag erstellen und ihn benennen. Dieser Vertrag ist für den Willen einer Person. Im Todesfall werden die Gelder automatisch an bestimmte Adressen verteilt.

    SoliditätsvertragBild von Utoday

    Hier geben wir die Ethereum-Adresse des Eigentümers (Eigentümer), den für die Verteilung verbleibenden Betrag (Einheit) und die bedingte Variable für den Status des Eigentümers (bool) an. Der nächste Schritt besteht darin, Modifikatoren hinzuzufügen, die die bedingte Logik erweitern, um eine Funktion mit dem Status des Besitzers bereitzustellen.

    In diesem Fall können wir die Adressen skizzieren, die das Erbe erhalten werden. Dann geben wir weiterhin die Verteilung der Mittel an, falls isDeceased = true ist. Bitte beachten Sie, dass wir zu diesem Zeitpunkt die Funktion vor der Öffentlichkeit verbergen können, indem wir “privat” neben die Funktion “Auszahlung” setzen. Voila, der Code kann jetzt bereitgestellt werden.

    FestigkeitsmodifikatorenBild von Utoday

Zusammenfassung

Zusammenfassend lässt sich sagen, dass es keine ultimative blockchain-fokussierte Programmiersprache gibt. Die Blockchain selbst steckt noch in den Kinderschuhen und es gibt unerforschte Horizonte und unberührte Gründe. Wie in vielen anderen Bereichen besteht die beste Möglichkeit, sich sicher zurechtzufinden, darin, ein Full-Stack-Entwickler zu werden. Dies kann eine schwierige Aufgabe sein, wenn man bedenkt, wie viel Wissen Sie benötigen. Glücklicherweise weisen viele Programmiersprachen Ähnlichkeiten in Syntax und Struktur auf, um den Übergang zu erleichtern.

Wenn Sie eine Sprache auswählen müssen, müssen Sie den Kontext berücksichtigen. Wenn Sie sich auf das Erstellen von Infrastrukturprojekten konzentrieren möchten, passen C ++ und C # besser zu Ihnen. Für den Fall, dass Sie von der Entwicklung der Apps zusätzlich zu den vorhandenen Blockchains mehr fasziniert sind, sollten Sie JavaScript, Python und Go in Betracht ziehen. Wenn Sie nur Ihr eigenes ERC20-Token starten möchten, wird Solidity zweifellos Ihre Anforderungen abdecken.

Sie sollten auch bedenken, dass Blockchains sprachunabhängig sind. Mit der Einführung neuer Sprachen wie Simplicity und der Integration bestehender Sprachen wie SQL werden die Grenzen zwischen ihnen immer mehr verwischt. Denken Sie daran, eine Sprache ist nur ein Werkzeug und Sie können sie für jeden Zweck verwenden. Unser bester Rat wäre, dass Sie, wenn Sie bereits mit einigen Sprachen vertraut sind, diese weiterhin beherrschen – Sie werden definitiv in der Lage sein, Blockchains mit ihnen zu erstellen. Wenn Sie gerade erst anfangen, versuchen Sie, den einfachsten Einstiegspunkt zu finden – schauen Sie mehr in Richtung JavaScript und Solidity.