Maison > développement back-end > Golang > Pourquoi utiliser le langage Go pour écrire une blockchain

Pourquoi utiliser le langage Go pour écrire une blockchain

青灯夜游
Libérer: 2023-02-13 15:27:28
original
7564 Les gens l'ont consulté

Raisons : 1. Le langage Go présente les avantages d'un déploiement simple, d'excellentes performances, de bonnes performances d'exécution parallèle, d'une bonne conception du langage, d'un grand nombre de bibliothèques intégrées et d'une excellente équipe. 2. Ethereum et Hyperledger choisissent d'utiliser Go comme langage de développement ; ces deux super blockchains ont une grande influence, occupant non seulement une grande niche dans l'écologie, mais en fait, elles ont également implicitement formulé les normes de la blockchain.

Pourquoi utiliser le langage Go pour écrire une blockchain

L'environnement d'exploitation de ce tutoriel : système Windows 10, GO 1.18, ordinateur thinkpad t480.

Dans le cercle de développement de blockchain publique, nous avons trouvé des langages de programmation populaires, notamment C++, Golang, Python et Rust récemment lancé, etc.

Faisons quelques statistiques sur les langages de programmation utilisés par les projets les plus connus, comme indiqué ci-dessous :

Pourquoi utiliser le langage Go pour écrire une blockchain

Chaînes publiques d'ancienne génération, comme Bitcoin et Litcoin. Bien sûr, nous avons assisté au développement de Rust. Au cours des deux dernières années, de nombreuses chaînes publiques telles que Polkadot et Grin ont commencé à utiliser le langage Rust pour le développement.

Avantages du langage Go

Déploiement facile

Compilation Go Ce qui est généré est un fichier exécutable statique sans autre dépendance externe que la glibc. Cela rend le déploiement extrêmement pratique : seuls un système de base et les outils de gestion et de surveillance nécessaires sont nécessaires sur la machine cible, et il n'y a pas lieu de s'inquiéter des dépendances des divers packages et bibliothèques requis par l'application, ce qui réduit considérablement la charge de maintenance. Il peut être directement compilé en code machine et ne s'appuie pas sur d'autres bibliothèques. La version de la glibc a certaines exigences. Le déploiement est effectué en lançant un fichier.

Excellentes performances

Bien qu'elles ne soient pas aussi bonnes que C et Java, elles sont généralement d'un ordre de grandeur supérieur aux applications Python natives et conviennent pour avoir écrit certaines entreprises à goulot d'étranglement. L'utilisation de la mémoire est également très économique.

Concurrency & Channels

Goroutine et Channel rendent très facile l'écriture de logiciels serveur à haute concurrence, et dans de nombreux cas, cela est complètement inutile Considérez le mécanisme de verrouillage et les différents problèmes qu’il entraîne. Une seule application Go peut également utiliser efficacement plusieurs cœurs de processeur et obtenir de bonnes performances d'exécution parallèle.

Une bonne conception du langage

Go est très simple et facile à apprendre. D'un point de vue académique, le langage Go est en fait très médiocre et ne prend pas en charge de nombreuses fonctionnalités avancées du langage ; mais d'un point de vue technique, la conception de Go est très bonne : les spécifications sont suffisamment simples et flexibles. En raison de la simplicité de Go, n'importe quel développeur Python, Elixir, C++, Scala ou Java peut former une équipe Go efficace en un mois.

Bibliothèque et outils standard

Go dispose actuellement d'un grand nombre de bibliothèques intégrées, en particulier la bibliothèque réseau qui est très puissante. Plus important encore, Go est livré avec une chaîne d’outils complète, ce qui améliore considérablement la cohérence de la collaboration en équipe. Par exemple, gofmt formate automatiquement le code Go, ce qui élimine en grande partie le problème des styles de formatage incohérents des codes écrits par différentes personnes. Configurez l'éditeur pour qu'il exécute automatiquement gofmt lors de la modification de l'archive, afin que vous puissiez le placer à volonté lors de l'écriture du code, et il deviendra automatiquement du code correctement saisi lors de l'archivage. De plus, il existe des outils très utiles tels que gofix et govet.

L'équipe est géniale

Le partisan derrière le langage Go est Google. Le langage est suffisant pour être testé dans divers scénarios, et le fondateur. est également le père du langage C, nous pouvons nous attendre avec impatience au développement et à l'innovation futurs.

Projets Go réussis

Le langage Go a été largement utilisé à l'ère du cloud, en particulier des produits tueurs comme Docker et K8s L'émergence du langage Go lui a donné une place dans le monde de l'ingénierie. En plus du langage Go, il existe de nombreux logiciels qui fonctionnent avec succès :

nsq : système de file d'attente de messages bitly open source, qui a actuellement de très hautes performances, ils le traitent tous les jours. jour Des milliards de messages

packer : utilisé pour générer des fichiers image pour différentes plateformes, telles que VM, vbox, AWS, etc. L'auteur est l'auteur de vagrant

skynet : framework de planification distribuée Doozer : Outil de synchronisation distribué, similaire à ZooKeeper

Heka : système de traitement des journaux open source mazila

cbfs : système de fichiers distribué open source couchbase

tsuru : plateforme PAAS open source, et Les fonctions implémentées par SAE sont exactement les mêmes

