fn build_trace_commitment()

in prover/src/lib.rs [419:460]


    fn build_trace_commitment<H>(
        &self,
        trace: Matrix<Self::BaseField>,
        domain: &StarkDomain<Self::BaseField>,
    ) -> (
        TraceCommitment<Self::BaseField, H>,
        TracePolyTable<Self::BaseField>,
    )
    where
        H: ElementHasher<BaseField = Self::BaseField>,
    {
        // extend the execution trace
        #[cfg(feature = "std")]
        let now = Instant::now();
        let trace_polys = trace.interpolate_columns_into();
        let trace_lde = trace_polys.evaluate_columns_over(domain);
        #[cfg(feature = "std")]
        debug!(
            "Extended execution trace of {} columns from 2^{} to 2^{} steps ({}x blowup) in {} ms",
            trace_lde.num_cols(),
            log2(trace_polys.num_rows()),
            log2(trace_lde.num_rows()),
            domain.trace_to_lde_blowup(),
            now.elapsed().as_millis()
        );

        // build trace commitment
        #[cfg(feature = "std")]
        let now = Instant::now();
        let trace_tree = trace_lde.commit_to_rows();
        #[cfg(feature = "std")]
        debug!(
            "Computed execution trace commitment (Merkle tree of depth {}) in {} ms",
            trace_tree.depth(),
            now.elapsed().as_millis()
        );

        (
            TraceCommitment::new(trace_lde, trace_tree, domain.trace_to_lde_blowup()),
            TracePolyTable::new(trace_polys),
        )
    }