Neo-Outis / MSM_blst

Multi Scalar Multiplication over BLS12-381 curve utilizing blst

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MSM_blst

Credit: This is developed on top of a modified blst library. Check the original library at blst library.

Compilation

The code is tested on intel Mac OS, on M1 Mac OS, and on intel unbuntu. They can be compiled and run using the same commands as explained below. Note MSM_blst is not compatible with the original blst library since some of the source code in blst has been modified.

In the terminal under MSM_blst folder, one first runs ./build.sh to build the modified blst library, then runs


g++ -std=c++17 -o main_test -g -O2 main_p1.cpp libblst.a

or


g++ -std=c++17 -o main_test -g -O2 main_p2.cpp libblst.a

to complie the corresponding benchmark over G_1 or G_2 respectively.

Type in


./main_test

to run the benchmark.

Configuration

In main_p1.cpp or main_p2.cpp there is a


/***----***
Configuration
***----***/

snippet. One can adjust the integer xx (8<= xx <= 24) in the line

 
#include "ches_config_files/config_file_n_exp_xx.h" 

to run the code for different number of points n = 2^{xx} . One can decide whether to run the test for a specific algorithm by assigning bool values to TEST_PIPPENGER_Q_OVER_5_CHES and TEST_PIPPENGER_BGMW95 .

About

Multi Scalar Multiplication over BLS12-381 curve utilizing blst

License:Apache License 2.0


Languages

Language:Assembly 67.6%Language:C 15.7%Language:Go 5.3%Language:Rust 3.6%Language:C++ 2.9%Language:Python 2.8%Language:C# 1.3%Language:Shell 0.3%Language:TypeScript 0.2%Language:JavaScript 0.1%Language:Java 0.1%Language:HTML 0.0%Language:Makefile 0.0%Language:Batchfile 0.0%