Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • R RIE-2017-ProjetTutore-G1
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 12
    • Issues 12
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Lionel Ferrafiat
  • RIE-2017-ProjetTutore-G1
  • Wiki
  • page3 blockchain setup

Last edited by Romain Benit Oct 12, 2018
Page history

page3 blockchain setup

Page Wiki sur le blockchain

Fichier Word : BlockChain_-_2.docx

Préparation de la machine Linux

Informations Login Ubuntu : romain mdp Ubuntu : romain

Installation des paquets

Ajout des dépôts d’ethereum

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

Mot de passe : romain

Installation de « geth » ainsi que le compilateur « solidity » (solc)

sudo apt-get install –y ethereum solc

Mot de passe : romain

Création du fichier de configuration

Il faut créer un fichier sous l’extention « .json », dans notre cas ce sera « genesis.json »

Nous entrons les configurations suivantes :

{
"nonce": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x1000",
"alloc": {}, "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x1000000000",
"config": {
"chainId": 100,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}

Plusieurs paramètres sont à renseigner :

• Le nonce est le hash que le mineur va devoir faire varier et trouver pour résoudre la preuve de travail. Il est complémentaire au mixhash et sert à vérifier que le bloc est valide.

• Mixhash est le hash de l’entête du bloc, sur lequel va se baser le mineur pour trouver le nonce.

• Le timestamp permet au client de réguler le temps entre la validation de 2 blocs successifs et de vérifier le bon enchainement des blocs. Il est initialisé à 0 pour indiquer qu’il s’agit du premier bloc.

• Le parentHash est le hash du bloc précédent. Etant donné qu’il s’agit du premier bloc, ce hash vaut 0.

• ExtraDat est facultatif et permet de stocker des données (32 octets max), sur la blockchain.

• GasLimit est le montant maximum de gas que les contrats peuvent consommer. Au-dessus de la limite, le contrat ne pourra pas être ajouté au bloc. Nous reverrons la notion de gas lors de la création de notre premier contrat.

• Difficulty correspond à la difficulté de la preuve de travail de ce bloc. Elle a un impact sur la rapidité de validation des blocs et donc la création d’ether. Nous mettons une valeur faible pour ne pas perdre de temps sur la validation de nos blocs et générer rapidement de l’ether. Cette valeur, couplée au timestamp, va permettre au client de fixer la difficulté de la prochaine preuve de travail, pour conserver un temps de validation linéaire.

Génération du block Genesis pour le NodeA

Nous entrons la commande suivante :

geth --datadir BlockChain/NodeA/ init BlockChain/NodeA/genesis.json
geth --datadir ./NodeA --networkid "100" init genesis.json

Génération du block Genesis pour le NodeB

Nous entrons la commande suivante :

geth --datadir Private/NodeB/ init Private/NodeB/genesis.json
geth --datadir ./NodeB --networkid "100" init genesis.json

Création du compte pour le NodeA

On tape la commande :

geth --datadir ./NodeA --networkid "100" account new

Mot de passe : romain

Address: {237649abd0d7fe8b13e1fef8fa10d08f7cf8fbc6}

Création du compte pour le NodeB

On tape la commande :

geth --datadir ./NodeB --networkid "100" account new

Mot de passe : romain

Address: {969c4919e04c2768e8ac15adcffc1f0fc2814a26}

Lancement du NodeA

On entre la commande suivante :

geth --datadir ./NodeA --networkid "100" --port "3031" console

Ensuite nous récupérons l’enode avec la commande suivante :

admin.nodeInfo

enode: "enode://7610246c4fbae8382eb965f14f77cb2a4482b513fbb42117bb4423713f34572f48b53e08945370ba39b64997cb475ef14dfc2ff1fef17d5d65ed570bf9a447c7@[::]:3031",

Lancement du NodeB

On entre la commande suivante :

geth --datadir ./NodeB --networkid "100" --port "3032" console

Ensuite nous récupérons l’enode avec la commande suivante :

admin.nodeInfo

enode: "enode://e1a69372693d684bd63f380b419f098687ae69c0d35d56f0db375a3898bb0b297f48a38ce1334a94e43eec405aa629f35c5d5d4f0a6ca527fb80dc18ad6d0cc0@[::]:3032",

Activation du minage sur le NodeA

Entrer la commande suivante :

miner.start()

Visualiser le compte du NodeA

Entrer la commande suivante :

web3.fromWei(eth.getBalance(eth.coinbase),"ether")

Connecter les noeuds

Sur le NodeB on entre la commande suivante :

admin.addPeer({enode du nœud sur lequel se connecter})
admin.peers

Transaction de A vers B

Sur le NodeA on entre les commandes suivantes :

personal.unlockAccount(eth.accounts[0],"romain",60)
eth.sendTransaction({from:eth.accounts[0],to:"88e9ee3093089e23ac4fac6924bf87ee82c3c8e1",value: web3.toWei(1,"ether")})

Clone repository
  • Aide pour Soutenance
  • Home
  • page1 serveur web setup
  • page2 1 serveur message php
  • page2 serveur message setup
  • page3 1 blockchain centos
  • page3 blockchain setup
  • page4 serveur vm setup
  • page5 docs techniques divers
  • page6 1 securisation tls ssl
  • page6 2 Securisation En tête Serveur (Server Header)
  • page6 3 securisation Apache2
  • page6 serveur site web
  • page7 utilisation de git
  • page8 realisation des tests