Heim  >  Artikel  >  Backend-Entwicklung  >  Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

青灯夜游
青灯夜游Original
2021-03-04 15:42:537378Durchsuche

Grund: 1. Die Go-Sprache bietet die Vorteile einer einfachen Bereitstellung, einer hervorragenden Leistung, einer guten parallelen Ausführungsleistung, eines guten Sprachdesigns, einer großen Anzahl integrierter Bibliotheken und eines großartigen Teams. 2. Sowohl Ethereum als auch Hyperledger haben sich für die Verwendung von Go als Entwicklungssprache entschieden. Diese beiden Super-Blockchains haben großen Einfluss und besetzen nicht nur eine große Nische in der Ökologie, sondern haben tatsächlich auch implizit die Blockchain-Standards formuliert.

Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, GO 1.18, Thinkpad T480-Computer.

Im öffentlichen Blockchain-Entwicklungskreis haben wir einige beliebte Programmiersprachen gefunden, darunter C++, Golang, Python und das kürzlich eingeführte Rust usw.

Lassen Sie uns einige Statistiken zu den Programmiersprachen erstellen, die von bekannteren Projekten verwendet werden, wie unten gezeigt:

Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

Öffentliche Ketten der älteren Generation wie Bitcoin und Litcoin verwenden im Allgemeinen C/C++ (schauen wir uns das damals an). , zu diesem Zeitpunkt war Go noch nicht verfügbar), die neue Generation öffentlicher Ketten wie Ethereum und der Anführer der Allianzkette Hyperledger haben begonnen, die Go-Sprache häufiger zu verwenden Die Dynamik von Rust ist ebenfalls sehr stark. In den letzten zwei Jahren haben viele öffentliche Ketten wie Bot Both Card und Grin begonnen, die Rust-Sprache für die Entwicklung zu verwenden.

Vorteile der Go-Sprache

Einfach bereitzustellen

Go kompiliert und generiert ist eine statische ausführbare Datei ohne andere externe Abhängigkeiten außer glibc. Dies macht die Bereitstellung äußerst komfortabel: Auf dem Zielcomputer sind nur ein Basissystem und die erforderlichen Verwaltungs- und Überwachungstools erforderlich, und Sie müssen sich keine Gedanken über die Abhängigkeiten verschiedener Pakete und Bibliotheken machen, die für die Anwendung erforderlich sind, was den Wartungsaufwand erheblich reduziert. Es kann direkt in Maschinencode kompiliert werden und ist nicht auf andere Bibliotheken angewiesen. Die Bereitstellung erfolgt durch Hochwerfen einer Datei.

Hervorragende Leistung

Obwohl es nicht so gut wie C und Java ist, ist es normalerweise eine Größenordnung höher als native Python-Anwendungen und eignet sich zum Schreiben einiger Engpassunternehmen. Auch der Speicherverbrauch ist sehr sparsam.

Parallelität und Kanäle

Goroutine und Kanal machen es sehr einfach, serverseitige Software mit hoher Parallelität zu schreiben. In vielen Fällen besteht keine Notwendigkeit, den Sperrmechanismus und die verschiedenen dadurch verursachten Probleme zu berücksichtigen. Eine einzelne Go-Anwendung kann auch mehrere CPU-Kerne effektiv nutzen und eine gute parallele Ausführungsleistung erzielen.

Gutes Sprachdesign

Go ist sehr einfach und leicht zu erlernen. Aus akademischer Sicht ist die Go-Sprache eigentlich sehr mittelmäßig und unterstützt nicht viele erweiterte Sprachfunktionen. Aus technischer Sicht ist das Design von Go jedoch sehr gut: Die Spezifikationen sind einfach und flexibel genug. Aufgrund der Einfachheit von Go kann jeder Python-, Elixir-, C++-, Scala- oder Java-Entwickler innerhalb eines Monats ein effizientes Go-Team bilden.

Standardbibliothek und Tools

Go verfügt derzeit über eine große Anzahl integrierter Bibliotheken, insbesondere die Netzwerkbibliothek ist sehr leistungsfähig. Noch wichtiger ist, dass Go über eine vollständige Toolkette verfügt, die die Konsistenz der Teamzusammenarbeit erheblich verbessert. Beispielsweise formatiert gofmt Go-Code automatisch, wodurch das Problem inkonsistenter Formatierungsstile von Codes, die von verschiedenen Personen geschrieben wurden, weitgehend beseitigt wird. Konfigurieren Sie den Editor so, dass beim Bearbeiten des Archivs automatisch gofmt ausgeführt wird, sodass Sie es beim Schreiben von Code an einer beliebigen Stelle platzieren können und es beim Archivieren automatisch zu korrekt formatiertem Code wird. Darüber hinaus gibt es sehr nützliche Tools wie Gofix und Govet.

