Skip to content

Commit a6a6664

Browse files
author
arnaud
committed
correcteur orthographique + couverture
1 parent 03e4e1b commit a6a6664

28 files changed

+741
-58
lines changed

bitcoin/bitcoin.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,14 +401,14 @@
401401

402402
\item Une \emph{transaction} est une chaîne de caractères comprenant un nom et la somme à ajouter (ou à retrancher) à son compte. Par exemple \ci{"Abel +25"} ou \ci{"Barbara -45"}.
403403

404-
Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaine de caractère \ci{transaction} à la liste \ci{Livre}.
404+
Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaîne de caractère \ci{transaction} à la liste \ci{Livre}.
405405
Par exemple après l'initialisation \ci{ajout_transaction("Camille +100")},
406406
\ci{Livre} vaut \ci{[ [0, 0, 0, 0, 0, 0], "Camille +100" ]}.
407407
Attention, pour pouvoir modifier \ci{Livre} il faut commencer la fonction par : \ci{global Livre}.
408408

409409
\end{enumerate}
410410

411-
\item Dès qu'une transaction est ajoutée, il faut calculer et ajouter au livre de comptes une preuve de travail. Programme une fonction \ci{minage()}, sans paramètre, qui ajoute une preuve de travail au livre.
411+
\item Dès qu'une transaction est ajoutée, il faut calculer et ajouter au livre de compte une preuve de travail. Programme une fonction \ci{minage()}, sans paramètre, qui ajoute une preuve de travail au livre.
412412

413413
Voici comment faire :
414414
\begin{itemize}

bitcoin/pres-bitcoin.pdf

25.3 KB
Binary file not shown.

bitcoin/pres-bitcoin.tex

Lines changed: 63 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -181,28 +181,31 @@ \section*{Hachage d'une liste}
181181
\tikzinput{fig-bitcoin-2}
182182
}
183183

184-
\end{document}
185-
184+
\newpage
186185

187186
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
188187
% Activité 4
189188
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
190189

191-
\begin{activite}[Preuve de travail - Minage]
190+
\section*{Preuve de travail - Minage}
192191

193-
\objectifs{Objectifs : construire un mécanisme de preuve de travail à l'aide de notre fonction de hachage.}
194-
195-
\index{minage}
196192

197193
On va construire un problème compliqué à résoudre, pour lequel, si quelqu'un nous donne la solution, alors il est facile de vérifier qu'elle convient.
198194

195+
\bigskip
196+
199197
\textbf{Problème à résoudre.} On nous donne une liste, il s'agit de trouver un bloc tel que, lorsque qu'on le rajoute à la liste, cela produit un hachage commençant par des zéros.
200198
Plus précisément étant donné une liste \ci{liste} et un objectif maximal \ci{Max}, il s'agit de trouver un bloc \ci{preuve} qui, concaténé à la liste puis haché, est plus petit que la liste \ci{Max}, c'est-à-dire : \\
201199
\centerline{\ci{hachage(liste + preuve)} \ plus petit que \ \ci{Max}}
202200

203-
La liste est de longueur quelconque (un multiple de $N=6$), la preuve est un bloc de longueur $N$, l'objectif est de trouver une liste commençant par des $0$ (voir l'activité 2).
204201

