Allowed list of config parameters

Hi team. I have a question regarding the parameters allowed in the config.json file for a challenge. Are the parameters mentioned as example in respective challenges the only set of parameters that can be used for that challenge? Or is it just a subset? For example, Max Element challenge’s example config doesn’t have bootstrapping parameter where as Array Sorting challenge’s example config does. Does this imply that bootstrapping can’t be used in Max Element challenge? If no, then what is the exhaustive list of configs that can be used in any challenge?

Hi!
Listed below are all the parameters that can be used in the config file.

{
“indexes_for_rotation_key”: [
1
],
“mult_depth”: 29,
“ring_dimension”: 131072,
“scale_mod_size”: 59,
“first_mod_size”: 60,
“batch_size”: 65536,
“max_relin_sk_deg”: 5,
“enable_bootstrapping”: false,
“levels_available_after_bootstrap”: 10,
“level_budget”: [4,4],
“scheme”: “BFV” // or BGV, or CKKS depending on the Challenge.
}

  • indexes_for_rotation_key: if an application requires the use of a rotation key, this option allows specifying indexes for the rotation key. If the rotation key is not used, it should be an empty array: indexes_for_rotation_key=[].
  • mult_depth: the user can set the ring dimension. However, if a minimum ring dimension is set for the challenge, then the user can only increase this value; decreasing it is not possible.
  • scale_mod_size: this parameter is used to configure ScaleModSize, default value is 51.
  • first_mod_size: this parameter allows setting up FirstModSize, default value is 60.
  • batch_size: if the bootstrapping is not used, this parameter allows to set the batch size. Default value is ring_dimension/2.
  • enable_bootstrapping: if you need bootstrapping, set this option to true.
  • max_relin_sk_deg: this parameter is used to configureMaxRelinSkDeg, default value is 3.
  • levels_available_after_bootstrap: this parameter allows setting up levels available after the bootstrapping if it’s used. Note that the actual number of levels available after bootstrapping before next bootstrapping will be levels_available_after_bootstrap - 1, because an additional level is used for scaling the ciphertext before next bootstrapping (in 64-bit CKKS bootstrapping).
  • level_budget: the bootstrapping procedure needs to consume a few levels to run. This parameter is used to call EvalBootstrapSetup. Default value is [4,4].

By default, bootstrapping is enabled for all challenges unless explicitly stated that bootstrapping is not supported.

Thanks a lot. One last question. Can I use EvalSum()? I looked at few examples and noticed that EvalSumKeyGen() requires secretKey to be generated. This can’t be generated inside the challenge as secretKey is not provided. So, it should be already present in the AutomorphismKey.