Das Team ist großartig

Der Unterstützer der Go-Sprache ist genug, um in verschiedenen Szenarien getestet zu werden. Gleichzeitig ist der Gründer auch der Vater der C-Sprache auf die anschließende Entwicklung und Innovation.

Go erfolgreiche Projekte

Die Go-Sprache wurde im Cloud-Zeitalter häufig verwendet, insbesondere mit dem Aufkommen von Killerprodukten wie Docker und K8s, was der Go-Sprache zusätzlich zu Go einen Platz in der Ingenieurswelt verschafft hat Sprache Es gibt auch viele erfolgreich laufende Software:

nsq: Bitlys Open-Source-Nachrichtenwarteschlangensystem, das eine sehr hohe Leistung aufweist. Sie verarbeiten derzeit täglich Milliarden von Nachrichten.

Packer: Wird zum Generieren von Bilddateien für verschiedene Plattformen verwendet, z B. VM, Vbox, AWS usw., der Autor ist der Autor von Vagrant

skynet: verteiltes Planungsframework Doozer: verteiltes Synchronisierungstool, ähnlich wie ZooKeeper

Heka: Mazila Open-Source-Protokollverarbeitungssystem

cbfs: Couchbase Open Source verteiltes Dateisystem

tsuru: eine Open-Source-PAAS-Plattform, die genau die gleichen Funktionen wie SAE hat

groupcache: ein Caching-System für Google-Download-System, geschrieben vom Autor von Memcahe

god: ein Caching-System ähnlich wie Redis, aber Unterstützt Verteilung und Skalierbarkeit

gor: Tool zur Erfassung und Wiedergabe von Netzwerkverkehrspaketen

Ökologische Kartensteckplätze und implizite Standards

