mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-09 20:45:38 +00:00
5ace105a66
* Adds validatorPartitionSize and validatorPartitionIndex config options * adds partitioning options to the validation type * adds partitioning logic to the validator * ignores partitionIndex when partitionSize is either 0 or 1 * clips the partition index to <<partitionIndex mod partitionSize>> * handles negative values for the validation partition index * updates long description of the new validator cli options * makes default partitionSize to be 0 for better backward compatibility * Improving formatting on validator CLI * reactors validation params into a separate type and simplifies validation of validation params * removes suspected duplication * fixes typo in validator CLI help * updates README * Applies review comments - using optionals and range types to handle validation params * Adds initializer to the configFactory for validatorMaxSlots * [Review] update validator CLI description and README * [Review]: renaming validationParams to validationConfig (config) * [Review]: move validationconfig.nim to a higher level (next to validation.nim) * changes backing type of MaxSlots to be int and makes sure slots are validated without limit when maxSlots is set to 0 * adds more end-to-end test for the validator and the groups * fixes typo in README and conf.nim * makes `maxSlotsConstraintRespected` and `shouldValidateSlot` private + updates the tests * fixes public address of the signer account in the marketplace tutorial * applies review comments - removes two tests
37 lines
1.1 KiB
Nim
37 lines
1.1 KiB
Nim
import std/strformat
|
|
import pkg/questionable
|
|
import pkg/questionable/results
|
|
|
|
type
|
|
ValidationGroups* = range[2..65535]
|
|
MaxSlots* = int
|
|
ValidationConfig* = object
|
|
maxSlots: MaxSlots
|
|
groups: ?ValidationGroups
|
|
groupIndex: uint16
|
|
|
|
func init*(
|
|
_: type ValidationConfig,
|
|
maxSlots: MaxSlots,
|
|
groups: ?ValidationGroups,
|
|
groupIndex: uint16 = 0): ?!ValidationConfig =
|
|
if maxSlots < 0:
|
|
return failure "The value of maxSlots must be greater than " &
|
|
fmt"or equal to 0! (got: {maxSlots})"
|
|
if validationGroups =? groups and groupIndex >= uint16(validationGroups):
|
|
return failure "The value of the group index must be less than " &
|
|
fmt"validation groups! (got: {groupIndex = }, " &
|
|
fmt"groups = {validationGroups})"
|
|
|
|
success ValidationConfig(
|
|
maxSlots: maxSlots, groups: groups, groupIndex: groupIndex)
|
|
|
|
func maxSlots*(config: ValidationConfig): MaxSlots =
|
|
config.maxSlots
|
|
|
|
func groups*(config: ValidationConfig): ?ValidationGroups =
|
|
config.groups
|
|
|
|
func groupIndex*(config: ValidationConfig): uint16 =
|
|
config.groupIndex
|