Table des matières
Avantages du langage Go
Déploiement facile
Excellentes performances
Concurrency & Channels
Une bonne conception du langage
Bibliothèque et outils standard
L'équipe est géniale
Projets Go réussis
Emplacements pour cartes écologiques et normes implicites
Pratique de Bytom en langage Go
Un cas de Go sur la blockchain
Collaboration unifiée
Résumé
Maison développement back-end Golang Pourquoi utiliser le langage Go pour écrire une blockchain

Pourquoi utiliser le langage Go pour écrire une blockchain

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

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Apr 02, 2025 pm 04:00 PM

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes? Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes? Apr 02, 2025 pm 04:09 PM

Pourquoi l'itération de la carte dans GO fait-elle que toutes les valeurs deviennent le dernier élément? En langue go, face à des questions d'entrevue, vous rencontrez souvent des cartes ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

See all articles