Skip to main content

CircuitConfig

Trait CircuitConfig 

Source
pub trait CircuitConfig: Config {
    type Bit: Copy + Variable<Self>;

Show 16 methods // Required methods fn read_bit(builder: &mut Builder<Self>) -> Self::Bit; fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>; fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>; fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit); fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit); fn ext2felt( builder: &mut Builder<Self>, ext: Ext<SP1Field, SP1ExtensionField>, ) -> [Felt<SP1Field>; 4]; fn felt2ext( builder: &mut Builder<Self>, felt: [Felt<SP1Field>; 4], ) -> Ext<SP1Field, SP1ExtensionField>; fn exp_reverse_bits( builder: &mut Builder<Self>, input: Felt<SP1Field>, power_bits: Vec<Self::Bit>, ) -> Felt<SP1Field>; fn prefix_sum_checks( builder: &mut Builder<Self>, x1: Vec<Felt<SP1Field>>, x2: Vec<Ext<SP1Field, SP1ExtensionField>>, ) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>); fn num2bits( builder: &mut Builder<Self>, num: Felt<SP1Field>, num_bits: usize, ) -> Vec<Self::Bit>; fn bits2num( builder: &mut Builder<Self>, bits: impl IntoIterator<Item = Self::Bit>, ) -> Felt<SP1Field>; fn select_chain_f( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Felt<SP1Field>> + Clone, second: impl IntoIterator<Item = Felt<SP1Field>> + Clone, ) -> Vec<Felt<SP1Field>>; fn select_chain_ef( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, ) -> Vec<Ext<SP1Field, SP1ExtensionField>>; fn poseidon2_permute_v2( builder: &mut Builder<Self>, input: [Felt<SP1Field>; 16], ) -> [Felt<SP1Field>; 16]; // Provided methods fn range_check_felt( builder: &mut Builder<Self>, value: Felt<SP1Field>, num_bits: usize, ) { ... } fn poseidon2_compress_v2( builder: &mut Builder<Self>, input: impl IntoIterator<Item = Felt<SP1Field>>, ) -> [Felt<SP1Field>; 8] { ... }
}

Required Associated Types§

Source

type Bit: Copy + Variable<Self>

Required Methods§

Source

fn read_bit(builder: &mut Builder<Self>) -> Self::Bit

Source

fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>

Source

fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>

Source

fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit)

Source

fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit)

Source

fn ext2felt( builder: &mut Builder<Self>, ext: Ext<SP1Field, SP1ExtensionField>, ) -> [Felt<SP1Field>; 4]

Source

fn felt2ext( builder: &mut Builder<Self>, felt: [Felt<SP1Field>; 4], ) -> Ext<SP1Field, SP1ExtensionField>

Source

fn exp_reverse_bits( builder: &mut Builder<Self>, input: Felt<SP1Field>, power_bits: Vec<Self::Bit>, ) -> Felt<SP1Field>

Source

fn prefix_sum_checks( builder: &mut Builder<Self>, x1: Vec<Felt<SP1Field>>, x2: Vec<Ext<SP1Field, SP1ExtensionField>>, ) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)

Source

fn num2bits( builder: &mut Builder<Self>, num: Felt<SP1Field>, num_bits: usize, ) -> Vec<Self::Bit>

Source

fn bits2num( builder: &mut Builder<Self>, bits: impl IntoIterator<Item = Self::Bit>, ) -> Felt<SP1Field>

Source

fn select_chain_f( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Felt<SP1Field>> + Clone, second: impl IntoIterator<Item = Felt<SP1Field>> + Clone, ) -> Vec<Felt<SP1Field>>

Source

fn select_chain_ef( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, ) -> Vec<Ext<SP1Field, SP1ExtensionField>>

Source

fn poseidon2_permute_v2( builder: &mut Builder<Self>, input: [Felt<SP1Field>; 16], ) -> [Felt<SP1Field>; 16]

Provided Methods§

Source

fn range_check_felt( builder: &mut Builder<Self>, value: Felt<SP1Field>, num_bits: usize, )

