Trait Serialize
pub trait Serialize {
let N: u32;
// Required methods
pub fn serialize(self) -> [Field; N];
}
Required methods
pub fn serialize(self) -> [Field; N]
Implementors
impl<T0, T1> Serialize for (T0, T1)
impl<T0, T1, T2> Serialize for (T0, T1, T2)
impl<T0, T1, T2, T3> Serialize for (T0, T1, T2, T3)
impl<T0, T1, T2, T3, T4> Serialize for (T0, T1, T2, T3, T4)
impl<T0, T1, T2, T3, T4, T5> Serialize for (T0, T1, T2, T3, T4, T5)
impl<T1> Serialize for (T1,)
where
T1: Serialize
where
T1: Serialize
impl Serialize for AddressNote
impl Serialize for AppPayload
impl Serialize for AppendOnlyTreeSnapshot
impl Serialize for AuthorizationSelector
impl Serialize for AvmAccumulatedData
impl Serialize for AvmAccumulatedDataArrayLengths
impl Serialize for AvmCircuitPublicInputs
impl Serialize for AztecAddress
impl Serialize for BlockConstantData
impl Serialize for BlockHeader
impl<let M: u32, T> Serialize for BoundedVec<T, M>
where
T: Serialize
where
T: Serialize
impl Serialize for CallContext
impl Serialize for CheckpointConstantData
impl Serialize for CheckpointHeader
impl<let N: u32, T> Serialize for ClaimedLengthArray<T, N>
where
T: Serialize
where
T: Serialize
impl<let M: u32, let N: u32> Serialize for CompressedString<N, M>
impl Serialize for ContentCommitment
impl Serialize for ContractClassId
impl Serialize for ContractInstance
impl<T> Serialize for Counted<T>
where
T: Serialize
where
T: Serialize
impl Serialize for EmbeddedCurvePoint
impl Serialize for EmbeddedCurveScalar
impl Serialize for Empty
impl Serialize for EpochConstantData
impl Serialize for EthAddress
impl Serialize for EventSelector
impl Serialize for Fancier
impl Serialize for FeeRecipient
impl Serialize for Field
impl Serialize for FieldCompressedString
impl Serialize for FunctionCall
impl Serialize for FunctionData
impl Serialize for FunctionSelector
impl Serialize for Gas
impl Serialize for GasFees
impl Serialize for GasSettings
impl Serialize for GlobalVariables
impl Serialize for HasArray
impl<let N: u32, T> Serialize for HasArrayWithGenerics<T, N>
where
T: Serialize
where
T: Serialize
impl Serialize for IvpkM
impl Serialize for KeyValidationRequest
impl Serialize for KeyValidationRequestAndGenerator
impl Serialize for L2ToL1Message
impl<let N: u32> Serialize for Log<N>
impl Serialize for LogHash
impl<let M: u32, let N: u32> Serialize for MembershipWitness<N, M>
impl Serialize for MockStruct
impl Serialize for NoteMetadata
impl Serialize for NpkM
impl Serialize for Nullifier
impl Serialize for NullifierLeafPreimage
impl Serialize for NullifierMembershipWitness
impl<T> Serialize for Option<T>
where
T: Serialize
where
T: Serialize
impl Serialize for OvpkM
impl Serialize for PartialAddress
impl Serialize for PartialStateReference
impl Serialize for PartialUintNote
impl Serialize for Poseidon2Sponge
impl Serialize for PrivateCallRequest
impl Serialize for PrivateCircuitPublicInputs
impl Serialize for PrivateLogData
impl Serialize for PrivateToAvmAccumulatedData
impl Serialize for PrivateToAvmAccumulatedDataArrayLengths
impl Serialize for PrivateToPublicAccumulatedData
impl Serialize for PrivateToPublicKernelCircuitPublicInputs
impl Serialize for PrivateToRollupAccumulatedData
impl Serialize for PrivateToRollupKernelCircuitPublicInputs
impl Serialize for ProtocolContracts
impl Serialize for PublicCallRequest
impl Serialize for PublicCallRequestArrayLengths
impl Serialize for PublicDataTreeLeafPreimage
impl Serialize for PublicDataWitness
impl Serialize for PublicDataWrite
impl Serialize for PublicKeys
impl Serialize for PublicKeysHash
impl Serialize for PublicLogs
impl<Note> Serialize for RetrievedNote<Note>
where
Note: Serialize
where
Note: Serialize
impl<T> Serialize for Scoped<T>
where
T: Serialize
where
T: Serialize
impl Serialize for Smol
impl Serialize for SpongeBlob
impl Serialize for StateReference
impl Serialize for TestAccount
impl Serialize for TestValue
impl Serialize for TpkM
impl Serialize for TreeSnapshots
impl Serialize for TxConstantData
impl Serialize for TxContext
impl Serialize for TxRequest
impl Serialize for UintNote
impl Serialize for ValueNote
impl<let M: u32, T> Serialize for [T; M]
where
T: Serialize
where
T: Serialize
Trait for serializing Noir types into arrays of Fields.
An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are typically used to communicate between Noir and TypeScript (via oracles and function arguments).
On Following Noir's Intrinsic Serialization
When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait is used instead of the serialization in TS. For this reason we need to have a match between TS serialization, Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls fail with an arguments hash mismatch error message.
Associated Constants
N- The length of the output Field array, known at compile timeExample