mirror of
https://github.com/status-im/eth2.0-specs.git
synced 2025-02-05 07:14:41 +00:00
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
4167
presets/mainnet/trusted_setups/trusted_setup_4096.json
Normal file
4167
presets/mainnet/trusted_setups/trusted_setup_4096.json
Normal file
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
4167
presets/minimal/trusted_setups/trusted_setup_4096.json
Normal file
4167
presets/minimal/trusted_setups/trusted_setup_4096.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
29
scripts/gen_roots_of_unity.py
Normal file
29
scripts/gen_roots_of_unity.py
Normal file
@ -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…
x
Reference in New Issue
Block a user