Démonstration

La présentation qui va suivre permet de comprendre comment intéragir avec le programme Blockshell modifié.

S’assurer d’être à-côté du dossier blockshell et de l’environnement virtuel python venv, précédemment créés lors de la phase d’installation.
Rejoindre l’environnement virtuel:

source venv/bin/activate

here

Afin d’installer les paquets python additionnels, un fichier requirements.txt est fourni.

blockshell/requirements.txt

pip install -r requirements.txt

Lancer le programme Blockshell:

blockshell init --difficulty 3

Une interface en ligne de commandes apparait alors:

here

La commande help permet de visualiser les commandes disponibles pour intéragir avec le programme:

here

La commande allblocks permet de visualiser les blocks présents dans la blockchain par l’intermédiaire de leurs hashs
La commande getblock <hash> permet d’afficher le contenu d’un bloc:

here

La commande newblock nous permet à présent de créer un bloc dont la donnée correspondant au schéma d’un profil EPITA
Le bloc est ensuite miné automatiquement:

here

Le script suivant permet de créer 54 profils dans la blockchain, et d’inverser le nom des blocs 23 et 24
Le script lit ligne par ligne le fichier login_srs.csv et créé une commande newblock pour chacune d’entre elles en les clôturant par un ‘;’. Ces commandes newblock sont toutes concaténées dans une seule et même commande commandlist.
Puis, la command swapnames est ajoutée à la fin.

#!/bin/bash

# Création de la commande commandlist, qui va pouvoir embarquer plusieurs commandes autres
commandlist="commandlist"

# On concatène les commandes newblock en parcourant ligne par ligne le fichier login_srs.csv
while IFS=, read -r field1 field2 field3 field4
do
    commandlist+=" newblock --uid ${field1} --email ${field2} --firstname ${field3} --secondname ${field4};"
done < login_srs.csv

# Ajout de la commande de swap pour le noms
commandlist+=" swapnames --index1 24 --index2 23;"

# Lancement du programme avec la commande commandlist suivie de l'ensemble des commandes nécessaires
echo "${commandlist}" | blockshell init --difficulty 3

blockshell/blockchain.sh

Le lancement du script donne l’output suivant:

here

[…]

here

Une fois le 54ème bloc créé, la commande swapnames est lancée, et les blocs sont re-minés de 23 jusqu’à 54.

A l’origine:

  • 23: François Dautreme
  • 24: Hugo Gendarme

Les changements ont bien été effectués:

here here

blockshell/chain.txt
blockshell/login_srs.csv

On peut également visualiser le contenu de la blockchain par l’interface web de BlockShell:

python web.py

here

et en entrant dans la barre d’url du navigateur:

localhost:5000/

here