Use official KZG ceremony output `trusted_setup_4096.json` trusted setups
This commit is contained in:
parent
be3c0f7b04
commit
c5785899f7
8
Makefile
8
Makefile
|
@ -215,6 +215,14 @@ gen_kzg_setups:
|
|||
python3 ./gen_kzg_trusted_setups.py --secret=1337 --g1-length=4096 --g2-length=65 --output-dir ${CURRENT_DIR}/presets/minimal/trusted_setups; \
|
||||
python3 ./gen_kzg_trusted_setups.py --secret=1337 --g1-length=4096 --g2-length=65 --output-dir ${CURRENT_DIR}/presets/mainnet/trusted_setups
|
||||
|
||||
gen_roots_of_unity:
|
||||
cd $(SCRIPTS_DIR); \
|
||||
if ! test -d venv; then python3 -m venv venv; fi; \
|
||||
. venv/bin/activate; \
|
||||
pip3 install -r requirements.txt; \
|
||||
python3 ./gen_roots_of_unity.py --g1-length=4096 --output-dir ${CURRENT_DIR}/presets/minimal/trusted_setups
|
||||
python3 ./gen_roots_of_unity.py --g1-length=4096 --output-dir ${CURRENT_DIR}/presets/mainnet/trusted_setups
|
||||
|
||||
# For any generator, build it using the run_generator function.
|
||||
# (creation of output dir is a dependency)
|
||||
gen_%: $(TEST_VECTOR_DIR)
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,29 @@
|
|||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from eth2spec.utils.kzg import (
|
||||
dump_kzg_roots_of_unity,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"--g1-length",
|
||||
dest="g1_length",
|
||||
type=int,
|
||||
required=True,
|
||||
help='the length of G1 trusted setup',
|
||||
)
|
||||
parser.add_argument(
|
||||
"-o",
|
||||
"--output-dir",
|
||||
dest="output_dir",
|
||||
required=True,
|
||||
help='the output directory',
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
dump_kzg_roots_of_unity(args.g1_length, args.output_dir)
|
27
setup.py
27
setup.py
|
@ -108,21 +108,19 @@ def _is_constant_id(name: str) -> bool:
|
|||
|
||||
|
||||
def _load_kzg_trusted_setups(preset_name):
|
||||
"""
|
||||
[TODO] it's not the final mainnet trusted setup.
|
||||
We will update it after the KZG ceremony.
|
||||
"""
|
||||
file_path = str(Path(__file__).parent) + '/presets/' + preset_name + '/trusted_setups/testing_trusted_setups.json'
|
||||
trusted_setups_file_path = str(Path(__file__).parent) + '/presets/' + preset_name + '/trusted_setups/trusted_setup_4096.json'
|
||||
roots_of_unity_file_path = str(Path(__file__).parent) + '/presets/' + preset_name + '/trusted_setups/trusted_setup_4096_roots_of_unity.json'
|
||||
|
||||
with open(file_path, 'r') as f:
|
||||
with open(trusted_setups_file_path, 'r') as f:
|
||||
json_data = json.load(f)
|
||||
trusted_setup_G1_lagrange = json_data['g1_lagrange']
|
||||
trusted_setup_G2 = json_data['g2_monomial']
|
||||
|
||||
trusted_setup_G1 = json_data['setup_G1']
|
||||
trusted_setup_G2 = json_data['setup_G2']
|
||||
trusted_setup_G1_lagrange = json_data['setup_G1_lagrange']
|
||||
roots_of_unity = json_data['roots_of_unity']
|
||||
with open(roots_of_unity_file_path, 'r') as f:
|
||||
json_data = json.load(f)
|
||||
roots_of_unity = [int(x, 16) for x in json_data['roots_of_unity']]
|
||||
|
||||
return trusted_setup_G1, trusted_setup_G2, trusted_setup_G1_lagrange, roots_of_unity
|
||||
return trusted_setup_G2, trusted_setup_G1_lagrange, roots_of_unity
|
||||
|
||||
|
||||
ALL_KZG_SETUPS = {
|
||||
|
@ -158,10 +156,9 @@ def _parse_value(name: str, typed_value: str, type_hint: Optional[str] = None) -
|
|||
def _update_constant_vars_with_kzg_setups(constant_vars, preset_name):
|
||||
comment = "noqa: E501"
|
||||
kzg_setups = ALL_KZG_SETUPS[preset_name]
|
||||
constant_vars['KZG_SETUP_G1'] = VariableDefinition(constant_vars['KZG_SETUP_G1'].value, str(kzg_setups[0]), comment, None)
|
||||
constant_vars['KZG_SETUP_G2'] = VariableDefinition(constant_vars['KZG_SETUP_G2'].value, str(kzg_setups[1]), comment, None)
|
||||
constant_vars['KZG_SETUP_LAGRANGE'] = VariableDefinition(constant_vars['KZG_SETUP_LAGRANGE'].value, str(kzg_setups[2]), comment, None)
|
||||
constant_vars['ROOTS_OF_UNITY'] = VariableDefinition(constant_vars['ROOTS_OF_UNITY'].value, str(kzg_setups[3]), comment, None)
|
||||
constant_vars['KZG_SETUP_G2'] = VariableDefinition(constant_vars['KZG_SETUP_G2'].value, str(kzg_setups[0]), comment, None)
|
||||
constant_vars['KZG_SETUP_LAGRANGE'] = VariableDefinition(constant_vars['KZG_SETUP_LAGRANGE'].value, str(kzg_setups[1]), comment, None)
|
||||
constant_vars['ROOTS_OF_UNITY'] = VariableDefinition(constant_vars['ROOTS_OF_UNITY'].value, str(kzg_setups[2]), comment, None)
|
||||
|
||||
|
||||
def get_spec(file_name: Path, preset: Dict[str, str], config: Dict[str, str], preset_name=str) -> SpecObject:
|
||||
|
|
|
@ -104,7 +104,6 @@ but reusing the `mainnet` settings in public networks is a critical security req
|
|||
| Name | Value |
|
||||
| - | - |
|
||||
| `KZG_SETUP_G2_LENGTH` | `65` |
|
||||
| `KZG_SETUP_G1` | `Vector[G1Point, FIELD_ELEMENTS_PER_BLOB]`, contents TBD |
|
||||
| `KZG_SETUP_G2` | `Vector[G2Point, KZG_SETUP_G2_LENGTH]`, contents TBD |
|
||||
| `KZG_SETUP_LAGRANGE` | `Vector[G1Point, FIELD_ELEMENTS_PER_BLOB]`, contents TBD |
|
||||
|
||||
|
|
|
@ -116,3 +116,26 @@ def dump_kzg_trusted_setup_files(secret: int, g1_length: int, g2_length: int, ou
|
|||
}, f)
|
||||
|
||||
print(f'Generated trusted setup file: {file_path}\n')
|
||||
|
||||
|
||||
def dump_kzg_roots_of_unity(g1_length: int, output_dir: str) -> None:
|
||||
bls.use_fastest()
|
||||
|
||||
roots_of_unity = compute_roots_of_unity(g1_length)
|
||||
serialized_roots_of_unity = [hex(x) for x in roots_of_unity]
|
||||
|
||||
output_dir_path = Path(output_dir)
|
||||
|
||||
if not os.path.exists(output_dir_path):
|
||||
os.makedirs(output_dir_path)
|
||||
print("Created directory: ", output_dir_path)
|
||||
|
||||
file_path = output_dir_path / 'trusted_setup_4096_roots_of_unity.json'
|
||||
|
||||
with open(file_path, 'w+') as f:
|
||||
json.dump(
|
||||
{
|
||||
"roots_of_unity": serialized_roots_of_unity,
|
||||
}, f)
|
||||
|
||||
print(f'Generated trusted setup file: {file_path}\n')
|
||||
|
|
Loading…
Reference in New Issue