Compare commits

...

6 Commits

Author SHA1 Message Date
Ho
64522fbcf5 bump version 2025-09-04 08:54:10 +09:00
Ho
aaf4da3999 upgrade mock prover version to skip compability fixing 2025-09-03 22:38:32 +09:00
Ho
39c55b5f55 fix 2025-09-03 22:07:12 +09:00
Ho
1a634cdae0 compatibility fixing 2025-09-03 16:17:37 +09:00
Ho
9ab27fb39b induce fixing entry 2025-09-03 16:03:50 +09:00
Ho
72d3740643 update dep 2025-09-03 14:27:03 +09:00
12 changed files with 127 additions and 19 deletions

14
Cargo.lock generated
View File

@@ -8395,7 +8395,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-prover"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"base64 0.22.1",
@@ -8433,7 +8433,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"base64 0.22.1",
"bincode",
@@ -8455,7 +8455,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-base"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"alloy-serde 1.0.16",
@@ -8470,7 +8470,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-batch"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"halo2curves-axiom",
@@ -8490,7 +8490,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-bundle"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"itertools 0.14.0",
@@ -8503,7 +8503,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-chunk"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"itertools 0.14.0",
@@ -8523,7 +8523,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-verifier"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"bincode",
"eyre",

View File

@@ -17,9 +17,9 @@ repository = "https://github.com/scroll-tech/scroll"
version = "4.5.8"
[workspace.dependencies]
scroll-zkvm-prover = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "ad0efe7" }
scroll-zkvm-verifier = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "ad0efe7" }
scroll-zkvm-types = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "ad0efe7" }
scroll-zkvm-prover = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "07ecd62" }
scroll-zkvm-verifier = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "07ecd62" }
scroll-zkvm-types = { git = "https://github.com/scroll-tech/zkvm-prover", rev = "07ecd62" }
sbv-primitives = { git = "https://github.com/scroll-tech/stateless-block-verifier", branch = "chore/openvm-1.3", features = ["scroll"] }
sbv-utils = { git = "https://github.com/scroll-tech/stateless-block-verifier", branch = "chore/openvm-1.3" }

View File

