Inhaltsverzeichnis
Vorteile der Go-Sprache
Einfach bereitzustellen
Hervorragende Leistung
Parallelität und Kanäle
Gutes Sprachdesign
Standardbibliothek und Tools
Das Team ist großartig
Go erfolgreiche Projekte
Ökologische Kartensteckplätze und implizite Standards
Übung von Bytom in der Go-Sprache
Ein Fall von Go in der Blockchain
Einheitliche Zusammenarbeit
Zusammenfassung
Heim Backend-Entwicklung Golang Warum die Go-Sprache verwenden, um Blockchain zu schreiben?

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

Mar 04, 2021 pm 03:42 PM
go语言 区块链

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
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles