[:globe_with_meridians: Website] [:memo: Paper] [:book: Extended Version] [:tv: Video]
You should never ever use it in production as it is a prototype build. The code is provided as it is with no warranty or support.
This implementation is a proof-of-concept prototype build for performance and speedup estimating purposes. As discussed in the paper, there are three limitations:
multi-scalar
branch.litmus-gadgets.hpp
. This does not affect the performance much since the prover workload depends on the number of constraints and variables. You may uncomment the constraint back but then you need to remove the assertion verified==true at line 2377 of file litmus-prover.cpp
. (b) This skips the Pocklington verification. It results in performance overestimation (by a constant factor).Please do not hesitate fo submit an issue or contact us directly if you found any bugs.
[1] Ozdemir, Alex, Riad Wahby, Barry Whitehat, and Dan Boneh. "Scaling verifiable computation using efficient set accumulators." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2075-2092. 2020.
The pequin
folder is the Pequin ToolChain project from https://github.com/pepper-project/pequin
Note: You need to have gcc > 5.5 and glibc < 2.28 to finish the following setup process. Thanks to Changhao Zhu for pointing this out.
python3 tools/compile.py
logs
and results
folder.You should now see a number of executables whose names start with rundb
. They represent the baselines.
Run rundb_XXX -h
for options.
Before you run the evaluation, make sure you create a tmpfs
filesystem larger than 20GB and mount it to the folder logs
.
python3 scripts/runExpr.py litmus
python3 scripts/runExpr.py litmusBatchSize
python3 scripts/runExpr.py litmusProverThreadsRAMDISK
To collect the stat, add COLLECT_DATA=x
to the above lines.
COLLECT_DATA=1
: Throughput
COLLECT_DATA=2
: Latency
COLLECT_DATA=3
: Communication Cost
COLLECT_DATA=4
: Time Breakdown
COLLECT_DATA=5
: Throughput for No-Verification baselines (removing all the overhead)