Comprendre le MASP/CC

amadison79
14 min readNov 16, 2023

--

Le MASP et CC implémentent une fonctionnalité multi-actifs et ainsi que des conversions d’actifs programmables. Cet article explique le fonctionnement de la cryptographie et des autres applications de type confidentiels qui peuvent être développées avec ces circuits.

Le Multi Asset Shielded Pool (MASP) et le Circuit de Conversion (CC) sont deux fonctionnalités qu’offre Namada. Le MASP s’inspire du travail produit par la Electric Coin Company, qui a développé Zcash, il est construit sur le “Circuit Sapling” en implémentant une fonctionnalité multi-actifs et ainsi que des conversions d’actifs programmables.

Contexte

Dans cet article, je vais tenter d’expliquer le MASP dans un cadre global en premier lieu, suivi d’une explication légèrement plus technique, dans un second temps. Ensuite, je mettrai en avant des applications possibles de la technologie qui vont au-delà de ce qui est présenté sur Namada. C’est un article long, je recommande de diviser la lecture en plusieurs parties.

Explique moi comme si j’avais 5 ans ?

En prenant un peu de recul, le MASP fonctionne de la manière suivante :

Il y a deux ensembles distincts d’actifs :

1. L’environnement confidentiel et protégé
2. L’environnement non confidentiel (ou divulgable)

Du point de vue d’un utilisateur, toutes les transactions dans l’environnement confidentiel sont indiscernables les unes des autres. Plus précisément, un utilisateur peut voir des “notes” en train d’être créées et/ou également d’être rendus nuls (objets qui rendent les notes inutilisables) , mais il ne peut pas établir de correspondance entre les rendus nuls et les “notes”, ni entre l’adresse et la “note”. De plus, toutes les “notes” sont indiscernables dans le sens où un observateur d’une transaction ne peut pas faire le lien entre qui l’a envoyée, qui l’a reçue, quel actif a été utilisé pour la transaction, ni combien a été envoyé.

Environnement non confidentiel

Du point de vue de l’utilisateur, tous les tokens détenus dans un environnement non confidentiel sont équivalents à la détention de tokens dans n’importe quel autre écosystème non confidentiel. Les fonctionnalités disponibles pour les utilisateurs sont le transfert d’actifs d’une adresse à une autre, ainsi que le transfert d’actifs à travers les bridges déployés sur Namada.

Environnement confidentiel

Protection des actifs

Les actifs sont “mintés” dans l’environnement confidentiel à partir d’une “zero knowledge proof” valide qui produit une “note”. La “zero knowledge proof” vise à prouver un ensemble de choses :

1. Le type d’actif dans lequel la note sera libellée.
2. Le montant de l’actif.
3. L’adresse qui détient la note.

L’actif sous-jacent est envoyé à un compte de stockage.

Transfert d’actifs

Les transferts d’actifs, d’une adresse confidentiel vers une autre adresse confidentiel, sont construits à l’aide d’une “zero knowledge proof”. Ces preuves vérifient que :

1. Les “notes” qui vont être utilisées n’ont pas encore été utilisées.
2. Les “notes” utilisées ont été créées précédemment.
3. Le propriétaire utilisant la “note” la contrôle.
4. La transaction elle-même préserve l’équilibre (aucun actif créé ou détruit).

De plus, en raison de la nature de la “zero knowledge proof”, ces preuves ne révèlent aucune nouvelle information sur les revendications ci-dessus qu’elles sont censées prouver.

Divulgation des actifs

Lorsque l’utilisateur divulge des actifs, c’est à dire qu’il se retire de l’environnement confidentiel, il révèle publiquement les informations utilisées dans le processus de “minting”. Une fois que ces informations sont vérifiées, l’utilisateur peut prendre possession de l’actif, qui est libéré du compte de stockage par un prédicat de validité natif. Le prédicat de validité natif garantit que la preuve est à la fois valide et que l’actif a été converti à lors de la dernière “epoch”.

Circuit de Conversion (CC)

Il y a deux circuits dans Namada. Le circuit MASP qui gère le “mint”et le “burnt” des actifs protégés (notes). Le Circuit de Conversion (CC) est un circuit distinct qui fonctionne en tandem avec le circuit MASP pour permettre des conversions entre les actifs dans la pool confidentiel qui sont valides selon une table de conversion publique prédéfinie.

