Ethereum 69: comment configurer un nœud blockchain entièrement synchronisé en 10 minutes

Bienvenue dans le premier article de notre nouvelle série de go-ethereum!

Dans les 10 prochaines minutes, vous allez:

  • Apprenez le premier glossaire blockchain sans aucune connaissance préalable de l'écosystème
  • Configurez votre nœud de test entièrement synchronisé («client / serveur») en moins de 10 minutes.
  • Créez votre compte et recevez GRATUITEMENT une transaction de 8ETH de la fondation Ethereum

Notre devise est, la pratique avant la théorie - passons donc directement à l’installation d’un nœud de test Ethereum entièrement synchronisé connecté à un réseau de test Rinkeby!

Geth

Geth est une interface de ligne de commande (CLI), un binaire, programme et client compilé permettant d'exécuter un nœud Ethereum complet implémenté dans Go.

Nous allons utiliser Geth pour:

  • exécuter un nœud Ethereum entièrement synchronisé pour se connecter à un réseau de test appelé Rinkeby
  • créer un nouveau compte pour pouvoir envoyer et recevoir des transactions
  • pour lire l'état EVM, par ex. vérifier le solde d'un compte (vous voulez savoir combien de solde votre petite amie, votre petit ami, votre femme, votre voisin a? Douce transparence!)

Installer Geth

Nous pouvons l'installer directement à partir des référentiels:

Mac

infusion robinet ethereum / ethereum
brasser installer ethereum

Linux

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get update
sudo apt-get install ethereum

les fenêtres

Bonne chance :)

Vérifiez l'installation:

qui geth
> / usr / local / bin / geth
version geth
> Geth
> Version: 1.8.20-stable

Assurez-vous que vous utilisez la même version pour pouvoir effectuer une synchronisation complète d'un réseau Rinkeby, comme décrit dans les étapes suivantes, car Rinkeby a agi sur un hardfork constantinople pris en charge par Geth 1.8.20. Cet article de blog détaillé explique plus de détails si vous êtes intrigué!

Exécuter un nœud blockchain

Eh bien, le diable est dans les détails… mais pour commencer, c'est simple. Bravo aux développeurs Ethereum.

Configurons un nouveau nœud Rinkeby (réseau de test Ethereum utilisant le protocole Clique PoA) entièrement synchronisé.

La mise en œuvre du PoA Rinkeby est beaucoup plus rapide mais nettement moins sécurisée. Il est plus centralisé depuis le réseau de points de vue sur le consensus Mainnet, ce qui convient parfaitement comme réseau de test. Rinkeby parvient à approuver un nouveau bloc avec un tas de transactions toutes les 15 secondes.

Ok, ok, ok ... Que veulent dire ces mots?

  • Rinkeby: nom du réseau de test de preuve de l'autorité
  • Node: essentiellement un serveur traditionnel exécutant Ethereum client / serveur
  • Consensus: un algorithme définissant comment les transactions seront validées, ajoutées et conservées dans la base de données sur chaque nœud.
  • Block: un groupe de transactions dans un tableau compliqué distribué autour du fil entre tous les nœuds du réseau toutes les 15 s
  • Transaction: ne pensez pas à une transaction bancaire. Une transaction blockchain est un changement d'état. Renommer le propriétaire d'un contrat intelligent d'Alice à Bob? Changer le solde de votre compte de 1ETH à 5ETH? Définition de la variable “foo” sur “foo_value_123” dans votre contrat smart? C’est une transaction.

Vous pouvez en savoir plus sur la proposition du PoA de Rinkeby ici: https://github.com/ethereum/EIPs/issues/225

geth --rinkeby --datadir = ~ / .gophersland_ethereum_r1 --port = 30304 --cache = 2048 --rpc --rpcport = 8546 --rpcapi = eth, web3, net, personnel --syncmode = rapide

La commande ci-dessus va:

  • initialiser un nouveau répertoire où toutes les données seront stockées dans ~ / .gophersland_ethereum_r1. Le répertoire par défaut serait: ~ / .ethereum
  • commencez à télécharger l'historique Ethereum nécessaire pour devenir un nouveau nœud du réseau synchronisé et entièrement valide
  • la communication se fera sur le port 30304
  • le cache, sorte de tampon, sera réglé sur 2 Go pour accélérer le processus de synchronisation
  • Une API RPC supplémentaire sera lancée pour que nous puissions communiquer avec notre nœud via des consoles.

Attendez quelques heures que la blockchain soit complètement synchronisée.

