Les vérificateurs doivent pouvoir s'assurer que personne ne puisse dépenser de la monnaie qu'il n'a pas.
Pou cela quel sont les 2 critères ?
--
1. L'émétteur doit avoir le droit de dépenser la source
--
1. La somme des outputs doit être égale à la somme des inputs.
---
name: pc
## .center[Pedersen Commitment]
...
...
@@ -191,7 +215,7 @@ Pour avoir un Pedersen Commitment en ECC on utilise deux points G et H ainsi qu'
---
name: cm
name: cm2
## .center[Chiffrement des montants]
...
...
@@ -209,6 +233,28 @@ Tout vérifieur doit pouvoir vérifier que la somme des outputs est égale à la
Le vérifieur à juste à vérifier que `C1 + C2 = C3 + C4`
--
.center[**En réalité c'est insuffisant, voyez vous pourquoi ?**]
---
name: bp
## .center[Bulletproof]
Une « range proof » permet de prouver que la valeur commitée est incluse dans un certain interval sans la dévoilée.
Une bullet proof est un aggégat de plusieurs «range proof» permettant de prouver qu'une liste e valeurs commitées sont incluses dans l'intervale `[0; 2^n[`.
S'il y a P valeurs à prouver, la taille de la bulletproof est:
.center[`(2 * log(n) + 9) * 32 * P`]
Si l'on choisi n=32, alors pour une transaction à 2 outputs on aura une bulletproof de 1216 octets.
Pour plus d'infos: [Bulletproof whitepaper](https://eprint.iacr.org/2017/1066.pdf)