Suyash Bagad
Cryptography Engineer
bool verify(proof π) {
auto pa = compute_pa(π); // cost: 70, uses G1 MSM op
auto pb = compute_pb(π); // cost: 10, uses G1 MSM op
bool res = (pa == pb * x); // cost: 900, uses pairing op
return res;
}
bool verify(proof π₁, proof π₂) {
auto pa₁ = compute_pa(π₁); // cost: 70
auto pb₁ = compute_pb(π₁); // cost: 10
auto pa₂ = compute_pa(π₂); // cost: 70
auto pb₂ = compute_pb(π₂); // cost: 10
auto pa = pa₁ + u * pa₂; // Aggregate pa's
auto pb = pb₁ + u * pb₂; // Aggregate pb's
bool res = (pa₁ == pb₁ * x); // cost: 900
return res;
}
bool verify(proof π₁, proof π₂, ..., proof πₘ) {
auto pa = 0, pb = 0; // initialise
for(i = 0; i < m; i++) {
auto paᵢ = compute_pa(πᵢ); // cost: 70%
auto pbᵢ = compute_pb(πᵢ); // cost: 10%
pa += uᵢ * paᵢ; // aggregate pa
pb += uᵢ * pbᵢ; // aggregate pb
}
return (pa, pb); // returns aggregated object
}
\(V\)
\(V\)
\(V\)
\(V\)
Private kernel proofs
Tx proofs
Base rollup
Merge rollup
Merge rollup
Honk
Ultra
Std
/**
* @title Rollup Processor
* @dev Smart contract responsible for processing Aztec zkRollups,
* including relaying them to a verifier
* contract for validation and performing
*. all relevant ERC20 token transfers
*/
contract RollupProcessor is IRollupProcessor, Decoder, Ownable, Pausable {
using SafeMath for uint256;
bytes32 public dataRoot = 0x2708a627...;
bytes32 public nullRoot = 0x2694dbe3...;
bytes32 public rootRoot = 0x2d264e93...;
...
...
...
}
By Suyash Bagad
A brief presentation on the planned rollup circuit in Aztec 3.0.