An experimental library for lattice-based commitments
The only requirement is Golang. The dependencies are pulled automatically. The following shows how to run the code on an Ubuntu based distribution.
$ cd pelta
$ sudo apt install -y golang
$ go run main.go [PARAMETERS]
--help
: Displays information about the parameters.--n
: Number of executions. Defaults to1
.--rlwe
: Log RLWE ring degree. This can be10
,11
,12
,13
,14
, or15
. Defaults to13
.--commt
: Log commitment ring degree. Defaults to7
.--levels
: Number of levels for the ring. This can be1
,2
, or3
. Defaults to1
.--delta1
: Log2 delta1. Defaults to25
.--lambda
: Lambda security parameter. Defaults to17
.--kappa
: Kappa security parameter. Defaults to8
.--rel
: The relation to run. Can bekeygen
,aggr_keygen
,collective_dec
,keyswitch
,bootstrapping
, orrelinkeygen
. Defaults tokeygen
.
The program runs the protocol n
many times where n
is the number of executions supplied through the program arguments.
The final output contains both the average and individual running times for Setup
, Prover
, and Verifier
across the runs.
For every data point, we also report the timings of its subprocedures. All the presented numbers are in milliseconds.
Here we give the run configuration to be able to run the experiments we have performed for our paper.
Important: Note that the files need to be regenerated for every ring. Please remove the cached files in the root
folder by invoking rm *.test
after switching the ring parameters.
$ go run main.go --n 10 --rel keygen
$ go run main.go --n 10 --rel collective_dec
$ go run main.go --n 10 --rel keyswitch
$ go run main.go --n 10 --rel bootstrapping
$ go run main.go --n 10 --rel aggr_keygen
$ go run main.go --n 10 --rlwe 11
$ go run main.go --n 10 --rlwe 12
$ go run main.go --n 10 --rlwe 13
$ go run main.go --n 10 --rlwe 14
$ go run main.go --n 10 --rlwe 15
$ go run main.go --n 10 --levels 1
$ go run main.go --n 10 --levels 2
$ go run main.go --n 10 --levels 3
$ go run main.go --n 10 --commt 7 --lambda 10 --kappa 9 --delta1 25
$ go run main.go --n 10 --commt 10 --lambda 1 --kappa 2 --delta1 29
$ go run main.go --n 10 --commt 13 --lambda 1 --kappa 1 --delta1 32
This software and its source code are licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.