205-
Par exemple : soit la \ci{liste = [0,1,2,3,4,5]} et \ci{Max = [0,0,7]}. Quel bloc \ci{preuve} puis-je concaténer à \ci{liste} pour résoudre mon problème ?
202+
La liste est de longueur quelconque (un multiple de $N=6$), la preuve est un bloc de longueur $N$, l'objectif est de trouver une liste commençant par des $0$.
203+
204+
\newpage
205+
206+
\textbf{Exemple.}
207+
208+
soit la \ci{liste = [0,1,2,3,4,5]} et \ci{Max = [0,0,7]}. Quel bloc \ci{preuve} puis-je concaténer à \ci{liste} pour résoudre mon problème ?
206209
\begin{itemize}
207210
\item \ci{preuve = [12, 3, 24, 72, 47, 77]} convient car concaténé à notre liste cela donne \ci{[0,1,2,3,4,5,12, 3, 24, 72, 47, 77]} et le hachage de toute cette liste vaut
208211
\ci{[0, 0, 5, 47, 44, 71]} qui commence par \ci{[0,0,5]} plus petit que l'objectif.
@@ -213,15 +216,20 @@ \section*{Hachage d'une liste}
213216
\item \ci{[97, 49, 93, 87, 89, 47]} ne convient pas, car après concaténation puis hachage on obtient \ci{[0, 0, 8, 28, 6, 60]} qui est plus grand que l'objectif voulu.
214217
\end{itemize}
215218

216-
\begin{enumerate}
217-
\item \textbf{Vérification (facile).}
219+
220+
\newpage
221+
222+
\textbf{Vérification (facile).}
218223

219-
Programme une fonction \ci{verification_preuve_de_travail(liste,preuve)} qui renvoie vrai si la solution \ci{preuve} proposée convient pour \ci{liste}. Utilise la fonction \ci{est_plus_petit()} de l'activité 2.
224+
Programme une fonction \ci{verification_preuve_de_travail(liste,preuve)} qui renvoie vrai si la solution \ci{preuve} proposée convient pour \ci{liste}.
225+
226+
\bigskip
220227

221-
\item \textbf{Recherche de solution (difficile).}
228+
\textbf{Recherche de solution (difficile).}
222229

223230
Programme une fonction \ci{preuve_de_travail(liste)} qui cherche un bloc \ci{preuve} solution à notre problème pour la liste donnée.
224231

232+
\bigskip
225233

226234
\emph{Indications.}
227235

@@ -236,51 +244,61 @@ \section*{Hachage d'une liste}
236244

237245
\end{itemize}
238246

239-
\item \textbf{Temps de calcul.}
247+
\newpage
248+
249+
\textbf{Temps de calcul.}
250+
251+
\begin{itemize}
252+
\item Compare le temps de calcul d'une simple vérification par rapport au temps de recherche d'une solution.
240253

241-
Compare le temps de calcul d'une simple vérification par rapport au temps de recherche d'une solution. Choisis l'objectif \ci{Max} de sorte que la recherche d'une preuve de travail nécessite environ entre 30 et 60 secondes de calculs.
254+
\item Choisis l'objectif \ci{Max} de sorte que la recherche d'une preuve de travail nécessite environ entre 30 et 60 secondes de calculs.
242255

243-
\end{enumerate}
244-
245-
Pour le \emph{bitcoin}, ceux qui calculent des preuves de travail sont appelés les \emph{mineurs}. Le premier qui trouve une preuve gagne une récompense. La difficulté du problème est ajustée de sorte
256+
\item Pour le \emph{bitcoin}, ceux qui calculent des preuves de travail sont appelés les \emph{mineurs}.
257+
258+
\item Le premier qui trouve une preuve gagne une récompense.
259+
260+
\item La difficulté du problème est ajustée de sorte
246261
que le temps de calcul mis par le gagnant (parmi l'ensemble de tous les mineurs) pour trouver une solution, soit d'environ $10$ minutes.
247262

248-
\end{activite}
263+
\end{itemize}
249264

265+
\newpage
250266

251267
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252268
% Activité 4
253269
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
254270

255-
\begin{activite}[Tes \emph{bitcoins}]
256-
257-
\objectifs{Objectifs : créer un livre de compte (appelé \emph{blockchain} pour le \emph{bitcoin}) qui enregistre toutes les transactions, ce registre est public et certifié. Il est pratiquement impossible d'y falsifier une transaction déjà inscrite.}
258-
271+
\section*{Tes \emph{bitcoins}}
259272

260273
\myfigure{0.5}{
261274
\tikzinput{fig-bitcoin-3}
262275
}
263276

264-
\begin{enumerate}
265-
\item \textbf{Initialisation et ajout d'une transaction.}
277+
\newpage
278+
279+
\textbf{Initialisation et ajout d'une transaction.}
266280

267281
\begin{enumerate}
268-
\item Initialise une variable globale \ci{Livre} qui est une liste et contient au départ une preuve nulle : \ci{Livre = [ [0,0,0,0,0,0] ]} .
282+
\item Variable globale \ci{Livre} initialisée à \ci{Livre = [ [0,0,0,0,0,0] ]} .
269283

270284
\item Une \emph{transaction} est une chaîne de caractères comprenant un nom et la somme à ajouter (ou à retrancher) à son compte. Par exemple \ci{"Abel +25"} ou \ci{"Barbara -45"}.
271285

272-
Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaine de caractère \ci{transaction} à la liste \ci{Livre}.
286+
Programme une fonction \ci{ajout_transaction(transaction)} qui ajoute la chaîne de caractère \ci{transaction} à la liste \ci{Livre}.
273287
Par exemple après l'initialisation \ci{ajout_transaction("Camille +100")},
274288
\ci{Livre} vaut \ci{[ [0, 0, 0, 0, 0, 0], "Camille +100" ]}.
275-
Attention, pour pouvoir modifier \ci{Livre} il faut commencer la fonction par : \ci{global Livre}.
276289

277-
\end{enumerate}
278-
279-
\item Dès qu'une transaction est ajoutée, il faut calculer et ajouter au livre de comptes une preuve de travail. Programme une fonction \ci{minage()}, sans paramètre, qui ajoute une preuve de travail au livre.
290+
291+
Attention, pour pouvoir modifier \ci{Livre} il faut commencer la fonction par : \ci{global Livre}.
292+
293+
\newpage
294+
295+
\textbf{Calcul et ajout d'une preuve de travail.}
296+
297+
Dès qu'une transaction est ajoutée, il faut calculer et ajouter au livre de compte une preuve de travail. Programme une fonction \ci{minage()}, sans paramètre, qui ajoute une preuve de travail au livre.
280298

281299
Voici comment faire :
282300
\begin{itemize}
283-
\item On prend la dernière transaction \ci{transaction}, on la transforme en une liste d'entiers par la fonction \ci{phrase_vers_liste()} de l'activité 2.
301+
\item On prend la dernière transaction \ci{transaction}, on la transforme en une liste d'entiers par une fonction \ci{phrase_vers_liste()} (on associe à un caractère sur ordre ASCII/unicode modulo $100$).
284302
\item On prend la preuve de travail \ci{prec_preuve} située juste avant cette transaction.
285303
\item On forme la liste \ci{liste} composée d'abord des éléments de \ci{prec_preuve}, puis des éléments de la liste d'entiers obtenue en convertissant la chaîne \ci{transaction}.
286304
\item On calcule une preuve de travail de cette liste.
@@ -293,10 +311,22 @@ \section*{Hachage d'une liste}
293311
On rappelle que la preuve de travail n'est pas unique et qu'en plus elle dépend
294312
de l'objectif \ci{Max}.
295313

296-
\item Une seule personne à la fois ajoute une preuve de travail. Par contre tout le monde a la possibilité de vérifier que la preuve proposée est correcte (et devrait le faire).
314+
\newpage
315+
316+
\textbf{Vérification du livre de compte.}
317+
318+
Une seule personne à la fois ajoute une preuve de travail. Par contre tout le monde a la possibilité de vérifier que la preuve proposée est correcte (et devrait le faire).
319+
320+
297321
Écris une fonction \ci{verification_livre()}, sans paramètre, qui vérifie que la dernière preuve ajoutée au \ci{Livre} est valide.
298322

299-
\item Écris un livre de compte qui correspond aux données suivantes :
323+
324+
\bigskip
325+
326+
327+
\textbf{Exemple.}
328+
329+
Écris un livre de compte qui correspond aux données suivantes :
300330
\begin{itemize}
301331
\item On prend \ci{Max = [0,0,5]} et au départ \ci{Livre = [ [0,0,0,0,0,0] ]}.
302332
\item \ci{"Alfred -100"} (Alfred doit 100 \emph{bitcoins}).
@@ -306,13 +336,6 @@ \section*{Hachage d'une liste}
306336

307337
\end{enumerate}
308338

309-
Conclusion : imaginons que Alfred veuille tricher, il veut changer le livre de compte afin de recevoir 100 \emph{bitcoins} au lieu d'en devoir 100. Il doit donc changer la transaction le concernant en \ci{"Alfred +100"} mais il doit alors recalculer une nouvelle preuve de travail ce qui est compliqué, surtout il doit aussi recalculer la preuve de la transaction de Barnabé et aussi celle de la transaction de Chloé !
310-
311-
Quelqu'un qui veut modifier une transaction doit modifier toutes les preuves de travail suivantes. Si chaque preuve demande suffisamment de temps de calcul ceci est impossible. Pour le \emph{bitcoin} chaque preuve demande énormément de calculs (trop pour une personne seule) et une nouvelle preuve est à calculer toutes les 10 minutes. Il est donc impossible pour une personne de modifier une transaction passée.
312-
313-
\end{activite}
314-
315339

316-
L'autre aspect du \emph{bitcoin} que nous n'avons pas abordé, c'est de s'assurer de l'identité de chaque personne impliquée, afin que personne ne puisse récupérer l'argent d'un autre. Ceci est rendu possible grâce à la cryptographie à clé privée/clé publique (système RSA). Chaque compte est identifié par une clé publique (deux très grands entiers), ce qui garantit l'anonymat. Mais surtout, seul celui qui possède la clé privée du compte (un grand entier) peut accéder à ses \emph{bitcoins}.
317340

318341
\end{document}

chaines/chaines.pdf

146 Bytes
Binary file not shown.

chaines/chaines.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@
335335

336336

337337
\item Un crime a été commis dans le château d'Adéno.
338-
Tu as récupéré deux brins d'ADN, provenant de deux positions éloignées de l'ADN du coupable. Il y a quatre suspects, dont tu as sequencé l'ADN.
338+
Tu as récupéré deux brins d'ADN, provenant de deux positions éloignées de l'ADN du coupable. Il y a quatre suspects, dont tu as séquencé l'ADN.
339339
Sauras-tu trouver qui est le coupable ?
340340

341341
Premier code du coupable : \mot{CATA}

chercher/chercher.pdf

-18.8 KB
Binary file not shown.

chercher/chercher.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
La façon la plus simple de savoir si une sous-chaîne est présente dans une chaîne de caractères est d'utiliser l'opérateur \og{}\ci{in}\fg{}. Par exemple, l'expression :\\
3131
\centerline{\ci{"PAS" in "ETRE OU NE PAS ETRE"}}
32-
vaut \og{}vrai\fg{} car la sous-chaine \mot{PAS} est bien présente dans la phrase
32+
vaut \og{}vrai\fg{} car la sous-chaîne \mot{PAS} est bien présente dans la phrase
3333
\mot{ETRE OU NE PAS ETRE}.
3434

3535
Déduis-en une fonction \ci{chercher_in(chaine,sous_chaine)} qui renvoie \og{}vrai\fg{} ou \og{}faux\fg{}, selon que la sous-chaîne est (ou non) présente dans la chaîne.

cover/AlteDin1451Mittelschrift.ttf

51 KB
Binary file not shown.

cover/exo7_logo_couleurs.pdf

2.22 KB
Binary file not shown.

cover/exo7_logo_couleurs.tex

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
\documentclass[tikz,border=7pt]{standalone}
2+
\usetikzlibrary{svg.path}
3+
4+
\definecolor{myred}{rgb}{0.93,0.26,0}
5+
\definecolor{myorange}{rgb}{0.97,0.58,0}
6+
\definecolor{myyellow}{rgb}{1,0.86,0}
7+
8+
\begin{document}
9+
\begin{tikzpicture}[yscale=-1,x=1pt,y=1pt]
10+
\fill[color=myorange] svg{M30 70l40 0 0 40-40 0z};
11+
\fill[color=myred] svg{M30 70l0-30-30 0 0 30z};
12+
\fill[color=myyellow] svg{M70 70l-40-30 30-40 40 30-30 40z};
13+
\fill[color=black] svg{M49.49 35.64l4.61 0c.55 0 .84-.13 .85-.83 0-.65-.23-.83-.85-.82l-4.61 0 0-3.26 .86 0c1.37 0 2.76 .06 4.12 .06 .62 0 1.02 0 1.02-.84l0-.15c0-.56-.12-.84-.84-.84l-6.91 0c-.63 0-.84 .19-.84 .84l0 10.46c0 .63 .19 .84 .84 .84l7.18 0c.67 0 .84-.23 .84-.84l0-.25c0-.84-.4-.84-.99-.84-.91 0-1.81 .04-2.72 .04-.44 0-2.25 .02-2.56 .03zM61.87 36.93l2.55-3.12c.18-.21 .18-.28 .18-.37 0-.38-.35-.38-.62-.39l-.76 0c-.31 0-.53 0-.77 .27-.09 .09-1.23 1.62-1.53 2.02l-1.51-1.9c-.3-.37-.49-.38-.9-.39l-.77 0c-.23 0-.61 0-.61 .39 0 .12 .05 .19 .17 .33l2.65 3.16-2.77 3.43c-.11 .12-.17 .21-.18 .36 0 .38 .38 .38 .63 .38l.76 0c.59 0 .62-.06 1-.63l1.51-2.25 1.79 2.53c.25 .35 .46 .35 .83 .35l.78 0c.24 0 .61 0 .61-.38 0-.14-.07-.21-.19-.37zM74.47 37.15c0-2.88-1.4-4.39-4.27-4.4-2.94 0-4.29 1.56-4.29 4.4 0 2.86 1.51 4.15 4.27 4.14 2.76 0 4.28-1.26 4.29-4.14zm-4.27 2.77c-1.9 0-1.9-1.58-1.9-2.99 0-1.35 0-2.92 1.88-2.91 1.9 0 1.9 1.55 1.9 2.91 0 1.39 0 2.99-1.88 2.99zM81.48 30.79c-3.94 4.34-3.94 8.76-3.93 9.66 0 .56 .12 .84 .84 .84l.81 0c.28 0 .84 0 .84-.68 .05-4.36 1.58-7.54 3.69-10.19 .14-.18 .14-.32 .14-.64 0-.38 0-.86-.74-.87-.6-.02-4.13-.02-4.99-.02l-1.11 0c-.84 0-1.19 0-1.19 .84l0 .23c0 .28 0 .61 .37 .77 .12 .07 .7 .07 1.07 .07 .4 0 .83-.02 1.23-.01z};
14+
\end{tikzpicture}
15+
\end{document}

0 commit comments

Comments
 (0)