Source

fn poseidon2_compress_v2( builder: &mut Builder<Self>, input: impl IntoIterator<Item = Felt<SP1Field>>, ) -> [Felt<SP1Field>; 8]

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl CircuitConfig for OuterConfig

Source§

type Bit = Var<<OuterConfig as Config>::N>

Source§

fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit)

Source§

fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit)

Source§

fn read_bit(builder: &mut Builder<Self>) -> Self::Bit

Source§

fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>

Source§

fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>

Source§

fn ext2felt( builder: &mut Builder<Self>, ext: Ext<SP1Field, SP1ExtensionField>, ) -> [Felt<SP1Field>; 4]

Source§

fn felt2ext( builder: &mut Builder<Self>, felt: [Felt<SP1Field>; 4], ) -> Ext<SP1Field, SP1ExtensionField>

Source§

fn exp_reverse_bits( builder: &mut Builder<Self>, input: Felt<SP1Field>, power_bits: Vec<Var<<Self as Config>::N>>, ) -> Felt<SP1Field>

Source§

fn prefix_sum_checks( builder: &mut Builder<Self>, point_1: Vec<Felt<SP1Field>>, point_2: Vec<Ext<SP1Field, SP1ExtensionField>>, ) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)

Source§

fn num2bits( builder: &mut Builder<Self>, num: Felt<SP1Field>, num_bits: usize, ) -> Vec<Var<<Self as Config>::N>>

Source§

fn bits2num( builder: &mut Builder<Self>, bits: impl IntoIterator<Item = Var<<Self as Config>::N>>, ) -> Felt<SP1Field>

Source§

fn select_chain_f( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Felt<SP1Field>> + Clone, second: impl IntoIterator<Item = Felt<SP1Field>> + Clone, ) -> Vec<Felt<SP1Field>>

Source§

fn select_chain_ef( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, ) -> Vec<Ext<SP1Field, SP1ExtensionField>>

Source§

fn poseidon2_permute_v2( _: &mut Builder<Self>, _: [Felt<SP1Field>; 16], ) -> [Felt<SP1Field>; 16]

Source§

impl CircuitConfig for InnerConfig

Source§

type Bit = Felt<KoalaBear>

Source§

fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit)

Source§

fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit)

Source§

fn read_bit(builder: &mut Builder<Self>) -> Self::Bit

Source§

fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>

Source§

fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>

Source§

fn ext2felt( builder: &mut Builder<Self>, ext: Ext<SP1Field, SP1ExtensionField>, ) -> [Felt<SP1Field>; 4]

Source§

fn felt2ext( builder: &mut Builder<Self>, felt: [Felt<SP1Field>; 4], ) -> Ext<SP1Field, SP1ExtensionField>

Source§

fn exp_reverse_bits( builder: &mut Builder<Self>, input: Felt<SP1Field>, power_bits: Vec<Felt<SP1Field>>, ) -> Felt<SP1Field>

Source§

fn prefix_sum_checks( builder: &mut Builder<Self>, x1: Vec<Felt<SP1Field>>, x2: Vec<Ext<SP1Field, SP1ExtensionField>>, ) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)

Source§

fn num2bits( builder: &mut Builder<Self>, num: Felt<SP1Field>, num_bits: usize, ) -> Vec<Felt<SP1Field>>

Source§

fn bits2num( builder: &mut Builder<Self>, bits: impl IntoIterator<Item = Felt<SP1Field>>, ) -> Felt<SP1Field>

Source§

fn select_chain_f( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Felt<SP1Field>> + Clone, second: impl IntoIterator<Item = Felt<SP1Field>> + Clone, ) -> Vec<Felt<SP1Field>>

Source§

fn select_chain_ef( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, ) -> Vec<Ext<SP1Field, SP1ExtensionField>>

Source§

fn poseidon2_permute_v2( builder: &mut Builder<Self>, input: [Felt<SP1Field>; 16], ) -> [Felt<SP1Field>; 16]

Implementors§