mirror of
https://etulab.univ-amu.fr/v18003685/pfe-blockchain.git
synced 2024-02-26 02:14:01 +01:00
Resolve "Glossaire"
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
\subsubsection{Définition}
|
||||
Nous avons commencé nos recherches en nous intéressant en premier lieu aux moyens d'échanges les plus répandus.
|
||||
Cela nous a mené vers les plate-formes d'échanges centralisé.
|
||||
Cela nous a mené vers les plate-formes d'échanges centralisé ou \acrshort{cex}.
|
||||
Ce sont des plate-formes, pouvant prendre la forme d'applications web, qui permettent aux utilisateurs d'acheter, de vendre ou d'échanger des \gls{actif}s numériques contre d'autres \gls{actif}s numériques ou en monnaies fiduciaires.
|
||||
Ces plate-formes peuvent opérer sur des \textit{\gls{blockchain}s} publiques ou être dédiées à une utilisation en interne.
|
||||
Elles sont dites centralisées car elles sont gérées par une entreprise ou une organisation hiérarchisée qui contrôle les transactions et les fonds des utilisateurs.
|
||||
@ -28,7 +28,7 @@ Ces plate-formes fonctionnent sur le principe de l'\textit{order book method} (m
|
||||
Un ordre étant une demande d'un utilisateur visant à réaliser une opération à un prix et une quantité donnée.
|
||||
Cette méthode comprend deux parties: l'offre et la demande. L'offre regroupe les ordres d'achats émis par des utilisateurs sur la plate-forme et la demande, les ordres de vente.
|
||||
Lors d'un dépôt, l'utilisateur s'étant au préalable enregistré sur la plate-forme, il va déposer les fonds souhaités dans un porte monnaie.
|
||||
La plate-forme va ensuite crée un \textit{IOU}\footnote{I Owe You, c'est la dette de la plate-forme envers l'utilisateur permettant de bloquer la valeur de la monnaie déposée par l'utilisateur\cite{IOU}}
|
||||
La plate-forme va ensuite crée un \textit{\acrshort{iou}}\footnote{I Owe You, c'est la dette de la plate-forme envers l'utilisateur permettant de bloquer la valeur de la monnaie déposée par l'utilisateur\cite{IOU}}
|
||||
ce dernier sera échangé contre le crypto-\gls{actif} souhaité lors d'un échange ou d'une vente. \\
|
||||
|
||||
Dans le cadre des échanges inter-\gls{blockchain}s, les plate-formes d'échanges utilisent des \textit{bridges} reliant les différentes \textit{\gls{blockchain}s}.
|
||||
|
@ -3,17 +3,17 @@
|
||||
Les \textit{\gls{blockchain}s} et leurs protocoles d'échanges ne sont pas exemptes d'attaques informatiques ou bien de défaillances.
|
||||
Ces attaques peuvent cibler des portefeuilles (attaques sur des \textit{hot wallets}\footnote{portefeuille de cryptomonnaies en ligne, à différencier des \textit{Cold Wallets}, des portefeuilles hors lignes}) ou encore des \textit{bridges}.
|
||||
Ce sont ces dernières qui nous ont intéressées dans le cadre de ce projet de recherche sur les échanges inter-\gls{blockchain}s.
|
||||
Les bridges, comme explicité dans la partie dédiée du rapport, sont des protocoles permettant la circulation de données entre deux \textit{\gls{blockchain}s} différentes.\\
|
||||
Les \gls{bridge}s, comme explicité dans la partie dédiée du rapport, sont des protocoles permettant la circulation de données entre deux \textit{\gls{blockchain}s} différentes.\\
|
||||
Nous avons, au cours de nos recherches, trouvés de nombreux cas d'attaques sur des protocoles d'échanges inter-\gls{blockchain}s.
|
||||
De manière à illustrer les types d'attaques possibles et les points critiques de ces systèmes nous allons décrire deux attaques parmi les plus importantes : \textit{Wormhole} et \textit{Nomad}.
|
||||
De manière à illustrer les types d'attaques possibles et les points critiques de ces systèmes nous allons décrire deux attaques parmi les plus importantes : \gls{Wormhole} et \gls{Nomad}.
|
||||
|
||||
\subsubsection{Le cas Wormhole}
|
||||
Nous vous avons présenté le protocole \textit{Wormhole} dans la partie précédente.
|
||||
Le 2 Février 2022, une attaque exploite une erreur d'implémentation dans une \textit{\gls{dApp}} sur la chaîne Solana \cite{SolMed} \cite{SolRekt}.
|
||||
\subsubsection{Le cas \gls{Wormhole}}
|
||||
Nous vous avons présenté le protocole \textit{\gls{Wormhole}} dans la partie précédente.
|
||||
Le 2 Février 2022, une attaque exploite une erreur d'implémentation dans une \textit{\gls{dApp}} sur la chaîne \gls{Solana} \cite{SolMed} \cite{SolRekt}.
|
||||
Pour se faire l'attaquant à réussi à contourner la vérification des signatures des gardiens en exploitant
|
||||
une correction de bug ayant été publié sur le code source du projet mais n'étant pas encore effective en production.
|
||||
Ainsi il à réussi à récupérer l'équivalent de 120 000 \textit{ETH} en \textit{whETH} (\textit{Wormhole ETH}).
|
||||
Lors d'un transfert de jetons d'une chaîne à une autre, plusieurs étapes sont réalisées par différentes fonctions.
|
||||
Ainsi il à réussi à récupérer l'équivalent de 120 000 \textit{ETH} en \textit{whETH} (\textit{\gls{Wormhole} ETH}).
|
||||
Lors d'un transfert d'\gls{actif} d'une chaîne à une autre, plusieurs étapes sont réalisées par différentes fonctions.
|
||||
Après la formulation de la transaction, une fonction va se charger de récupérer les signatures des gardiens dans un \textit{SignatureSet}\footnote{Ensemble de signatures de gardiens}, ces dernières sont ensuite vérifiées.
|
||||
Pour cela, une fonction nommée \texttt{verify\_signature} va appeler un programme de vérification de Solana permettant l'analyse du \textit{SignatureSet}.
|
||||
L'appel à ce programme se fait de la manière suivante, en utilisant le nom \texttt{sysvarinstruction} \cite{SolGitError} dans la transaction.
|
||||
@ -24,11 +24,11 @@ Seulement, n'étant pas pour la bonne opération cet ensemble ne peut pas être
|
||||
C'est ici que l'attaquant à utilisé un défaut d'implémentation pour valider son \textit{SignatureSet}.
|
||||
Comme décrit précédemment, la fonction \texttt{verify\_signature} appelle un programme pour effectuer la vérification des signatures.
|
||||
Cependant il n'y à pas de vérification faites sur le programme appelé, l'attaquant à pu donc utiliser une adresse différente lui permettant de valider sa transaction.
|
||||
Avec le \texttt{SignatureSet} ainsi validé, l'attaquant a pu générer un \textit{VAA} valide et pu déclencher une frappe de jeton vers son propre compte sans en avoir déposé au préalable.
|
||||
Avec le \texttt{SignatureSet} ainsi validé, l'attaquant a pu générer un \textit{VAA} valide et pu déclencher une création d'\gls{actif} vers son propre compte sans en avoir déposé au préalable.
|
||||
La correction de cette faille était contenue dans la mise à jour évoquée en début de paragraphe\cite{SolGitFixed}, permettant la vérification du programme appelé pour la vérification.
|
||||
|
||||
\subsubsection{Le cas Nomad}
|
||||
Nomad est un protocole d'interopérabilité entre chaînes permettant de passer des \gls{actif}s entre deux \textit{\gls{blockchain}s} différentes.
|
||||
\gls{Nomad} est un protocole d'interopérabilité entre chaînes permettant de passer des \gls{actif}s entre deux \textit{\gls{blockchain}s} différentes.
|
||||
Pour fonctionner, ce protocole fait appel à des applications décentralisées opérant sur les chaînes du réseau.
|
||||
Une première \textit{\gls{dApp}} appelée \textit{réplica} est déployée sur les \textit{\gls{blockchain}s} recevant les messages, elle fait office de "boite de réception".
|
||||
Une seconde \textit{\gls{dApp}} appelée \textit{home} est déployé sur les \textit{\gls{blockchain}s} émettrices de message. \\
|
||||
@ -58,7 +58,7 @@ Cette fonction est utilisée pour approuver le premier message lors du déploiem
|
||||
Or ici, la valeur de la racine à été initialisée a $0$, donc cette racine devient une racine valide pour la fonction de vérification des messages.
|
||||
Seulement comme nous l'avons énoncé précédemment, $0$ est la valeur par défaut pour un message n'ayant pas encore été vérifié.
|
||||
Ainsi, lors de l'émission d'un message par la fonction \texttt{process}, tout message non vérifié sera envoyé.
|
||||
Cette erreur d'implémentation a permis à des pirates d'effectuer plusieurs transactions frauduleuses et de retirer l'équivalent de 190 Millions de dollars dans la réserve de liquidité du bridge de Nomad.
|
||||
Cette erreur d'implémentation a permis à des pirates d'effectuer plusieurs transactions frauduleuses et de retirer l'équivalent de 190 Millions de dollars dans la réserve de liquidité du bridge de \gls{Nomad}.
|
||||
Le contrat à été corrigé, dans une mise en ligne datant du 3 Septembre 2022, tel que la racine $0$ n'est plus pré-approuvée.
|
||||
|
||||
\begin{lstlisting}[caption={Fonction corrigée de l'application \textit{Réplica} \cite{NomadGitFixed}}]
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Comme son nom l’indique, un \textit{\gls{blockchain} bridge} également appelé \textit{\gls{cross-chain} bridge} est un protocole reliant deux \textit{\gls{blockchain}s} entre elles de manière unilatérale ou bilatérale dans une optique d’interopérabilité.\\
|
||||
|
||||
Dans la but de comprendre la popularité des \textit{bridges} en tant que protocole d’interopéralité, il faut en premier lieu s’intéresser au marché de la cryptomonnaie. Actuellement Bitcoin domine en représentant 40,5\% de ce dernier, suivie ensuite par Ethereum avec 19,5\%. Cela laisse donc 40\% du marché formé de nombreuses crytomonnaies plus petites et plus indépendantes. C’est donc naturellement, qu’une forte demande de possibilité d’échanges entre les \textit{\gls{blockchain}s} ait vu le jour de la part des utilisateurs ayant plusieurs cryptomonnaies\cite{NgraveNumbers}.\\
|
||||
Dans la but de comprendre la popularité des \textit{bridges} en tant que protocole d’interopéralité, il faut en premier lieu s’intéresser au marché de la cryptomonnaie. Actuellement \gls{Bitcoin} domine en représentant 40,5\% de ce dernier, suivie ensuite par \gls{Ethereum} avec 19,5\%. Cela laisse donc 40\% du marché formé de nombreuses crytomonnaies plus petites et plus indépendantes. C’est donc naturellement, qu’une forte demande de possibilité d’échanges entre les \textit{\gls{blockchain}s} ait vu le jour de la part des utilisateurs ayant plusieurs cryptomonnaies\cite{NgraveNumbers}.\\
|
||||
|
||||
Il existe trois différentes manières de déplacer les \gls{actif}s en tant que \textit{bridge}. Tout d’abord, le mécanisme de \textit{Lock and Mint} signifiant Verrouiller et Frapper, les \gls{actif}s se trouvant sur la chaîne de départ sont verrouillés sur celle-ci pour être ensuite créés sur la chaîne destinataire. Un autre mode d'échange est celui du \textit{Burnt and Mint}, ce dernier est très similaire à celui déjà présenté, la seule différence étant que les \gls{actif}s sont directement effacés plutôt que verrouillés. Pour finir, les échanges atomiques entre chaînes (Atomic Swaps) permettent un échange direct en pair-à-pair d'\gls{actif}s entre la chaîne d’origine et la chaîne de destinataire.\cite{EthereumMechanism}
|
||||
|
||||
@ -25,7 +25,7 @@ Les \textit{Trustless Bridges} sont désignés comme \textit{trustless} car ils
|
||||
Les \textit{bridges} peuvent également être distingués en fonction de leur type de vérification. Les plus connus sont la vérification native, externe et locale.\cite{InteroperabilityBhuptani} \\
|
||||
|
||||
La vérification native commence par l’utilisation d’un \textit{light client}\cite{NomadDocsNative}. Un client léger est un logiciel permettant de connecter les noeuds des \textit{\gls{blockchain}s} entre elles. Il est codé comme un \textit{\gls{smart contract}} puis est employé de la chaîne de l'expéditeur vers la machine virtuelle de la chaîne destinataire. Si les vérificateurs de données de la chaîne de l'expéditeur sont honnêtes (c’est-à-dire qu’ils n’agissent pas de manière malveillant) alors le client léger est vu comme véridique par la chaîne réceptionnant les \gls{actif}s ou données et peut être utilisé de manière bilatérale.
|
||||
Un avantage de cette solution est qu’elle est reconnue comme étant celle reposant le moins sur la confiance parmi celles existantes car les chaînes ne se fient qu’à leurs propres vérificateurs pour effectuer le \textit{bridge}. Un autre bénéfice de ce mécanisme est le fait qu’il n’utilise pas de vérificateurs tiers entre les deux \textit{\gls{blockchain}s} et donc la sécurité dépend de la sécurité des \textit{\gls{blockchain}s} elles-même (ce qui est avantageux si elles sont forcément sécurisées comme la chaîne d’Ethereum par exemple).
|
||||
Un avantage de cette solution est qu’elle est reconnue comme étant celle reposant le moins sur la confiance parmi celles existantes car les chaînes ne se fient qu’à leurs propres vérificateurs pour effectuer le \textit{bridge}. Un autre bénéfice de ce mécanisme est le fait qu’il n’utilise pas de vérificateurs tiers entre les deux \textit{\gls{blockchain}s} et donc la sécurité dépend de la sécurité des \textit{\gls{blockchain}s} elles-même (ce qui est avantageux si elles sont forcément sécurisées comme la chaîne d’\gls{Ethereum} par exemple).
|
||||
Un désavantage de cette méthode est que le client léger doit être adapté aux consensus des chaînes auquelles il est attaché ce qui le rend inutilisable avec des chaînes différentes. Le client léger nécessite également de la maintenance en cas de changement des règles consensus (utilisées pour valider les transactions). Un autre inconvénient découlant du fait que le client léger est programmé de manière spécifique est que ce dernier n’est donc pas réutilisable. \\
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
@ -36,7 +36,7 @@ La vérification native commence par l’utilisation d’un \textit{light client
|
||||
|
||||
\pagebreak
|
||||
|
||||
La vérification externe consiste en un ensemble de vérificateurs n’appartenant pas aux \textit{\gls{blockchain}s} relayant les données entre les deux extrémités du \textit{bridge}. Pour se faire, un certains nombre de vérificateurs doivent signer un message provenant de la chaîne d’envoi pour que le chaîne destinataire le reconnaisse comme valide. Par exemple, pour le \textit{bridge} Wormhole 13 vérificateurs sur 19 doivent avoir signé\cite{NomadDocsExternal}. Ce concept est une primitive cryptographique (algorithme cryptographique de bas niveau servant de base à un système de sécurité informatique) nommée système de signature à seuil (désignée par TSS pour \textit{Threshold Signature Scheme})\cite{BinanceTSS}.
|
||||
La vérification externe consiste en un ensemble de vérificateurs n’appartenant pas aux \textit{\gls{blockchain}s} relayant les données entre les deux extrémités du \textit{bridge}. Pour se faire, un certains nombre de vérificateurs doivent signer un message provenant de la chaîne d’envoi pour que le chaîne destinataire le reconnaisse comme valide. Par exemple, pour le \textit{bridge} \gls{Wormhole} 13 vérificateurs sur 19 doivent avoir signé\cite{NomadDocsExternal}. Ce concept est une primitive cryptographique (algorithme cryptographique de bas niveau servant de base à un système de sécurité informatique) nommée le système de signature à seuil (désignée par TSS pour \textit{Threshold Signature Scheme})\cite{BinanceTSS}.
|
||||
Contrairement à la vérifications native, les \textit{bridges} vérifiés de manière externe sont faciles à développer, peuvent être réutilisés sans problèmes et leur maintenance coûte peu. Le désavantage conséquent de cette méthode est que la sécurité dépend des vérificateurs tiers du pont ce qui peut fragiliser le système car ils sont généralement moins sécurisés que ceux des \textit{\gls{blockchain}s}. \\
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
@ -88,9 +88,9 @@ Une faiblesse spécifique des \textit{bridges trusted} repose sur le fait que le
|
||||
|
||||
Comme vu dans la section présentant les différentes méthodes d’échange des \textit{bridges}, ces derniers frappent les \gls{actif}s désirés sur la chaîne destinataire. Certains attaquants peuvent profiter de ce mécanisme de frappe pour effectuer ce qu’on appelle une \textit{Infinite Mint Attack}.\cite{ChainLinkRisks} Cette attaque peut se résumer à un \textit{hacker} générant un nombre élevé d’\gls{actif}s en utilisant une faille d’un \textit{bridge} sans verrouiller ou brûler d’\gls{actif}s sur sa \textit{\gls{blockchain}}. Suite à cela, l’individu réintroduit ces \gls{actif}s sur le marché ce qui fait violemment baisser leur coût ce qui engendre un risque financier systémique.\\
|
||||
|
||||
Les \textit{\gls{blockchain} Bridges} sont très rapidement devenus un outil indispensable des échanges centralisés, mais il ne faut pas oublier que ces protocoles sont relativement récents. Créés par de petites \gls{blockchain}s comme Syscoin et NEAR Protocol dans le but de rentre leurs chaînes interopérables avec les applications décentralisées d’Ethereum, les premiers bridges datent de 2020\cite{Bitstamp}. Par conséquent, nous ne connaissons pas encore le comportement des \textit{bridges} lorsqu’ils font face à des scénarios sortants de la norme comme des attaques réseaux, un retour en arrière sur les transactions d’une \gls{blockchain} (souvent désigné par le terme \textit{rollback}) ou bien pendant une congestion du réseau. Ces zones d’incertitudes peuvent donc être une source de risques. \\
|
||||
Les \textit{\gls{blockchain} Bridges} sont devenus un outil indispensable des échanges centralisés très rapidement, mais il ne faut pas oublier que ces protocoles sont relativement récents. Créés par de petites \gls{blockchain}s comme Syscoin et NEAR Protocol dans le but de rentre leurs chaînes interopérables avec les applications décentralisées d’\gls{Ethereum}, les premiers bridges datent de 2020\cite{Bitstamp}. Par conséquent, nous ne connaissons pas encore le comportement des \textit{bridges} lorsqu’ils font face à des scénarios sortants de la norme comme des attaques réseaux, un retour en arrière sur les transactions d’une \gls{blockchain} (souvent désigné par le terme \textit{rollback}) ou bien pendant une congestion du réseau. Ces zones d’incertitudes peuvent donc être une source de risques. \\
|
||||
|
||||
Un autre facteur portant atteinte à la sécurité des \textit{bridges} est le fait que certains ont leur code en \textit{open source} dans une démarche de transparence et d’envie d’instaurer une relation de confiance avec les utilisateurs. Malheureusement cela donne l’occasion aux personnes malveillantes de mieux comprendre le fonctionnement du \textit{bridge} et donc de pouvoir l’attaquer. L’attaque Wormhole est un exemple connu d’attaque exploitant cette faiblesse.
|
||||
Un autre facteur portant atteinte à la sécurité des \textit{bridges} est le fait que certains ont leur code en \textit{open source} dans une démarche de transparence et d’envie d’instaurer une relation de confiance avec les utilisateurs. Malheureusement cela donne l’occasion aux personnes malveillantes de mieux comprendre le fonctionnement du \textit{bridge} et donc de pouvoir l’attaquer. L’attaque \gls{Wormhole} est un exemple connu d’attaque exploitant cette faiblesse.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
@ -140,6 +140,6 @@ Maintenant que les possibles obstacles au bon fonctionnement du \textit{bridge}
|
||||
|
||||
La faculté de l’observateur à pouvoir couper la connexion s’il conteste la transaction lui permet d’effectuer un déni de service appelé \textit{Watcher DoS}. C’est pourquoi il lui ait possible de fermer définitivement la connexion d’une transaction si ce dernier continue sans cesse de couper le processus sans raison valable. Heureusement, la fermeture ne concerne que la connexion et n’impacte en aucun cas le système du \textit{bridge}. Cependant cette attaque semble irrationnelle en terme de ressources et de temps car l’observateur effectuant le déni de service ne gagne rien financièrement contrairement au processus habituel. En effet, si un observateur prouve une fraude correctement, ce dernier peut récupérer le collatéral du vérificateur. Mais ici puisqu’aucune fraude n’est prouvée les données se trouvant sur la chaîne d’origine sont conservées et sécurisés. Cela cause seulement une perte de temps pour l’utilisateur ou l’application décentralisée voulant effectuer l'échange d’une \textit{\gls{blockchain}} à une autre.
|
||||
|
||||
Une réponse à ce problème actuellement mise en œuvre par le \textit{bridge} de Nomad est la présence d’un groupe restreint d’observateurs autorisés à contester, de cette manière il est facile de connaître les observateurs malveillants. Chaque observateur possède une clé permettant de signer une attestation confirmant la présence d’une fraude dans la transaction, chaque \textit{bridge} stocke un ensemble contenant les adresses des attestations appartenant aux observateurs autorisés. Si l’attestation reçue par le \textit{bridge} est présente dans l’ensemble alors la connexion est rompue\cite{NomadDocsWatcher}.
|
||||
Une réponse à ce problème actuellement mise en œuvre par le \textit{bridge} de \gls{Nomad} est la présence d’un groupe restreint d’observateurs autorisés à contester, de cette manière il est facile de connaître les observateurs malveillants. Chaque observateur possède une clé permettant de signer une attestation confirmant la présence d’une fraude dans la transaction, chaque \textit{bridge} stocke un ensemble contenant les adresses des attestations appartenant aux observateurs autorisés. Si l’attestation reçue par le \textit{bridge} est présente dans l’ensemble alors la connexion est rompue\cite{NomadDocsWatcher}.
|
||||
Sur le long terme, une proposition consistant à la mise en place de frais si l’on souhaite contester est en train d’être étudiée. Le montant doit répondre à deux contraintes: ce dernier doit être assez haut pour dissuader les observateurs malhonnêtes mais assez bas pour que ceux ayant réellement l’envie de prouver de manière valide une fraude existante puissent le faire. Dans la continuité de cette solution, il serait également possible de récupérer la signature de la déconnexion générée par l’observateur sur la chaîne originale et de le pénaliser en lui retirant les frais qu’il a payé tel une garantie\cite{OptimisticBhuptani}.
|
||||
|
||||
|
@ -3,7 +3,7 @@ Pour conclure sur les échanges centralisés, nous avons pu voir que le fonction
|
||||
En effet, les protocoles employés ne sont pas ou peu explicités, nous avons trouvé peu de documentation technique au cours de nos recherches.
|
||||
La majeure partie de la documentation que nous avons pu trouver concernant les plate-formes d'échanges centralisé sont à destination des utilisateurs de ces plate-formes, donc à des personnes n'ayant pas forcément un bagage de connaissance dans les \textit{\gls{blockchain}s}.
|
||||
C'est pour cela que nombreuses de nos sources concernant les plate-formes centralisés sont issues de réseaux sociaux ou d'articles web à destination de lecteurs spécialisés dans le domaine.
|
||||
La solution centralisée au fonctionnement le plus ouvert au public que nous avons trouvé est \textit{Wormhole}, il s'avère que ce protocole à aussi été victime d'une attaque de grande envergure. \\
|
||||
La solution centralisée au fonctionnement le plus ouvert au public que nous avons trouvé est \textit{\gls{Wormhole}}, il s'avère que ce protocole à aussi été victime d'une attaque de grande envergure. \\
|
||||
Nous pouvons ainsi nous questionner sur la présence de l'intermédiaire de confiance dans l'échange centralisé.
|
||||
En effet, la majeure partie des attaques observés sur des \textit{Bridges} ou plus généralement sur des protocoles d'échanges centralisés, résultent de problèmes d'implémentation dans le code de ces protocoles.
|
||||
Le tiers de confiance est donc un point d'entrée pour les pirates vers les \gls{actif}s des utilisateurs.
|
||||
|
@ -1,14 +1,14 @@
|
||||
En 2017, une cryptomonnaie adossée à la \textit{\gls{blockchain}} Solana a émergée avec des caractéristiques
|
||||
similaires à Ethereum : \textit{\gls{blockchain}} publique, \textit{\gls{smart contract}s}.\\
|
||||
Solana est devenue de facto une \textit{\gls{blockchain}} concurrente à Ethereum et est aujourd'hui
|
||||
similaires à \gls{Ethereum} : \textit{\gls{blockchain}} publique, \textit{\gls{smart contract}s}.\\
|
||||
Solana est devenue de facto une \textit{\gls{blockchain}} concurrente à \gls{Ethereum} et est aujourd'hui
|
||||
la onzième \textit{\gls{blockchain}} en terme de capitalisation selon l'aggrégateur de marché Coinmarketcap.\\
|
||||
Un besoin d'échanger des \gls{actif}s entre les \textit{\gls{blockchain}s} Ethereum et Solana est apparu,
|
||||
d'où l'introduction en 2020 de la première version de Wormhole.
|
||||
Initialement, Wormhole v1 a été concu comme un \textit{bridge} entre Ethereum et Solana.
|
||||
Depuis, Wormhole s'est développé au-delà de Solana avec le lancement d'une deuxième version en 2021
|
||||
Un besoin d'échanger des \gls{actif}s entre les \textit{\gls{blockchain}s} \gls{Ethereum} et Solana est apparu,
|
||||
d'où l'introduction en 2020 de la première version de \gls{Wormhole}.
|
||||
Initialement, \gls{Wormhole} v1 a été concu comme un \textit{bridge} entre \gls{Ethereum} et Solana.
|
||||
Depuis, \gls{Wormhole} s'est développé au-delà de Solana avec le lancement d'une deuxième version en 2021
|
||||
en tant que protocole générique de passage de messages.\\
|
||||
À l'écriture de ce rapport, 22 \cite{wormholeNetwork} \textit{\gls{blockchain}s} sont compatibles avec Wormhole
|
||||
dont : BNBChain, Ethereum, Moonbeam, Polygon, Solana...\\
|
||||
À l'écriture de ce rapport, 22 \cite{wormholeNetwork} \textit{\gls{blockchain}s} sont compatibles avec \gls{Wormhole}
|
||||
dont : BNBChain, \gls{Ethereum}, Moonbeam, Polygon, Solana...\\
|
||||
Le protocole émet un message à partir d'une \textit{\gls{blockchain}} source qui est validé par un réseau de
|
||||
gardiens.\\
|
||||
Le message est ensuite envoyé à la \textit{\gls{blockchain}} cible pour être traité.
|
||||
@ -19,19 +19,19 @@ Lorsqu'un \textit{\gls{smart contract}} envoie un message \textit{crosschain} co
|
||||
de jetons sur une \textit{\gls{blockchain}} source et une demande de frappe de jetons sur une
|
||||
\textit{\gls{blockchain}} cible, celui-ci interargit avec un \textit{core contract} \cite{wormholeCoreContract}.
|
||||
Un \textit{core contract} est déployé sur toutes les \textit{\gls{blockchain}s} compatibles avec le protocole
|
||||
Wormhole. Tout \textit{core contract} est observé par le réseau de gardiens.
|
||||
Un message Wormhole est émis grâce à la fonction \textit{publishMessage()} prenant en entrée le \textit{payload}.
|
||||
\gls{Wormhole}. Tout \textit{core contract} est observé par le réseau de gardiens.
|
||||
Un message \gls{Wormhole} est émis grâce à la fonction \textit{publishMessage()} prenant en entrée le \textit{payload}.
|
||||
La sortie de cette fonction est un \textit{sequence number}, un numéro d'index unique pour le message.
|
||||
Combiné à l'adresse du contrat de l'émetteur et à l'identifiant de la chaîne de l'émetteur, le message
|
||||
correspondant peut être récupéré auprès d'un nœud du réseau de gardiens.\\
|
||||
Un message Wormhole est vérifié grâce à la fonction \textit{parseAndVerifyVAA()} prenant en entrée le message.
|
||||
Un message \gls{Wormhole} est vérifié grâce à la fonction \textit{parseAndVerifyVAA()} prenant en entrée le message.
|
||||
Selon la validité de l'entrée, la fonction retourne en sortie le \textit{payload} ou une exception.
|
||||
|
||||
VAA \cite{wormholeVAA} est la primitive de messagerie de base de Wormhole. Un VAA contient une en-tête
|
||||
\acrshort{vaa} \cite{wormholeVAA} est la primitive de messagerie de base de \gls{Wormhole}. Un VAA contient une en-tête
|
||||
ainsi qu'un \textit{body}. L'en-tête contient l'index des gardiens ayant signés le message et la collection des signatures.
|
||||
L'en-tête permet au \textit{core contract} de vérifier l'authenticité du VAA.
|
||||
Quant au \textit{body}, il contient des informations comme le numéro d'identification de la chaîne
|
||||
Wormhole du contrat émetteur, l'adresse du contrat émetteur, le \textit{sequence number}
|
||||
\gls{Wormhole} du contrat émetteur, l'adresse du contrat émetteur, le \textit{sequence number}
|
||||
et le \textit{payload}.\\ 5 \textit{payloads} peuvent être utilisés dont \textit{Transfer} et
|
||||
\textit{AssetMeta}, attestant les méta-données du jeton.\\
|
||||
Le \textit{payload AssetMeta} est obligatoire avant un premier transfert.
|
||||
@ -55,21 +55,21 @@ Un gardien \cite{wormholeGuardian} est une autorité de confiance qui a comme r
|
||||
Comme évoqué précédemment, le réseau de gardiens observe tous les messages \textit{crosschain} via la
|
||||
surveillance des \textit{core contracts}.
|
||||
Le réseau de gardiens est composé de 19 gardiens à parts égales sans chef (\textit{leaderless}).
|
||||
Il est conçu pour servir d'oracle à Wormhole et est l'élement le plus critique de l'écosystème.
|
||||
Il est conçu pour servir d'oracle à \gls{Wormhole} et est l'élement le plus critique de l'écosystème.
|
||||
Si une majorité de deux tiers ou plus des gardiens signent le même VAA, alors le consensus est atteint :
|
||||
le VAA est automatiquement considéré valide par tous les contrats Wormhole sur toutes les
|
||||
le VAA est automatiquement considéré valide par tous les contrats \gls{Wormhole} sur toutes les
|
||||
\textit{\gls{blockchain}s} et le \textit{payload} est actionné.
|
||||
Chaque gardien utilise un algorithme de signature à courbe elliptique : ECSDA pour
|
||||
\textit{Elliptic Curve Signature Digital Algorithm}.
|
||||
Plus précisément, chaque gardien se réfère à «secp256k1» comme paramètres de la courbe elliptique,
|
||||
aussi utilisé par les \textit{\gls{blockchain}s} Bitcoin et Ethereum.\\
|
||||
aussi utilisé par les \textit{\gls{blockchain}s} \gls{Bitcoin} et \gls{Ethereum}.\\
|
||||
Le modèle de consensus utilisé est une \textit{Proof of Authority} (PoA) avec un système de
|
||||
\textit{multisignature} M/N \cite{wormholeChainswap}, c'est à dire que M clefs parmi N sont nécessaires
|
||||
pour signer un VAA. Ce modèle permet un traitement rapide des transactions et une dispense de participation monétaire, par rapport à la preuve de travail (PoW) et la preuve
|
||||
de participation (PoS). Cependant, il présente également des désavantages : le système est par
|
||||
\textit{design} centralisé et dépend d'un petit groupe de nœuds pouvant créer un point de
|
||||
défaillance unique par l'utilisation commune d'une fonction vulnérable. Il est questionnable de restaurer des tiers de confiance dans le cadre d'un système
|
||||
devenu populaire grâce à l'absence de tels autorités. Wormhole justifie la décentralisation de leur
|
||||
devenu populaire grâce à l'absence de tels autorités. \gls{Wormhole} justifie la décentralisation de leur
|
||||
système \cite{wormholeGuardian} par la présence de plusieurs parties (et non d'un seul) dans le contrôle du réseau.
|
||||
Selon notre analyse, la décentralisation résulte de l'absence d'un ou plusieurs tier(s) de confiance lorsque deux parties
|
||||
souhaitent réaliser une transaction.
|
||||
@ -87,7 +87,7 @@ d'héberger soi-même ces relais pour supporter son application.
|
||||
\centering
|
||||
\includegraphics[scale=0.5]{centralisation/uml_design_v2.png}
|
||||
\label{fig:wormholeDesign}
|
||||
\caption{Architecture Wormhole \cite{wormholeArch}}
|
||||
\caption{Architecture \gls{Wormhole} \cite{wormholeArch}}
|
||||
\end{figure}
|
||||
|
||||
% @startuml
|
||||
|
Reference in New Issue
Block a user