De manière générale, le circuit de conversion permet la conversion d’actifs sans avoir besoin de compromettre la confidentialité, par exemple lors des transferts vers un environnement non confidentiel, sans révélation d’informations ou de métadonnées. Il est important de noter que ces conversions sont des conversions au sens le plus strict du terme et sont réalisées par un mécanisme de “mint”et de “burnt”, ce qui signifie qu’il n’y a aucun besoin de pool de liquidités ou de contrepartie. C’est un exploit important, car il est essentiel pour donner un sens à toute pool confidentiel et unifié. Néanmoins, sans le circuit de conversion, le MASP offre tout de même l’avantage d’un environnement confidentiel et unifié, ce qui est important pour les actifs à faible volume d’échanges, mais l’ajout d’un circuit de conversion étend la portée de la confidentialité à une fonctionnalité bien plus étendue.

Dans Namada, le circuit de conversion existe afin de fournir des gratifications pour les actifs qui sont sous le couvert de la confidentialité, c’est à dire qui sont conservés dans la pool protégée. Les gratifications agissent comme une récompense pour corriger les “externalités positives”.

Cela est réalisé à travers l’idée suivante :

1. Chaque actif est attaché à une “epoch”.
2. Les actifs peuvent être convertis à travers les “epoch”.
3. Le facteur de conversion est de 1 pour (1 + jetons NAM de récompenses en sus).

Pas mal, non ?
Je présente ci-dessous un exemple concret :

Exemple

  • Alice transfert vers l’environnement confidentiel (en d’autres mots vers Namada) 100 tokens NAM via l’époch 1.
  • Alice est au courant de la table de conversion CC publiquement disponible, qui lui donne 1 NAM pour chaque lot de 100 NAM qu’elle détient dans l’environnement confidentiel par epoch.
  • À l’epoch 2, Alice effectue un transfert confidentiel grâce au Circuit de Conversion, ce qui lui donne 100 NAM pour l’epoch 2, plus un supplément de 1 NAM pour cet epoch, pour un total de 101 NAM pour l’époch 2.

Cette table de conversion est utilisée afin de calculer les jetons NAM pertinents qui sont distribués dans le cadre de la gratification de Namada pour la détention d’actifs dans l’environnement confidentiel.

Zoumons un peu plus …

Construction des zk-SNARKs

Pour comprendre comment tout transfert confidentiel est effectué, il est important de comprendre comment les zk-SNARKs (Succinct Non-interactive Argument of Knowledge) sont construits dans Namada. Cela est dû au fait que la validité de chaque transfert confidentiel est essentiellement démontrée par son propre argument de “zero knowledge proof”.

Pour commencer, chaque zk-SNARK nécessite des “paramètres publics” qui sont générés à partir d’une “fonction de confiance”. Cette fonction de confiance prend un paramètre de sécurité λ en “input” et produit des paramètres publics pp et des déchets toxiques τ en “output”.

1. Il existe un algorithme de preuve qui prend en “input” les détails privés d’un transfert confidentiel et produit un argument π indiquant que le transfert est valide.
2. Il existe un algorithme de vérification qui prend en “input”les détails publics d’un transfert confidentiel et un argument π, et produit 1 si et seulement si un algorithme de démonstration génère π à partir des détails privés correspondants de ce transfert (sous des hypothèses cryptographiques).
3. Il existe un algorithme de simulation qui, en “input” de ppλ et τ et des détails publics d’un transfert confidentiel “factice”, peut produire un argument “factice” π pour ce transfert confidentiel sans connaissance des détails privés correspondants.

Par “fiable”, nous entendons que lorsque la fonction f trusted (λ) est évaluée, seuls les paramètres publics ppλ sont conservés et les déchets toxiques τ sont détruits et irrécupérables.

L’existence de τ est utilisée pour montrer que l’argument π est un “zero-knowledge” et que l’algorithme de vérification n’apprend rien de π, autre que sa validité.

Engagements de notes

Les engagements de notes sont définis par des “engagements homomorphes de Pedersen”. Les “engagements homomorphes de Pedersen” sont créés à partir de deux générateurs : la base de la valeur et la base aléatoire.

