Example
To illustrate how to use components, we will create two components where the main component calls a hash function component. For simplicity, instead of an actual hash function, the second component will compute from an input . This component will have in total three columns: [input, intermediate, output], which will correspond to the values . Our main component, on the other hand, will have two columns, [input, output], which corresponds to the values . We’ll now refer to the main component as the scheduling component and the hash function component the computing component, as the main component is essentially scheduling the hash function component to run its function with a given input and the hash function component computes on the provided input. As can be seen in Figure 1, the inputs and outputs of each component are connected by lookups.
Figure 1: Scheduling and Computing components
Design

Figure 2: Traces of each component
Code
ComponentsStatement0
, ComponentsStatement1
, Components
and ComponentsProof
, but the main logic is the same.
Let’s take a closer look at how the LogUp columns are generated.