This repository implements the code to benchmark the computation costs of the BLS threshold signature from the paper titled "Adaptively Secure BLS Threshold Signatures from DDH and co-CDH".
Paper link: https://eprint.iacr.org/2023/1553
The relevant implementations are part of the src/ directory, and the directory has the following structure.
├── README.md
└── src
├── adaptive_bls.go // implements new BLS threshold signatures
├── adaptive_bls_test.go // implements the tests and benchmarking code for our scheme
├── boldyreva.go // implements both Boldyreva-I (RO based DLEQ verification) and Boldyreva-II (pairing based verification)
├── boldyreva_test.go // implmenets the tests and benchmarking code for Boldyreva-I and Boldyreva-II
├── utils.go // implements some common interfaces
└── utils_test.go // implements test case for our common funcitionalities
The code has been tested on a M2-pro Apple laptop with
go version go1.21.5 darwin/arm64
To benchmark the code go to the src/ directory and run the following commmands.
go test -cpu 1 -benchmem -run=^$ -bench BenchmarkBLS
Here -cpu [NUM_CPU] lets us configure the number of CPUs used for evaluating the schemes.
The benchmakr outputs the following results:
- For Boldyreva-I
B1-pSignmeasures the partial signing timeB1-pVerifymeasures the partial signature verification time[T]-B1-aggmeasures the time to aggregate partial signatures fromTsigners. Our benchmark outputs numbers for a threshold of 64, 256, and 1024.
- For Boldyreva-II
B2-pSignmeasures the partial signing timeB2-pVerifymeasures the partial signature verification time[T]-B2-aggmeasures the time to aggregate partial signatures fromTsigners
- Common
[T]-verifymeasures the cost to verify the final signatures withTsigners. This is also applicable to our scheme.
go test -cpu 1 -benchmem -run=^$ -bench BenchmarkABLS
The benchmakr outputs the following results:
- Our scheme
ABLS-pSignmeasures the partial signing timeABLS-pVerifymeasures the partial signature verification time[T]-ABLS-aggmeasures the time to aggregate partial signatures fromTsigners