Using iota genesis-ceremony build-unsigned-checkpoint with a validator that has the same Ed25519 key as worker-key and network-key results in this panic:
thread 'main' panicked at crates/iota-genesis-builder/src/lib.rs:1137:62024-07-22T19:30:40.040286Z ERROR telemetry_subscribers: panicked at crates/iota-genesis-builder/src/lib.rs:1137:6:
Genesis creation should not fail here: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MoveAbort(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") }, function: 75, instruction: 0, function_name: Some("validate_metadata_bcs") }, 3), source: Some(VMError { major_status: ABORTED, sub_status: Some(3), message: None, exec_state: None, location: Module(ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") }), indices: [], offsets: [(FunctionDefinitionIndex(75), 0)] }), command: Some(7) } }
Caused by:
VMError with status ABORTED with sub status 3 at location Module ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") } at code offset 0 in function definition 75 panic.file="crates/iota-genesis-builder/src/lib.rs" panic.line=1137 panic.column=6
:
Genesis creation should not fail here: ExecutionError: ExecutionError { inner: ExecutionErrorInner { kind: MoveAbort(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") }, function: 75, instruction: 0, function_name: Some("validate_metadata_bcs") }, 3), source: Some(VMError { major_status: ABORTED, sub_status: Some(3), message: None, exec_state: None, location: Module(ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") }), indices: [], offsets: [(FunctionDefinitionIndex(75), 0)] }), command: Some(7) } }
Caused by:
VMError with status ABORTED with sub status 3 at location Module ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000003, name: Identifier("validator") } at code offset 0 in function definition 75
Description
Using
iota genesis-ceremony build-unsigned-checkpoint
with a validator that has the same Ed25519 key as worker-key and network-key results in this panic:https://github.com/iotaledger/iota/blob/9cdfe10cf227f27662429abb68f94e1c7482aba0/crates/iota-framework/packages/iota-system/sources/validator.move#L44 which is not really helpful, as the key itself is totally fine (in this case), just also used as network-key
Steps to reproduce:
iota genesis-ceremony init
iota keytool generate bls12381
iota keytool generate ed25519
iota genesis-ceremony build-unsigned-checkpoint
Motivation
Improved UX
Requirements
Open questions (optional)
Should this be checked in the move code or on the Rust side?
iota genesis-ceremony validate-state
does not complain about this.Are you planning to do it yourself in a pull request?
No.