Afin d’inclure plusieurs actifs, Namada utilise un générateur dynamique qui déploie une nouvelle base de valeur pour chaque actif. De plus, ce générateur dynamique utilise la pseudo-aléatoire pour garantir qu’il est irréalisable de trouver la relation entre les types d’actifs.

Du document :

Le générateur d’actifs (également appelé base de valeur) est un point de courbe ctEdwards valide sur la courbe Jubjub, dont la représentation en bits compressés est l’image BLAKE2s de l’identifiant d’actif.

La pré-image Blake2s du générateur d’actifs définit l’identificateur d’actif.

Dans Sapling, une hypothèse de sécurité nécessaire pour éviter que des attaques ouvrent incorrectement les engagements de valeur (et dépensent ainsi des notes qu’ils ne “possèdent” pas) est qu’il ne peut pas exister de relation, de “log discret” entre le point de base (générateur d’actifs) et le paramètre aléatoire (également appelé trapdoor). L’ajout de plusieurs types d’actifs impose une autre hypothèse à la configuration du circuit, à savoir qu’il ne peut pas non plus exister de relation de “log discret” entre les points de base des générateurs d’actifs. Cela permettrait aux utilisateurs d’ouvrir incorrectement des engagements de valeur entre les actifs.

Une hypothèse plus technique, est qu’il ne devrait pas exister deux générateurs d’actifs qui peuvent se nier mutuellement, comme cela se produirait si les points de courbe étaient le P et [-1]P. Cela peut être évité en prenant les précautions appropriées également.

Le Circuit de Conversion

À une échelle inférieur, le circuit de conversion fonctionne avec une table de conversion et un actif synthétique qui a une structure en tuples.

Plus spécifiquement, une conversion prédéfinie valide est une liste [(A1, V1),(A2, V2), … (Ai, Vi), … (An, Vn)] de tuples (Ai, Vi) de l’actif
i et de l’entier signé Vi qui définissent un nouveau générateur d’actifs vbcc donné par

vbi est le générateur d’actifs correspondant de Ai. Cela peut sembler déroutant à première vue, mais si nous le pensons dans sa forme la plus simple, nous pouvons définir la conversion de

comme un circuit qui vous permet de convertir un token NAM de l’epoch précédente à l’epoch actuelle, tout en vous donnant des tokens NAM supplémentaires en gratification. Cela existe afin d’encourager les utilisateurs à conserver leurs actifs dans l’environnement confidentiel de Namada, dans le but de récompenser l’ensemble de la pool.

Applications

Il existe de nombreuses applications différentes pour ce type de technologie en dehors du domaine de gratifications inflationnistes. Ci-dessous, une liste d’idées potentielles :

Des taxations confidentiels
Supposons que nous soyons dans un monde où les blockchains sont généralisées et que les gouvernements aient enfin pu surveiller et mettre en œuvre un système fiscal, du point de vue “non confidentiel” des choses. Cela n’est pas difficile à faire étant donné que toutes les données sont désormais publiques. Les gens ne devraient plus avoir besoin de soumettre des déclarations de revenus car cela devrait être automatique. Cependant, en même temps, le gouvernement surveille chaque transaction. Les gens pourraient vouloir se tourner vers une solution plus respectueuse de la vie privée (et à juste titre).

Avec un CC personnalisé, le gouvernement pourrait mettre en œuvre une taxe sur la richesse/le revenu même au sein d’un environnement confidentiel.

La table de conversion pourrait ressembler à quelque chose comme :

Une taxe sur le revenu nécessiterait plus de réflexion et de délibération mais reste possible.

Comment les gouvernements feraient-ils respecter cette transaction sur un environnement confidentiel ?
Les gouvernements seraient en mesure de faire respecter cela en veillant à que tous transferts vers un environnement divulgable, nécessite un libellée sur la dernière epoch de chaque actif.

Ainsi, la taxation est réalisée sans affecter les garanties de confidentialité. Pour “collecter” ces impôts, les gouvernements seraient simplement autorisés à “mint” une valeur équivalente d’actifs qui ont été “burnt” jusqu’à présent, par le Circuit de Conversion mentionné ci-dessus.

En plus de son utilisation en tant que mécanisme de financement pour les gouvernements, ce type de circuit de conversion peut être utilisé comme mécanisme d’incitation ( par le bâton plutôt que la carotte) pour les transferts confidentiels. Par exemple, les actifs libellés dans des epochs antérieures à une certaine date peuvent être taxés lors de la conversion, incitant à des conversions plus fréquentes.

