---
# System prepended metadata

title: BitVM Optimization

---

## [arkworks benchmark] Precomputations Through Affine Coordinates

- [double_line](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/g2.rs#L54)

    - input affine point $T$ (<span style="color:red">not just projective point anymore</span>)
    
    - output doubled $T$, and two line parameters $(\alpha, \beta)$ satisfying $y = \alpha \cdot x + \beta$, where $\alpha = \frac{3 \cdot x^3}{2 \cdot y}$, and $\beta = y - \alpha \cdot x$

- [add_line](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/g2.rs#L73)

    - input affine point $T$ and $Q$ (<span style="color:red">not just projective point anymore</span>)

    - output added $T$, and two line parameters $(\alpha, \beta)$ satisfying $y = \alpha \cdot x + \beta$, where $\alpha = \frac{y_2 - y_1}{x_2 - x_1}$, and $\beta = y - \alpha \cdot x$


- [ell](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/mod.rs#L214)

    - input accumulator $f$, line parameters $(\alpha, \beta)$, and precomputed point parameter $x_P', y_P'$ (<span style="color:red">not just point $P$ anymore</span>)
    
    - output accumulated $f$
        $$
            f = f \cdot f'
        $$
        where it's compromised of two steps:

        - further more specially for line function evaluation $f'$
            $$
                f' = y_P' \cdot g_{2T}(P) = 1 + \alpha \cdot x_P' \cdot \omega + \beta \cdot y_P' \cdot \omega^3
            $$
            where $x_P' = \frac{-x_P}{y_P}$, and $y_P' = \frac{1}{y_P}$ are precomputated in advance
        - accumulate $f'$ uppon $f$
            $$
                f = f \cdot f'
            $$
            where $f$ is defined over $F_{p^{12}}$, $f'$ is defined over $F_{p^6}$
            
- [miller loop](https://github.com/PayneJoe/algebra/blob/cd46a1058235f5753d0f8a026980780f5284b81f/ec/src/models/bn/mod.rs#L51)

    transform $P$ into its precomputed variant parameters

<br />

## [bitvm fflonk verifier] Precomputations Through Affine Coordinates

change computation mode into verification mode

<br />

## [bitvm groth16 verifier] Add Non-fixed Support Based on fflonk verifier

assertion for non-fixed points

<br />