Extending the circom compiler
Loading...
Official URL
Full text at PDC
Publication date
2023
Authors
Advisors (or tutors)
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citation
Abstract
In this project, a static analysis is developed for the compiler of circom, a Domain Specific Language to design Zero-Knowledge protocols. It aims to detect assignments of variables that play no role in the generated code. Either because the variable is never read before going out of scope or because a new assignment occurs before the variable has ever been read. An algorithm is developed for this analysis and a correction proof is also given. Benchmarking tests have been conducted on the compiler itself and the code generated by it. The results are presented in the section following the algorithm’s explanation. A discussion of the results and the benefits this analysis brings to the compiler appears at the end of the document.
En este proyecto se ha desarrollado un análisis estático para el compilador de circom, un Lenguage de Dominio Específico para el diseño de protocolos de Conocimiento Nulo. Su objetivo es detectar asignaciones de variables que no juegan ningún papel en el código generado. Bien porque la variable se sale de scope antes de ser leída o porque hay una nueva asignación de la variable antes de que el antiguo valor se haya llegado a examinar. Se propone un algoritmo y se presenta una demostración de su correción. Se han llevado a cabo tests de rendimiento tanto sobre el compilador como sobre el código que este genera. Los resultados de dichas pruebas aparecen en la sección posterior a la presentación del algoritmo. Al final del documento, se expone una discusión de los resultados y los beneficios que este análisis presenta para el compilador.
En este proyecto se ha desarrollado un análisis estático para el compilador de circom, un Lenguage de Dominio Específico para el diseño de protocolos de Conocimiento Nulo. Su objetivo es detectar asignaciones de variables que no juegan ningún papel en el código generado. Bien porque la variable se sale de scope antes de ser leída o porque hay una nueva asignación de la variable antes de que el antiguo valor se haya llegado a examinar. Se propone un algoritmo y se presenta una demostración de su correción. Se han llevado a cabo tests de rendimiento tanto sobre el compilador como sobre el código que este genera. Los resultados de dichas pruebas aparecen en la sección posterior a la presentación del algoritmo. Al final del documento, se expone una discusión de los resultados y los beneficios que este análisis presenta para el compilador.
Description
Trabajo de Fin de Grado en Ingeniería Informática, Facultad de Informática UCM, Departamento de Sistemas Informáticos y Computación, Curso 2022/2023.