Le numéro de bloc actuel au 24 septembre est le 3039786. Sur mon AMD Ryzen 5 2600, 3,4 Ghz, le processus de synchronisation a pris 3 heures. Oh oui, j'ai un nouveau PC de jeu!

En attendant, vous pouvez suivre GophersLand sur Twitter ou préparer le dîner, probablement le petit-déjeuner également, aller à la salle de sport… disons simplement que blockchain n’est pas la base de données la plus rapide :)

Finalement, le message imprimé sera:

  • INFO [] Nombre de nouveaux segments de chaîne importés = 1
  • INFO [] Nombre de nouveaux segments de chaîne importés = 1
  • INFO [] Nombre de nouveaux segments de chaîne importés = 1
  • INFO [] Nombre de nouveaux segments de chaîne importés = 1

Félicitations, vous faites maintenant partie de la révolution blockchain en moins de 10 minutes !!!

Création de votre premier compte blockchain

Magasin de clés

Tous les comptes Ethereum et leurs clés sont stockés dans un répertoire appelé «magasin de clés». Le répertoire est vide par défaut car nous n’avons pas encore créé notre propre compte!

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26.
drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 geth
srw ------- 1 enchanter enchanter 0 sep 24 15:26 geth.ipc
drwx ------ 2 enchanter enchanter 4096 23 sep 09:54 magasin de clés
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 23 sep 09:54.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..

Compte

Pour créer un nouveau compte, exécutez la commande suivante, déjà familière, geth cmd.

geth --datadir = ~ / .gophersland_ethereum_r1 compte nouveau

