Week 4 Update 4.1

During week 4 I have finished with a draft of my project proposal and some slides to make a presentation. I managed to make contact with a mentor and the authors of EIP-5988. I am still waiting for some feedback of my project from the mentor. At the same time I got some interesting information on the work being done by the authors of EIP-5988.

While waiting for a feedback on my project, I invested my time learning some libraries that will be important for the project, for example, FLINT and blstlib. Both libraries have code that can be used to implement finite field arithmetic with very efficient algorithms. Although blstlib is only for the BLS12-381 curve, I still feal that learning to use a well-known library for elliptic curves can be relevant.

I also spent time making a deep study of the PLONK paper and repositories implementing PLONK, like this one in Python. In the future, I feel that it may be interesting to write a tutorial for implementing PLONK. Even though the paper is well-written, the presentation of the results can be challenging to developers with no background in ring theory. I will leave this for a future personal project.

The main reason of using Poseidon as a hash function is to obtain smaller arithmetic circuits. This inmediately leads to less constraints in R1CS, which is an intermediate representation of arithmetic circuits in current zero-knowledge proof systems. There is also a more recent version called Poseidon2, that was published less than two months ago in the Cryptology ePrint Archive. This new version promises faster execution and less constraints for PLONK circuits. I still need to read the details of Poseidon2 and see if it will be possible to incorporate it into the project.