
Rien ne permet de mieux comprendre les blockchains que d’en créer une vous-même
Ceci est la PARTIE 4 de Le guide du chef de produit sur la blockchain séries! Si vous avez accédé à ma publication pour la première fois, bienvenue! Je vous recommande de commencer par la partie 1, puis de lire la partie 2 et la partie 3 avant de lire cet article. Cependant, si vous êtes du type explorateur, lisez la suite!
(Mettre à jour: Voici la dernière – partie 5 de la série blockchain)
Dans la partie 3 de cette série, nous avons examiné la mécanique d’Ethereum et avons également parlé du concept de comptes Ethereum, de contrats intelligents et Gaz – le carburant qui permet à toutes ces pièces de fonctionner ensemble. Il y a eu beaucoup de lectures jusqu’à présent, mais si vous pouvez lire tout le contenu de la blockchain disponible sur Internet, rien ne permet de mieux comprendre les blockchains que d’en créer une vous-même. C’est donc ce que j’ai fait. Vous pouvez simplement suivre cet article et construire un petit prototype pour voir comment tout ce dont nous avons parlé jusqu’à présent se réunit.
D’accord, commençons
Voici ce que nous allons accomplir dans ce post,
Nous,

Mais, avant de commencer … … résumé rapide

Nous avons déjà vu cela, mais fondamentalement, le réseau de la blockchain Ethereum est simplement un groupe d’EVM (machines virtuelles Ethereum) ou de «nœuds» connectés à tous les autres nœuds pour créer un maillage. Chaque nœud fait une copie de l’ensemble de la blockchain et est en concurrence pour extraire le bloc suivant ou valider une transaction. Chaque fois qu’un nouveau bloc est ajouté, la blockchain se met à jour et est propagée à l’ensemble du réseau, de sorte que chaque nœud est synchronisé.
Pour devenir un nœud du réseau Ethereum, votre ordinateur devra télécharger et mettre à jour une copie de l’ensemble de la blockchain Ethereum. Pour y parvenir, Ethereum fournit des outils que vous pouvez télécharger, vous connecter au réseau Ethereum, puis interagir avec lui. Ceux-ci sont:
Geth — “……if you have experience with web development and are interested in building frontends for dapps, you should experiment with Geth.”
Eth — “…If you want added security by running two different implementations in parallel or are serious about GPU mining, then the C++ “Eth” client is for you.”
Pyethapp — “ …If you are a Python developer that wants to build decentralized apps or are interested in Ethereum for research or an academic purpose, this is a great client”
Chacun de ces outils nous donnera éventuellement accès à un fichier console– un environnement JavaScript qui contient toutes les fonctionnalités de base dont nous aurions besoin plus tard, donc je suppose que quel que soit l’outil que nous choisissons pour configurer la blockchain, nous devrions éventuellement converger vers la console.
J’ai simplement choisi Geth car j’ai des connaissances en développement Web. Le reste de cet article suppose que nous utilisons Geth pour interagir avec le réseau Ethereum.

Geth est un outil d’interface de ligne de commande (CLI) qui communique avec le réseau Ethereum et agit comme un lien entre votre ordinateur, son matériel et le reste des nœuds Ethereum ou des ordinateurs du réseau.
Si un bloc est extrait d’un autre nœud, votre programme Geth le collectera, puis transmettra les nouvelles informations à votre GPU ou CPU pour mettre à jour la blockchain. Avec Geth, vous pouvez
- mine éther (l’éther est la crypto-monnaie qui alimente le réseau Ethereum)
- transférer des fonds entre adresses
- créer des contrats intelligents et leur envoyer des transactions
- explorer l’histoire du bloc e beaucoup plus
Ok, installons Geth