groupcache : un système de mise en cache pour le système de téléchargement de Google écrit par l'auteur de memcahe

god : un système de mise en cache similaire à Redis, mais prend en charge la distribution et l'évolutivité

gor : Outil de capture et de relecture des paquets de trafic réseau

Emplacements pour cartes écologiques et normes implicites

En plus de la nécessité de travailler dur, il y a aussi des opportunités et de la chance qui ont poussé la blockchain à choisir le langage Go. Jetons un coup d'œil aux représentants de chaînes publiques et de consortiums les plus performants depuis blockchain 2.0, Ethereum et Hyperledger Fabric. Sans exception, ils choisissent tous d'utiliser Go comme langage de développement (bien qu'Ethereum ait en fait des versions client dans d'autres langages, mais entrant après le). Au stade Homestead, le client Go occupe une position dominante). L'influence de ces deux super blockchains n'est pas comparable à celle des projets ordinaires. Non seulement elles occupent une large niche dans l'écologie, mais elles sont aussi implicitement formulées sans les standards. de la blockchain, qu'il s'agisse de contrats intelligents dans la chaîne publique ou de la technologie de la chaîne d'alliance, Ethereum et Fabric ne peuvent pas être contournés. Donc pour une entreprise qui souhaite choisir la technologie blockchain, le moyen le plus rapide Quelle est la mise en œuvre de ?

Bien sûr, les innovations de ces deux projets sont directement copiées. Un autre raccourci consiste à modifier directement le code open source. Alors naturellement, le langage Go devient le premier choix pour les retardataires. Il n'est pas facile de le réimplémenter. dans une autre langue, et si vous choisissez des langages innovants mais peu matures, vous manquerez également du support de certaines bibliothèques spécifiques, ce qui rendra le projet impossible à réaliser.

Beaucoup de gens n'ont aucun doute sur l'influence d'Ethereum, mais en fait, l'influence de Fabric sur le déploiement de la blockchain en entreprise ne peut être sous-estimée :

Pourquoi utiliser le langage Go pour écrire une blockchain

Source du graphique "2019 Global Enterprise Blockchain Benchmark Research Report"

Hyperledger Fabric est le cadre de protocole le plus utilisé dans les réseaux blockchain d'entreprise déployés, et Hyperledger Hyperledger (dont Fabric est le protocole phare) est le cadre de protocole le plus couramment pris en charge par les intégrateurs et le développement de logiciels. plates-formes atteint 53%. Parmi tous les livres sur la technologie blockchain, le fait que les livres sur Hyperledger soient les plus populaires confirme également l'influence d'Hyperledger.

Pratique de Bytom en langage Go

Dans le processus de sélection des langages de programmation, nous avons considéré C, C++, Java, mais c'est difficile pour maintenir de grands projets C/C++, et Java est un peu lourd à l'heure actuelle, le langage Go a déjà brillé dans les projets blockchain, et a progressivement formé un effet de tête sur la technologie et les talents, alors suivez la tendance et réalisez la technologie. la sélection réduira naturellement la résistance rencontrée par le projet Bytom initial. Bien entendu, au cours du processus de développement progressif, nous avons également ressenti la commodité et les avantages apportés par le choix du langage Go.

Un cas de Go sur la blockchain

Techniquement parlant, les nœuds blockchain nécessitent plusieurs modules pour fonctionner ensemble de manière asynchrone, donc la concurrence du langage Go et les canaux sont très avantageux. dans l'exemple suivant de vérification de transaction :

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
}
Copier après la connexion

Nous utilisons Routine+Ch+WaitGroup pour créer une fonction de vérification de transaction simultanée dans 30 lignes de code. Avec le serveur configuré, il peut exécuter plus de 100 000 TPS.

Devenez facilement un maître du langage Go

En termes de talent, certains membres de l'équipe de développement principale de Bytom n'ont jamais fait de développement du langage Go auparavant, mais ils en sont tous capables Vous démarrez rapidement et vous pouvez essentiellement participer au développement et à la maintenance du code de base en un demi-mois (particulièrement facile pour les développeurs ayant une expérience en C/C++/Java). C'est l'avantage d'un langage simple pour la constitution d'une équipe.

Collaboration unifiée

En termes de collaboration, gofmt compose automatiquement le code Go, permettant aux membres de l'équipe principale et même aux développeurs de la communauté de soumettre les différences dans les styles de codage sont minimisés, améliorant ainsi la qualité globale et la maintenabilité du projet.

Résumé

Les caractéristiques et les avantages du langage Go lui-même lui ouvrent la voie, et les deux super blocs d'Ethereum et Hyperledger Le La bénédiction des projets de chaîne a également fait du langage Go le premier choix pour de nombreux projets de blockchain. Bytom a choisi le langage Go pour réaliser pleinement ses avantages dans le développement de la blockchain sous-jacente, mais il n'est pas nécessaire de tomber dans le piège des conflits linguistiques et de mettre l'accent sur le pragmatisme. C'est le sens propre de l'ingénierie. Le projet principal de Bytom est réalisé en langage Go, mais de nombreux sous-projets environnants sont également implémentés en Java, Python ou JavaScript. Après tout, la diversité écologique est le fondement de la longévité d'un projet.

Apprentissage recommandé : Tutoriel Golang

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal