Coder Social home page Coder Social logo

virgo's People

Contributors

niconiconi avatar starzyp avatar weikengchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

virgo's Issues

Cmake error

I'm trying to run CMake but it gives this error

CMake Error at CMakeLists.txt:2 (project):
No CMAKE_CXX_COMPILER could be found.

Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.

An interactive Virgo

Currently, protocols based on subfield VOLE, such as QuickSilver, are designated-verifier without an "s". Therefore, to prove to N verifiers, the prover's work is essentially N times. Note that this may improve in the future, but now subfield VOLE seems to be still subject to this limitation.

Virgo, however, is publicly verifiable and non-interactive. In some applications, it may be useful to consider an interactive version of Virgo, where it is designated-verifiers (by having the verifiers agree on some public randomness, such as sampling fresh randomness via commit-and-open of PRG seed shares).

There is a possibility that an interactive version of Virgo would be faster if getting rid of the extension field is beneficial.

Note that in Virgo, the extension field serves two purposes:

  1. enabling the low-degree testing, which requires some two-arity, but Mersenne primes do not offer that
  2. providing sufficient soundness for non-interactive use cases

An interactive Virgo does not need 2 but still needs 1. That is, Virgo would not need an extension field, but would also need to replace the Mersenne prime with something else. It, therefore, is uncertain whether the performance can be improved twice or more dramatically, or not significantly.

A note on using complex numbers as a field

This note is left here for information purposes for someone else who may plan to change the prime number for certain applications.

The current implementation uses the complex number for the extension field F_{p^2}. This works if x^2+1 is an irreducible polynomial in F_p.

For all the Mersenne primes except 2, using the Rabin Irreducibility Test, complex numbers work fine. This is also the case considered by Virgo.

For all the primes p where p-1 has two-arity greater than 1, complex numbers would not work.

in conclusion, if one wants to change the prime number, such as for high two-arity, a different irreducible polynomial needs to be chosen. Luckily, one can try from x^2 + {-1, 0, 1} x + {-1, 1} to see if there is an easily computable one. If not, x^2 + 2, x^2 + 3 are also not hard to compute.

Doesn't build on M1 Pro (Apple Silicon)

I'm guessing this doesn't support anything other than x86-64 builds, due to the use of AVX256 and inline assembly. Would be nice if it was also possible to build on aarch64/arm64 cpus.

In file included from /Users/tobias/repos/Virgo/src/VPD/fft_circuit_GKR.cpp:3:
/Users/tobias/repos/Virgo/include/linear_gkr/prime_field.h:9:10: fatal error: immintrin.h: No such file or directory
    9 | #include <immintrin.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/fft_gkr.dir/build.make:76: CMakeFiles/fft_gkr.dir/src/VPD/fft_circuit_GKR.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:85: CMakeFiles/fft_gkr.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.