diff --git a/Cargo.lock b/Cargo.lock index 4f7b582f..abf9c8e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4839,6 +4839,7 @@ dependencies = [ "prism-keys", "prism-lightclient", "prism-prover", + "prism-serde", "prism-storage", "serde", "sp1-sdk", diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 80cce67b..2911609a 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -33,3 +33,4 @@ prism-prover = { workspace = true } prism-lightclient = { workspace = true } prism-da = { workspace = true } prism-keys = { workspace = true } +prism-serde = { workspace = true } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index c820b7f3..ec2e19d9 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -11,6 +11,7 @@ use std::io::{Error, ErrorKind}; use node_types::NodeType; use prism_lightclient::LightClient; use prism_prover::Prover; +use prism_serde::base64::{FromBase64, ToBase64}; use prism_storage::RedisConnection; use std::{str::FromStr, sync::Arc}; @@ -36,18 +37,18 @@ async fn main() -> std::io::Result<()> { Error::new(ErrorKind::NotFound, "celestia configuration not found") })?; - let verifying_key_algorithm = + let _verifying_key_algorithm = CryptoAlgorithm::from_str(&config.verifying_key_algorithm).map_err(|_| { Error::new( ErrorKind::InvalidInput, "invalid verifying key algorithm format", ) })?; - let prover_vk = VerifyingKey::from_algorithm_and_bytes( - verifying_key_algorithm, - config.verifying_key.unwrap().as_bytes(), - ) - .map_err(|e| Error::new(ErrorKind::InvalidInput, e.to_string()))?; + let verifying_key_base64 = config + .verifying_key + .ok_or_else(|| Error::new(ErrorKind::InvalidInput, "verifying key not found"))?; + let prover_vk = VerifyingKey::from_base64(verifying_key_base64) + .map_err(|e: anyhow::Error| Error::new(ErrorKind::InvalidInput, e.to_string()))?; let client = ProverClient::mock(); let (_, vk) = client.setup(PRISM_ELF); @@ -97,6 +98,8 @@ async fn main() -> std::io::Result<()> { })?; let verifying_key = signing_key.verifying_key(); + info!("verifying key: {}", verifying_key.to_base64()); + let prover_cfg = prism_prover::Config { prover: true, batcher: true, @@ -152,13 +155,11 @@ async fn main() -> std::io::Result<()> { ) })?; - let prover_vk = config + let verifying_key_base64 = config .verifying_key - .ok_or_else(|| Error::new(ErrorKind::NotFound, "prover verifying key not found")) - .and_then(|vk| { - VerifyingKey::from_algorithm_and_bytes(verifying_key_algorithm, vk.as_bytes()) - .map_err(|e| Error::new(ErrorKind::InvalidInput, e.to_string())) - })?; + .ok_or_else(|| Error::new(ErrorKind::InvalidInput, "verifying key not found"))?; + let prover_vk = VerifyingKey::from_base64(verifying_key_base64) + .map_err(|e: anyhow::Error| Error::new(ErrorKind::InvalidInput, e.to_string()))?; let prover_cfg = prism_prover::Config { prover: false, diff --git a/crates/keys/src/verifying_keys.rs b/crates/keys/src/verifying_keys.rs index f4a18a2a..ad85e8c3 100644 --- a/crates/keys/src/verifying_keys.rs +++ b/crates/keys/src/verifying_keys.rs @@ -250,6 +250,12 @@ impl TryFrom for VerifyingKey { } } +impl ToBase64 for VerifyingKey { + fn to_base64(&self) -> String { + self.to_bytes().to_base64() + } +} + impl std::fmt::Display for VerifyingKey { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { let encoded = self.to_bytes().to_base64(); diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf index 2810f00d..c0b7d056 100755 Binary files a/elf/riscv32im-succinct-zkvm-elf and b/elf/riscv32im-succinct-zkvm-elf differ