-
slave_blocker
hello good day
-
slave_blocker
do bulletproofs use elliptic curves? Or is it just in Z_p?
-
moneromooo
Bulletproofs use EC math.
-
slave_blocker
i'm thinking to grok it, to write it in python... And will it still work if instead of EC i use also Z_p for the group?
-
baro77[m]
If for Z_p you mean Z modulo p, well EC used in crypto are defined on modular field, so I don’t get your point: you already use modular arithmetic when you work with cryptographic EC, and you also need EC essentially because they provide a sort of OWF with stuff like P=pG.. I guess all comes from Pedersen Commitments use. I don’t know if the same structure can be replicated with a math entity different from EC, but why doing
-
baro77[m]
that? That said Z_p alone isn’t enough imho, and in general it’s discouraged to implement a cryptographic algo if you don’t master the theoretical aspect beneath.. what I mean is that implementing a protocol in a different language from the reference one is a good exercise, but it’s not rewriting the crypto library (better to find a respectable one for the new language).. all of this of course just imho :) and I respect
-
baro77[m]
a lot your python efforts (you are the guy rewriting in python a lot of stuff, right?)
-
jeffro256[m]
> i'm thinking to grok it, to write it in python... And will it still work if instead of EC i use also Z_p for the group?
-
jeffro256[m]
Talk to dangerousfreedom, I think they're doing that exact same thing
-
slave_blocker
:|
-
jeffro256[m]
Y'all could work on it together and make it easy for the rest of us :D
-
baro77[m]
> <@jeffro256:monero.social> > i'm thinking to grok it, to write it in python... And will it still work if instead of EC i use also Z_p for the group?
-
baro77[m]
>
-
baro77[m]
I guess I have mistaken slave_blocker with dangerousfreedom 😅
-
slave_blocker
im just the guy that is trying to write an additional chapter in the ztm v2 to portuguese...
-
jeffro256[m]
Kudos !
-
slave_blocker
thanks :)
-
slave_blocker
-
baro77[m]
slave_blocker: Great .. About BP I guess .. so I suggest to check this out if not already done:
github.com/AdamISZ/from0k2bp
-
slave_blocker
to the power means times and times means plus?
-
slave_blocker
yes i have that too
-
slave_blocker
i have 3 mirrors in my room aswell :)
-
slave_blocker
its more fancy than whiteboards
-
baro77[m]
And if all that ZK stuff is a bit confusing , I’m working on a cheat-sheet about ZK basics , hopefully completed and out in no more than 2 months
-
slave_blocker
so from what i gather from those 2 sources, is that the range proof with bulletproofs does not use recursion.
-
slave_blocker
right?
-
slave_blocker
i dont mean even the aggregated case
-
slave_blocker
-
slave_blocker
@ 4.1
-
slave_blocker
simple, ...
-
slave_blocker
so i was thinking to write a script in python from scratch and instead of using ec just using Z_p for some small prime like 11 or so?
-
slave_blocker
are pedersen commitments possible to do in Z_p ?
-
slave_blocker
its additively homomorphic right?
-
baro77[m]
<slave_blocker> "to the power means times and..." <- yep, it's just a different notation for groups
-
jeffro256[m]
I think pederson commitments technically work for any 2 generators for a group as long as no one can know the logarithm b/t them
-
slave_blocker
and if p = 11, i can take any element from 1 to 10 as a generator of that group right?
-
jeffro256[m]
take everything i say with a grain of salt
-
jeffro256[m]
No a generator for Zp must be a primitive root
-
slave_blocker
it's just to convince me and the reader that the proving scheme works
-
jeffro256[m]
-
slave_blocker
p is a prime any element inside the group generates the whole group
-
slave_blocker
??
-
jeffro256[m]
basically for all a in Zp* your chosen generator g must have a solution to g^x = a (mod n)
-
jeffro256[m]
generators don't have to be prime
-
slave_blocker
n is prime !
-
jeffro256[m]
Yes but you can't pick n to be your generator because n == 0 (mod n) and therefore there are no solutions to n^x = a (mod n) for any a in Fp*
-
slave_blocker
...
-
slave_blocker
g^x = a (mod p), if p = 11 i can use any g € [1,2,3,...10] ?
-
jeffro256[m]
Okay sorry lol heavy math language. Intuitively its called a "generator" because it can "generate" all the numbers of group through "power" (exponentionation)
-
slave_blocker
??
-
jeffro256[m]
So 2 is a primitive root mod 11 because 2^y for y in range [1, 11) is repectively:
-
jeffro256[m]
-
jeffro256[m]
Sory that's big idk how I did that
-
jeffro256[m]
All those numbers together form the entire group mod 11
-
jeffro256[m]
Technically Fp* where p=11
-
slave_blocker
jeffro256[m], all numbers are primitive roots in Z_p ?
-
jeffro256[m]
No those numbers prove that 2 is a primitive root
-
slave_blocker
except 0 and 11
-
slave_blocker
of course
-
jeffro256[m]
3 is not
-
jeffro256[m]
Run this code:
-
jeffro256[m]
(in python)
-
jeffro256[m]
g = 3
-
jeffro256[m]
n = 11
-
jeffro256[m]
print([pow(g, x, n) for x in range(1, n)])
-
jeffro256[m]
Because (e.g.) 7 is not in this list, 3 did not "generate" all the elements of the group mod 11, and because of that, 3 is not a primitve root mod 11
-
jeffro256[m]
And hence shouldn't be used as generator for Pederson commitments because some of the operations won't be well defined
-
» slave_blocker bows
-
slave_blocker
ok great thanks
-
slave_blocker
besides that are pedersen commitments additively homomorphic ?
-
jeffro256[m]
If you choose the correct generators, then yes I believe they should be
-
slave_blocker
believe?
-
slave_blocker
:)
-
jeffro256[m]
Grain of salt, remember haha
-
jeffro256[m]
I didn't write any ringct code for Monero or anything, just took some cryptography classes
-
jeffro256[m]
Don't sue me
-
slave_blocker
If P generates a subgroup whose order is prime, then all the included points (except for
-
slave_blocker
the point-at-infinity) generate that same subgroup.
-
slave_blocker
-
slave_blocker
at page 14.
-
slave_blocker
uff
-
slave_blocker
jeffro256[m], so for subgroups it's different?
-
slave_blocker
what you are saying of the primitive root is if you take the powers of the generators. If you multiply say :
-
slave_blocker
g*x = a (mod p)
-
slave_blocker
then because p is prime then all g € [1,2,3,...10] are generators. Run the following python code :
-
slave_blocker
-
slave_blocker
i don't know how to calculate t_1 and t_2 in :
-
slave_blocker
-
ooo123ooo1234[m]
-
slave_blocker
uhhh
-
ooo123ooo1234[m]
-
ooo123ooo1234[m]
just add this python code into book and that would be sufficient translation for all languages
-
ooo123ooo1234[m]
hahahaha
-
dangerousfreedom
<slave_blocker> "im just the guy that is trying..." <- Hey slave_blocker. Have a look at moneroinflation.com (it might help you to better understand ztm2). If you have some issues, please let me know. (I do speak a bit of portuguese :p)
-
dangerousfreedom
Hey guys, I would like to get your thoughts on this issue here:
-
dangerousfreedom
-
UkoeHB
ooo123ooo1234[m]: discussion in #monero-research-lounge about an audit on 8149. Speak there now if you have something useful to say.
-
slave_blocker
i see a recursion in that code. Does the bulletproof that Monero uses also have a recursion?