From 7af030ab49809af257ff7ccfec64dceebf18b071 Mon Sep 17 00:00:00 2001 From: tbro Date: Thu, 22 Aug 2024 13:10:37 +0300 Subject: [PATCH] Update `v0_1::ChainConfig::from(v0_3::ChainConfig)` Update committable version in sequencer and use it to coerce a v3 Commitment into a v1 commitment. --- Cargo.lock | 6 +++--- types/src/v0/v0_3/chain_config.rs | 29 ++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb4f1055b..0be032f9d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1837,9 +1837,9 @@ dependencies = [ [[package]] name = "committable" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c989a517928da3346fce6f6f75794285420edc3ef42c995ced45519f065acd" +checksum = "05a8809c2761232ce27226ef1ca1bc78b480b558406895848f76ab8fce04076c" dependencies = [ "arbitrary", "ark-serialize", @@ -9214,7 +9214,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38d1e02fca405f6280643174a50c942219f0bbf4dbf7d480f1dd864d6f211ae5" dependencies = [ - "heck 0.5.0", + "heck 0.4.1", "proc-macro2", "quote", "syn 2.0.74", diff --git a/types/src/v0/v0_3/chain_config.rs b/types/src/v0/v0_3/chain_config.rs index 7fcfd7253..d96e86344 100644 --- a/types/src/v0/v0_3/chain_config.rs +++ b/types/src/v0/v0_3/chain_config.rs @@ -3,7 +3,6 @@ use committable::{Commitment, Committable}; use ethers::types::{Address, U256}; use itertools::Either; use serde::{Deserialize, Serialize}; -use std::str::FromStr; /// Global variables for an Espresso blockchain. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -110,9 +109,8 @@ impl From<&v0_1::ResolvableChainConfig> for ResolvableChainConfig { Either::Left(chain_config) => ResolvableChainConfig { chain_config: Either::Left(ChainConfig::from(chain_config)), }, - // TODO does this work? is there a better way? Either::Right(c) => ResolvableChainConfig { - chain_config: Either::Right(Commitment::from_str(&c.to_string()).unwrap()), + chain_config: Either::Right(Commitment::from_raw(*c.as_ref())), }, } } @@ -173,3 +171,28 @@ impl Default for ChainConfig { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_upgrade_chain_config_v3_resolvable_chain_config_from_v1() { + let expectation: ResolvableChainConfig = ChainConfig::default().into(); + let v1_resolvable: v0_1::ResolvableChainConfig = v0_1::ChainConfig::default().into(); + let v3_resolvable: ResolvableChainConfig = ResolvableChainConfig::from(&v1_resolvable); + assert_eq!(expectation, v3_resolvable); + let expectation: ResolvableChainConfig = ChainConfig::default().commit().into(); + let v1_resolvable: v0_1::ResolvableChainConfig = + v0_1::ChainConfig::default().commit().into(); + let v3_resolvable: ResolvableChainConfig = ResolvableChainConfig::from(&v1_resolvable); + assert_eq!(expectation, v3_resolvable); + } + #[test] + fn test_upgrade_chain_config_v1_chain_config_from_v3() { + let expectation = v0_1::ChainConfig::default(); + let v3_chain_config = ChainConfig::default(); + let v1_chain_config = v0_1::ChainConfig::from(v3_chain_config); + assert_eq!(expectation, v1_chain_config); + } +}