The Orchard circuit makes use of the following gadgets from the halo2_gadgets crate:

  • Elliptic curve:
    • FixedPoint
    • FixedPointBaseField
    • FixedPointShort
    • NonIdentityPoint
    • Point
  • Poseidon:
    • Hash<ConstantLength>
  • Sinsemilla:

It instantiates the instruction sets required for these gadgets with the following chips:

It also makes use of the following utility functions for standardising constraints:

  • halo2_gadgets::utilities::{bitrange_subset, bool_check}