From 8aacb5aa1b4f98e452f506ace147e02e10e64683 Mon Sep 17 00:00:00 2001 From: TESTUD Romain Date: Sun, 2 Apr 2023 19:03:31 +0000 Subject: [PATCH] Intro / Conclusion / Glossaire --- .gitlab-ci.yml | 2 +- docs/.gitignore | 1 + docs/rapportFinal/.latexmkrc | 11 +++++ docs/rapportFinal/centralisation/sources.bib | 18 +++---- docs/rapportFinal/conclusion/index.tex | 47 +++++++++++++++++++ .../decentralisation/atomic_swaps_htlc.tex | 18 +++---- .../decentralisation/lightning.tex | 36 +++++++------- docs/rapportFinal/decentralisation/pools.tex | 8 +++- docs/rapportFinal/decentralisation/relay.tex | 13 +++-- .../decentralisation/sidechain.tex | 16 +++---- docs/rapportFinal/glossaire/glossaire.tex | 29 ++++++++++++ docs/rapportFinal/introduction/index.tex | 33 ++++++++++++- docs/rapportFinal/introduction/sources.bib | 7 +++ docs/rapportFinal/main.tex | 12 +++++ 14 files changed, 196 insertions(+), 55 deletions(-) create mode 100644 docs/rapportFinal/.latexmkrc create mode 100644 docs/rapportFinal/conclusion/index.tex create mode 100644 docs/rapportFinal/glossaire/glossaire.tex diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c91809..12fd506 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ image: build_and_deploy: script: - cd ./docs/rapportFinal - - pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex && biber "main.bcf" && pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex && pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex + - pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex && biber "main.bcf" && makeglossaries main && pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex && pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex - cd ../presentation_17_03_23 - pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex && pdflatex -synctex=1 -interaction=nonstopmode -file-line-error -recorder main.tex diff --git a/docs/.gitignore b/docs/.gitignore index 07f5329..e152dd8 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -118,6 +118,7 @@ acs-*.bib *.slg *.slo *.sls +*.ist # uncomment this for glossaries-extra (will ignore makeindex's style files!) # *.ist diff --git a/docs/rapportFinal/.latexmkrc b/docs/rapportFinal/.latexmkrc new file mode 100644 index 0000000..71154a2 --- /dev/null +++ b/docs/rapportFinal/.latexmkrc @@ -0,0 +1,11 @@ + + add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' ); + add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' ); + $clean_ext .= " acr acn alg glo gls glg"; + + sub makeglossaries { + my ($base_name, $path) = fileparse( $_[0] ); + my @args = ( "-q", "-d", $path, $base_name ); + if ($silent) { unshift @args, "-q"; } + return system "makeglossaries", "-d", $path, $base_name; + } \ No newline at end of file diff --git a/docs/rapportFinal/centralisation/sources.bib b/docs/rapportFinal/centralisation/sources.bib index 131ffd2..82a9a48 100644 --- a/docs/rapportFinal/centralisation/sources.bib +++ b/docs/rapportFinal/centralisation/sources.bib @@ -8,22 +8,22 @@ @misc{Hacken, author = {Hacken}, - howpublished = {\url{https://hacken.io/discover/rug-pull-explained/}}, - title = {Rug Pull – Top Crypto Scams & How to stay safe from rug pulls}, + url = {https://hacken.io/discover/rug-pull-explained/}, + title = {Rug Pull – Top Crypto Scams \& How to stay safe from rug pulls}, year = {2023} } @misc{NgraveNumbers, author = {Ngrave}, howpublished = {\url{https://www.ngrave.io/en/blog/blockchain-interoperability-challenges-opportunities},}, - title = {Blockchain Interoperability: Challenges & Opportunities}, + title = {Blockchain Interoperability: Challenges \& Opportunities}, year = {2023} } @misc{NgraveVerif, author = {Ngrave}, howpublished = {\url{https://www.ngrave.io/en/blog/blockchain-interoperability-challenges-opportunities},}, - title = {Blockchain Interoperability: Challenges & Opportunities}, + title = {Blockchain Interoperability: Challenges \& Opportunities}, year = {2023} } @@ -50,35 +50,35 @@ @misc{NomadDocsExternal, author = {Nomad Docs}, - howpublished = {\url{https://docs.nomad.xyz/the-nomad-protocol/verification-mechanisms/external-verification}}, + url = {https://docs.nomad.xyz/the-nomad-protocol/verification-mechanisms/external-verification}}, title = {External Verification}, year = {2022} } @misc{EthereumBridges, author = {Ethereum}, - howpublished = {\url{https://ethereum.org/en/developers/docs/bridges/#trade-offs}}, + url = {https://ethereum.org/en/developers/docs/bridges/#trade-offs}}, title = {BRIDGES}, year = {2022} } @misc{EthereumMechanism, author = {Ethereum}, - howpublished = {\url{https://ethereum.org/en/developers/docs/bridges/#how-do-bridges-work}}, + url = {{https://ethereum.org/en/developers/docs/bridges/#how-do-bridges-work}}, title = {BRIDGES}, year = {2022} } @misc{EthereumRisks, author = {Ethereum}, - howpublished = {\url{https://ethereum.org/en/developers/docs/bridges/#risk-with-bridges}}, + url = {{https://ethereum.org/en/developers/docs/bridges/#risk-with-bridges}}, title = {BRIDGES}, year = {2022} } @misc{ChainLinkRisks, author = {ChainLink Docs}, - howpublished = {\url{https://docs.chain.link/resources/bridge-risks/#risks}}, + url = {https://docs.chain.link/resources/bridge-risks/#risks}, title = {Cross-chain bridges and associated risks} } diff --git a/docs/rapportFinal/conclusion/index.tex b/docs/rapportFinal/conclusion/index.tex new file mode 100644 index 0000000..b9f6df7 --- /dev/null +++ b/docs/rapportFinal/conclusion/index.tex @@ -0,0 +1,47 @@ +\subsection{Centralisé} +Les échanges centralisés sont les plus utilisés dans les environnements \textit{\gls{blockchain}}. Ils offrent en effet +des avantages tels qu'une grande accessibilité ainsi qu'un large panel de produits financiers connexes. +De plus le marché des échangeurs centralisés dispose d'une grande diversité d'acteurs et de platformes ce +qui laisse un choix à l'utilisateur et a pour effet de stimuler le marché. +Cependant, ils présentent aussi des inconvénients. Premièrement les échanageurs entretiennent une certaine opacité +de leurs algorithmes et leurs protocoles ce qui est un frein à l'utilisateur final pour comprendre et analyser +les transactions réalisés. Ceci l'oblige donc à faire confiance en la platforme qu'il utilise. +De plus, l’utilisation d’un tiers de confiance peut entraîner des coûts supplémentaires pour +les utilisateurs et a pour effet de rajouter un point critique en terme de sécurité. Enfin, ces plateformes ont +des obligations légales concernant la collecte de données personnelles ce qui entraîne une violation de la vie +privée des utilisateurs. \\ +En fin de compte, les solutions centralisées ne s’inscrivent pas dans l’idéologie initiale de la blockchain, qui est +basée sur la décentralisation et la transparence. + +\subsection{Décentralisé} +Les solutions décentralisées offrent une alternative aux échanges centralisés en permettant aux utilisateurs +d’échanger directement entre eux sans avoir besoin d’un tiers de confiance. Cela signifie que les utilisateurs +ont un contrôle total sur leurs transactions et qu’ils n’ont pas à faire confiance à une plateforme tierce pour +effectuer des transactions. Les solutions décentralisées offrent également d'autres avantages. En terme de +transparence dans un premier temps. En effet il est simple pour l'utilisateur de voir exactement comment les +transactions sont effectuées et il est souvent simple de construire un écosystème communautaire autour d'un projet +décentralisé. \\ +Les systèmes décentralisés offrent aussi une plus grande fiabilité de leurs services, puisqu'étant distribués +le systèmes sont plus résilients aux pannes ce qui offre une plus grande garantie dans les transactions. + +Cependant, les solutions décentralisées ont également des inconvénients. Tout d’abord, elles peuvent être +difficiles à prendre en main pour les utilisateurs qui ne sont pas familiers avec la technologie \textit{blockchain}. +De plus, elles peuvent avoir un intérêt économique moins important pour les investisseurs car il est plus +difficile de creer un modèles économique autour de ces solutions. + +\subsection{Générale} +Pour conclure le sujet, nous constatons un certain flou entre ce qui est considéré comme centralisé et décentralisé. +Durant nos recherches nous avons pris comme referentiel une certaine définition de ce que nous considéreons comme +centralisé ou décentralisé. Il nous parait important de souligner que l'usage de ces termes présentent un argument marketing +important, et beaucoup d'acteurs remanient la définition de décentralisé pour correspondre avec leurs produits. + +\begin{table}[h!] + \centering + \caption{Tableau Récapitulatif} + \begin{tabular}{|l|l|l|} + \hline + & Centralisé & Décentralisé \\ \hline + Avantages & \begin{tabular}[c]{@{}l@{}}Facilité d'utilisation\\ Popularité\\ Variétés des produits financiers\end{tabular} & \begin{tabular}[c]{@{}l@{}}Fiabilité et Sécurité\\ Maitrise des données\\ Frais de transactions\end{tabular} \\ \hline + Inconvénients & \begin{tabular}[c]{@{}l@{}}Sécurité et Fiabilité relative à la plateforme\\ Frais de transactions\\ Opacité des plateformes\\ Dépendance aux tiers\end{tabular} & \begin{tabular}[c]{@{}l@{}}Complexité d'implémentation\\ Difficulté d'usage\end{tabular} \\ \hline + \end{tabular} +\end{table} diff --git a/docs/rapportFinal/decentralisation/atomic_swaps_htlc.tex b/docs/rapportFinal/decentralisation/atomic_swaps_htlc.tex index 9259e82..8eb3721 100644 --- a/docs/rapportFinal/decentralisation/atomic_swaps_htlc.tex +++ b/docs/rapportFinal/decentralisation/atomic_swaps_htlc.tex @@ -1,13 +1,13 @@ %author: Dorian VOLPE \subsubsection{HTLC} -Un HTLC est un type de \textit{smart contract} utilisé dans les applications \textit{blockchain} qui réduit le risque de contrepartie en créant une garantie basée sur le temps et une autre sur un verrou cryptographique\cite{narayanam2022generalized}. +Un HTLC est un type de \textit{\gls{smart contract}} utilisé dans les applications \textit{\gls{blockchain}} qui réduit le risque de contrepartie en créant une garantie basée sur le temps et une autre sur un verrou cryptographique\cite{narayanam2022generalized}. Ils reposent sur deux primitives fondamentales: le verrou de hachage et le verrou temporel.\\ Premièrement le verrou de hachage (ou bien \textit{hashlock}): Ce dernier va fonctionner comme une assurance qui va couvrir les parties participantes à la transaction, en leur garantissant que chaque modification de l'échange soit réalisée d'un commun accord de toutes les parties. Cela est mis en place grâce à un partage du hachage de la clef privée de la transaction, ce partage va donc impliquer que le canal de paiement mis en place ne puisse être ouvert ou fermé qu'avec l'accord de tous les participants.\\ Ensuite le verrou temporel (ou bien \textit{timelock}) va laisser un laps de temps prédéterminé afin que chaque côté du canal puisse prendre ses dispositions avant d'effectuer la transaction. Si jamais ce temps est écoulé alors la clause secondaire du contract (elle aussi prédéterminée) sera exécuté. -Dans la plupart des cas cette clause secondaire va simplement fermer le canal de paiement et terminer la transaction sans la diffuser sur une \textit{blockchain}.\\ -L’intérêt principal de ce type de contrat est qu'il permet d'effectuer facilement des échanges hors chaines. En effet, vu que les participants s'accordent au préalable sur le montant de la transaction ils peuvent tout à fait réaliser l'échange sur des \textit{blockchains} différentes, sous réserve que ces \textit{blockchains} aient des mécanismes de \textit{smarts contracts}. +Dans la plupart des cas cette clause secondaire va simplement fermer le canal de paiement et terminer la transaction sans la diffuser sur une \textit{\gls{blockchain}}.\\ +L’intérêt principal de ce type de contrat est qu'il permet d'effectuer facilement des échanges hors chaines. En effet, vu que les participants s'accordent au préalable sur le montant de la transaction ils peuvent tout à fait réaliser l'échange sur des \textit{\gls{blockchain}s} différentes, sous réserve que ces \textit{\gls{blockchain}s} aient des mécanismes de \textit{smarts contracts}. \begin{figure}[h!] \centering @@ -20,19 +20,19 @@ L’intérêt principal de ce type de contrat est qu'il permet d'effectuer facil \label{fig:HTLC} \end{figure} \subsubsection{Atomic swaps} -Les \textit{atomics swaps} ou bien échanges atomiques sont des échanges effectués entre deux \textit{blockchains}\cite{herlihy2018atomic}. On les appelle "atomiques" car il respecte une primitive essentielle à leur fonctionnement et à leur principe d'utilisation: +Les \textit{atomics swaps} ou bien échanges atomiques sont des échanges effectués entre deux \textit{\gls{blockchain}s}\cite{herlihy2018atomic}. On les appelle "atomiques" car il respecte une primitive essentielle à leur fonctionnement et à leur principe d'utilisation: l'échange est insécable, c'est-à-dire qu'a son issue, soit il s'est pleinement exécuté, soit l'état antérieur à l'échange est préservé. Cette primitive permet de garantir que les participants ne seront jamais dans des états jugés "inacceptables". \\ En effet les échanges atomiques partent du postulat que si une partie suit le protocole à la lettre alors, il ne sera jamais perdant. A contrario les partis ne suivant pas le protocole par malveillance ou par erreur, prennent le risque de perdre leurs mises de départ.\\ \\ -Lors d'un échange atomique les HTLC vont être utilisés de manière centrale car ils vont permettre d'apporter les garanties que nous avons vue dans la partie précédente. Il faut voir les échanges atomiques comme une généralisation de l'utilisation des HTLC. Lors d'un échange atomique les deux \textit{blockchains} mises en relation doivent pouvoir communiquer et échanger sur une interface commune comme un portefeuille multi signature ou un canal d'échange mis en place spécialement pour cette transaction. \\ \\ +Lors d'un échange atomique les HTLC vont être utilisés de manière centrale car ils vont permettre d'apporter les garanties que nous avons vue dans la partie précédente. Il faut voir les échanges atomiques comme une généralisation de l'utilisation des HTLC. Lors d'un échange atomique les deux \textit{\gls{blockchain}s} mises en relation doivent pouvoir communiquer et échanger sur une interface commune comme un portefeuille multi signature ou un canal d'échange mis en place spécialement pour cette transaction. \\ \\ Si nous nous penchons sur le déroulement d'un échange atomique à deux parties nous pouvons déduire les étapes suivantes: \begin{enumerate} - \item Les deux parties participent à l'échange, créant un HTLC (sur chaque \textit{blockchain}) dans lequel les fonds sont bloqués. - \item Les deux parties échangent les informations nécessaires pour effectuer une transaction sur la \textit{blockchain} de l'autre partie. + \item Les deux parties participent à l'échange, créant un HTLC (sur chaque \textit{\gls{blockchain}}) dans lequel les fonds sont bloqués. + \item Les deux parties échangent les informations nécessaires pour effectuer une transaction sur la \textit{\gls{blockchain}} de l'autre partie. \item Les deux parties vérifient l'exactitude des informations reçues et signent la transaction. - \item Les événements sont envoyés sur les \textit{blockchains} respectives. - \item Les transactions sont confirmés par les \textit{blockchains} respectives et les fonds sont débloqués. + \item Les événements sont envoyés sur les \textit{\gls{blockchain}s} respectives. + \item Les transactions sont confirmés par les \textit{\gls{blockchain}s} respectives et les fonds sont débloqués. \end{enumerate} \begin{figure}[h!] diff --git a/docs/rapportFinal/decentralisation/lightning.tex b/docs/rapportFinal/decentralisation/lightning.tex index c880fec..8bbfbae 100644 --- a/docs/rapportFinal/decentralisation/lightning.tex +++ b/docs/rapportFinal/decentralisation/lightning.tex @@ -1,34 +1,34 @@ %author: Dorian VOLPE \subsubsection{Fonctionnement des échanges \textit{off-chain}} -Les échanges \textit{off-chain} sont des transactions de crypto-actif dont on déplace la valeur en dehors de la \textit{blockchain} mère. En d’autres termes, il s’agit de la négociation de la valeur d’un actif crypto en dehors de la \textit{blockchain} source. Les transactions \textit{on-chain} sont les échanges d'actifs qui ont lieu sur la \textit{blockchain} elle-même. -Ils sont des échanges d’actifs internes au réseau et ont donc leurs propres grands livres, authentification et coûts qui ont lieu parmi la \textit{blockchain}. +Les échanges \textit{off-chain} sont des transactions de crypto-\gls{actif} dont on déplace la valeur en dehors de la \textit{\gls{blockchain}} mère. En d’autres termes, il s’agit de la négociation de la valeur d’un \gls{actif} crypto en dehors de la \textit{\gls{blockchain}} source. Les transactions \textit{on-chain} sont les échanges d'\gls{actif}s qui ont lieu sur la \textit{\gls{blockchain}} elle-même. +Ils sont des échanges d’\gls{actif}s internes au réseau et ont donc leurs propres grands livres, authentification et coûts qui ont lieu parmi la \textit{\gls{blockchain}}. \begin{figure}[h!] \centering \stackunder{\includegraphics[scale=0.3]{decentralisation/offchain.png}} - {\scriptsize Source: \url{https://www.cryptoencyclopedie.com/single-post/blockchain-comprendre-distinction-on-chain-off-chain}} + {\scriptsize Source: \url{https://www.cryptoencyclopedie.com/single-post/\gls{blockchain}-comprendre-distinction-on-chain-off-chain}} \caption{Architecture \textit{off-chain}} \label{fig:offchain} \end{figure} -Les transactions \textit{off-chain} sont confirmées en dehors du réseau principal de la \textit{blockchain}, ce qui entraîne souvent un processus moins cher et plus rapide pour l’utilisateur. -Tout cela se fait dans un objectif bien précis qui est de garder le maximum de sécurité/fiabilité de la \textit{blockchain} mère tout en essayant d'améliorer la vitesse d'échange et les frais de transaction. +Les transactions \textit{off-chain} sont confirmées en dehors du réseau principal de la \textit{\gls{blockchain}}, ce qui entraîne souvent un processus moins cher et plus rapide pour l’utilisateur. +Tout cela se fait dans un objectif bien précis qui est de garder le maximum de sécurité/fiabilité de la \textit{\gls{blockchain}} mère tout en essayant d'améliorer la vitesse d'échange et les frais de transaction. Afin d'illustrer comment fonctionne les échanges \textit{off-chain} nous allons nous concentrer sur une implémentation en particulier: le réseau Lightning. \subsubsection{Le réseau lightning} -Le réseau lightning (provenant de l'anglais \textit{Lightning Network} et abrégé par LN) fait partie des processus d'échanges que l'on qualifie d'\textit{off-chain} car il se déroule en dehors de leur \textit{blockchains} principale, ce protocole est un cas concret de cette famille. -Ce réseau est une couche de protocole de paiement construite au-dessus de la \textit{blockchain} Bitcoin qui vise à accélérer les transactions Bitcoin, à réduire les coûts et à améliorer la mise a l'échelle \cite{poon2016bitcoin}. -Il permet aux utilisateurs de créer des canaux de paiement peer-to-peer bidirectionnels pour effectuer des transactions en dehors de la \textit{blockchain} principale (voir Figure \ref{fig:lightningCouche}), permettant des transactions plus rapides, moins chères et plus privées.\\ -Les transactions sur le réseau lightning sont effectuées avec des smart contracts qui permettent aux utilisateurs de transférer des fonds à des tiers sans l'approbation de la \textit{blockchain} principale ou bien d'un tiers de confiance. +Le réseau lightning (provenant de l'anglais \textit{Lightning Network} et abrégé par LN) fait partie des processus d'échanges que l'on qualifie d'\textit{off-chain} car il se déroule en dehors de leur \textit{\gls{blockchain}s} principale, ce protocole est un cas concret de cette famille. +Ce réseau est une couche de protocole de paiement construite au-dessus de la \textit{\gls{blockchain}} Bitcoin qui vise à accélérer les transactions Bitcoin, à réduire les coûts et à améliorer la mise a l'échelle \cite{poon2016bitcoin}. +Il permet aux utilisateurs de créer des canaux de paiement peer-to-peer bidirectionnels pour effectuer des transactions en dehors de la \textit{\gls{blockchain}} principale (voir Figure \ref{fig:lightningCouche}), permettant des transactions plus rapides, moins chères et plus privées.\\ +Les transactions sur le réseau lightning sont effectuées avec des \gls{smart contract}s qui permettent aux utilisateurs de transférer des fonds à des tiers sans l'approbation de la \textit{\gls{blockchain}} principale ou bien d'un tiers de confiance. Les canaux de paiement flash sont créés en verrouillant temporairement des fonds sur une adresse multi-signature (voir Figure \ref{fig:lightningNetwork}), qui est ensuite utilisée pour envoyer des transactions à d'autres participants du réseau.\\ Le réseau lightning utilise un système de routage pour acheminer les paiements entre les participants, en utilisant les canaux de paiement existant pour créer des itinéraires optimaux entre les participants. -Les frais d'utilisation de ce réseau sont généralement bien inférieurs aux frais de transaction sur la \textit{blockchain} principale, ce qui en fait une option plus attrayante pour les petites et moyennes transactions. +Les frais d'utilisation de ce réseau sont généralement bien inférieurs aux frais de transaction sur la \textit{\gls{blockchain}} principale, ce qui en fait une option plus attrayante pour les petites et moyennes transactions. \begin{figure}[h!] \centering \stackunder{ \includegraphics[scale = 0.3 ]{decentralisation/lightningCouche.png} } {\scriptsize Source: \url{https://www.bitpanda.com/academy/fr/lecons/quel-est-le-role-du-lightning-network-pour-bitcoin/}} - \caption{Le réseau Lightning par rapport a la \textit{blockchain} Bitcoin principale} + \caption{Le réseau Lightning par rapport a la \textit{\gls{blockchain}} Bitcoin principale} \label{fig:lightningCouche} \end{figure} @@ -40,23 +40,23 @@ Les frais d'utilisation de ce réseau sont généralement bien inférieurs aux f \label{fig:lightningNetwork} \end{figure} -Voici le déroulement classique d'un échange sur le réseau Lightning:\\ Alice veut échanger avec Bob à travers le réseau Lightning (sur la même ou bien sur des \textit{blockchains} différentes). +Voici le déroulement classique d'un échange sur le réseau Lightning:\\ Alice veut échanger avec Bob à travers le réseau Lightning (sur la même ou bien sur des \textit{\gls{blockchain}s} différentes). Alice va donc ouvrir un portefeuille multi-signature\footnote{Portefeuille qui nécessite plusieurs signatures pour effectuer une transaction} avec Bob. Ils vont mettre une "mise de départ" qu'ils vont déposer dans le portefeuille mentionné précédemment (le canal d'échange aura donc la taille des deux mises de départ cumulées). Ensuite ils vont effectuer leurs transactions dans ce portefeuille qui va être mis à jour à chaque transaction.\\ \\ -Il est fondamental de noter que chaque transaction invalide les précédentes (à l'exception de la toute première). Lorsque l'un des participants souhaite terminer l'échange il va publier sur la \textit{blockchain} Bitcoin la dernière transaction effectuée. +Il est fondamental de noter que chaque transaction invalide les précédentes (à l'exception de la toute première). Lorsque l'un des participants souhaite terminer l'échange il va publier sur la \textit{\gls{blockchain}} Bitcoin la dernière transaction effectuée. Ce mécanisme de transaction intermédiaire est mis en place afin d'éviter qu'un des deux acteurs de l'échange ne puisse "s'échapper" de l'échange, car chacune des parties va signer avec sa clef privée la dernière transaction. \\ -Aussi tous ces échanges se passent à l'intérieur du réseau Lightning, la \textit{blockchain} principale n'a donc aucune idée du nombre exact de transactions intermédiaires effectuées puisque seule une transaction sera envoyer sur la \textit{blockchain} principale. -Cela permet d'éviter d'engendrer des frais de transactions inutiles ou bien de congestionner la \textit{blockchain} principale.\\ \\ +Aussi tous ces échanges se passent à l'intérieur du réseau Lightning, la \textit{\gls{blockchain}} principale n'a donc aucune idée du nombre exact de transactions intermédiaires effectuées puisque seule une transaction sera envoyer sur la \textit{\gls{blockchain}} principale. +Cela permet d'éviter d'engendrer des frais de transactions inutiles ou bien de congestionner la \textit{\gls{blockchain}} principale.\\ \\ Enfin il existe aussi une autre caractéristique intéressante du réseau Lightning: le \textit{channel hopping}. Cette propriété permet de mettre en place une transitivité entre les parties du réseau. Par exemple si Alice a déjà échangé avec Bob et Bob à déjà échangé avec Carol alors Alice pourra échanger avec Carol et vice-versa. \subsubsection{Amélioration du réseau lightning par le MIT} -Même si le réseau Lightning permet déjà de faire des échanges \textit{cross-chains}\cite{lightningCrossChain}, il est de la responsabilité des blockchains de s'adapter au réseau afin de pouvoir échanger sur ce dernier. -Le MIT a donc proposé un ouvrage scientifique\cite{mathus2018lightning} afin de proposer une interface plus simple à la fois pour les blockchains mises en cause et les utilisateurs souhaitant utiliser le réseau. +Même si le réseau Lightning permet déjà de faire des échanges \textit{\gls{cross-chain}s}\cite{lightningCrossChain}, il est de la responsabilité des \gls{blockchain}s de s'adapter au réseau afin de pouvoir échanger sur ce dernier. +Le MIT a donc proposé un ouvrage scientifique\cite{mathus2018lightning} afin de proposer une interface plus simple à la fois pour les \gls{blockchain}s mises en cause et les utilisateurs souhaitant utiliser le réseau. Leur \textit{Proof of Concept}\cite{pocMIT} se base sur un fork du réseau Lightning appelé "lit" leur but est de contrer le problème de mise à l'échelle du réseau lightning grace à leurs améliorations. -De même ils cherchent à inclure dans le réseau lightning des blockchains qui n'ont pas de valeurs monétaires (informations, NFT,etc.). +De même ils cherchent à inclure dans le réseau lightning des \gls{blockchain}s qui n'ont pas de valeurs monétaires (informations, NFT,etc.). Leur programme rajoute 4 commandes au réseau Lightning mentionné précédemment, ce qui va permettre d'avoir une interface plus simple pour les acteurs des échanges : \begin{itemize} diff --git a/docs/rapportFinal/decentralisation/pools.tex b/docs/rapportFinal/decentralisation/pools.tex index 22091ed..50fa807 100644 --- a/docs/rapportFinal/decentralisation/pools.tex +++ b/docs/rapportFinal/decentralisation/pools.tex @@ -12,7 +12,7 @@ sont généralement des jetons de gouvernance ou des jetons de protocole. Les r en fonction de l’offre et de la demande. Si la demande pour une réserve de liquidité particulier est élevée, les frais de transaction augmentent pour encourager les fournisseurs de liquidités à déposer plus de fonds dans la réserve. Si la demande est faible, les frais de transaction diminuent pour encourager les utilisateurs à échanger des actifs sur la réserve de liquidité. \\ -Une réserve de liquidité repose sur un smart contract et bénéficie ainsi de la décentralisation et de la sécurité de la blockchain sur laquelle il repose. +Une réserve de liquidité repose sur un smart contract et bénéficie ainsi de la décentralisation et de la sécurité de la \gls{blockchain} sur laquelle il repose. \begin{figure}[h!] \centering \stackunder{\includegraphics[scale=0.3]{decentralisation/reserve_liquidite.png}} @@ -22,7 +22,7 @@ Une réserve de liquidité repose sur un smart contract et bénéficie ainsi de \end{figure} \subsubsection{Exemple: PancakeSwap} -PancakeSwap est une plateforme d’échange décentralisée (DEX) qui repose sur la blockchain Binance Smart Chain. \cite{augustin2022yield} Elle permet aux utilisateurs d’échanger des +PancakeSwap est une plateforme d’échange décentralisée (DEX) qui repose sur la \gls{blockchain} Binance Smart Chain. \cite{augustin2022yield} Elle permet aux utilisateurs d’échanger des cryptomonnaies de manière décentralisée. Le jeton natif de la plateforme PancakeSwap, le CAKE, est utilisé pour la gouvernance du protocole. Ainsi, grâce à lui, vous pouvez voter pour des propositions soumises par la communauté. La sécurité de PancakeSwap est assurée par un ensemble de smart contracts permettant de sécuriser les transactions et les échanges de manière décentralisée. Les réserves de liquidités sont un @@ -40,3 +40,7 @@ Un exemple d'attaque sur une réserve de liquidité est la CVE-2021-3006 \cite{n 2020 et janvier 2021. Elle concerne un manquement de controle d'accès dans l’implémentation du contrat intelligent pour une réserve de liquidité en lien avec Seal Finance (Seal), un jeton Ethereum. Cette vulnérabilité permet une manipulation des prix ayant permis à l'attaquant de réaliser une plus-value artificiel sur ses jetons. + +Les réserves de liquidité sont des marchés automatisés qui permettent aux utilisateurs de fournir des liquidités pour les échangeurs décentralisés (DEX) et de gagner des frais de transaction en retour. Les fournisseurs de liquidités déposent des fonds dans une résreve de liquidité et reçoivent des jetons LP\footnote{Liquidity Provider Token} en retour. Les jetons LP représentent une part de propriété dans la réserve de liquidité et peuvent être utilisés pour retirer des fonds de la réserve. Les réserves de liquidité sont un concept clé de l’écosystème DeFi. Il permettent la mise en place d'échangeurs décentralisés qui donne la possibilité aux utilisateurs d’échanger des \gls{actif}s sans avoir besoin d’un intermédiaire centralisé. \\ +A chaque échange réalisé via la réserve, les possesseurs de liquidités recoivents des récompenses qui sont les frais d'échanges des utilisateurs. Les récompenses sont généralement des jetons de gouvernance ou des jetons de protocole. Les réserves de liquidité se régulent ainsi en ajustant les frais de transaction en fonction de l’offre et de la demande. Si la demande pour une réserve de liquidité particulier est élevée, les frais de transaction augmentent pour encourager les fournisseurs de liquidités à déposer plus de fonds dans la réserve. Si la demande est faible, les frais de transaction diminuent pour encourager les utilisateurs à échanger des \gls{actif}s sur la réserve de liquidité. \\ +Une réserve de liquidité repose sur un \gls{smart contract} et bénéficie ainsi de la décentralisation et de la sécurité de la \gls{blockchain} sur laquelle il repose. diff --git a/docs/rapportFinal/decentralisation/relay.tex b/docs/rapportFinal/decentralisation/relay.tex index 5800410..c50b728 100644 --- a/docs/rapportFinal/decentralisation/relay.tex +++ b/docs/rapportFinal/decentralisation/relay.tex @@ -1,12 +1,12 @@ %auteur: Amaury JOLY \subsubsection{Définition} -Les relays décentralisés sont des applications décentralisés permettant une intéropérabilités entre les \textit{blockchains} \cite{qin2018overview, westerkamp2022verilay,belchior2022survey}. -Leur but est de transmettre des informations entre des \textit{blockchains} distinctes (par exemple, Bitcoin et Ethereum). +Les relays décentralisés sont des applications décentralisés permettant une intéropérabilités entre les \textit{\gls{blockchain}s} \cite{qin2018overview, westerkamp2022verilay,belchior2022survey}. +Leur but est de transmettre des informations entre des \textit{\gls{blockchain}s} distinctes (par exemple, Bitcoin et Ethereum). Les relays suivent une partie de l’état de leurs chaînes connectées afin de prouver l’existence de transactions d’une chaîne à l’autre. \subsubsection{BTCRelay} -BTCRelay est un \textit{smart contract} qui stocke les en-têtes de blocs Bitcoin sur la \textit{blockchain} Ethereum. \cite{qin2018overview,belchior2022survey,btcrelay2022web,btcrelay2022git} -BTCRelay utilise ces en-têtes de blocs pour construire une mini-version de la \textit{blockchain} Bitcoin: une méthode utilisée par les +BTCRelay est un \textit{smart contract} qui stocke les en-têtes de blocs Bitcoin sur la \textit{\gls{blockchain}} Ethereum. \cite{qin2018overview,belchior2022survey,btcrelay2022web,btcrelay2022git} +BTCRelay utilise ces en-têtes de blocs pour construire une mini-version de la \textit{\gls{blockchain}} Bitcoin: une méthode utilisée par les portefeuilles légers Bitcoin SPV. \footnote{Bitcoin SPV signifie Simplified Payment Verification et c’est un moyen pour Bitcoin de se développer et de se propager en fonctionnant sur des petits appareils, comme les téléphones portables et les ordinateurs portables.} BTCRelay est open source, sans confiance et décentralisé. Il permet aux contrats Ethereum de vérifier les transactions Bitcoin sans aucun @@ -22,9 +22,8 @@ dans le contrat. Ce qui offre une possibilité d'opérabilité unidirectionnelle \end{figure} \subsubsection{tBTC} -Un exemple d'application de ce relay pour de l'échange \textit{cross-blockchain} est le projet tBTC, -qui permet aux utilisateurs d’échanger des bitcoins contre des -tokens ERC-20 représentant des bitcoins sur la \textit{blockchain} Ethereum. \cite{hildebrandt2020tokenization,lan2021horizon} tBTC utilise un contrat intelligent +Un exemple de relay est le projet tBTC, qui permet aux utilisateurs d’échanger des bitcoins contre des +tokens ERC-20 représentant des bitcoins sur la \textit{\gls{blockchain}} Ethereum \cite{hildebrandt2020tokenization,lan2021horizon}. tBTC utilise un contrat intelligent appelé Deposit qui interagit avec un ensemble de signataires qui détiennent les bitcoins en garantie. Le contrat Deposit utilise BTCRelay pour vérifier les preuves SPV des transactions Bitcoin et émettre ou brûler des tokens tBTC en conséquence. Ainsi, les utilisateurs peuvent profiter des avantages de la liquidité diff --git a/docs/rapportFinal/decentralisation/sidechain.tex b/docs/rapportFinal/decentralisation/sidechain.tex index 014c067..88ac6e4 100644 --- a/docs/rapportFinal/decentralisation/sidechain.tex +++ b/docs/rapportFinal/decentralisation/sidechain.tex @@ -1,17 +1,17 @@ %auteur: Amaury JOLY \subsubsection{Définition} -Les sidechains sont des \textit{blockchains} secondaires qui fonctionnent en parallèle d'une \textit{blockchain} principale \cite{jensen2021introduction,qin2018overview,belchior2022survey}. Elles possèdent leurs propres +Les sidechains sont des \textit{\gls{blockchain}s} secondaires qui fonctionnent en parallèle d'une \textit{\gls{blockchain}} principale \cite{jensen2021introduction,qin2018overview,belchior2022survey}. Elles possèdent leurs propres caractéristiques, mais bénéficient de la communauté et de la sécurité inhérente au réseau principal pour les transactions finales qui seront inscrites sur -la \textit{blockchain} principale. Les sidechains permettent de réaliser des opérations en marge de la chaîne principale, apportant ainsi plus de scalabilité +la \textit{\gls{blockchain}} principale. Les sidechains permettent de réaliser des opérations en marge de la chaîne principale, apportant ainsi plus de scalabilité et de fonctionnalités. Par exemple, certaines sidechains sont compatibles avec l'Ethereum Virtual Machine (EVM) et peuvent donc porter des applications Ethereum. \subsubsection{Zendoo} -Zendoo est une plateforme de création de sidechains interopérables avec la \textit{blockchain} Horizen \cite{garoffolo2020zendoo,belchior2022survey}. Elle utilise un protocole +Zendoo est une plateforme de création de sidechains interopérables avec la \textit{\gls{blockchain}} Horizen \cite{garoffolo2020zendoo,belchior2022survey}. Elle utilise un protocole de transfert cross-chain vérifiable par zk-SNARK \footnote{zk-SNARK est un acronyme qui signifie « Zero-Knowledge Succinct Non-Interactive Argument of Knowledge ». Il s'agit d'une preuve cryptographique qui permet à une partie, le prouveur, de prouver à une autre partie, le vérificateur, qu'une affirmation sur des informations détenues secrètement est vraie sans révéler les informations elles-mêmes.}, qui permet de garantir la sécurité et la décentralisation des communications entre la chaîne principale et les sidechains. Les sidechains Zendoo peuvent avoir des caractéristiques différentes de la chaîne principale, comme le mécanisme de -consensus, le modèle comptable ou la structure des données. Elles peuvent même ne pas être des \textit{blockchains} du tout, tant qu'elles respectent le protocole +consensus, le modèle comptable ou la structure des données. Elles peuvent même ne pas être des \textit{\gls{blockchain}s} du tout, tant qu'elles respectent le protocole de transfert cross-chain. Zendoo offre ainsi une grande liberté aux développeurs pour créer des applications sur mesure sans compromettre la scalabilité ou la sécurité du réseau Horizen.\\ De ce fait, Zendoo facilite l'échange de jetons entre différentes chaînes de blocs, sans passer par des intermédiaires centralisés qui perçoivent des commissions. @@ -19,8 +19,8 @@ Les utilisateurs peuvent ainsi bénéficier d'une plus grande liquidité et d'un \subsubsection{Contrainte technique des sidechains} La mise en place de sidechains implique une contrainte technique majeure : la création d'un pont bidirectionnel (\textit{two-way bridge}) entre la chaîne -principale et la sidechain. Ce pont permet de transférer des actifs entre les deux chaînes, en respectant un taux de change prédéfini et en garantissant la -conservation du nombre total d'actifs. Cependant, ce pont nécessite une coordination entre les deux chaînes, ce qui peut poser des problèmes de sécurité, de -performance ou de compatibilité. Par exemple, il est difficile d'utiliser des sidechains avec des \textit{blockchains} comme Ethereum ou Bitcoin, car elles n'ont -pas le même algorithme de consensus, le même modèle comptable ou la même structure de données que les sidechains. Il faudrait donc adapter ces \textit{blockchains} +principale et la sidechain. Ce pont permet de transférer des \gls{actif}s entre les deux chaînes, en respectant un taux de change prédéfini et en garantissant la +conservation du nombre total d'\gls{actif}s. Cependant, ce pont nécessite une coordination entre les deux chaînes, ce qui peut poser des problèmes de sécurité, de +performance ou de compatibilité. Par exemple, il est difficile d'utiliser des sidechains avec des \textit{\gls{blockchain}s} comme Ethereum ou Bitcoin, car elles n'ont +pas le même algorithme de consensus, le même modèle comptable ou la même structure de données que les sidechains. Il faudrait donc adapter ces \textit{\gls{blockchain}s} pour qu'elles puissent communiquer avec les sidechains, ce qui impliquerait des modifications importantes dans leur protocole. diff --git a/docs/rapportFinal/glossaire/glossaire.tex b/docs/rapportFinal/glossaire/glossaire.tex new file mode 100644 index 0000000..2cd2c08 --- /dev/null +++ b/docs/rapportFinal/glossaire/glossaire.tex @@ -0,0 +1,29 @@ +\newglossaryentry{dApp}{ + name = dApp, + description= {abréviation de "application décentralisée". C’est une application qui fonctionne sur une blockchain ou + tout autre registre décentralisé public et qui est conçu pour être autonome et transparent} +} + +\newglossaryentry{cross-chain}{ + name = cross-chain, + description= {Les échanges cross-chain sont des échanges entre plusieurs blockchains. + Un participant utilise ses actifs dans une \textit{blockchain} pour échanger les actifs d’autres personnes dans différentes \textit{blockchains}} +} + +\newglossaryentry{actif}{ + name = actif / Jeton, + description= {Dans le contexte de la \textit{blockchain}, un actif ou jeton peut être matériel (une maison, une voiture, de l’argent, un terrain) ou immatériel (propriété intellectuelle, brevets, droits d’auteur, marque). + Tout ce qui a de la valeur est traçable et échangeable sur un réseau de blockchain} +} + +\newglossaryentry{smart contract}{ + name = smart contract, + description= {Un smart contract est une application décentralisée qui exécute automatiquement des instructions prédéfinies lorsqu’il est déployé sur une \textit{blockchain}.} +} + +\newglossaryentry{blockchain}{ + name = blockchain, + description= {Une \textit{blockchain} est une base de données distribuée avec une liste (c'est-à-dire une chaîne) d'enregistrements (c'est-à-dire des blocs) liés et sécurisés par des empreintes numériques (c'est-à-dire des hachages crypto)} +} + +\printglossaries \ No newline at end of file diff --git a/docs/rapportFinal/introduction/index.tex b/docs/rapportFinal/introduction/index.tex index 7b1e762..f5818ec 100644 --- a/docs/rapportFinal/introduction/index.tex +++ b/docs/rapportFinal/introduction/index.tex @@ -1 +1,32 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam faucibus, velit a efficitur maximus, orci lorem dignissim ex, lobortis egestas ex dolor sit amet urna. Sed eu tincidunt ante. Vivamus eget volutpat dui. Etiam varius tempor pulvinar. Vestibulum vulputate velit vel ornare tincidunt. Suspendisse potenti. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus maximus mauris a accumsan vulputate. Curabitur quis arcu ipsum. Nam quis tempor elit. Phasellus sit amet placerat ipsum, in ornare metus. Sed id erat in risus vestibulum pellentesque non nec odio. Donec placerat ipsum in lacinia ultrices. Nam quis enim ut elit tincidunt tincidunt id quis nisl. \ No newline at end of file +L'échange d’\gls{actif}s entre différentes \textit{\gls{blockchain}s} est une propriété fortement recherchée dans le secteur de la +\textit{\gls{blockchain}} et des échanges de crypto-\gls{actif}s. En effet, dans un contexte où l’adoption de la technologie est +grandissante \cite{evolutionCrypto2022} il est largement souhaité et utile de mettre en place des solutions d’échanges entre chaines, +permettant ainsi aux utilisateurs de transférer des \gls{actif}s d’une \textit{\gls{blockchain}} à une autre sans avoir à passer par +un échange centralisé. Cela peut être très utile pour les utilisateurs qui souhaitent échanger des \gls{actif}s qui +ne sont pas disponibles sur leur \textit{\gls{blockchain}} d’origine ou qui souhaitent simplement utiliser une \textit{\gls{blockchain}} +différente pour des raisons de sécurité ou de confidentialité. Cependant, les échanges d’\gls{actif}s entre différentes +\textit{\gls{blockchain}s} posent des problèmes de sécurité et de confiance car il est difficile de garantir que les \gls{actif}s seront +transférés en toute sécurité et que les utilisateurs ne seront pas victimes d’une fraude ou d’une arnaque. Il est +donc important de mettre en place des solutions sécurisées et fiables pour les échanges d’\gls{actif}s entre différentes +\textit{\gls{blockchain}s}. + +\subsection{La \gls{blockchain}} +La \textit{\gls{blockchain}} est une technologie de stockage et de transmission d’informations sans autorité centrale. Elle +permet de stocker des données de manière transparente et sécurisée en utilisant des algorithmes de cryptographie. +La \textit{\gls{blockchain}} permet de réaliser des échanges entre utilisateurs de manière sécurisé et confidentielle, +le tout sans utiliser d'intermédiaires. Les arbres de Merkle sont une structure de données fondamentale +dans la technologie \textit{\gls{blockchain}} qui permettent de vérifier et de sécuriser les données en utilisant des +fonctions de hachage. Ils sont utilisés pour stocker les transactions dans +chaque bloc d’une \textit{\gls{blockchain}} et pour vérifier si une transaction est incluse dans un bloc ou non. + +\subsection{Décentralisation/Centralisation} +Actuellement, rare sont les \textit{\gls{blockchain}s} supportant de manière native le transfert d'\gls{actif}s entre elles. Ainsi les solutions +de \textit{Swapping} actuels passent par des applications tierces. Bien que la \textit{\gls{blockchain}} soit une technologie que nous +pouvons considérer comme décentralisée, il est néanmoins possible de venir y connecter des interfaces tierces plus ou +moins décentralisées dans le but d'y ajouter des fonctionnalités. Ce sont ces solutions que nous allons présenter durant ce rapport. \\ +Il devient donc nécessaire de définir ce que nous entendons par centralisé et décentralisé. Ainsi nous allons considérer comme +centralisé tout système où une autorité centrale contrôle les décisions et les actions. +Il y a une hiérarchie entre les pairs et un groupe fermé d’individus ou un individu seul représente l’intermédiaire. \\ +Nous considérons comme décentralisé tout système où il n’y a pas d’autorité centrale et où les décisions sont prises +par un groupe de pairs. Dans ce système, il n’y a pas de hiérarchie entre les pairs et n'importe qui peut faire partie +du réseau. diff --git a/docs/rapportFinal/introduction/sources.bib b/docs/rapportFinal/introduction/sources.bib index e69de29..917533b 100644 --- a/docs/rapportFinal/introduction/sources.bib +++ b/docs/rapportFinal/introduction/sources.bib @@ -0,0 +1,7 @@ +@misc{evolutionCrypto2022, + author = "Tristan Gaudiaut", + howpublished = "\url{https://fr.statista.com/infographie/27547/evolution-du-nombre-cryptomonnaies-et-capitalisation-boursiere-du-marche/}", + title = "L'évolution de la crypto-économie", + year = "2022", + month = "06", +} \ No newline at end of file diff --git a/docs/rapportFinal/main.tex b/docs/rapportFinal/main.tex index c7e53c6..db33eb1 100644 --- a/docs/rapportFinal/main.tex +++ b/docs/rapportFinal/main.tex @@ -9,6 +9,8 @@ \usepackage{biblatex} \usepackage{stackengine} \usepackage{listings} +\usepackage{glossaries} +\makeglossaries \newenvironment*{remerciements}{% \renewcommand*{\abstractname}{Remerciements} @@ -49,6 +51,10 @@ \section{Introduction} \input{introduction/index.tex} +\newpage + +\input{glossaire/glossaire.tex} + \newpage \section{Systèmes Centralisés} \input{centralisation/index.tex} @@ -58,6 +64,12 @@ \input{decentralisation/index.tex} \newpage + +\section{Conclusion} +\input{conclusion/index.tex} + +\newpage + \printbibliography \end{document}