Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
41606fe
support first version of CodecV6 in relayer and add functionality to …
jonastheis Dec 30, 2024
0c0c417
adjust Sender to support multiple blobs when sending a transaction
jonastheis Dec 31, 2024
78c9963
implement batch submission of multiple batches per transaction and co…
jonastheis Dec 31, 2024
940fde0
implement missing part of commit logic for CodecV6
jonastheis Dec 31, 2024
ca8d930
feat(rollup-relayer): add Euclid support
omerfirmak Jan 9, 2025
421afe9
deprecate halo2 provers, start openvm prover
omerfirmak Jan 27, 2025
b460d4a
Merge remote-tracking branch 'origin/omerfirmak/mpt' into feat/use-co…
jonastheis Jan 28, 2025
182f8e3
update go.mod to latest da-codec version V7
jonastheis Jan 28, 2025
783b965
update go.mod to latest da-codec version V7
jonastheis Feb 5, 2025
5a479c3
address review comments
jonastheis Feb 5, 2025
310abdd
add InitialL1MessageQueueHash and LastL1MessageQueueHash to chunk and…
jonastheis Feb 5, 2025
2efbbd7
add support for bundles with CodecV7
jonastheis Feb 5, 2025
e713424
update contextIDFromBatches prefix to v7
jonastheis Feb 5, 2025
f4e17bc
fix ci
jonastheis Feb 5, 2025
99c0a9f
update to latest da-codec
jonastheis Feb 10, 2025
8db5339
fix issues with chunks when handling CodecV7
jonastheis Feb 10, 2025
69a80d4
add testCommitBatchAndFinalizeBundleCodecV7 for relayer
jonastheis Feb 10, 2025
5f22950
feat(prover): euclid prover first draft
omerfirmak Feb 5, 2025
9412c7f
feat(coordinator): abstract proof types behind an interface
omerfirmak Feb 6, 2025
c3a3bad
feat(rollup-relayer): add Euclid support
omerfirmak Jan 9, 2025
2de45f0
feat(coordinator): add euclid proof types
omerfirmak Feb 6, 2025
f01af24
fix: potentially flaky testResubmitZeroGasPriceTransaction
omerfirmak Feb 7, 2025
2bd0655
feat: Add Euclid verifier
omerfirmak Feb 7, 2025
848d3a6
fix: re-enable supported forks check
omerfirmak Feb 7, 2025
e5ad9c6
feat: allow stopping fake finalization at fork boundary
omerfirmak Feb 13, 2025
b424cef
feat: add CPU prover dockerfile
omerfirmak Feb 13, 2025
ac17696
feat: update contracts to euclid version
omerfirmak Feb 13, 2025
d503d4a
fix: base64 encode VKs
omerfirmak Feb 17, 2025
bf08436
fix: prover using wrong resources for batch/bundle circuits
omerfirmak Feb 17, 2025
83c73f8
fix: coordinator ignore euclid transition chunk
omerfirmak Feb 17, 2025
d3acd6b
adjust to recent CodecV7 changes. remove initialL1MessageQueueIndex a…
jonastheis Feb 19, 2025
f13863e
Merge remote-tracking branch 'origin/omerfirmak/euclid-prover' into f…
jonastheis Feb 20, 2025
8b57dd6
fixes after merge
jonastheis Feb 20, 2025
37924b0
feat: bump zkvm-prover to rc4
omerfirmak Feb 20, 2025
fbc14ac
address review comments
jonastheis Feb 20, 2025
867fda6
fix: add batch tasks details for v6 codec
omerfirmak Feb 20, 2025
2e9827a
fix: properly propagate verifier errors
omerfirmak Feb 21, 2025
01fa3b3
feat: use verifier-only types in coordinator
omerfirmak Feb 21, 2025
50ebf17
fix: generate evm proofs for bundles
omerfirmak Feb 21, 2025
e1a0bab
add new contract ABI and adjust submission to it
jonastheis Feb 24, 2025
bb9d404
fix: force byte arrays to be marshaled as JSON arrays
omerfirmak Feb 24, 2025
0125dd6
add new contract ABI
jonastheis Feb 27, 2025
121ce09
update config and adjust to new contract ABI
jonastheis Feb 27, 2025
ed394a6
make sure that all batches committed in the same tx are part of the s…
jonastheis Feb 27, 2025
a55de1f
feat: set code tx support (#1600)
colinlyguo Feb 27, 2025
89ede0d
build rollup images with --platform=linux/amd64
jonastheis Feb 27, 2025
782e019
Merge branch 'feat/use-codec-v6' of github.com:scroll-tech/scroll int…
jonastheis Feb 27, 2025
081d289
update da-codec dependency
jonastheis Feb 27, 2025
47a6c23
fix bug where chunk and batch blocks mismatch
jonastheis Feb 28, 2025
eb5758b
feat: bump to zkvm-prover rc5
roynalnaruto Feb 28, 2025
7353f30
update l2geth version in go.mod
jonastheis Feb 28, 2025
673777f
use go 1.22 in Dockerfile builder
jonastheis Feb 28, 2025
554a233
refactor: move euclid prover to new subdir
omerfirmak Mar 4, 2025
e27ab5a
Merge remote-tracking branch 'origin/develop' into omerfirmak/euclid-…
omerfirmak Mar 4, 2025
26a49cb
Merge remote-tracking branch 'origin/omerfirmak/euclid-prover' into f…
jonastheis Mar 6, 2025
8ea4315
update go.work.sum
jonastheis Mar 6, 2025
55b32e1
add debug log message
jonastheis Mar 6, 2025
d6674e8
add configuration parameter maxChunksPerBatch for batch proposer
jonastheis Mar 6, 2025
a1c4562
add configuration parameter maxChunksPerBatch for batch proposer
jonastheis Mar 6, 2025
c8b614f
unit tests fix
Mar 6, 2025
f91c999
fix batch proposer panic
Thegaram Mar 6, 2025
82dd5e0
feat(bridge-history): support codecv7
Mar 6, 2025
4333d51
Revert "feat(bridge-history): support codecv7"
Mar 6, 2025
b30f4d0
chore(zkvm-circuit): upgrade to 0.1.0-rc.6 (#1610)
colinlyguo Mar 7, 2025
03c63a6
update batch/chunk details for phase2
omerfirmak Mar 7, 2025
9f4c9ee
fix: prover version (#1611)
yiweichi Mar 7, 2025
101cc46
update dependencies
Mar 7, 2025
a868bc1
simplify version checks
Mar 7, 2025
8b08a57
Revert "simplify version checks"
Mar 7, 2025
f1ea4b3
process task with CodecV7, add check for BlobDataProof length and add…
jonastheis Mar 8, 2025
b7e7d1a
Merge remote-tracking branch 'origin/omerfirmak/euclid-prover' into f…
jonastheis Mar 8, 2025
94bee19
feat(bridge-history): support codecv7 (#1609)
colinlyguo Mar 8, 2025
f27ddb7
remove debug line
jonastheis Mar 8, 2025
da96331
tweak comments and some renamings
Mar 9, 2025
d79aaef
fix CI
jonastheis Mar 10, 2025
ab7038c
Merge branch 'feat/use-codec-v6' of github.com:scroll-tech/scroll int…
jonastheis Mar 10, 2025
47219f2
run goimports
jonastheis Mar 10, 2025
95adcc3
fix tests
jonastheis Mar 10, 2025
224546e
add new ABI and add more tests
jonastheis Mar 10, 2025
0799dd4
fix linter
jonastheis Mar 10, 2025
7a70e37
fix test
jonastheis Mar 10, 2025
57d50b7
Merge branch 'develop' into omerfirmak/euclid-prover
omerfirmak Mar 10, 2025
20dffe4
chore: auto version bump [bot]
omerfirmak Mar 10, 2025
867307d
Merge remote-tracking branch 'origin/omerfirmak/euclid-prover' into f…
jonastheis Mar 10, 2025
c9f6e8c
Merge remote-tracking branch 'origin/develop' into feat/use-codec-v6
jonastheis Mar 10, 2025
9b462e4
go mod tidy
jonastheis Mar 10, 2025
d57e6b0
chore: auto version bump [bot]
jonastheis Mar 10, 2025
4d677b3
address review comments
jonastheis Mar 10, 2025
90d1563
Merge remote-tracking branch 'origin/develop' into feat/use-codec-v6
jonastheis Mar 10, 2025
d987931
go mod tidy
jonastheis Mar 10, 2025
38b3239
chore: auto version bump [bot]
jonastheis Mar 10, 2025
e99a851
Merge branch 'feat/use-codec-v6' of github.com:scroll-tech/scroll int…
jonastheis Mar 10, 2025
bb6ee2c
Merge branch 'develop' into feat/use-codec-v6
jonastheis Mar 10, 2025
af38122
chore: auto version bump [bot]
jonastheis Mar 10, 2025
2cc9f65
chore: auto version bump [bot]
georgehao Mar 11, 2025
eacdc78
fix(bridge-history): overwrite l2geth dependency by replace (#1617)
colinlyguo Mar 11, 2025
7ec6d47
feat: openvm euclid v2
Mar 10, 2025
893bf18
update Cargo.lock
Mar 10, 2025
b3c1df7
revert a change
Mar 10, 2025
110083c
update rust version in CI
Mar 10, 2025
fcbaa67
update dependencies
Mar 11, 2025
2d40f0f
fix: chunk task deserialisation from prove request input (#1620)
roynalnaruto Mar 11, 2025
c743efd
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Mar 11, 2025
1ea9aca
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Mar 11, 2025
88da493
update prover client
Mar 11, 2025
b8c7ec2
fix: compilation
roynalnaruto Mar 11, 2025
f288179
dbg: add dbg logs for prover vks
roynalnaruto Mar 11, 2025
64368f9
dbg: proof types from req
roynalnaruto Mar 11, 2025
be88ef6
dbg: more println
roynalnaruto Mar 11, 2025
fe6451b
revert dbg commits
roynalnaruto Mar 11, 2025
bcc6b0f
add PrevMsgQueueHash in chunk task detail
Mar 12, 2025
5cf8cda
add logs
Mar 12, 2025
8db4e5c
update scroll-proving-sdk
Mar 12, 2025
a6ed321
update scroll-zkvm-prover v0.1.1-rc.2
kunxian-xia Mar 12, 2025
7486236
update scroll-proving-sdk
Mar 12, 2025
b984341
euclid & euclidv2 compatible logic
Mar 12, 2025
8cf087c
update scroll-proving-sdk
Mar 12, 2025
9996af6
Revert "revert dbg commits"
Mar 12, 2025
0e82c63
add back dbg logs
Mar 12, 2025
2846ecf
fix a compilatin error
Mar 12, 2025
ad2e94e
support euclidV2 in proof handling
Mar 12, 2025
0fc28cb
fix(coordinator): euclid v2 prover compatibility (#1625)
yiweichi Mar 12, 2025
ef9e25f
feat: add euclidv2 verifier
omerfirmak Mar 12, 2025
e3b17a0
add PostMsgQueueHash in chunk info
Mar 12, 2025
86e6555
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Mar 12, 2025
87e1235
fix
Mar 12, 2025
5f8bb53
update scroll-proving-sdk version (#1626)
yiweichi Mar 12, 2025
7d5b77a
Revert "feat: add euclidv2 verifier"
Mar 12, 2025
12a262a
align new types
Mar 12, 2025
5869bfd
load low version open vm circuit
Mar 12, 2025
7d4ff80
update type error
Mar 12, 2025
9f480e5
fix
Mar 12, 2025
459941d
use hexutil.Big
Mar 12, 2025
b4546af
remove load vks
Mar 12, 2025
3a3db5f
add logs
Mar 12, 2025
cb87c7a
another type fix
Mar 12, 2025
4822d38
fix
Mar 12, 2025
8befb84
fix
Mar 12, 2025
2d620dd
fix
Mar 12, 2025
bab0e4f
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Mar 13, 2025
135073c
Reapply "feat: add euclidv2 verifier"
Mar 13, 2025
77d6322
fix
Mar 13, 2025
cf41048
Update rc3 (#1629)
yiweichi Mar 13, 2025
11afeb1
update verifier
Mar 13, 2025
07d1621
update scroll-proving-sdk commit (#1630)
yiweichi Mar 13, 2025
60877d3
fix: reduce segment len in prover config (#1631)
roynalnaruto Mar 13, 2025
9b5c42e
tweak logs
Mar 14, 2025
ae212a9
fix logs
Mar 14, 2025
09790c4
fix: clap deprecated warnings
yiweichi Mar 14, 2025
0bb5314
fix: byte48 type required in prover (#1627)
noel2004 Mar 14, 2025
901693a
remove a log
Mar 14, 2025
3454c6c
update scroll-proving-sdk commit
yiweichi Mar 15, 2025
c6f0299
feat: euclid v2 GPU prover (#1623)
kunxian-xia Mar 17, 2025
4b21c79
update scroll-proving-sdk commit
yiweichi Mar 17, 2025
3ee2d2b
tweaks
Mar 17, 2025
e333288
merge message.LegacyChunkTaskDetail and message.EuclidV2ChunkTaskDetail
Mar 18, 2025
2fb27ce
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Mar 18, 2025
b3e4667
remove FIXME
Mar 18, 2025
ed05728
add back fixme
Mar 18, 2025
d0cb8b9
apply changes for sanity checks
Mar 19, 2025
77dceae
fix
Mar 19, 2025
b73acca
update scroll-proving-sdk commit
yiweichi Mar 20, 2025
1bec964
Adapt to rc11 (unified phase) (#1637)
noel2004 Mar 26, 2025
8994767
upgrade stark-gpu crate
kunxian-xia Mar 27, 2025
b59db73
hardcode openvm vks
Mar 27, 2025
5cfb8b6
change string to var
Mar 27, 2025
01d0e48
add more details in the log
Mar 27, 2025
78a458d
update logs
Mar 27, 2025
83c0a08
fix
Mar 27, 2025
42bfcb8
add euclid v1 and v2 to hard fork map
Mar 27, 2025
d82e109
update scroll-proving-sdk dep
Mar 27, 2025
2a8330c
fix
Mar 27, 2025
4c2a755
fix
Mar 27, 2025
2b318ec
add zero padding in BlobBytes
Mar 27, 2025
886af07
fix challenge digest
Mar 27, 2025
9033471
tmp comment out a Don't dispatch logic
Mar 27, 2025
9bb768e
fix
Mar 27, 2025
c484925
add back BlobBytes
Mar 27, 2025
917b143
Remove mask
Mar 27, 2025
8f4fc9a
uncomment some logic
Mar 28, 2025
1572680
update challenge digest and zkvm prover dep
Mar 28, 2025
d113865
upgrade stark-gpu crate
Velaciela Mar 28, 2025
0df9ede
temporarily mask challenge digest
Mar 31, 2025
4c4cff0
temporarily mask KzgProof
Mar 31, 2025
80af426
unmask cross-check fields and update scroll-proving-sdk deps
Mar 31, 2025
c65622b
Merge branch 'develop' into feat/openvm-euclid-v2
colinlyguo Apr 1, 2025
38af170
chore: auto version bump [bot]
colinlyguo Apr 1, 2025
f045984
update da-codec deps
Apr 1, 2025
dced0c6
bump minor version
Apr 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
856 changes: 365 additions & 491 deletions common/libzkp/impl/Cargo.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions common/libzkp/impl/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ ruint = { git = "https://github.com/scroll-tech/uint.git", branch = "v1.12.3" }
tiny-keccak = { git = "https://github.com/scroll-tech/tiny-keccak", branch = "scroll-patch-v2.0.2-openvm-v1.0.0-rc.1" }

[dependencies]
euclid_prover = { git = "https://github.com/scroll-tech/zkvm-prover.git", tag = "v0.1.0-rc.6", package = "scroll-zkvm-prover" }
euclid_verifier = { git = "https://github.com/scroll-tech/zkvm-prover.git", tag = "v0.1.0-rc.6", package = "scroll-zkvm-verifier" }
euclid_prover = { git = "https://github.com/scroll-tech/zkvm-prover.git", tag = "v0.2.0", package = "scroll-zkvm-prover" }
euclid_verifier = { git = "https://github.com/scroll-tech/zkvm-prover.git", tag = "v0.2.0", package = "scroll-zkvm-verifier" }

base64 = "0.13.0"
env_logger = "0.9.0"
Expand Down
14 changes: 13 additions & 1 deletion common/libzkp/impl/src/verifier.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#![allow(static_mut_refs)]

mod euclid;
mod euclidv2;

use anyhow::{bail, Result};
use euclid::EuclidVerifier;
use euclidv2::EuclidV2Verifier;
use serde::{Deserialize, Serialize};
use std::{cell::OnceCell, path::Path, rc::Rc};

Expand Down Expand Up @@ -51,7 +53,17 @@ pub fn init(config: VerifierConfig) {
unsafe {
VERIFIER_LOW
.set(VerifierPair(
config.high_version_circuit.fork_name,
"euclid".to_string(),
Rc::new(Box::new(verifier)),
))
.unwrap_unchecked();
}

let verifier = EuclidV2Verifier::new(&config.high_version_circuit.assets_path);
unsafe {
VERIFIER_HIGH
.set(VerifierPair(
"euclidV2".to_string(),
Rc::new(Box::new(verifier)),
))
.unwrap_unchecked();
Expand Down
6 changes: 3 additions & 3 deletions common/libzkp/impl/src/verifier/euclid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ use anyhow::Result;

use crate::utils::panic_catch;
use euclid_prover::{BatchProof, BundleProof, ChunkProof};
use euclid_verifier::verifier::{BatchVerifier, BundleVerifier, ChunkVerifier};
use euclid_verifier::verifier::{BatchVerifier, BundleVerifierEuclidV1, ChunkVerifier};
use std::{fs::File, path::Path};

pub struct EuclidVerifier {
chunk_verifier: ChunkVerifier,
batch_verifier: BatchVerifier,
bundle_verifier: BundleVerifier,
bundle_verifier: BundleVerifierEuclidV1,
}

impl EuclidVerifier {
Expand All @@ -24,7 +24,7 @@ impl EuclidVerifier {
.expect("Setting up chunk verifier"),
batch_verifier: BatchVerifier::setup(&config, &exe, &verifier_bin)
.expect("Setting up batch verifier"),
bundle_verifier: BundleVerifier::setup(&config, &exe, &verifier_bin)
bundle_verifier: BundleVerifierEuclidV1::setup(&config, &exe, &verifier_bin)
.expect("Setting up bundle verifier"),
}
}
Expand Down
65 changes: 65 additions & 0 deletions common/libzkp/impl/src/verifier/euclidv2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
use super::{ProofVerifier, TaskType, VKDump};

use anyhow::Result;

use crate::utils::panic_catch;
use euclid_prover::{BatchProof, BundleProof, ChunkProof};
use euclid_verifier::verifier::{BatchVerifier, BundleVerifierEuclidV2, ChunkVerifier};
use std::{fs::File, path::Path};

pub struct EuclidV2Verifier {
chunk_verifier: ChunkVerifier,
batch_verifier: BatchVerifier,
bundle_verifier: BundleVerifierEuclidV2,
}

impl EuclidV2Verifier {
pub fn new(assets_dir: &str) -> Self {
let verifier_bin = Path::new(assets_dir).join("verifier.bin");
let config = Path::new(assets_dir).join("root-verifier-vm-config");
let exe = Path::new(assets_dir).join("root-verifier-committed-exe");

Self {
chunk_verifier: ChunkVerifier::setup(&config, &exe, &verifier_bin)
.expect("Setting up chunk verifier"),
batch_verifier: BatchVerifier::setup(&config, &exe, &verifier_bin)
.expect("Setting up batch verifier"),
bundle_verifier: BundleVerifierEuclidV2::setup(&config, &exe, &verifier_bin)
.expect("Setting up bundle verifier"),
}
}
}

impl ProofVerifier for EuclidV2Verifier {
fn verify(&self, task_type: super::TaskType, proof: Vec<u8>) -> Result<bool> {
panic_catch(|| match task_type {
TaskType::Chunk => {
let proof = serde_json::from_slice::<ChunkProof>(proof.as_slice()).unwrap();
self.chunk_verifier
.verify_proof(proof.proof.as_root_proof().unwrap())
}
TaskType::Batch => {
let proof = serde_json::from_slice::<BatchProof>(proof.as_slice()).unwrap();
self.batch_verifier
.verify_proof(proof.proof.as_root_proof().unwrap())
}
TaskType::Bundle => {
let proof = serde_json::from_slice::<BundleProof>(proof.as_slice()).unwrap();
self.bundle_verifier
.verify_proof_evm(&proof.proof.as_evm_proof().unwrap())
}
})
.map_err(|err_str: String| anyhow::anyhow!(err_str))
}

fn dump_vk(&self, file: &Path) {
let f = File::create(file).expect("Failed to open file to dump VK");

let dump = VKDump {
chunk_vk: base64::encode(self.chunk_verifier.get_app_vk()),
batch_vk: base64::encode(self.batch_verifier.get_app_vk()),
bundle_vk: base64::encode(self.bundle_verifier.get_app_vk()),
};
serde_json::to_writer(f, &dump).expect("Failed to dump VK");
}
}
131 changes: 102 additions & 29 deletions common/types/message/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,18 @@ import (
"encoding/json"
"errors"
"fmt"
"math/big"

"github.com/scroll-tech/go-ethereum/common"
"github.com/scroll-tech/go-ethereum/common/hexutil"
)

const (
euclidFork = "euclid"
EuclidFork = "euclid"
EuclidV2Fork = "euclidV2"

EuclidForkNameForProver = "euclidv1"
EuclidV2ForkNameForProver = "euclidv2"
)

// ProofType represents the type of task.
Expand Down Expand Up @@ -39,38 +45,102 @@ const (
ProofTypeBundle
)

// ChunkTaskDetail is a type containing ChunkTask detail.
// ChunkTaskDetail is a type containing ChunkTask detail for chunk task.
type ChunkTaskDetail struct {
BlockHashes []common.Hash `json:"block_hashes"`
// use one of the string of EuclidFork / EuclidV2Fork
ForkName string `json:"fork_name"`
BlockHashes []common.Hash `json:"block_hashes"`
PrevMsgQueueHash common.Hash `json:"prev_msg_queue_hash"`
}

// it is a hex encoded big with fixed length on 48 bytes
type Byte48 struct {
hexutil.Big
}

func (e Byte48) MarshalText() ([]byte, error) {
i := e.ToInt()
// overrite encode big
if sign := i.Sign(); sign < 0 {
// sanity check
return nil, errors.New("Byte48 must be positive integer")
} else {
s := i.Text(16)
if len(s) > 96 {
return nil, errors.New("integer Exceed 384bit")
}
return []byte(fmt.Sprintf("0x%0*s", 96, s)), nil
}
}

func isString(input []byte) bool {
return len(input) >= 2 && input[0] == '"' && input[len(input)-1] == '"'
}

// hexutil.Big has limition of 256bit so we have to override it ...
func (e *Byte48) UnmarshalJSON(input []byte) error {
if !isString(input) {
return errors.New("not hex string")
}

b, err := hexutil.Decode(string(input[1 : len(input)-1]))
if err != nil {
return err
}
if len(b) != 48 {
return fmt.Errorf("not a 48 bytes hex string: %d", len(b))
}
var dec big.Int
dec.SetBytes(b)
*e = Byte48{(hexutil.Big)(dec)}
return nil
}

// BatchTaskDetail is a type containing BatchTask detail.
type BatchTaskDetail struct {
ChunkInfos []*ChunkInfo `json:"chunk_infos"`
ChunkProofs []ChunkProof `json:"chunk_proofs"`
BatchHeader interface{} `json:"batch_header"`
BlobBytes []byte `json:"blob_bytes"`
KzgProof []byte `json:"kzg_proof"`
KzgCommitment []byte `json:"kzg_commitment"`
Challenge common.Hash `json:"challenge"`
// use one of the string of EuclidFork / EuclidV2Fork
ForkName string `json:"fork_name"`
ChunkInfos []*ChunkInfo `json:"chunk_infos"`
ChunkProofs []ChunkProof `json:"chunk_proofs"`
BatchHeader interface{} `json:"batch_header"`
BlobBytes []byte `json:"blob_bytes"`
KzgProof Byte48 `json:"kzg_proof,omitempty"`
KzgCommitment Byte48 `json:"kzg_commitment,omitempty"`
ChallengeDigest common.Hash `json:"challenge_digest,omitempty"`
}

// BundleTaskDetail consists of all the information required to describe the task to generate a proof for a bundle of batches.
type BundleTaskDetail struct {
BatchProofs []BatchProof `json:"batch_proofs"`
// use one of the string of EuclidFork / EuclidV2Fork
ForkName string `json:"fork_name"`
BatchProofs []BatchProof `json:"batch_proofs"`
BundleInfo *OpenVMBundleInfo `json:"bundle_info,omitempty"`
}

// ChunkInfo is for calculating pi_hash for chunk
type ChunkInfo struct {
ChainID uint64 `json:"chain_id"`
PrevStateRoot common.Hash `json:"prev_state_root"`
PostStateRoot common.Hash `json:"post_state_root"`
WithdrawRoot common.Hash `json:"withdraw_root"`
DataHash common.Hash `json:"data_hash"`
IsPadding bool `json:"is_padding"`
TxBytes []byte `json:"tx_bytes"`
TxBytesHash common.Hash `json:"tx_data_digest"`
PrevMsgQueueHash common.Hash `json:"prev_msg_queue_hash"`
ChainID uint64 `json:"chain_id"`
PrevStateRoot common.Hash `json:"prev_state_root"`
PostStateRoot common.Hash `json:"post_state_root"`
WithdrawRoot common.Hash `json:"withdraw_root"`
DataHash common.Hash `json:"data_hash"`
IsPadding bool `json:"is_padding"`
TxBytes []byte `json:"tx_bytes"`
TxBytesHash common.Hash `json:"tx_data_digest"`
PrevMsgQueueHash common.Hash `json:"prev_msg_queue_hash"`
PostMsgQueueHash common.Hash `json:"post_msg_queue_hash"`
TxDataLength uint64 `json:"tx_data_length"`
InitialBlockNumber uint64 `json:"initial_block_number"`
BlockCtxs []BlockContextV2 `json:"block_ctxs"`
}

// BlockContextV2 is the block context for euclid v2
type BlockContextV2 struct {
Timestamp uint64 `json:"timestamp"`
BaseFee hexutil.Big `json:"base_fee"`
GasLimit uint64 `json:"gas_limit"`
NumTxs uint16 `json:"num_txs"`
NumL1Msgs uint16 `json:"num_l1_msgs"`
}

// SubCircuitRowUsage tracing info added in v0.11.0rc8
Expand All @@ -87,7 +157,7 @@ type ChunkProof interface {
// NewChunkProof creates a new ChunkProof instance.
func NewChunkProof(hardForkName string) ChunkProof {
switch hardForkName {
case euclidFork:
case EuclidFork, EuclidV2Fork:
return &OpenVMChunkProof{}
default:
return &Halo2ChunkProof{}
Expand Down Expand Up @@ -121,7 +191,7 @@ type BatchProof interface {
// NewBatchProof creates a new BatchProof instance.
func NewBatchProof(hardForkName string) BatchProof {
switch hardForkName {
case euclidFork:
case EuclidFork, EuclidV2Fork:
return &OpenVMBatchProof{}
default:
return &Halo2BatchProof{}
Expand Down Expand Up @@ -178,7 +248,7 @@ type BundleProof interface {
// NewBundleProof creates a new BundleProof instance.
func NewBundleProof(hardForkName string) BundleProof {
switch hardForkName {
case euclidFork:
case EuclidFork, EuclidV2Fork:
return &OpenVMBundleProof{}
default:
return &Halo2BundleProof{}
Expand Down Expand Up @@ -258,12 +328,14 @@ func (p *OpenVMChunkProof) Proof() []byte {

// OpenVMBatchInfo is for calculating pi_hash for batch header
type OpenVMBatchInfo struct {
ParentBatchHash common.Hash `json:"parent_batch_hash"`
ParentStateRoot common.Hash `json:"parent_state_root"`
StateRoot common.Hash `json:"state_root"`
WithdrawRoot common.Hash `json:"withdraw_root"`
BatchHash common.Hash `json:"batch_hash"`
ChainID uint64 `json:"chain_id"`
ParentBatchHash common.Hash `json:"parent_batch_hash"`
ParentStateRoot common.Hash `json:"parent_state_root"`
StateRoot common.Hash `json:"state_root"`
WithdrawRoot common.Hash `json:"withdraw_root"`
BatchHash common.Hash `json:"batch_hash"`
ChainID uint64 `json:"chain_id"`
PrevMsgQueueHash common.Hash `json:"prev_msg_queue_hash"`
PostMsgQueueHash common.Hash `json:"post_msg_queue_hash"`
}

// BatchProof includes the proof info that are required for batch verification and rollup.
Expand Down Expand Up @@ -323,6 +395,7 @@ type OpenVMBundleInfo struct {
NumBatches uint32 `json:"num_batches"`
PrevBatchHash common.Hash `json:"prev_batch_hash"`
BatchHash common.Hash `json:"batch_hash"`
MsgQueueHash common.Hash `json:"msg_queue_hash"`
}

// OpenVMBundleProof includes the proof info that are required for verification of a bundle of batch proofs.
Expand Down
22 changes: 22 additions & 0 deletions common/types/message/message_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package message

import (
"fmt"
"testing"
)

func TestBytes48(t *testing.T) {
ti := &Byte48{}
ti.UnmarshalText([]byte("0x1"))
if s, err := ti.MarshalText(); err == nil {
if len(s) != 98 {
panic(fmt.Sprintf("wrong str: %s", s))
}
}
ti.UnmarshalText([]byte("0x0"))
if s, err := ti.MarshalText(); err == nil {
if len(s) != 98 {
panic(fmt.Sprintf("wrong str: %s", s))
}
}
}
2 changes: 1 addition & 1 deletion common/version/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"runtime/debug"
)

var tag = "v4.4.99"
var tag = "v4.5.0"

var commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {
Expand Down
4 changes: 1 addition & 3 deletions coordinator/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,14 @@ module scroll-tech/coordinator

go 1.22

toolchain go1.22.2

require (
github.com/appleboy/gin-jwt/v2 v2.9.1
github.com/gin-gonic/gin v1.9.1
github.com/go-resty/resty/v2 v2.7.0
github.com/google/uuid v1.6.0
github.com/mitchellh/mapstructure v1.5.0
github.com/prometheus/client_golang v1.19.0
github.com/scroll-tech/da-codec v0.1.3-0.20250310095435-012aaee6b435
github.com/scroll-tech/da-codec v0.1.3-0.20250401062930-9f9f53898493
github.com/scroll-tech/go-ethereum v1.10.14-0.20250305151038-478940e79601
github.com/shopspring/decimal v1.3.1
github.com/stretchr/testify v1.10.0
Expand Down
4 changes: 2 additions & 2 deletions coordinator/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,8 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/scroll-tech/da-codec v0.1.3-0.20250310095435-012aaee6b435 h1:X9fkvjrYBY79lGgKEPpUhuiJ4vWpWwzOVw4H8CU8L54=
github.com/scroll-tech/da-codec v0.1.3-0.20250310095435-012aaee6b435/go.mod h1:yhTS9OVC0xQGhg7DN5iV5KZJvnSIlFWAxDdp+6jxQtY=
github.com/scroll-tech/da-codec v0.1.3-0.20250401062930-9f9f53898493 h1:Ioc01J0WEMxuwFvEPGJeBKXdf2KY4Yc3XbFky/IxLlI=
github.com/scroll-tech/da-codec v0.1.3-0.20250401062930-9f9f53898493/go.mod h1:yhTS9OVC0xQGhg7DN5iV5KZJvnSIlFWAxDdp+6jxQtY=
github.com/scroll-tech/go-ethereum v1.10.14-0.20250305151038-478940e79601 h1:NEsjCG6uSvLRBlsP3+x6PL1kM+Ojs3g8UGotIPgJSz8=
github.com/scroll-tech/go-ethereum v1.10.14-0.20250305151038-478940e79601/go.mod h1:OblWe1+QrZwdpwO0j/LY3BSGuKT3YPUFBDQQgvvfStQ=
github.com/scroll-tech/zktrie v0.8.4 h1:UagmnZ4Z3ITCk+aUq9NQZJNAwnWl4gSxsLb2Nl7IgRE=
Expand Down
Loading
Loading