Financement participatif et vote

De manière similaire au mécanisme de prêt et d’emprunt, le Circuit de Conversion peut être utilisé pour créer des actifs qui correspondent à une “promesse” sur des réclamations, et le faire de manière complètement privée.

Par exemple, permettez la conversion de 1 “token de vote” → 1 “token voté” si l’utilisateur interagit avec un contrat/prédicat de vote sur une proposition. Ensuite, une fois la période de vote terminée, il suffite de fermer la conversion et de permettre la conversion inverse (ou quelque chose de plus complexe). Cela pourrait être utilisé de manière similaire pour le financement participatif, où la conversion inverse est ouverte si le financement n’a pas été atteint à la date limite et sinon pas ouverte.

Prévisions de marchés confidentiels

Cela nécessiterait évidemment une forme d’oracle de confiance, mais l’idée serait que les conversions pourraient être utilisées pour permettre des marchés de prévisions décentralisés et protégés.

En utilisant le Super Bowl comme exemple. Disons que nous voulons créer un marché de prévisions sur la question de savoir si les Philadelphia Eagles remporteront le Super Bowl cette année. Il s’agirait d’un résultat binaire, et le marché de prévisions serait construit de telle sorte que les tokens “YES” sont convertis en 100 NAM si les Eagles remportent le Super Bowl, et sinon les tokens “NO” pourront être convertis en 100 jetons NAM s’ils ne gagnent pas.

Un prédicat de validité personnalisé gérerait l’ajout de nouvelles conversions dans la table de conversion qu’il ouvrira/fermera ensuite en fonction du prix de l’oracle.

La nouvelle conversion dans le circuit permettra aux utilisateurs de déposer 100 tokens NAM à la fois pour un tokenYES et un token pour un NO.

Les utilisateurs peuvent ensuite échanger ces tokens sur le marché, et le faire de manière privée. Cela nécessiterait que les utilisateurs découvrent des contreparties, ce qui est facile à faire avec des opinions opposées off-chain. Pour la découverte de contreparties on-chain, cela peut être intégré dans le protocole (sur les futures blockchains Anoma), via l’intégration avec des marchés bien établis permettant les échanges (par exemple, Osmosis) ou via une interface utilisateur minimale en termes de confiance qui permet aux utilisateurs de troquer un peu de confidentialité et de décentralisation contre la découverte de contreparties et une caution.

Comment cela fonctionnerait-il de manière plus concrète ?

Par exemple, si je pense que les Eagles gagneront avec exactement une probabilité x, alors je devrais être prêt à acheter des tokens “YES” pour un certain prix p tel que p < x (en supposant que le risque ne me dérange pas). De manière équivalente, je devrais être prêt à acheter des tokens NO à n’importe quel prix p < 100 — x. Cela crée un marché où les gens peuvent interagir et faire des engagements crédibles envers leurs convictions. Une fois que le résultat est décidé, la conversion est ouverte et les participants peuvent convertir leurs tokens. Supposons que les Eagles gagnent, alors les personnes qui ont acheté des tokens YES en échange de tokens NO à un prix inférieur à 100 NAM pourront réaliser des bénéfices.

Bien qu’il y ait des avantages à le faire publiquement sur une blockchain non confidentiel, comme l’explique Vitalik Buterin, il y a aussi des avantages à le faire de manière privée. Peut-être que vous ne voulez pas montrer à vos amis originaires de Philadelphie que vous avez parié contre leur équipe gagnant le Super Bowl…

Mises à niveau des NFT

Les tokens non fongibles programmables seraient également possibles au sein d’un environnement confidentiel. Un exemple de cela serait un “PokéNAM” qui souhaite évoluer en privé. Heureusement, cela serait complètement possible si le circuit de conversion correct existe. Quelque chose comme

L’imagination est vraiment le facteur limitant ici.

Protocole de prêt/emprunt protégé

Cette idée nécessite un peu d’imagination et n’est pas directement possible avec juste un Circuit de Conversion, mais avec une logique supplémentaire, elle n’est pas entièrement irréalisable.

