Skip to content
This repository has been archived by the owner on May 3, 2024. It is now read-only.

PI circuit for A5 testnet #218

PI circuit for A5 testnet

PI circuit for A5 testnet #218

Triggered via pull request September 6, 2023 16:43
Status Failure
Total duration 23s
Artifacts

openai-review.yml

on: pull_request
OpenAI PR Comment
13s
OpenAI PR Comment
Fit to window
Zoom out
Zoom in

Annotations

2 errors
OpenAI PR Comment
Unable to process file command 'env' successfully.
OpenAI PR Comment
Invalid format 'GIT_PATCH_OUTPUT=From 4563cc7e46e6452408ae294f9cde8fe5eaf8265f Mon Sep 17 00:00:00 2001 From: Cecilia Zhang <zhangyixin319@gmail.com> Date: Mon, 4 Sep 2023 17:12:52 +0800 Subject: [PATCH 01/11] init from pi-refactor --- gadgets/src/util.rs | 32 + zkevm-circuits/src/circuit_tools.rs | 8 + .../src/circuit_tools/cached_region.rs | 232 +++ .../src/circuit_tools/cell_manager.rs | 412 +++++ .../src/circuit_tools/constraint_builder.rs | 1643 +++++++++++++++++ zkevm-circuits/src/circuit_tools/gadgets.rs | 168 ++ zkevm-circuits/src/circuit_tools/memory.rs | 280 +++ zkevm-circuits/src/lib.rs | 5 + zkevm-circuits/src/pi_circuit2.rs | 6 +- zkevm-circuits/src/table.rs | 2 + zkevm-circuits/src/table/byte_table.rs | 48 + zkevm-circuits/src/taiko_pi_circuit.rs | 684 +++++++ zkevm-circuits/src/taiko_super_circuit.rs | 32 +- zkevm-circuits/src/witness/block.rs | 4 +- 14 files changed, 3537 insertions(+), 19 deletions(-) create mode 100644 zkevm-circuits/src/circuit_tools.rs create mode 100644 zkevm-circuits/src/circuit_tools/cached_region.rs create mode 100644 zkevm-circuits/src/circuit_tools/cell_manager.rs create mode 100644 zkevm-circuits/src/circuit_tools/constraint_builder.rs create mode 100644 zkevm-circuits/src/circuit_tools/gadgets.rs create mode 100644 zkevm-circuits/src/circuit_tools/memory.rs create mode 100644 zkevm-circuits/src/table/byte_table.rs create mode 100644 zkevm-circuits/src/taiko_pi_circuit.rs diff --git a/gadgets/src/util.rs b/gadgets/src/util.rs index e0bfcaa6f1..69e7e9993a 100644 --- a/gadgets/src/util.rs +++ b/gadgets/src/util.rs @@ -141,6 +141,35 @@ pub mod select { } } + +/// Trait that implements functionality to get a scalar from +/// commonly used types. +pub trait Scalar<F: Field> { + /// Returns a scalar for the type. + fn scalar(&self) -> F; +} + +/// Implementation trait `Scalar` for type able to be casted to u64 +#[macro_export] +macro_rules! impl_scalar { + ($type:ty) => { + impl<F: eth_types::Field> $crate::util::Scalar<F> for $type { + #[inline] + fn scalar(&self) -> F { + F::from(*self as u64) + } + } + }; + ($type:ty, $method:path) => { + impl<F: eth_types::Field> $crate::util::Scalar<F> for $type { + #[inline] + fn scalar(&self) -> F { + F::from($method(self) as u64) + } + } + }; +} + /// Trait that implements functionality to get a constant expression from /// commonly used types. pub trait Expr<F: Field> { @@ -152,6 +181,7 @@ pub trait Expr<F: Field> { #[macro_export] macro_rules! impl_expr { ($type:ty) => { + $crate::impl_scalar!($type); impl<F: eth_types::Field> $crate::util::Expr<F> for $type { #[inline] fn expr(&self) -> Expression<F> { @@ -160,6 +190,7 @@ macro_rules! impl_expr { } }; ($type:ty, $method:path) => { + $crate::impl_scalar!($type, $method); impl<F: eth_types::Field> $crate::util::Expr<F> for $type { #[inline] fn expr(&self) -> Expression<F> { @@ -173,6 +204,7 @@ impl_expr!(bool); impl_expr!(u8); impl_expr!(u64); impl_expr!(usize); +impl_expr!(isize); impl_expr!(OpcodeId, OpcodeId::as_u8); impl_expr!(GasCost, GasCost::as_u64); diff --git a/zkevm-circuits/src/circuit_tools.rs b/zkevm-circuits/src/circuit_tools.rs new file mode 100644 index 0000000000..2c8535d22e --- /dev/null +++ b/zkevm-circuits/src/circuit_tools.rs @@ -0,0 +1,8 @@ +//! Circuit utilities +#![allow(missing_docs)] +#[macro_use] +pub mod constraint_builder; +pub mod cached_region; +pub mod cell_manager; +pub mod gadgets; +pub mod memory; diff --git a/zkevm-circuits/src/circuit_tools/cached_region.rs b/zkevm-circuits/src/circuit_tools/cached_region.rs new file mode 100644 index 0000000000..07bc9f992a --- /dev/null +++ b/zkevm-circuits/src/circuit_tools/cached_region.rs @@ -0,0 +1,232 @@ +use crate::circuit_tools::cell_manager::Cell; +use eth_types::Field; +use halo2_proofs::{ + circuit::{AssignedCell, Region, Value}, + plonk::{Advice, Any, Assigned, Column, Error, Expression, Fixed}, + poly::Rotation, +}; +use std::{ + collections::HashMap, + hash::{Hash, Hasher}, +}; + +use super::{cell_manager::{CellType, CellColumn}, constraint_builder::ConstraintBuilder}; + +pub trait ChallengeSet<F: Field> { +