Neben der Notwendigkeit harter Arbeit gibt es auch Chancen und Glück, die die Blockchain dazu veranlasst haben, sich für die Go-Sprache zu entscheiden. Werfen wir einen Blick auf die erfolgreichsten öffentlichen und konsortialen Kettenvertreter seit Blockchain 2.0, Ethereum und Hyperledger Fabric. Sie alle entscheiden sich ausnahmslos für die Verwendung von Go als Entwicklungssprache (obwohl Ethereum tatsächlich Client-Versionen in anderen Sprachen hat, aber nach dem Der Einfluss dieser beiden Super-Blockchains ist nicht mit dem von gewöhnlichen Projekten vergleichbar. Sie besetzen nicht nur eine große Nische in der Ökologie, sondern sind auch implizit formuliert Unabhängig davon, ob es sich um intelligente Verträge in der öffentlichen Kette oder um Allianzkettentechnologie handelt, können Ethereum und Fabric nicht umgangen werden. Was ist also für ein Unternehmen, das sich für die Blockchain-Technologie entscheiden möchte, der schnellste Weg?

Natürlich kopieren wir die Innovationen dieser beiden Projekte direkt. Dann ist es für Nachzügler natürlich nicht einfach, sie erneut zu implementieren. Und wenn Sie sich für einige Neuerungen entscheiden, fehlt einer Sprache, die noch nicht sehr ausgereift ist, auch die Unterstützung einiger spezifischer Bibliotheken, was die Durchführung des Projekts verhindert.

Viele Menschen haben keinen Zweifel am Einfluss von Ethereum, aber tatsächlich ist der Einfluss von Fabric auf die Blockchain-Bereitstellung in Unternehmen nicht zu unterschätzen:

Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

Diagrammquelle „2019 Global Enterprise Blockchain Benchmark Research Report“ 》

Hyperledger Fabric ist am stärksten verwendetes Protokoll-Framework in bereitgestellten Unternehmens-Blockchain-Netzwerken Hyperledger (dessen Flaggschiff-Protokoll Fabric ist) ist mit einem Anteil von 53 % das am häufigsten von Integratoren und Softwareentwicklungsplattformen unterstützte Protokoll-Framework. Unter allen Büchern zur Blockchain-Technologie bestätigt auch die Tatsache, dass Bücher über Hyperledger am beliebtesten sind, den Einfluss von Hyperledger.

Übung von Bytom in der Go-Sprache

Bei der Auswahl der Programmiersprachen haben wir C, C++ und Java in Betracht gezogen. Allerdings ist es schwierig, große C/C++-Projekte zu verwalten, und Java ist etwas schwieriger . Zu diesem Zeitpunkt hat die Go-Sprache bereits in Blockchain-Projekten glänzt und sich nach und nach auf die Technologie und die Talente ausgewirkt. Daher wird der Widerstand, auf den das ursprüngliche Bytom-Projekt stößt, natürlich verringert Natürlich haben wir im Laufe des schrittweisen Entwicklungsprozesses auch den Komfort und die Vorteile gespürt, die die Wahl der Go-Sprache mit sich bringt.

Ein Fall von Go in der Blockchain

Technisch gesehen erfordern Blockchain-Knoten mehrere Module, um asynchron zu arbeiten, daher sind die Parallelität und Kanäle der Go-Sprache sehr vorteilhaft. Schauen wir uns das folgende Verifizierungsbeispiel an:

func ValidateTxs(txs []*bc.Tx, block *bc.Block) []*ValidateTxResult {
    txSize := len(txs)
    //init the goroutine validate worker
    var wg sync.WaitGroup
    workCh := make(chan *validateTxWork, txSize)
    resultCh := make(chan *ValidateTxResult, txSize)
    closeCh := make(chan struct{})
    for i := 0; i <= validateWorkerNum && i < txSize; i++ {
        wg.Add(1)
        go validateTxWorker(workCh, resultCh, closeCh, &wg)
    }

    //sent the works
    for i, tx := range txs {
        workCh <- &validateTxWork{i: i, tx: tx, block: block}
    }

    //collect validate results
    results := make([]*ValidateTxResult, txSize)
    for i := 0; i < txSize; i++ {
        result := <-resultCh
        results[result.i] = result
    }

    close(closeCh)
    wg.Wait()
    close(workCh)
    close(resultCh)
    return results
}

Wir verwenden Routine +Ch+WaitGroup zum Aufbau einer gleichzeitigen Transaktionsüberprüfungsfunktion innerhalb von 30 Codezeilen. Mit einem Server mit hoher Konfiguration können wir mehr als 100.000 TPS ausführen.

Einfach ein Go-Sprachmeister werden

In Bezug auf Talent haben einige Mitglieder des Bytom-Kernentwicklungsteams noch nie zuvor an der Go-Sprachentwicklung gearbeitet, aber sie können schnell beginnen und im Grunde innerhalb eines halben Monats an der Entwicklung teilnehmen und die Wartung des Kerncodes ist einfacher (besonders einfach für Entwickler mit Erfahrung in C/C++/Java). Dies ist der Vorteil einfacher Sprache für die Teambildung.

Einheitliche Zusammenarbeit

Aus Sicht der Zusammenarbeit kann das automatische Setzen von Go-Code durch gofmt die Unterschiede in den von Kernteammitgliedern und sogar Community-Entwicklern übermittelten Codestilen minimieren und so die Gesamtqualität und Zuverlässigkeit des Projekts verbessern.

Zusammenfassung

Die Eigenschaften und Vorteile der Go-Sprache selbst haben den Weg dafür geebnet, und der Segen zweier Super-Blockchain-Projekte, Ethereum und Hyperledger, hat die Go-Sprache auch zum Ausgangspunkt für viele Blockchain-Projekte gemacht. Bytom wählt als erste Wahl die Go-Sprache, um deren Vorteile bei der Entwicklung der untersten Schicht der Blockchain voll auszuschöpfen. Es besteht jedoch kein Grund, in die Falle von Sprachstreitigkeiten zu tappen. Das Kernprojekt von Bytom Verwendet Go. Es wird in der Go-Sprache fertiggestellt, viele umliegende Teilprojekte werden jedoch auch in Java, Python oder JavaScript implementiert. Schließlich ist ökologische Vielfalt die Grundlage für die Langlebigkeit eines Projekts.

Empfohlenes Lernen: Golang-Tutorial

Das obige ist der detaillierte Inhalt vonWarum die Go-Sprache verwenden, um Blockchain zu schreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn