Comment: créer votre propre blockchain Ethereum privé

Dev faits saillants de cette semaine

  • Publier aujourd'hui une mise à jour du serveur Dust pour inclure les récompenses de connexion basées sur le fuseau horaire local du client
  • Les mises à jour des clients Android et iOS sont en cours d’assurance qualité et seront publiées la semaine prochaine, y compris les blasts promus portant désormais la mention «promus», les Dusters hérités recevront désormais des récompenses, ainsi que d’autres améliorations de performances et corrections de bugs.
  • Conception de l'analyse des récompenses en vue du basculement vers le réseau principal
  • Méthode de développement pour payer les coûts de gaz Ethereum avec un jeton ERC-20
  • Recherche de différents mécanismes de stockage de contenu sur la blockchain

Comment: blockchain

Cet article est le premier d'une nouvelle série "How To" que nous commençons dans le but de fournir des instructions faciles à lire sur des sujets que nos développeurs ont trouvés particulièrement mal documentés en ligne. Au-delà de la vente de jetons, notre objectif est d'aider les autres équipes de développeurs intéressées par l'intégration de GMT dans leurs applications. À cette fin, nous intensifions notre production de contenu technique pour faciliter l’embarquement de nouveaux développeurs qui cherchent à s’essayer à la technologie de la blockchain.

Si vous avez un sujet particulier que vous voudriez voir détaillé dans un article Comment publier, nous aimerions avoir de vos nouvelles à info@mercuryprotocol.com.

"Bonjour, Testnet"

Ceci est un guide pour démarrer votre propre blockchain Ethereum personnalisée sur Mac, à ne pas confondre avec le démarrage d'un nœud sur la blockchain Ethereum principale. Nous commençons ici une blockchain entièrement nouvelle et séparée qui ne peut pas interagir avec le réseau principal Ethereum.

Démarrer votre propre blockchain Ethereum est utile, éducatif et plus sûr que le testnet public. Apprendre à configurer un réseau de test privé permet de mieux comprendre des concepts abstraits comme l'extraction, les homologues de réseau et même le geth datadir.

Conditions préalables

Vous devez avoir installé Geth. Le moyen le plus simple de le faire est d'utiliser l'homebrew.

  1. Ouvrez Terminal et installez homebrew
ruby -e “$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Maintenant, installez geth

infusion robinet ethereum / ethereum
brasser installer ethereum

Créer un fichier Genesis

Le bloc Genesis est le premier bloc de la chaîne, le fichier Genesis est un fichier JSON qui définit les caractéristiques de ce bloc initial, puis du reste de la blockchain.

  1. Créez un répertoire pour contenir vos fichiers réseau
mkdir ma-eth-chain
cd my-eth-chain

2. Créez votre fichier de genèse

touchez myGenesis.json

3. Ouvrez votre fichier de genèse et collez le texte suivant

{
   "config": {
      "chainId": 1994,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0,
      "byzantiumBlock": 0
   },
   "difficulté": "400",
   "gasLimit": "2000000",
   "alloc": {
      "7b684d27167d208c66584ece7f09d8bc8f86ffff": {
          "balance": "100000000000000000000000"
      },
      "ae13d41d66af28380c7af6d825ab557eb271ffff": {
          "balance": "120000000000000000000000"
      }
   }
}

config

  • chainId - il s’agit de l’identifiant de votre chaîne, utilisé dans la protection contre la réexécution.
  • homesteadBlock, eip155Block, eip158Block, byzantiumBlock - ils concernent le falsification de chaîne et le contrôle de version, donc dans notre cas, laissons-les à 0, car nous commençons une nouvelle blockchain.

difficulté

Cela dicte à quel point il est difficile d'exploiter un bloc. Définir cette valeur sur une valeur basse (~ 10–10000) est utile dans une blockchain privée, car elle vous permet d'explorer rapidement des blocs, ce qui équivaut à des transactions rapides et à une multitude d'ETH avec lesquels tester. À titre de comparaison, le fichier Ethereum Mainnet Genesis définit une difficulté de 17179869184.

gasLimit

C'est la quantité totale de gaz pouvant être utilisée dans chaque bloc. Avec une difficulté d'extraction aussi faible, les blocs bougeront assez rapidement, mais vous devez quand même définir cette valeur assez haut pour éviter de dépasser la limite et de ralentir votre réseau.

allouer

Ici, vous pouvez affecter ETH à des adresses spécifiques. Cela ne créera pas le compte pour vous, alors assurez-vous que c'est un compte que vous avez déjà le contrôle. Vous devrez ajouter le compte à votre chaîne privée pour pouvoir l'utiliser. Pour ce faire, vous devez accéder au fichier keystore / utc. Par exemple, Geth et MyEtherWallet vous donnent accès à ce fichier lorsque vous créez un compte, contrairement à Metamask et Coinbase. Les adresses fournies ne sont pas de vraies adresses, ce ne sont que des exemples. Ici, nous allouons respectivement 100 000 et 120 000 ETH.

Commencez votre nœud!

Maintenant que le vrai plaisir commence, nous sommes tous prêts à lancer notre nouvelle blockchain Ethereum.

1. Instanciez votre répertoire de données

geth --datadir ./myDataDir init ./myGenesis.json

2. Démarrez votre noeud homologue Ethereum.

Networkid aide à assurer la confidentialité de votre réseau. Vous pouvez utiliser n'importe quel numéro ici (où nous avons utilisé «1114»), mais les autres pairs rejoignant votre réseau doivent utiliser le même.

geth --datadir ./myDataDir --networkid 1114 console 2 >> myEth.log

La sortie devrait ressembler à ceci:

Bienvenue sur la console JavaScript de Geth!
exemple: Geth / v1.7.3-stable-4bb3c89d / darwin-amd64 / go1.8.3
coinbase: 0xae13d41d66af28380c7af6d825ab557eb271ffff
au bloc: 5 (jeu., 07 déc. 2017 17:08:48 PST)
datadir: / Users / test / my-eth-chain / myDataDir
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
>

Ceci est la console JavaScript de geth. Toute commande avec le symbole> doit être saisie ici.

3. Affichez vos journaux Ethereum

  • Ouvrir une autre fenêtre de terminal
  • Cd à ma chaîne eth
  • Tapez tail -f myEth.log

4. Importer / Créer un compte

  • Si vous avez alloué ETH dans le fichier Genesis, importez le compte correspondant en faisant glisser le fichier UTC dans le répertoire rép_mag_données / keystored et passez à l'étape 5.
  • Dans la console JavaScript de geth, créez un compte:
    > personal.newAccount ("")
  • N'oubliez pas cette phrase secrète! Vous allez souvent taper ceci, alors pour ce réseau de test, vous pouvez rester simple.

5. Définir le compte par défaut

  • Vérifiez votre compte par défaut, tapez
    > eth.coinbase
  • Si cette adresse est identique à celle de l'étape 4, ignorez le reste de l'étape 5.
  • Pour définir votre compte par défaut, tapez
    > mineur.setEtherbase (web3.eth.accounts [0])

6. Commencez l'exploitation minière

  • Vérifiez votre solde avec
    > eth.getBalance (eth.coinbase)
  • Courir
    > mineur.start ()
  • Regardez votre autre fenêtre de terminal, vous devriez voir une action d'extraction dans les journaux. Vérifiez votre solde à nouveau et il devrait être plus élevé.
  • Pour mettre fin à l'extraction, tapez
    > mineur.stop ()

Facultatif: Ajouter d'autres pairs

Ajoutez plus de nœuds à votre réseau privé Ethereum.

1. Démarrer un autre pair

  • Installez un nouveau datadir sur la même machine:
geth --datadir ./peer2DataDir init ./myGenesis.json
  • Lancez le 2ème poste sur un autre port:
geth --datadir ./peer2DataDir --networkid 1114 --port 30304 console 2 >> myEth2.log

2. Affichez vos journaux Ethereum

  • Ouvrir une autre fenêtre de terminal
  • Cd à ma chaîne eth
  • Tapez tail -f myEth2.log

3. Rejoignez le 1er pair

  • Dans la console JavaScript geth de votre 1er homologue, tapez:
> admin.nodeInfo.enode
  • La sortie se présentera comme suit: “enode: // dcff6d9dcb14eeb1d1b7575b0653fa1025ad1b7722c6d652d0449f0966997bdf
  • Dans la console JavaScript geth de votre nouveau 2e homologue, tapez:
> admin.
  • Assurez-vous de remplacer «enode: //… @» ci-dessus par le résultat de admin.nodeInfo.enode qui vous est propre. Comme indiqué ci-dessus, le «[::]» est remplacé par «127.0.0.1:30303», qui correspond à l'IP: Port du premier homologue.

4. Vérifiez que vos nœuds communiquent maintenant

  • Dans la console JavaScript geth de votre nouveau 2e homologue, tapez:
> admin.peers
  • La sortie devrait montrer que l'homologue 2 est connecté à 127.0.0.1: 30303

Utile: commandes de la console geth

admin.nodeInfo.enode
net.listening
net.peerCount
admin.peers
eth.coinbase
eth.getBalance (eth.coinbase)
personnel
eth.accounts
mineur.setEtherbase (web3.eth.accounts [0])
miner.setEtherbase (“0xae13d41d66af28380c7af6d825ab557eb271ffff”)
miner.start ()
miner.stop ()
mineur.hashrate
eth.getBlock (0)
eth.getBlock (“dernière”)
eth.blockNumber
web3.eth.getBlock (BLOCK_NUMBER) .hash
eth.syncing
debug.verbosity (6) // plus haut niveau de journalisation, 3 par défaut

Partagez vos idées avec nous sur l’un des canaux de la communauté liés ci-dessous!

Relier

Mou
Télégramme
Gazouillement
Reddit
Facebook
LinkedIn

En savoir plus sur le protocole mercure
Lire le livre blanc sur le protocole de mercure