-
Notifications
You must be signed in to change notification settings - Fork 122
Protocol 3 Testing
-
Make a build with multi-threading enabled, otherwise the proof generation will be very slow. This currently only works on Linux:
- You will need to build from the protocol_v3 project. Follow the build instructions here.
- in
protocols/packages/loopring_v3/Makefile
changeCMAKE_TYPE := cmake-release
toCMAKE_TYPE := cmake-openmp-release
- Run
make
again. - That's it.
- [Optional steps below, NOT NEEDED IF EVERYTHING IS WORKING AS EXPECTED]
- To check if the number of cores you're running on is detected correctly you can do the following: In
lightcone2/circuit/main.cpp
, before#ifdef MULTICORE
at the top of the file, add#define MULTICORE 1
. -
ONLY DO THIS IF IT DOESN'T DETECT THE NUMBER OF CORES AUTOMATICALLY, WHICH SHOULD BE THE CASE. You can manually set the number of threads that will be created by adding
omp_set_num_threads([N]);
beforeconst int max_threads = omp_get_max_threads();
.[N]
is the number of threads you want.
-
One time step: For testing you can just create new keys, for production these keys are generated in the trusted setup. The proving key is very large!
dex_circuit -createkeys [inBlock.json]
Make sure you have a keys
folder in your working directory.
- Proving a block
dex_circuit -prove [inBlock.json] [outProof.json]
If the necessary keys aren't generated yet this will also generate the keys.
Requirements increase linearly with the number of constraints.
For the maximum 256M constraints (~512 ring settlements):
-
Memory: Up to ~512GB. Yes, this is memory (not storage). 512GB RAM is probably very expensive (if even possible), having a large swap file on an SSD is probably more realistic to make sure we don't go out of memory. Still, the more RAM the better. When testing with a swap file I noticed long periods of time the CPU wasn't doing much, I suspect it was swapping data in and out of RAM.
-
Storage: The proving key is ~120GB. This data is read at the start so this probably doesn't need to be on a quick drive. If we need to use a swap file we also need enough quick storage to store that. The blocks and the proofs are very small.
32M constraints | 64M constraints | 128M constraints | 256M constraints | |
---|---|---|---|---|
i7 (4 cores), 16GB RAM, SSD | ~19 minutes | ~55 minutes | ~114 minutes |
Generating the keys takes a bit longer than creating a proof, but that doesn't matter because it only needs to be done once for a circuit.
Loopring Foundation
nothing here