Assessment reports>Mina Token Bridge>Discussion>Simplifications in validateValidator

Simplifications in validateValidator

In the validateValidator function in the Mina Bridge contract, several operations could be simplified. We collect them here.

Multiple lines of the following occur:

const notDupValidator12 = Provable.if(useSig1.and(useSig2), Provable.if(validator1.equals(validator2), falseB, trueB), trueB);

The part Provable.if(validator1.equals(validator2), falseB, trueB) would be clearer as validator1.equals(validator2).not(), with the same functionality.

Then, instead of

const isDuplicate = Provable.if(
  notDupValidator12.and(notDupValidator13).and(notDupValidator23),
  falseB,
  trueB,
);

isDuplicate.assertFalse("Duplicate validator keys");

one could also use the following.

const isNotDuplicate = notDupValidator12.and(notDupValidator13).and(notDupValidator23);

isNotDuplicate.assertTrue("Duplicate validator keys");

Similarly, Provable.if(isGreaterThanZero, trueB, falseB), can be just isGreaterThanZero in validateIndex.

Zellic © 2025Back to top ↑