pub trait ToFieldElements<F: Field> {
// Required method
fn to_field_elements(&self, fields: &mut Vec<F>);
// Provided method
fn to_field_elements_owned(&self) -> Vec<F> { ... }
}
Required Methods§
fn to_field_elements(&self, fields: &mut Vec<F>)
Provided Methods§
fn to_field_elements_owned(&self) -> Vec<F>
Implementations on Foreign Types§
Source§impl ToFieldElements<Fp256<FpParameters>> for Option<&ZkAppUri>
impl ToFieldElements<Fp256<FpParameters>> for Option<&ZkAppUri>
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl ToFieldElements<Fp256<FpParameters>> for Box<Account>
impl ToFieldElements<Fp256<FpParameters>> for Box<Account>
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl ToFieldElements<Fp256<FpParameters>> for CompressedPubKey
impl ToFieldElements<Fp256<FpParameters>> for CompressedPubKey
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl ToFieldElements<Fp256<FpParameters>> for PubKey
impl ToFieldElements<Fp256<FpParameters>> for PubKey
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl ToFieldElements<Fp256<FpParameters>> for Signature
impl ToFieldElements<Fp256<FpParameters>> for Signature
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl ToFieldElements<Fp256<FqParameters>> for OpeningProof<Vesta>
impl ToFieldElements<Fp256<FqParameters>> for OpeningProof<Vesta>
fn to_field_elements(&self, fields: &mut Vec<Fq>)
Source§impl ToFieldElements<Fp256<FqParameters>> for ProverCommitments<Vesta>
impl ToFieldElements<Fp256<FqParameters>> for ProverCommitments<Vesta>
fn to_field_elements(&self, fields: &mut Vec<Fq>)
Source§impl<F: FieldWitness> ToFieldElements<F> for &[bool]
impl<F: FieldWitness> ToFieldElements<F> for &[bool]
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for &[u8]
impl<F: FieldWitness> ToFieldElements<F> for &[u8]
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for &[AllEvals<F>]
impl<F: FieldWitness> ToFieldElements<F> for &[AllEvals<F>]
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for bool
impl<F: FieldWitness> ToFieldElements<F> for bool
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for u32
impl<F: FieldWitness> ToFieldElements<F> for u32
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for u64
impl<F: FieldWitness> ToFieldElements<F> for u64
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for MinaBaseProtocolConstantsCheckedValueStableV1
impl<F: FieldWitness> ToFieldElements<F> for MinaBaseProtocolConstantsCheckedValueStableV1
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for ByteString
impl<F: FieldWitness> ToFieldElements<F> for ByteString
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for Fp
impl<F: FieldWitness> ToFieldElements<F> for Fp
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness> ToFieldElements<F> for Fq
impl<F: FieldWitness> ToFieldElements<F> for Fq
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, A: ToFieldElements<F>, B: ToFieldElements<F>> ToFieldElements<F> for (A, B)
impl<F: FieldWitness, A: ToFieldElements<F>, B: ToFieldElements<F>> ToFieldElements<F> for (A, B)
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F> + Clone> ToFieldElements<F> for Cow<'_, T>
impl<F: FieldWitness, T: ToFieldElements<F> + Clone> ToFieldElements<F> for Cow<'_, T>
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for &T
impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for &T
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for Box<[T]>
impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for Box<[T]>
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for Vec<T>
impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for Vec<T>
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for PointEvaluations<T>
impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for PointEvaluations<T>
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for ProofEvaluations<T>
impl<F: FieldWitness, T: ToFieldElements<F>> ToFieldElements<F> for ProofEvaluations<T>
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: FieldWitness, T: ToFieldElements<F>, const N: usize> ToFieldElements<F> for [T; N]
impl<F: FieldWitness, T: ToFieldElements<F>, const N: usize> ToFieldElements<F> for [T; N]
fn to_field_elements(&self, fields: &mut Vec<F>)
Source§impl<F: Field> ToFieldElements<F> for ()
impl<F: Field> ToFieldElements<F> for ()
fn to_field_elements(&self, _fields: &mut Vec<F>)
Source§impl<T, F> ToFieldElements<Fp256<FpParameters>> for (&OrIgnore<T>, F)where
T: ToFieldElements<Fp>,
F: Fn() -> T,
impl<T, F> ToFieldElements<Fp256<FpParameters>> for (&OrIgnore<T>, F)where
T: ToFieldElements<Fp>,
F: Fn() -> T,
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl<T, F> ToFieldElements<Fp256<FpParameters>> for (&SetOrKeep<T>, F)
impl<T, F> ToFieldElements<Fp256<FpParameters>> for (&SetOrKeep<T>, F)
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Source§impl<T, F> ToFieldElements<Fp256<FpParameters>> for (FlaggedOption<&T>, F)where
T: ToFieldElements<Fp>,
F: Fn() -> T,
impl<T, F> ToFieldElements<Fp256<FpParameters>> for (FlaggedOption<&T>, F)where
T: ToFieldElements<Fp>,
F: Fn() -> T,
fn to_field_elements(&self, fields: &mut Vec<Fp>)
Implementors§
impl ToFieldElements<Fp256<FpParameters>> for ProofVerified
impl ToFieldElements<Fp256<FpParameters>> for AuthorizationKind
impl ToFieldElements<Fp256<FpParameters>> for MayUseToken
impl ToFieldElements<Fp256<FpParameters>> for Stack
impl ToFieldElements<Fp256<FpParameters>> for StateStack
impl ToFieldElements<Fp256<FpParameters>> for SokDigest
impl ToFieldElements<Fp256<FpParameters>> for StackFrameCheckedFrame
impl ToFieldElements<Fp256<FpParameters>> for EpochLedger<Fp>
impl ToFieldElements<Fp256<FpParameters>> for TransactionUnion
impl ToFieldElements<Fp256<FpParameters>> for AccountPreconditions
impl ToFieldElements<Fp256<FpParameters>> for Actions
impl ToFieldElements<Fp256<FpParameters>> for Body
impl ToFieldElements<Fp256<FpParameters>> for mina_tree::scan_state::transaction_logic::zkapp_command::EpochData
impl ToFieldElements<Fp256<FpParameters>> for Events
impl ToFieldElements<Fp256<FpParameters>> for Preconditions
impl ToFieldElements<Fp256<FpParameters>> for mina_tree::scan_state::transaction_logic::zkapp_command::Timing
impl ToFieldElements<Fp256<FpParameters>> for Update
impl ToFieldElements<Fp256<FpParameters>> for ZkAppPreconditions
impl ToFieldElements<Fp256<FpParameters>> for ZkappStatement
impl ToFieldElements<Fp256<FpParameters>> for TokenId
impl ToFieldElements<Fp256<FpParameters>> for TokenSymbol
impl ToFieldElements<Fp256<FpParameters>> for VerificationKey
impl ToFieldElements<Fp256<FpParameters>> for VotingFor
impl ToFieldElements<Fp256<FpParameters>> for ZkAppAccount
impl ToFieldElements<Fp256<FpParameters>> for AccountUnhashed
impl ToFieldElements<Fp256<FpParameters>> for ConsensusState
impl ToFieldElements<Fp256<FpParameters>> for BlockchainState
impl ToFieldElements<Fp256<FpParameters>> for ProtocolState
impl ToFieldElements<Fp256<FpParameters>> for ProtocolStateBody
impl ToFieldElements<Fp256<FpParameters>> for SnarkTransition
impl ToFieldElements<Fp256<FpParameters>> for PerProofWitness
impl ToFieldElements<Fp256<FpParameters>> for StepMainStatement
impl ToFieldElements<Fp256<FpParameters>> for LedgerWithHash
impl<F, T> ToFieldElements<F> for MyCow<'_, T>where
F: FieldWitness,
T: ToFieldElements<F>,
impl<F: FieldWitness> ToFieldElements<F> for AuthRequired
impl<F: FieldWitness> ToFieldElements<F> for MerklePath
impl<F: FieldWitness> ToFieldElements<F> for mina_tree::Timing
impl<F: FieldWitness> ToFieldElements<F> for Sgn
impl<F: FieldWitness> ToFieldElements<F> for Boolean
impl<F: FieldWitness> ToFieldElements<F> for CircuitVar<Sgn>
impl<F: FieldWitness> ToFieldElements<F> for CircuitVar<Boolean>
impl<F: FieldWitness> ToFieldElements<F> for Amount
impl<F: FieldWitness> ToFieldElements<F> for Balance
impl<F: FieldWitness> ToFieldElements<F> for BlockTime
impl<F: FieldWitness> ToFieldElements<F> for BlockTimeSpan
impl<F: FieldWitness> ToFieldElements<F> for Epoch
impl<F: FieldWitness> ToFieldElements<F> for Fee
impl<F: FieldWitness> ToFieldElements<F> for Index
impl<F: FieldWitness> ToFieldElements<F> for Length
impl<F: FieldWitness> ToFieldElements<F> for N
impl<F: FieldWitness> ToFieldElements<F> for Nonce
impl<F: FieldWitness> ToFieldElements<F> for Slot
impl<F: FieldWitness> ToFieldElements<F> for SlotSpan
impl<F: FieldWitness> ToFieldElements<F> for TxnVersion
impl<F: FieldWitness> ToFieldElements<F> for CallStack
impl<F: FieldWitness> ToFieldElements<F> for mina_tree::scan_state::transaction_logic::protocol_state::EpochData<F>
impl<F: FieldWitness> ToFieldElements<F> for StagedLedgerHash<F>
impl<F: FieldWitness> ToFieldElements<F> for Permissions<AuthRequired>
impl<F: FieldWitness> ToFieldElements<F> for ReceiptChainHash
impl<F: FieldWitness> ToFieldElements<F> for CheckedAmount<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedBalance<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedFee<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedBlockTime<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedBlockTimeSpan<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedIndex<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedLength<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedN32<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedN<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedNonce<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedSlot<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedSlotSpan<F>
impl<F: FieldWitness> ToFieldElements<F> for CheckedTxnVersion<F>
impl<F: FieldWitness> ToFieldElements<F> for FeatureFlags<bool>
impl<F: FieldWitness> ToFieldElements<F> for InnerCurve<F>
impl<F: FieldWitness> ToFieldElements<F> for PlonkVerificationKeyEvals<F>
impl<F: FieldWitness> ToFieldElements<F> for Failure
impl<F: FieldWitness> ToFieldElements<F> for AllEvals<F>
impl<F: FieldWitness> ToFieldElements<F> for Unfinalized
impl<F: FieldWitness> ToFieldElements<F> for GroupAffine<F>
impl<F: FieldWitness, F2: FieldWitness + ToFieldElements<F>> ToFieldElements<F> for ShiftedValue<F2>
impl<F: FieldWitness, T: Magnitude + ToFieldElements<F>> ToFieldElements<F> for Signed<T>
impl<F: FieldWitness, const N: usize> ToFieldElements<F> for Address<N>
impl<T> ToFieldElements<Fp256<FpParameters>> for WithLazyHash<T>
impl<T> ToFieldElements<Fp256<FpParameters>> for ClosedInterval<T>where
T: ToFieldElements<Fp>,
impl<T> ToFieldElements<Fp256<FpParameters>> for WithHash<T>
impl<T: ToFieldElements<Fp>> ToFieldElements<Fp256<FpParameters>> for Statement<T>
Unlike expectations, OCaml doesn’t call Sok_digest.to_field_elements
on
Statement_intf.to_field_elements
, it is probably overwritten somewhere
but I was not able to find which method exactly is used:
I added lots of printf
everywhere but they are never called/triggered.
I suspect it uses the to_hlist
, or the Typ
, or the data spec, but
again, I couldn’t confirm.
This implementation relies only on the output I observed here, using reproducible input test data: https://github.com/MinaProtocol/mina/blob/bfd1009abdbee78979ff0343cc73a3480e862f58/src/lib/pickles/composition_types/composition_types.ml#L714C11-L714C48
TODO: Fuzz this method, compare with OCaml