3.3 KiB
3.3 KiB
G1Voeu.sh
Le script G1Voeu.sh
permet de créer et de publier un vœu sur la blockchain Ğ1 pour un joueur spécifique. Il génère une clé dérivée pour le vœu, met à jour le TiddlyWiki du joueur avec les informations du vœu, et publie le TiddlyWiki mis à jour sur IPFS.
Fonctionnalités Principales
- Initialisation et Configuration :
- Le script commence par définir le chemin du script (
MY_PATH
) et le normalise pour obtenir un chemin absolu. - Il source un fichier de configuration commun (
my.sh
) pour utiliser des fonctions et des variables partagées.
- Le script commence par définir le chemin du script (
- Paramètres et Variables :
- Le script prend trois paramètres principaux : le titre du vœu (
TITRE
), le joueur (PLAYER
), et le chemin vers l'index TiddlyWiki (INDEX
). - Si le joueur ou l'index ne sont pas fournis, le script tente de les récupérer à partir des fichiers de configuration locaux.
- Le script prend trois paramètres principaux : le titre du vœu (
- Création de la Clé Derivée pour le Vœu :
- Le script utilise une clé dérivée pour le vœu, générée à partir du titre du vœu, du joueur, et d'un sel (SALT).
- Il utilise l'outil
keygen
pour générer cette clé dérivée et obtenir la clé publique Ğ1 associée (WISHG1PUB
).
- Mise à Jour du TiddlyWiki :
- Le script met à jour le TiddlyWiki du joueur avec les informations du vœu.
- Il crée un tiddler spécifique pour le vœu et l'ajoute au TiddlyWiki.
- Publication sur IPFS :
- Le script publie le TiddlyWiki mis à jour sur IPFS et met à jour les caches locaux et distants.
- Il génère des QR codes et des images pour visualiser les informations du vœu.
Étapes du Script
-
Définition des Variables et Chemins :
MY_PATH="`dirname \"$0\"`" MY_PATH="`( cd \"$MY_PATH\" && pwd )`" . "${MY_PATH}/../tools/my.sh"
-
Paramètres et Variables :
TITRE="$1" PLAYER="$2" INDEX="$3" [[ ${PLAYER} == "" ]] && PLAYER=$(cat ~/.zen/game/players/.current/.player 2>/dev/null) [[ ${PLAYER} == "" ]] && echo "Second paramètre PLAYER manquant" && exit 1 PSEUDO=$(cat ~/.zen/game/players/${PLAYER}/.pseudo 2>/dev/null) [[ $G1PUB == "" ]] && G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) [[ $G1PUB == "" ]] && echo "Troisième paramètre G1PUB manquant" && exit 1 [[ ! $INDEX ]] && INDEX="$HOME/.zen/game/players/${PLAYER}/ipfs/moa/index.html"
-
Création de la Clé Derivée pour le Vœu :
source ~/.zen/game/players/${PLAYER}/secret.june [[ ${PEPPER} ]] && echo "Using PLAYER PEPPER AS WISH SALT" && SECRET1="${PEPPER}" SECRET2="${VoeuName} ${PLAYER} ${SALT}" ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/wish.dunikey "${SECRET1}${UPLANETNAME}" "${SECRET2}${UPLANETNAME}" WISHG1PUB=$(cat ~/.zen/tmp/${MOATS}/wish.dunikey | grep 'pub:' | cut -d ' ' -f 2)
-
Mise à Jour du TiddlyWiki :
tiddlywiki --load ${INDEX} --output ~/.zen/tmp/${MOATS} --render '.' 'G1Voeu.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[G1Voeu]]'
-
Publication sur IPFS :
TW=$(ipfs add -Hq ~/.zen/game/players/${PLAYER}/ipfs/moa/index.html | tail -n 1) ipfs --timeout 720s name publish --key=${PLAYER} /ipfs/${TW}