Skip to content
Joel Krauska edited this page May 22, 2019 · 9 revisions

Q: How do I submit code for the challenge?

There's a button at the bottom of the Coinlist page where you can Submit solutions to our system for checking.

Q: Why do I need to specify a docker image?

We run the code submissions in a restricted docker environment with no network access. (for security) We also need to support a wide variety of development environments and library choices. (solutions might choose to use Rust or Haskell or Go or Fortran) We obviously can't build a custom environment to compile and run everyone's code so we ask that YOU help with that by preparing a Docker image that meets your development needs. If you need help understanding how to create a Docker image, check out the Dockerfile we use to build our reference Docker image.

We also provide tested Docker images from CUDA and OpenCL that we have successfully run GPU code in -- they can be a good starting point.

Q: Does my submission need to be open source?

Yes, all submissions must match the Apache 2.0 used for other Coda code.

Q: Is NVIDIA (cuda) or AMD (opencl) preferred?

We are platform agnostic. We welcome solutions on both platforms. Please be aware that our testing hardware has slightly newer NVIDIA hardware.

Q: Do you really want an accelerated SNARK /verifier/ for the browser?

Yes. Snarkette -- our current pure ocaml/javascript groth verifier can take several seconds on modest desktop or mobile hardware. There's real room for improvement here too.

Q: Is the challenge to optimize for a specific curve or any curve?

Yes -- the main challenge is for MNT4-753 and MNT6-753 curves.

Q: Roughly how many scalars are given to the prover in one call?

Roughly 500,000 (10,000-1,000,000 is the realistic range)

Q: Is the challenge for CPU and GPU only? No FPGA?

Correct. While there may be later interest in FPGA, CPU and GPU speed ups on fairly common hardware are our preferred target currently.

Q: Are modern CPU instructions ok to use?

Yes. Check our target hardware platform. The CPU is an i9-9900K, which is a high-end desktop class CPU. (Note that it seem this CPU DOES NOT support AVX-512.)