@@ -5,7 +5,7 @@ import (
"runtime/debug"
)
var tag = "v4.5.45"
var tag = "v4.5.46"
var commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {

View File

@@ -140,3 +140,20 @@ func DumpVk(forkName, filePath string) error {
return nil
}
// UnivTaskCompatibilityFix calls the universal task compatibility fix function
func UnivTaskCompatibilityFix(taskJSON string) (string, error) {
cTaskJSON := goToCString(taskJSON)
defer freeCString(cTaskJSON)
resultPtr := C.univ_task_compatibility_fix(cTaskJSON)
if resultPtr == nil {
return "", fmt.Errorf("univ_task_compatibility_fix failed")
}
// Convert result to Go string and free C memory
result := C.GoString(resultPtr)
C.release_string(resultPtr)
return result, nil
}

View File

@@ -54,4 +54,7 @@ char* gen_wrapped_proof(char* proof_json, char* metadata, char* vk, size_t vk_le
// Release memory allocated for a string returned by gen_wrapped_proof
void release_string(char* string_ptr);
// Universal task compatibility fix function
char* univ_task_compatibility_fix(char* task_json);
#endif /* LIBZKP_H */

View File

@@ -213,6 +213,14 @@ func (bp *BatchProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinato
return nil, ErrCoordinatorInternalFailure
}
proverTask.Metadata = metadata
if isCompatibilityFixingVersion(taskCtx.ProverVersion) {
log.Info("Apply compatibility fixing for prover", "version", taskCtx.ProverVersion)
if err := fixCompatibility(taskMsg); err != nil {
log.Error("apply compatibility failure", "err", err)
return nil, ErrCoordinatorInternalFailure
}
}
}
// Store session info.

View File

@@ -211,6 +211,14 @@ func (bp *BundleProverTask) Assign(ctx *gin.Context, getTaskParameter *coordinat
// bundle proof require snark
taskMsg.UseSnark = true
proverTask.Metadata = metadata
if isCompatibilityFixingVersion(taskCtx.ProverVersion) {
log.Info("Apply compatibility fixing for prover", "version", taskCtx.ProverVersion)
if err := fixCompatibility(taskMsg); err != nil {
log.Error("apply compatibility failure", "err", err)
return nil, ErrCoordinatorInternalFailure
}
}
}
// Store session info.

View File

@@ -14,6 +14,7 @@ import (
"gorm.io/gorm"
"scroll-tech/common/types/message"
"scroll-tech/common/version"
"scroll-tech/coordinator/internal/config"
"scroll-tech/coordinator/internal/logic/libzkp"
@@ -201,6 +202,23 @@ func (b *BaseProverTask) applyUniversal(schema *coordinatorType.GetTaskSchema) (
return schema, []byte(metadata), nil
}
const CompatibilityVersion = "4.5.43"
func isCompatibilityFixingVersion(ver string) bool {
return !version.CheckScrollRepoVersion(ver, CompatibilityVersion)
}
func fixCompatibility(schema *coordinatorType.GetTaskSchema) error {
fixedTask, err := libzkp.UnivTaskCompatibilityFix(schema.TaskData)
if err != nil {
return err
}
schema.TaskData = fixedTask
return nil
}
func newGetTaskCounterVec(factory promauto.Factory, taskType string) *prometheus.CounterVec {
getTaskCounterInitOnce.Do(func() {
getTaskCounterVec = factory.NewCounterVec(prometheus.CounterOpts{

View File

@@ -132,7 +132,7 @@ func setupCoordinator(t *testing.T, proversPerSession uint8, coordinatorURL stri
func setEnv(t *testing.T) {
var err error
version.Version = "v4.4.89"
version.Version = "v4.5.45"
glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.LogfmtFormat()))
glogger.Verbosity(log.LvlInfo)

View File

@@ -8692,7 +8692,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-prover"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"base64 0.22.1",
@@ -8730,7 +8730,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"base64 0.22.1",
"bincode",
@@ -8752,7 +8752,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-base"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"alloy-serde 1.0.16",
@@ -8767,7 +8767,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-batch"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"halo2curves-axiom",
@@ -8787,7 +8787,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-bundle"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"itertools 0.14.0",
@@ -8800,7 +8800,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-types-chunk"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"alloy-primitives",
"itertools 0.14.0",
@@ -8820,7 +8820,7 @@ dependencies = [
[[package]]
name = "scroll-zkvm-verifier"
version = "0.5.0"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=ad0efe7#ad0efe750d5f03781f28037c312e50400ac22a8d"
source = "git+https://github.com/scroll-tech/zkvm-prover?rev=07ecd62#07ecd629d3dc0c0d78fdea8972cd710fd5f606d2"
dependencies = [
"bincode",
"eyre",

View File

@@ -25,6 +25,47 @@ pub fn checkout_chunk_task(
Ok(ret)
}
/// Convert the universal task json into compatible form for old prover
pub fn univ_task_compatibility_fix(task_json: &str) -> eyre::Result<String> {
use scroll_zkvm_types::proof::VmInternalStarkProof;
let u_task: tasks::ProvingTask = serde_json::from_str(task_json)?;
let aggregated_proofs: Vec<VmInternalStarkProof> = u_task
.aggregated_proofs
.into_iter()
.map(|proof| VmInternalStarkProof {
proofs: proof.proofs,
public_values: proof.public_values,
})
.collect();
#[derive(Serialize)]
struct CompatibleProvingTask {
/// seralized witness which should be written into stdin first
pub serialized_witness: Vec<Vec<u8>>,
/// aggregated proof carried by babybear fields, should be written into stdin
/// followed `serialized_witness`
pub aggregated_proofs: Vec<VmInternalStarkProof>,
/// Fork name specify
pub fork_name: String,
/// The vk of app which is expcted to prove this task
pub vk: Vec<u8>,
/// An identifier assigned by coordinator, it should be kept identify for the
/// same task (for example, using chunk, batch and bundle hashes)
pub identifier: String,
}
let compatible_u_task = CompatibleProvingTask {
serialized_witness: u_task.serialized_witness,
aggregated_proofs,
fork_name: u_task.fork_name,
vk: u_task.vk,
identifier: u_task.identifier,
};
Ok(serde_json::to_string(&compatible_u_task)?)
}
/// Generate required staff for proving tasks
/// return (pi_hash, metadata, task)
pub fn gen_universal_task(

View File

@@ -248,6 +248,19 @@ pub unsafe extern "C" fn gen_wrapped_proof(
}
}
/// # Safety
#[no_mangle]
pub unsafe extern "C" fn univ_task_compatibility_fix(task_json: *const c_char) -> *mut c_char {
let task_json_str = c_char_to_str(task_json);
match libzkp::univ_task_compatibility_fix(task_json_str) {
Ok(result) => CString::new(result).unwrap().into_raw(),
Err(e) => {
tracing::error!("univ_task_compability_fix failed, error: {:#}", e);
std::ptr::null_mut()
}
}
}
/// # Safety
#[no_mangle]
pub unsafe extern "C" fn release_string(ptr: *mut c_char) {