Voici les instructions pour installer Geth sur un Mac. Je viens d’utiliser Homebrew qui rend l’installation de Geth (vraiment n’importe quoi) vraiment facile. Si vous avez un Mac mais que vous n’avez pas Homebrew, vous devez d’abord l’installer.
Utilisateurs Windows et Linux:
Voici les derniers binaires stables pour Windows et Linux à télécharger. Et voici ce qu’il faut faire après l’avoir téléchargé.
Après avoir installé Geth, vous pouvez techniquement vous connecter au réseau de blockchain Ethereum principal ou public et exécuter un nœud Ethereum complet. Mais nous ne voulons pas encore faire cela car si vous lisez cet article, il y a de fortes chances que vous n’ayez pas d’éther (la crypto-monnaie d’Ethereum) et sans éther, vous ne pouvez pas vraiment faire grand-chose sur la blockchain principale.
Et si vous n’avez pas d’éther pour commencer?
Je n’en avais pas non plus, mais Ethereum vous permet de créer le vôtre ‘privé ‘blockchain network, une sorte de version dev / staging du réseau principal. Ce réseau privé est exactement comme la chaîne principale d’Ethereum d’un point de vue fonctionnel, sauf que toutes les transactions et contrats intelligents mis en œuvre sur ce réseau ne sont accessibles qu’aux nœuds connectés à ce réseau privé. C’est donc ce que nous allons faire: nous allons créer une blockchain privée.
Création d’une blockchain Ethereum privée
Geth vous permet de mettre en place une blockchain Ethereum « privée » ou « testnet ». C’est le meilleur moyen d’apprendre les concepts de blockchain que vous entendez et lisez sur Internet. Vous pouvez créer des contrats intelligents, effectuer des transactions et même distribuer des applications, sans avoir besoin d’un véritable éther. Vous pouvez réellement CRÉER votre propre faux Éther, pré-attribuer de l’Éther à votre compte, puis l’utiliser pour traiter, transférer ou mettre en œuvre des contrats intelligents.
Blockchain et le bloc Genesis

