diff --git a/docs/presentation_17_03_23/centralisation/attaques.tex b/docs/presentation_17_03_23/centralisation/attaques.tex index 6d39e59..9c7134a 100644 --- a/docs/presentation_17_03_23/centralisation/attaques.tex +++ b/docs/presentation_17_03_23/centralisation/attaques.tex @@ -1,112 +1,148 @@ % Auteur : Romain TESTUD \begin{frame}{Les attaques} \begin{itemize} - \item De nombreux cas d'attaque sur des CEX\footnotemark. + \item De nombreux cas d'attaque sur des CEX. \item Des sommes importantes sont concernés. \end{itemize} \begin{figure} \centering - \includegraphics[scale = 0.45]{img/attaques.png} - \label{fig:my_label2} - %\caption{caption} - \end{figure} - \footnotetext{Centralised EXchange} -\end{frame} - -\begin{frame}{Wormhole} - Attaque sur le bridge entre Solana et Ethereum : - \begin{itemize} - \item Quelques heures après un correctif non déployé. - \item Exploitation d'un défaut d'implémentation. - \item La transaction de l'attaquant est signée par les gardiens. - - \end{itemize} -\end{frame} -\begin{frame}{Wormhole} - \begin{block}{Fonctionnement du dépôt de jeton} - \begin{itemize} - \item Appel de plusieurs fonctions de vérification lors du dépôt. - \begin{itemize} - \item $complete\_wrapped$ $\Rightarrow$ - $transfer\_message$ - $\Rightarrow$ $post\_vaa$ - $\Rightarrow$ $verify\_signature$ - \end{itemize} - %\item Fonction complete\_wrapped appellée lors du mint de Wormhole ETH sur Solana - %\item transfer\_message en paramètre : spécifie le token et combien doit être mint, signé par les gardiens - %\item Contrat sur Solana, créé en utilisant la fonction post\_vaa qui vérifie la signature des gardiens - %\item Appel a verify\_signature qui utilise un programme de Solana pour verifier les signatures - \end{itemize} - Erreur d'implémentation dans $verify\_signature$. - \end{block} -\end{frame} - -\begin{frame}{Wormhole} - \begin{block}{$verify\_signature$ appelle un programme de vérification} - \begin{itemize} - \item $Sysvar: Instructions$ : Alias du programme. - \item Vérification des signatures des gardiens. - \item Il est possible d'utiliser d'une adresse différente. - \end{itemize} - \end{block} - \begin{figure} - \centering - \includegraphics[scale = 0.3]{img/wormhole_img1.png} + \includegraphics[scale = 0.45]{centralisation/img_attaques/rekt.png} + \label{fig:rekt} + \caption{Classement des attaques par Rekt.news} \end{figure} \end{frame} -\begin{frame}{Wormhole} - \begin{itemize} - \item Adresse tierce entrée par l'attaquant. - \item Validation de la transaction sans signature. - \end{itemize} - \begin{figure} - \centering - \includegraphics[scale = 0.7]{img/wormhole_img2.png} - \end{figure} -\end{frame} - - - -\begin{frame}{Nomad} - \begin{itemize} - \item Protocole d'échange entre blockchains. - \item Utilisation de smart contracts. - \item Erreur d'implémentation dans le contrat Réplica. - \end{itemize} - $\Rightarrow$ Possibilité de passer la vérification des messages. -\end{frame} - -\begin{frame}{Nomad} - \begin{block}{Fonctionnement de Nomad} +\begin{frame}{Les attaques} + \begin{block}{Différentes cibles d'attaques} \begin{itemize} - \item Les messages ont des racines. - \item Vérification de la racine lors de l'émission du message. - \item Appel de la fonction process pour vérifier et envoyer le message. + \item Plate-formes. + \item Bridges. \end{itemize} \end{block} \pause - \begin{block}{Vérification} + \begin{block}{Surface d'attaque} \begin{itemize} - \item $acceptableRoot$ : vérification de la validité de la racine du contrat. + \item Ingénierie sociale. + \item Erreurs d'implémentations. + \item Fonctions dépréciées. \end{itemize} \end{block} \end{frame} -\begin{frame}{Nomad} - \begin{block}{Défaut d'implémentation} +\begin{frame}{Des raisons }%(???) + \begin{block}{Marché évolutif} \begin{itemize} - \item La racine $0x00$ est valide. - \item La racine par défaut des messages est $0x0$ + \item Evolution rapide. + \item De nombreuses innovations. + \item Manque de sensibilisation. \end{itemize} - $\Rightarrow$ Un message avec une racine nulle est donc par défaut valide. + \end{block} + +\end{frame} + +\begin{frame}{Des Solutions ?} + \begin{block}{Contre-mesures} + \begin{itemize} + \item Établir des standards. + \item Réaliser des audits. + \end{itemize} + \end{block} + \pause + \begin{block}{Vers le décentralisé} + Suppression du tiers de confiance. \end{block} \end{frame} -\begin{frame}{Des solutions ?} - \begin{itemize} - \item Etablir des standards ? - \item Supprimer le tiers de confiance ? - \end{itemize} - $\Rightarrow$ Vers le décentralisé -\end{frame} +%\begin{frame}{Wormhole} +% Attaque sur le bridge entre Solana et Ethereum : +% \begin{itemize} +% \item Quelques heures après un correctif non déployé. +% \item Exploitation d'un défaut d'implémentation. +% \item La transaction de l'attaquant est signée par les gardiens. +% +% \end{itemize} +%\end{frame} +% +% +%\begin{frame}{Wormhole} +% \begin{block}{Fonctionnement du dépôt de jeton} +% \begin{itemize} +% \item Appel de plusieurs fonctions de vérification lors du dépôt. +% \begin{itemize} +% \item $complete\_wrapped$ $\Rightarrow$ +% $transfer\_message$ +% $\Rightarrow$ $post\_vaa$ +% $\Rightarrow$ $verify\_signature$ +% \end{itemize} +% %\item Fonction complete\_wrapped appellée lors du mint de Wormhole ETH sur Solana +% %\item transfer\_message en paramètre : spécifie le token et combien doit être mint, signé par les gardiens +% %\item Contrat sur Solana, créé en utilisant la fonction post\_vaa qui vérifie la signature des gardiens +% %\item Appel a verify\_signature qui utilise un programme de Solana pour verifier les signatures +% \end{itemize} +% Erreur d'implémentation dans $verify\_signature$. +% \end{block} +%\end{frame} +% +%\begin{frame}{Wormhole} +% \begin{block}{$verify\_signature$ appelle un programme de vérification} +% \begin{itemize} +% \item $Sysvar: Instructions$ : Alias du programme. +% \item Vérification des signatures des gardiens. +% \item Il est possible d'utiliser d'une adresse différente. +% \end{itemize} +% \end{block} +% \begin{figure} +% \centering +% \includegraphics[scale = 0.3]{img/wormhole_img1.png} +% \end{figure} +%\end{frame} +% +%\begin{frame}{Wormhole} +% \begin{itemize} +% \item Adresse tierce entrée par l'attaquant. +% \item Validation de la transaction sans signature. +% \end{itemize} +% \begin{figure} +% \centering +% \includegraphics[scale = 0.7]{img/wormhole_img2.png} +% \end{figure} +%\end{frame} +% +% +% +%\begin{frame}{Nomad} +% \begin{itemize} +% \item Protocole d'échange entre blockchains. +% \item Utilisation de smart contracts. +% \item Erreur d'implémentation dans le contrat Réplica. +% \end{itemize} +% $\Rightarrow$ Possibilité de passer la vérification des messages. +%\end{frame} +% +%\begin{frame}{Nomad} +% \begin{block}{Fonctionnement de Nomad} +% \begin{itemize} +% \item Les messages ont des racines. +% \item Vérification de la racine lors de l'émission du message. +% \item Appel de la fonction process pour vérifier et envoyer le message. +% \end{itemize} +% \end{block} +% \pause +% \begin{block}{Vérification} +% \begin{itemize} +% \item $acceptableRoot$ : vérification de la validité de la racine du contrat. +% \end{itemize} +% \end{block} +%\end{frame} +% +%\begin{frame}{Nomad} +% \begin{block}{Défaut d'implémentation} +% \begin{itemize} +% \item La racine $0x00$ est valide. +% \item La racine par défaut des messages est $0x0$ +% \end{itemize} +% $\Rightarrow$ Un message avec une racine nulle est donc par défaut valide. +% \end{block} +%\end{frame} +% + diff --git a/docs/presentation_17_03_23/centralisation/img_attaques/rekt.png b/docs/presentation_17_03_23/centralisation/img_attaques/rekt.png new file mode 100644 index 0000000..8aee4de Binary files /dev/null and b/docs/presentation_17_03_23/centralisation/img_attaques/rekt.png differ diff --git a/docs/presentation_17_03_23/centralisation/img_plateformes/achat-vente.png b/docs/presentation_17_03_23/centralisation/img_plateformes/achat-vente.png new file mode 100644 index 0000000..0063679 Binary files /dev/null and b/docs/presentation_17_03_23/centralisation/img_plateformes/achat-vente.png differ diff --git a/docs/presentation_17_03_23/centralisation/index.tex b/docs/presentation_17_03_23/centralisation/index.tex index 05e8abb..f00b6e5 100644 --- a/docs/presentation_17_03_23/centralisation/index.tex +++ b/docs/presentation_17_03_23/centralisation/index.tex @@ -11,4 +11,7 @@ \input{centralisation/wormhole.tex} \subsection{Les attaques} -\input{centralisation/attaques.tex} \ No newline at end of file +\input{centralisation/attaques.tex} + +\subsection{Les limites du centralisé} +\input{centralisation/limites.tex} \ No newline at end of file diff --git a/docs/presentation_17_03_23/centralisation/limites.tex b/docs/presentation_17_03_23/centralisation/limites.tex new file mode 100644 index 0000000..6ed14c6 --- /dev/null +++ b/docs/presentation_17_03_23/centralisation/limites.tex @@ -0,0 +1,16 @@ +% Auteur : Romain TESTUD +\begin{frame}{Les limites du centralisé} + \begin{itemize} + \item Manque de transparence. + \item Manque de maturité en matière de sécurité. + \item Questionnement sur le tiers de confiance + \end{itemize} + \pause + \begin{block}{Le tiers de confiance} + \begin{itemize} + \item Source d'attaques. + \item Point critique des CEX. + \end{itemize} + $\rightarrow$ Volonté de se passer d'un tiers de confiance. + \end{block} +\end{frame} \ No newline at end of file diff --git a/docs/presentation_17_03_23/centralisation/plateformes.tex b/docs/presentation_17_03_23/centralisation/plateformes.tex index 7723e19..c99832f 100644 --- a/docs/presentation_17_03_23/centralisation/plateformes.tex +++ b/docs/presentation_17_03_23/centralisation/plateformes.tex @@ -1,12 +1,21 @@ % Auteur : Romain TESTUD -\begin{frame}{Plate-formes d'échanges Centralisés} - \begin{block}{Plate-formes privées d'échanges de données sur blockchain} +\begin{frame}{Les plate-formes d'échanges centralisés} + \begin{block}{La solution la plus répandue} \begin{itemize} - \item Possibilité d'échanges inter-blockchains par l'utilisation de bridges. - \item Présence d'un intermédiaire entre les utilisateurs. + \item Achat / Vente / Échange de crypto-actifs. + \item Intermédiaire entre les utilisateurs. \end{itemize} \end{block} -\pause + \pause + \begin{block}{Interopérabilité ?} + \begin{itemize} + \item Utilisation de bridges inter-blockchains. + \item Possibilité d'échanges entre tokens. + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}{Fonctionnement} \begin{block}{Méthode de l'Order Book} \begin{itemize} \item Dépôt des fonds dans un porte monnaie de la plate-forme. @@ -14,38 +23,42 @@ \item Échange des IOU contre les token demandés. \end{itemize} \end{block} - \footnotetext{IOU (I Owe You) : Reconnaissance de dette de la plate-forme envers l'utilisateur} - %L'utilisateur place un ordre d'achat, la plateforme trouve un vendeur, l'échange s'effectue + \begin{figure} + \centering + \includegraphics[scale = 0.45]{centralisation/img_plateformes/achat-vente.png} + \label{fig:Order} + \caption{Modélisation d'un Achat-Vente} + \end{figure} \end{frame} \begin{frame}{Avantages et inconvénients} \begin{block}{Avantages} \begin{itemize} - \item Facile d'utilisation - \item Fiable + \item Diverses fonctionnalités. + \item Utilisation simplifiée. \end{itemize} \end{block} -\pause -\begin{block}{Inconvénients} - \begin{itemize} - \item Sécurité de la plate-forme. - \item L'utilisateur cède la gestion de ses données. - \item Fonctionnement interne opaque. - \end{itemize} - $\Rightarrow$ Confiance utilisateur/plate-forme. -\end{block} + \pause + \begin{block}{Inconvénients} + \begin{itemize} + \item Sécurité et fiabilité relative au tiers. + \item Gestion des données utilisateurs par le tiers. + \item Fonctionnement interne opaque. + \end{itemize} + $\Rightarrow$ Confiance utilisateur/plate-forme. + \end{block} \end{frame} -\begin{frame}{Fonctionnement opaque} - \begin{itemize} - \item Pas ou peu de documentation technique. - \item Code inaccessible. - \end{itemize} - \pause - \begin{block}{Ce que l'on sait} - \begin{itemize} - \item Fonctionnement en Order Book. - \item utilisation de bridges inter-blockchains. - \end{itemize} - \end{block} -\end{frame} +%\begin{frame}{Fonctionnement opaque} +% \begin{itemize} +% \item Pas ou peu de documentation technique. +% \item Code inaccessible. +% \end{itemize} +% \pause +% \begin{block}{Ce que l'on sait} +% \begin{itemize} +% \item Fonctionnement en Order Book. +% \item utilisation de bridges inter-blockchains. +% \end{itemize} +% \end{block} +%\end{frame} \ No newline at end of file diff --git a/docs/presentation_17_03_23/centralisation/wormhole.tex b/docs/presentation_17_03_23/centralisation/wormhole.tex index bef38ed..f821e82 100644 --- a/docs/presentation_17_03_23/centralisation/wormhole.tex +++ b/docs/presentation_17_03_23/centralisation/wormhole.tex @@ -1,79 +1,82 @@ % Auteur : Louis de Campou \begin{frame}{Wormhole} -Protocole de passage de messages qui connecte 22 blockchains dont Ethereum et Solana. -\newline - -\begin{itemize} - \item Gardiens - \item Verified Action Approval (VAA) - \item Payloads -\end{itemize} + Version 1 : \textit{Bridge} entre Ethereum et Solana + \newline + \newline + Version 2 : Protocole générique de passage de messages qui connecte 22 \textit{blockchains}. + \newline + + \begin{itemize} + \item Gardiens + \item VAA (\textit{verified action approval}) + \item \textit{Payloads} + \end{itemize} \end{frame} - + \begin{frame}{Wormhole : Gardiens} - -Un gardien est une autorité de confiance qui a comme rôle d'observer et de signer un message.\newline - - \begin{block}{Caractéristiques du réseau de gardiens} - \begin{itemize} - \item Sans leader - \item 19 gardiens à parts égales - \item Preuve d'autorité (PoA) - \item Multisignature (m/n) - \item Le consensus est atteint lorsque 2/3 des gardiens ont signé le message - \end{itemize} - \end{block} + + Un gardien est une autorité de confiance qui a comme rôle de valider un message.\newline + + \begin{block}{Caractéristiques du réseau de gardiens} + \begin{itemize} + \item Sans leader + \item 19 gardiens à parts égales + \item Preuve d'autorité (PoA) + \item \textit{Multisignature} (M/N) + \item Le consensus est atteint lorsque 2/3 des gardiens ont signé le message + \end{itemize} + \end{block} \end{frame} - -\begin{frame}{Wormhole : Verified Action Approval (VAA)} - -Primitive de messagerie de base de Wormhole -\newline - -En-tête : -\begin{itemize} - \item Index de l'ensemble des gardiens - \item Nombre de signatures stockées - \item Collection des signatures ECSDA (secp256k1) -\end{itemize} - -Corps : -\begin{itemize} - \item L'ID de la chaîne Wormhole du contrat émetteur - \item L'adresse du contrat émetteur - \item Le payload -\end{itemize} + +\begin{frame}{Wormhole : VAA} + + Primitive de messagerie de base de Wormhole + \newline + + En-tête : + \begin{itemize} + \item Index de l'ensemble des gardiens + \item Nombre de signatures stockées + \item Collection des signatures ECSDA (secp256k1) + \end{itemize} + + Corps : + \begin{itemize} + \item L'ID de la chaîne Wormhole du contrat émetteur + \item L'adresse du contrat émetteur + \item Le \textit{payload} + \end{itemize} \end{frame} - -\begin{frame}{Wormhole : Payloads} - -Charges utiles spécifiques attachées à un VAA depuis une chaîne source pour indiquer à la chaîne cible comment traiter le message Wormhole après vérification.\newline - -5 payloads au total dont : -\begin{itemize} - \item Transfer (déclenche la libération de jetons verrouillés) - \item AssetMeta (atteste les méta-données de l'actif, obligatoire avant un premier transfert) -\end{itemize} + +\begin{frame}{Wormhole : \textit{Payloads}} + + Charges utiles spécifiques attachées à un VAA depuis une chaîne source pour indiquer à la chaîne cible comment traiter le message Wormhole après vérification.\newline + + 5 payloads au total dont : + \begin{itemize} + \item \textit{AssetMeta} : informe des méta-données de l'actif verrouillé, obligatoire avant un premier transfert + \item \textit{Transfer} : déclenche la libération de jetons verrouillés + \end{itemize} \end{frame} - -\begin{frame}{Wormhole : Payload - Transfer} - -Pour transférer des jetons des chaînes A à B, il y a verrouillage des jetons sur la chaîne A puis on frappe ("mint") sur la chaîne B.\newline - -\begin{itemize} - \item ID de la charge utile - \item Montant du transfert - \item L'adresse sur la chaîne d'origine - \item ID de la chaîne d'origine - \item L'adresse sur la chaîne de destination - \item ID de la chaîne de destination -\end{itemize} + +\begin{frame}{Wormhole : \textit{Payload} - \textit{Transfer}} + + Pour transférer des jetons des chaînes A à B, il y a verrouillage des jetons sur la chaîne A puis on frappe les jetons sur la chaîne B.\newline + + \begin{itemize} + \item ID du \textit{payload} + \item Montant du transfert + \item L'adresse sur la chaîne d'origine + \item ID de la chaîne d'origine + \item L'adresse sur la chaîne de destination + \item ID de la chaîne de destination + \end{itemize} \end{frame} - + \begin{frame}{Wormhole : Conclusion} - -\begin{itemize} - \item Le réseau de gardiens est l'élement le plus critique de l'écosystème mais aussi le plus opaque - \item Wormhole se dit décentralisé mais ne l'est pas selon notre définition -\end{itemize} + + \begin{itemize} + \item Le réseau de gardiens est l'élement le plus critique de l'écosystème mais aussi le plus opaque + \item Wormhole justifie sa décentralisation par la présence de plusieurs parties dans le contrôle du réseau + \end{itemize} \end{frame} \ No newline at end of file diff --git a/docs/presentation_17_03_23/conclusion/index.tex b/docs/presentation_17_03_23/conclusion/index.tex new file mode 100644 index 0000000..a2abf55 --- /dev/null +++ b/docs/presentation_17_03_23/conclusion/index.tex @@ -0,0 +1,54 @@ +\begin{frame}{Centralisé} + \begin{block}{Le centralisé offre\dots} + \begin{itemize} + \item Diversité d'acteurs. + \item Accessibilité. + \item Multiples fonctionnalités. + \end{itemize} + \end{block} + \pause + \begin{block}{Mais\dots} + \begin{itemize} + \item Opacité des protocoles. + \item Failles de sécurité. + \item Collecte des données. + \end{itemize} + \end{block} +\end{frame} + + +\begin{frame}{Décantralisé} + \begin{block}{Le décentralisé offre\dots\dots} + \begin{itemize} + \item Pas de tiers de confiance. + \item Transparence. + \item Fiabilité accrue. + \end{itemize} + \end{block} + \pause + \begin{block}{Mais\dots} + \begin{itemize} + \item Difficiles d'accès. + \item Intérêt économique faible. + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}{Conclusion générale} + \begin{itemize} + \item Flou entre centralisé/décentralisé. + \item Définition variable. + \end{itemize} +\end{frame} + +\begin{frame} + \begin{figure} + \begin{figure} + \centering + \includegraphics[scale = 0.2]{conclusion/tableau.png} + \label{fig:recap} + \caption{Tableau récapitulatif} + \end{figure} + \end{figure} + +\end{frame} \ No newline at end of file diff --git a/docs/presentation_17_03_23/conclusion/tableau.png b/docs/presentation_17_03_23/conclusion/tableau.png new file mode 100644 index 0000000..548b753 Binary files /dev/null and b/docs/presentation_17_03_23/conclusion/tableau.png differ diff --git a/docs/presentation_17_03_23/decentralisation/Procedures-of-Lightning-network.png b/docs/presentation_17_03_23/decentralisation/Procedures-of-Lightning-network.png new file mode 100644 index 0000000..d9dc021 Binary files /dev/null and b/docs/presentation_17_03_23/decentralisation/Procedures-of-Lightning-network.png differ diff --git a/docs/presentation_17_03_23/decentralisation/Timed-HashLocks-Diagram-Image.png b/docs/presentation_17_03_23/decentralisation/Timed-HashLocks-Diagram-Image.png new file mode 100644 index 0000000..7931fd9 Binary files /dev/null and b/docs/presentation_17_03_23/decentralisation/Timed-HashLocks-Diagram-Image.png differ diff --git a/docs/presentation_17_03_23/decentralisation/aliceBob.jpg b/docs/presentation_17_03_23/decentralisation/aliceBob.jpg deleted file mode 100644 index 7a01e82..0000000 Binary files a/docs/presentation_17_03_23/decentralisation/aliceBob.jpg and /dev/null differ diff --git a/docs/presentation_17_03_23/decentralisation/atomicSwap.png b/docs/presentation_17_03_23/decentralisation/atomicSwap.png new file mode 100644 index 0000000..1d7fb4f Binary files /dev/null and b/docs/presentation_17_03_23/decentralisation/atomicSwap.png differ diff --git a/docs/presentation_17_03_23/decentralisation/atomicswap.png b/docs/presentation_17_03_23/decentralisation/atomicswap.png deleted file mode 100644 index 16ddaef..0000000 Binary files a/docs/presentation_17_03_23/decentralisation/atomicswap.png and /dev/null differ diff --git a/docs/presentation_17_03_23/decentralisation/htlc.tex b/docs/presentation_17_03_23/decentralisation/htlc.tex index 648c9df..ff3cdb1 100644 --- a/docs/presentation_17_03_23/decentralisation/htlc.tex +++ b/docs/presentation_17_03_23/decentralisation/htlc.tex @@ -1,158 +1,72 @@ % auteur: Dorian VOLPE \begin{frame} - \frametitle{Hashed Timelock Contract (HTLC)} -\begin{itemize} - \item Ne nécessite pas de de tiers de confiance - \item Réduit le risque de perte si l'on suit le protocole - \item Verrouille les fonds dans un portefeuille qui peut être révoqué en cas de problème -\end{itemize} + \frametitle{\textit{Hashed Timelock Contract} (HTLC)} + \begin{itemize} + \item Ne nécessite pas de de tiers de confiance + \item Se base sur deux primitives + \begin{itemize} + \item Un verrou temporel + \item Un verrou de hachage + \end{itemize} + \item Verrouille les fonds dans un portefeuille qui peut être révoqué en cas de problème + \end{itemize} \end{frame} \begin{frame} - \frametitle{HTLC fonctionnement - 1/2} - \begin{itemize} - \item Alice génère un hachage à partir de sa clé privée et l’envoie à Bob - \item Elle génère également une pré-image du hachage en créant une transaction - \item Bob génère également un hachage à partir de sa clé et l’envoie à Alice - \item Une fois que Bob reçoit la transaction d’Alice, il signe la transaction en utilisant la clé originale qui est déjà disponible avec lui dans la pré-image - \item Si Bob ne signe pas la transaction dans le temps imparti, la transaction est annulée et les fonds sont retournés à Alice - \end{itemize} + \frametitle{HTLC fonctionnement - 1/2} + \begin{itemize} + \item La modification du contrat peut être effectué uniquement avec l'accord des deux parties + \item Renouvellement du timer à chaque modification + \end{itemize} \end{frame} \begin{frame} - \frametitle{HTLC fonctionnement - 2/2} - \begin{figure} - \includegraphics[scale = 0.4]{decentralisation/aliceBob.jpg} - \caption[short]{Zoom sur les HTLC} - \end{figure} - -\end{frame} + \frametitle{HTLC fonctionnement - 2/2} -\begin{frame} - \frametitle{Atomic Swaps} - Un swap atomique permet un échange de cryptomonnaies de blockchains séparées. - \newline - \begin{itemize} - \item Effectué entre deux entités sans l’intervention d’un tiers. - \item L’idée est de supprimer les intermédiaires centralisés comme les échanges réglementés et de donner aux propriétaires de jetons un contrôle total. - \item Utilise les HTLC. \newline - \end{itemize} - Deux propriétaires de cryptoactifs acceptent d’échanger leurs jetons pour une quantité donnée - $\Rightarrow$ notion de connecteur publique. -\end{frame} + \begin{figure}[h!] -\begin{frame} - \frametitle{Atomic Swaps - Exemple} - \begin{figure} - \includegraphics[scale = 0.35]{decentralisation/atomicswap.png} - \caption{Processus d'échange atomique avec HTLC} - \end{figure} - -\end{frame} - -\begin{frame} - \frametitle{Atomic Swaps - Avantages} - \subtitle{Avantages} - \begin{itemize} - \item Réduction des couts de transaction. - \item Échange pair à pair sans tiers de confiance $\Rightarrow$ réellement décentralisé. - \item Protection des échanges: - \begin{itemize} - \item Si un tiers suit le protocole il est assuré de ne pas perdre d'argent. - \item Si jamais il ne suit pas le protocole il perd sa mise. - \end{itemize} - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Le réseau Lightning (Lightning Network)} - \begin{itemize} - \item Couche secondaire de la blockchain Bitcoin \newline - \item Permet de faire des transactions en dehors de la blockchain principale $\Rightarrow$ off-chain - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Le réseau Lightning (Lightning Network) - Fonctionnement 1/2} - Grâce à une transaction Bitcoin, deux noeuds du réseau peuvent construire un canal bidirectionnel sur lequel ils déposent une certaine quantité de bitcoins. - \newline - Les deux parties peuvent effectuer des transactions entre elles sans les diffuser sur le réseau Bitcoin. - -\end{frame} - -\begin{frame} - \frametitle{Le réseau Lightning (Lightning Network) - Fonctionnement 2/2} - \centering - \begin{figure} - \includegraphics[scale = 0.24]{decentralisation/lightning.jpg} - \end{figure} - -\end{frame} - -\begin{frame} - \frametitle{Le réseau Lightning (Lightning Network) - Avantages} - \begin{itemize} - \item Aucune limite sur le nombre de transactions par seconde sur le réseau. - \newline - \item Des transactions instantanées. Plus d’attente de confirmation par les mineurs. - \newline - \item Des frais de transaction extrêmement faibles ouvrant la voie aux micro-transactions. - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Implémentation du MIT} -Implémentaion des swaps atomiques sur le réseau Lightning par le MIT. Les objectifs sont : -\newline -\begin{itemize} - \item Permettre d'utiliser le réseau Lightning sur des blockchains différentes. - \item Permettre des échanges sur des blockchains non monétaires \footnote{blockchains d'informations, de données,etc...}. - \item Proposer une interface pour des échanges cross-chain. -\end{itemize} + \stackunder{ + \includegraphics[scale=0.35]{decentralisation/Timed-HashLocks-Diagram-Image.png}} + {\scriptsize + Source: \url{https://blog.scottlogic.com/2016/06/16/bitcoin-redeem-scripts.html}} + \caption[short]{Utilisation d'un HTLC} + \end{figure} \end{frame} \begin{frame} - \frametitle{Implémentation du MIT - Nouvelles commandes 1/3} - \begin{block}{Price} - Commande de canal simple qui permet aux utilisateurs de rechercher la valeur marchande actuelle en USD de toute crypto-monnaie. - \end{block} - \begin{block}{Compare} - Récupère la valeur marchande actuelle de chaque devise souhaitée et effectue une - simple opération arithmétique pour retourner la valeur comparée entre elles. - \end{block} - + \frametitle{Atomic Swaps} + Un swap atomique permet un échange de cryptomonnaies de blockchains séparées + \begin{itemize} + \item Effectué entre deux entités sans l’intervention d’un tiers + \item L’idée est de supprimer les intermédiaires centralisés comme les échanges réglementés et de donner aux propriétaires de jetons un contrôle total + \item Utilise les HTLC. \newline + \end{itemize} + Deux propriétaires de cryptoactifs acceptent d’échanger leurs jetons pour une quantité donnée + $\Rightarrow$ notion de connecteur publique. \end{frame} \begin{frame} - \frametitle{Implémentation du MIT - Nouvelles commandes 2/3} - \begin{block}{Exchange} -Demande aux acteurs de la transaction d'alimenter un canal avec les montants souhaités. AVant de procéder à l'échange lui même. -\end{block} - \centering - \includegraphics[scale = 0.6]{decentralisation/exchange.png} + \frametitle{Atomic Swaps - Exemple} + \begin{figure} + \includegraphics[scale = 0.10]{decentralisation/atomicSwap.png} + \caption{Processus d'échange atomique avec HTLC} + \end{figure} \end{frame} \begin{frame} - \frametitle{Implémentation du MIT - Nouvelles commandes 3/3} - \begin{block}{Respond} - À ce stade de l'échange, Bob a une minute pour décider d'une action vis-à-vis de la demande d’échange d’Alice. Il peut faire l’une des trois choses suivantes : répondre oui et accepter l’échange, répondre non et le refuser, ou laisser la demande en "time out". - \end{block} - $\Rightarrow$ On retrouve ici le principe des HTLC + \frametitle{Atomic Swaps - Avantages} + \subtitle{Avantages} + \begin{itemize} + \item Réduction des coûts de transaction + \item Échange pair à pair sans tiers de confiance $\Rightarrow$ réellement décentralisé + \item Protection des échanges: + \begin{itemize} + \item Si un tiers suit le protocole il est assuré de ne pas perdre d'argent + \item Si jamais il ne suit pas le protocole il perd sa mise + \end{itemize} + \end{itemize} \end{frame} -\begin{frame} - \frametitle{Implémentation du MIT - Limitations} - - Il y a plusieurs limitation a cette Implémentaion: - \newline - \begin{itemize} - \item Il n'y a pas de support de channel hopping \footnote{Transitivité des échanges entres plusieurs participants.} malgrès l'utilisation du réseau Lightning. - \begin{itemize} - \item Cela implique des problème de mise a l'échelle. - \end{itemize} - \item Il n'y a pas de vérification sur les valeurs inscrites sur les chaines non monétaires. - \end{itemize} -\end{frame} diff --git a/docs/presentation_17_03_23/decentralisation/index.tex b/docs/presentation_17_03_23/decentralisation/index.tex index 5937594..abef997 100644 --- a/docs/presentation_17_03_23/decentralisation/index.tex +++ b/docs/presentation_17_03_23/decentralisation/index.tex @@ -4,3 +4,6 @@ \input{decentralisation/sidechains.tex} \subsection[HLTC]{Hash Lock Time Contract} \input{decentralisation/htlc.tex} + +\subsection[offChain]{Échanges \textit{off chain}} +\input{decentralisation/offChain.tex} diff --git a/docs/presentation_17_03_23/decentralisation/offChain.tex b/docs/presentation_17_03_23/decentralisation/offChain.tex new file mode 100644 index 0000000..b5bc83f --- /dev/null +++ b/docs/presentation_17_03_23/decentralisation/offChain.tex @@ -0,0 +1,93 @@ +\begin{frame} + \frametitle{Les échanges \textit{off chain}} + \begin{itemize} + \item Ils s'effectuent en dehors de la blockchain principale $\Rightarrow$ \textit{layer 2} + \item Permettent d'avoir un compromis avec la blockchain principale + \item Les chaines ne sont pas voués à être fusionner avec la blockchain mère + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Les échanges \textit{off chain}: Visualisation} + \begin{figure}[h!] + \centering + \stackunder{\includegraphics[scale=0.35]{decentralisation/offchain.png}} + {\scriptsize Source: \url{www.cryptoencyclopedie.com}} + \caption{Architecture \textit{off-chain}} + \label{fig:offchain} + \end{figure} +\end{frame} + + +\begin{frame} + \frametitle{Exemple d'échange \textit{off chain}: Le réseau Lightning} + \begin{itemize} + \item Couche secondaire de la blockchain Bitcoin \newline + \item Permet de faire des transactions en dehors de la blockchain principale $\Rightarrow$ off-chain \newline + \item Échanges par canaux bidirectionnel + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Le réseau Lightning (Lightning Network) - Fonctionnement 2/2} + \begin{figure}[h!] + \stackunder{ + \includegraphics[scale = 0.3 ]{decentralisation/Procedures-of-Lightning-network.png} } + {\scriptsize Source: \url{https://issam.ma/jekyll/update/2022/03/01/bitcoin-must-die-5.html}} + + \caption{Le réseau Lightning par rapport a la \textit{blockchain} Bitcoin principale} + + \end{figure} + +\end{frame} + +\begin{frame} + \frametitle{Le réseau Lightning (Lightning Network) - Avantages} + \begin{itemize} + \item Aucune limite sur le nombre de transactions par seconde sur le réseau + \newline + \item Des transactions instantanées. Plus d’attente de confirmation par les mineurs + \newline + \item Des frais de transaction extrêmement faibles ouvrant la voie aux micro-transactions + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Implémentation du MIT} + Implémentaion des swaps atomiques sur le réseau Lightning par le MIT. Les objectifs sont : + \newline + \begin{itemize} + \item Permettre d'utiliser le réseau Lightning sur des blockchains différentes. + \item Permettre des échanges sur des blockchains non monétaires \footnote{blockchains d'informations, de données,etc...}. + \item Proposer une interface pour des échanges cross-chain. + \end{itemize} + +\end{frame} + + +\begin{frame} + \frametitle{Implémentation du MIT - Nouvelles commandes} + Dans le but de faciliter les échanges des commandes ont été crée: + \newline + \begin{itemize} + \item \textit{Price} + \item \textit{Compare} + \item \textit{Exchange} + \item \textit{Respond} + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Implémentation du MIT - Limitations} + + + \begin{itemize} + \item Il n'y a pas de support de channel hopping \footnote{Transitivité des échanges entres plusieurs participants.} malgré l'utilisation du réseau Lightning. + \begin{itemize} + \item Cela implique des problème de mise a l'échelle. + \end{itemize} + \item Il n'y a pas de vérification sur les valeurs inscrites sur les chaines non monétaires. + \end{itemize} +\end{frame} diff --git a/docs/presentation_17_03_23/decentralisation/offchain.png b/docs/presentation_17_03_23/decentralisation/offchain.png new file mode 100644 index 0000000..2ed7399 Binary files /dev/null and b/docs/presentation_17_03_23/decentralisation/offchain.png differ diff --git a/docs/presentation_17_03_23/main.tex b/docs/presentation_17_03_23/main.tex index 88aeaed..2b20007 100644 --- a/docs/presentation_17_03_23/main.tex +++ b/docs/presentation_17_03_23/main.tex @@ -5,6 +5,7 @@ \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[french]{babel} +\usepackage{stackengine} \addtobeamertemplate{navigation symbols}{}{% \usebeamerfont{footline}% @@ -33,7 +34,7 @@ \subtitle{Projet de fin d'études: Master 2 Informatique Option Fiabilité et sécurité informatique 2022-2023} \author[M2 FSI]{VOLPE Dorian, ROTONDO Eloïse, TESTUD Romain,\\DE CAMPOU Louis, JOLY Amaury \\ \textbf{Encadrants :} TRAVERS Corentin, LABOUREL Arnaud \\[2ex] \includegraphics[scale=0.1]{./img/amu.png}} \institute[Aix-Marseille Université]{M2 Fiabilité et sécurité informatique} -\date{17 Mars 2023} +\date{\today} \begin{document} @@ -56,5 +57,7 @@ \input{centralisation/index.tex} \section{Décentralisation} \input{decentralisation/index.tex} +\section{Conclusion} +\input{conclusion/index.tex} \end{document} \ No newline at end of file diff --git a/docs/rapportFinal/main.ist b/docs/rapportFinal/main.ist new file mode 100644 index 0000000..0d2ef44 --- /dev/null +++ b/docs/rapportFinal/main.ist @@ -0,0 +1,31 @@ +% makeindex style file created by the glossaries package +% for document 'main' on 2023-4-3 +actual '?' +encap '|' +level '!' +quote '"' +keyword "\\glossaryentry" +preamble "\\glossarysection[\\glossarytoctitle]{\\glossarytitle}\\glossarypreamble\n\\begin{theglossary}\\glossaryheader\n" +postamble "\%\n\\end{theglossary}\\glossarypostamble\n" +group_skip "\\glsgroupskip\n" +item_0 "\%\n" +item_1 "\%\n" +item_2 "\%\n" +item_01 "\%\n" +item_x1 "\\relax \\glsresetentrylist\n" +item_12 "\%\n" +item_x2 "\\relax \\glsresetentrylist\n" +delim_0 "\{\\glossaryentrynumbers\{\\relax " +delim_1 "\{\\glossaryentrynumbers\{\\relax " +delim_2 "\{\\glossaryentrynumbers\{\\relax " +delim_t "\}\}" +delim_n "\\delimN " +delim_r "\\delimR " +headings_flag 1 +heading_prefix "\\glsgroupheading\{" +heading_suffix "\}\\relax \\glsresetentrylist " +symhead_positive "glssymbols" +numhead_positive "glsnumbers" +page_compositor "." +suffix_2p "" +suffix_3p ""