L’exemple le plus simple est de permettre un prêt anonyme avec un emprunt pseudo-anonyme. Cela est possible car le prêt “tokenisé” est directement fongible, mais en raison des exigences de garantie, l’emprunt “tokenisé” ne l’est pas.

Je vais utiliser le prêt ETH comme exemple. Une façon possible (et peut-être naïve) d’atteindre cela est de créer les conversions

Ensuite, un prédicat de validité gérerait (avec des adresses non confidentiels) un contrat permettant à l’utilisateur d’emprunter des NAM de manière collatéralisée. De cette manière, si un emprunteur atteint le seuil de liquidation (idéalement avec une collatéralisation de plus de 100%), la liquidation peut se produire de manière décentralisée et incitée par l’arbitrage. En d’autres termes, on pourrait utiliser le système de prêt décentralisé standard que nous avons aujourd’hui dans des applications comme AAVE.

Pour permettre également un emprunt confidentiel, nous devons pousser notre imagination un peu plus loin. Maintenant, nous avons besoin d’une manière de regrouper les collatéralisations sans transférer trop de risques aux prêteurs ou entre emprunteurs. Une mise en œuvre devrait être très prudente face à l’effet citron qui pourrait découler de cette asymétrie d’information.

Les deux premiers taux de conversion supplémentaires sont simples :

💡Circuit 1ère partie

Cependant, nous avons maintenant deux problèmes supplémentaires difficiles à résoudre. Quels sont les incitatifs pour que les emprunteurs paient leurs intérêts ? Qu’est-ce qui incite les emprunteurs à s’assurer que leurs seuils de collatéralisation sont atteints ? Comment concilions-nous la différence entre les NAM empruntés, et les NAM, étant donné que ces actifs ne sont plus fongibles.

Une solution proposée est d’inciter la “reconversion” de NAM en remboursant périodiquement la “dette de collatéral”. Cela ajouterait quelques nouveaux taux de conversion :

💡Circuit 2ème partie

Où vous pouvez convertir des NAM empruntés d’une ancienne epoch en NAM libellés de l’epoch actuelle, si vous fournissez le montant correct de collatéral supplémentaire, plus les intérêts. La mise en œuvre de cela serait peut-être difficile et nécessiterait une nouvelle conversion à chaque epoch pour minimiser les risques. L’idée serait que seuls les NAM empruntés libellés les plus récents seraient acceptés comme paiement, et il y aurait un risque. De cette manière, les actifs empruntés en circulation devraient toujours être suffisamment collatéralisés.

C’est simplement une conversion qui devrait être utilisée en dernier recours pour un prêteur cherchant à sortir.

Ensuite, les NAM empruntés peuvent être convertis de nouveau en leur collatéral, puisque toutes les dettes seront payées grâce à la première conversion.

Gérer les liquidations est certainement la partie la plus difficile pour que cela fonctionne, car vous voulez que les placements des collatéraux soient anonymes.

Avec un circuit de conversion non dynamique, cela devrait se faire avec des taux d’intérêt fixes. Cependant, avec des circuits de conversion dynamiquement programmables (voir https://github.com/anoma/taiga 👀), il devrait être possible d’incorporer l’offre et la demande dynamiques pour gérer cela de manière plus économiquement efficace.

Conclusion

En résumé, il y a beaucoup plus derrière cette technologie que ce que le MASP peut suggérer. Associée au Circuit de Conversion, la technologie devient particulièrement puissante et permet un grand nombre d’applications potentielles. Namada se concentre actuellement sur la fourniture d’un système de paiement confidentiel et sécurisé, mais espère que certains lecteurs prendront les idées qui se cachent derrière le Circuit de Conversion pour mettre en œuvre et inventer de nouvelles idées intéressantes qui pourraient vraiment repousser les limites des applications ZK.

Namada est un protocole blockchain de type layer1 basé sur la preuve d’enjeu (Proof-of-Stake) qui offre une confidentialité agnostique aux actifs sur plusieurs blockchains. En utilisant la technologie avancée zk-SNARKs, Namada facilite des transactions indiscernables pour divers actifs à travers son pool de confidentialité multi-actifs (MASP) unique. Développé par Heliax au sein de l’écosystème Anoma, Namada travaille vers un avenir où la confidentialité des actifs numériques devient la norme, et non l’exception.

--

--