Comme vous le savez probablement déjà, une blockchain n’est rien de plus qu’un registre numérique où les transactions sont enregistrées chronologiquement et publiquement. Ces transactions sont enregistrées dans des blocs et les nœuds d’un réseau distribué se font concurrence pour trouver le prochain bloc valide. Une fois qu’un bloc valide est trouvé, il est ajouté à la blockchain et ces informations sont transmises au réseau. Chaque nœud met ensuite à jour sa blockchain avec la dernière copie.
Chaque blockchain commence par un bloc Genesis, le premier bloc de la chaîne, le bloc ZERO, le seul bloc qui n’a pas de prédécesseur.
Pour ensuite créer notre blockchain privée, nous allons créer un bloc de genèse. Pour ce faire, nous allons créer un fichier Genesis personnalisé et demander à Geth d’utiliser ce fichier genesis pour créer notre bloc genesis, qui à son tour sera le début de notre blockchain privée personnalisée.
Voici à quoi ressemble un fichier Genesis:
{
"config": {
"chainId": 987,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "0x400",
"gasLimit": "0x8000000", //set this really high for testing
"alloc": {}
et c’est ce que signifient les attributs …
config: the config block defines the settings for our custom chain and has certain attributes to create a private blockchain
- chainId: identifies our blockchain, the main Ethereum chain has its own ID, but we will set it to a unique value for our private chain.
- homesteadBlock: Homestead is the second major version of the Ethereum platform and is the first production release of Ethereum. It includes several protocol changes. Since we are already on homestead version, this attribute is 0
.
- eip155Block/eip158Block: Homestead version was released with a few backward-incompatible protocol changes, and therefore requires a hard fork. These protocol changes/improvements proposed through a process Ethereum Improvement Proposals (EIPs). Our chain however won’t be hard-forking for these changes, so leave as 0
- difficulty:This value is used to control the Block generation time of a Blockchain. The higher the difficulty, the statistically more calculations a Miner must perform to discover a valid block.On our test network, we will keep this value low to avoid waiting during tests, since the generation of a valid Block is required to execute a transaction on the Blockchain.
- gasLimit: this value specifies current chain-wide limit of 'Gas' expenditure per block. Gas is Ethereum's fuel that is spent during transactions. We will mark this value high enough in our case to avoid being limited during tests.
- alloc: This is where you can create your wallet and pre fill it with fake ether. For this post however, we will mine our ether locally quickly so we don’t use this option.
À ce stade, allons-y et créons notre propre CustomGenesis.json
fichier. J’ai simplement utilisé un éditeur de texte et je l’ai stocké dans un dossier sur mon ordinateur.
Ensuite, ouvrez le terminal et en supposant que Geth est installé, exécutez simplement cet extrait de code
geth — identity “yourIdentity” — init /path_to_folder/CustomGenesis.json — datadir /path_to_your_data_directory/ACPrivateChain
Cet extrait indique à Geth d’utiliser l’extension CustomGenesis.json
fichier que vous avez créé comme premier bloc de votre blockchain personnalisée. Ensuite, nous spécifions également un répertoire de données dans lequel nos données de chaîne privée seront stockées. Geth créera le répertoire de données pour vous. Choisissez simplement un emplacement distinct du dossier public de la chaîne Ethereum, si vous en avez un
Une fois que vous avez exécuté cet extrait dans la fenêtre du terminal, vous devriez voir Geth se connecter au fichier genesis et fournir une confirmation de la même chose

Créez un réseau privé qui partagera cette Blockchain
Ok, donc à ce stade, nous avons créé le début de la chaîne privée. Ensuite, nous allons démarrer notre réseau privé afin de pouvoir extraire de nouveaux blocs qui seront ajoutés à notre chaîne privée.
Pour ce faire, exécutez cette commande sur votre terminal
geth --datadir /path_to_your_data_directory/ACPrivateChain --networkid 9876
Ce fragment dit au geth de démarrer le nôtre Réseau privéet utilisez le répertoire que nous venons de spécifier pour accéder aux détails de notre blockchain privée.
Notez que nous avons également spécifié un paramètre appelé networkid
. Cela marque l’identité de votre réseau Ethereum. Nous avons utilisé 9876 dans cet exemple, mais vous DEVEZ le remplacer par un nombre aléatoire de votre choix pour créer votre propre réseau et empêcher les autres de se connecter par inadvertance à votre réseau
Le réseau principal Ethereum dispose d’un networkid=1
. Voici une liste des ID de réseau et de leurs réseaux correspondants.
0: Olympic, Ethereum public pre-release testnet1
: Frontier, Homestead, Metropolis, the Ethereum public main network1
: Classic, the (un)forked public Ethereum Classic main network, chain ID61
: Expanse, an alternative Ethereum implementation, chain ID
12
: Morden, the public Ethereum testnet, now Ethereum Classic testnet
23
: Ropsten, the public cross-client Ethereum testnet4
: Rinkeby, the public Geth Ethereum testnet42
: Kovan, the public Parity Ethereum testnet7762959
: Musicoin, the music blockchain
Quoi qu’il en soit, une fois que vous exécutez la commande sur votre terminal, votre réseau privé sera actif. Voici ce que mon terminal montre après avoir exécuté l’extrait.

Une autre chose importante. Chaque fois que vous souhaitez accéder à votre chaîne privée, vous devrez exécuter ces deux extraits tels quels et dans cet ordre, car Geth ne se souvient PAS des paramètres de votre réseau blockchain privé. Par conséquent, je vous suggère de sauvegarder les étapes de configuration ci-dessous, afin que vous puissiez y accéder plus tard.
#1
geth — identity “yourIdentity” — init /path_to_folder/CustomGenesis.json — datadir /path_to_your_data_directory/YOUR_FOLDER
#2
geth --datadir /path_to_your_data_directory/ACPrivateChain --networkid YOUR_NETWORK_ID
Si vous avez suivi à ce stade, vous avez une blockchain privée et un réseau privé opérationnel! Nous pouvons maintenant commencer à interagir avec notre chaîne privée et notre réseau privé via un compte.
Créer un compte externe (EOA)
Nous allons maintenant créer un compte pour manipuler notre réseau blockchain. Si vous avez suivi cette série, nous avons parlé des comptes dans notre dernier message.

Une fois la première instance geth ouverte, ouvrez une autre console / terminal et tapez ce qui suit:
geth attach /path_to_your_data_directory/YOUR_FOLDER/geth.ipc
Cela connectera votre deuxième console à l’instance Geth exécutée sur votre première fenêtre de terminal (assurez-vous qu’elle est réellement en cours d’exécution). Vous devriez obtenir une console Javascript comme celle-ci

Une fois que vous avez la console javascript, vous êtes prêt à créer un compte.

Il vous sera demandé de définir un mot de passe après lequel un nouveau compte sera généré. Facile!
Maintenant, enregistrez ce compte # car vous en aurez besoin très souvent. Souvenez-vous également de votre phrase secrète car vous en aurez besoin pour vous connecter à votre compte. Mais vous le saviez déjà.
Ensuite, vérifiez la quantité d’éther de ce compte en utilisant la ligne de code suivante
eth.getBalance("ENTER_YOUR_ACCOUNT_NUMBER_HERE")
voici ce que j’ai

Votre solde doit être 0
. À juste titre, car vous n’auriez pas d’éther lorsque vous créez un compte pour la première fois.
Il existe 2 façons d’entrer de l’éther dans votre compte, soit quelqu’un vous en envoie, soit vous bloquez les transactions et êtes récompensé avec de l’éther à son tour.
Étant donné que vous êtes tout seul dans votre réseau privé à ce stade, votre seule option pour le moment est de miner quelques blocs et d’être récompensé.
Mettez de l’éther dans notre facture
L’exploitation minière dans la blockchain Ethereum réelle ou principale est assez difficile et nécessiterait du matériel spécialisé tel que des GPU dédiés. Cependant, extraire des blocs dans une chaîne privée est facile, car nous avons spécifié un niveau de difficulté très faible dans notre fichier de genèse, vous vous souvenez? Nous pouvons simplement démarrer l’extraction en utilisant le code suivant

À ce stade, si vous regardez l’autre console exécutant l’instance Geth, vous verrez les blocs extraits avec succès par votre mineur. Donnez-lui 10 à 15 secondes et vérifiez à nouveau votre solde.

Woohoo! De nombreux éthers apparaissent dans votre nouveau compte. (Rappelez-vous qu’il s’agit d’un faux éther, vous ne pouvez pas utiliser cet éther pour effectuer des transactions sur le réseau principal Ethereum) mais vous pouvez l’utiliser pour tester nos différentes fonctions de la blockchain, y compris les transferts, la distribution de contrats, etc.
Enfin, arrêtez le mineur en utilisant le miner.stop ()scénario.
Toutes nos félicitations!
Vous venez de construire votre première blockchain privée ethereum et d’en extraire de l’éther! Beaucoup de détails, mais j’espère que certains d’entre eux ont du sens et vous ont donné un peu plus de clarté sur le fonctionnement des blockchains.
Dans le prochain article, nous ajouterons un autre nœud à notre blockchain privée, rédigerons et déploierons des contrats intelligents et montrerons comment appeler le contrat.
Vous voulez savoir quand un nouveau message est publié? Suivez le tableau 🙂
De plus, si vous avez trouvé le message utile, recommandez-le aux autres en applaudissant pour ce message! Si vous avez des idées ou des commentaires, je serais ravi de vous entendre. Vous pouvez également me contacter directement sur Twitter.
Marque
Créez votre compte gratuit pour débloquer votre expérience de lecture personnalisée.
https://hackernoon.com/heres-how-i-built-a-private-blockchain-network-and-you-can-too-62ca7db556c0