---
# System prepended metadata

title: dusk-plonk-core

---

# dusk-plonk-core

Will be parent to `dusk-plonk` and `dusk-plonkup`

### traits

- `Composer` will contain `TurboComposer` functionalities (i.e. `gate_add`, `gate_mul`, etc).
- `Plonkup` extends `Composer`  and requires `append_plonkup_gate` `append_plonkup_table`.
- `Circuit` defines the behavior of a circuit/gadget. It takes a `Composer` as generic type.
- `TranscriptProvider` provides the base transcript for prover and verifier
- `Prover` has a generic type that implements `TranscriptProvider` and another that implements `Circuit`. The `ProverKey` will be a generic type of `Prover`.
- `Verifier` has a generic type that implements `TranscriptProvider` and another that implements `Circuit`. The `VerifierKey` will be a generic type of `Verifier`.

### structs

- `Compiler` takes as generic a `Prover` & `Verifier`, and outputs its keys.

# dusk-zkp-debugger

### lookup tables

Introduce a lookup table concept in the CDF file. It is a vector (i.e. of variable length) of `[BlsScalar; 4]`.

### lookup gates

Will evaluate the wires `(a, b, c, d) -> (m, n, o, p)`, and will evaluate to `false` if `(m, n, o, p)` doesn't exist in the lookup tables.