Vous serez invité à entrer une phrase secrète (il s'agit de votre MOT DE PASSE SUPER SECRET). Cela est nécessaire pour décrypter votre clé privée nouvellement générée associée à votre nouvelle adresse Ethereum, car elle vous permet de l'utiliser ultérieurement pour signer des transactions sur la blockchain. Notez-le quelque part, car nous en aurons besoin plus tard. Mais ne vous inquiétez pas si vous l’oubliez, c’est de toute façon un réseau de test.

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 23 sep 09:54.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..
enchanter @ lukas-gaming: ~ $ geth --datadir = ~ / .gophersland_ethereum_r1 nouveau
INFO [09-24 | 15: 36: 33.566] Nombre d'homologues maximum ETH = 25 LES = 0 total = 25
Votre nouveau compte est verrouillé avec un mot de passe. S'il vous plaît donner un mot de passe. N'oubliez pas ce mot de passe.
Passphrase:
Répétez la phrase secrète:
Adresse: {ceee57f2b700c2f37d1476a7974965e149fce2d4}
enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 / keystore /
drwx ------ 2 enchanter enchanter 4096 sep 24 15:36.
drwx ------ 4 enchanter enchanter 4096 sep 24 15:26 ..
-rw ------- 1 enchanter enchanter 491 sep 24 15:36
UTC - 2018-09-24T13-36-43.069452577Z - ceee57f2b700c2f37d1476a7974965e149fce2d4

Woohoo! Ma nouvelle adresse Ethereum est en vie: ceee57f2b700c2f37d1476a7974965e149fce2d4.

Vous rencontrerez normalement cette adresse précédée du préfixe «0x» pour indiquer le codage d'adresse, HEX.

Le format le plus récent des fichiers de clés est le suivant: UTC - - . L’ordre des comptes lors de l’inscription est lexicographique, mais en conséquence du format timespamp, il s’agit en réalité d’un ordre de création.

Si vous êtes curieux de savoir ce que contient le fichier, n'hésitez pas à l'ouvrir! Tu verras:

  • Adresse: votre nouvelle adresse hexadécimale
  • Crypto: groupe de variables mathématiques chargées de représenter votre clé privée sous forme cryptée, ne vous inquiétez pas de cette magie pour le moment

Remarque intéressante: la création du compte s'effectue en mode hors connexion et ne nécessite pas de nœud synchrone synchronisé. Curieux de savoir comment est-il possible de générer une adresse unique en mode hors connexion du point de vue technique? Nous allons vérifier le code source de go-ethereum dans le prochain article.

Spoiler: c’est parce que l’adresse est un hachage de votre clé publique qui repose sur votre clé privée unique.

J'ai un nouveau compte Ethereum brillant, quel est mon solde et comment puis-je déposer des tests pour Ether?

En parlant d'Ether, qu'est-ce que c'est?

Éther

Ether est la crypto-monnaie alimentant le réseau Ethereum. Il est utilisé comme unité de valeur et pour payer les mineurs afin de valider, d’ajouter et de conserver les transactions dans la base de données collective. Mais c’est surtout une technique de prévention du spam parce que les mineurs sont récompensés 5 (depuis le mois dernier "seulement" 3) ETH pour chaque bloc exploité avec succès. Oui, c’est 600 $ au prix actuel du 24 septembre, tous les 15 ans. Pas une mauvaise affaire.

Comment recevoir GRATUITEMENT une transaction de 8ETH de la fondation Ethereum

Vérification du solde du compte

Soyons d’abord sûr que le solde de notre compte est égal à 0, à moins que quelqu'un ait déjà réussi à envoyer de l'Éther par bonté de son cœur.

Geth fournit une console JavaScript pouvant être attachée au binaire exécutable pour interagir facilement avec la chaîne de blocs. Nous pouvons nous y connecter en spécifiant un fichier de socket qui est exposé une fois que Geth a démarré. Les fichiers de sockets sont très utiles pour «la communication inter-processus sur la même machine», aussi appelée IPC.

Vous pouvez localiser ce fichier dans le répertoire de données par défaut pendant l’exécution du programme Geth:

enchanter @ lukas-gaming: ~ $ ls -la ~ / .gophersland_ethereum_r1 /
drwx ------ 4 enchanter enchanter 4096 24 septembre 15:44.
drwxr-xr-x 18 enchanteur enchanteur 4096 24 septembre 15:47 ..
drwx ------ 4 enchanter enchanter 4096 24 sept 15:44 geth
srw ------- 1 enchanteur enchanteur 0 24 septembre 15:44 geth.ipc
drwx ------ 2 enchanter enchanter 4096 24 sept 15:47 magasin de clés

Interagissons avec le réseau Rinkeby à l’aide de la commande «geth attach» dans un autre terminal pendant que votre nœud blockchain est en cours d’exécution. Assurez-vous de transmettre le chemin absolu au fichier IPC, sinon vous obtiendrez une erreur.

enchanter @ lukas-gaming: ~ $ geth attach ipc: /home/enchanter/.gophersland_ethereum_r1/geth.ipc
Bienvenue sur la console JavaScript de Geth!
exemple: Geth / v1.8.15-stable-89451f7c / linux-amd64 / go1.10.1
coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4
au bloc: 3044891 (lun., 24 sept. 2018 16:42:36 CEST)
datadir: /home/enchanter/.gophersland_ethereum_r1
modules: admin: 1.0 clique: 1.0 debug: 1.0 eth: 1.0 mineur: 1.0 net: 1.0 personnel: 1.0 rpc: 1.0 txpool: 1.0 web3: 1.0
> eth.accounts
["0xceee57f2b700c2f37d1476a7974965e149fce2d4"]
> eth.syncing
faux
> eth.getBalance ("0xceee57f2b700c2f37d1476a7974965e149fce2d4")
0

Requête blockchain:

eth.accounts: pour vérifier vos comptes actuellement disponibles

eth.syncing: pour vous assurer que notre état, DB est parfaitement à jour avec le reste du réseau pour que la réponse de getBalance soit basée sur le dernier état

eth.getBalance (“”): pour interroger la base de données.

Recevoir GRATUITEMENT une transaction de 8ETH de la fondation Ethereum

La fondation Ethereum propose un programme très soigné appelé «Faucet» disponible en ligne pour affecter Ether aux comptes qui le demandent en temps réel.

Requérant Ether:

  1. Publiez l'adresse de votre compte sur l'un des réseaux sociaux publics
  2. Par exemple, postez un tweet contenant votre adresse Ethereum n'importe où dans le tweet, comme celui-ci https://twitter.com/EnchanterIO/status/1044238559224483841, assurez-vous de marquer @BlocksByLukas et @freeCodeCamp et faites-nous savoir si vous aimez le tutoriel!
  3. Ouvrez https://www.rinkeby.io/#faucet et collez l'URL du tweet
  4. Cliquez sur «Give me Ether», choisissez entre 3, 7.5 ou 18.75 Ether
  5. Attendez quelques secondes
  6. Interrogez à nouveau le solde de votre compte
Robinet Rinkeby

Voilà

Vous êtes riche… dans un réseau de test. Félicitations pour aller si loin. Plus de contenu à venir bientôt!

Continuer dans mes cours: Ethereum 101

https://www.lukaslukac.io/courses/ethereum-101-glossary-smart-contracts-tests-frameworks