Gadgets
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:
- CommitDomain
- Message
- MessagePiece
- MerklePath
 
It instantiates the instruction sets required for these gadgets with the following chips:
- halo2_gadgets::ecc::chip::EccChip
- halo2_gadgets::poseidon::Pow5Chip
- halo2_gadgets::sinsemilla::chip::SinsemillaChip
- halo2_gadgets::sinsemilla::merkle::chip::MerkleChip
- halo2_gadgets::utilities::UtilitiesInstructions
- halo2_gadgets::utilities::lookup_range_check::LookupRangeCheckConfig
It also makes use of the following utility functions for standardising constraints:
- halo2_gadgets::utilities::{bitrange_subset, bool_check}