feat: Migrer de zstd vers flate2 pour la compatibilité WASM
This commit is contained in:
parent
e98c5e7073
commit
694bc71714
@ -21,7 +21,7 @@ rand = "0.8.5"
|
||||
serde = { version = "1.0.193", features = ["derive"] }
|
||||
serde_json = { version = "1.0.108" }
|
||||
rs_merkle = "1.4.2"
|
||||
zstd = "0.13.3"
|
||||
flate2 = { version = "1.0", features = ["miniz_oxide"] }
|
||||
getrandom = { version = "0.2", features = ["js"] }
|
||||
sp-client = { git = "https://github.com/Sosthene00/sp-client.git", branch = "dev", default-features = false }
|
||||
backend-blindbit-native = { git = "https://github.com/Sosthene00/sp-client.git", branch = "dev", optional = true }
|
||||
|
@ -11,7 +11,7 @@ pub use serde_json;
|
||||
pub use sp_client;
|
||||
pub use tsify;
|
||||
pub use wasm_bindgen;
|
||||
pub use zstd;
|
||||
pub use flate2;
|
||||
|
||||
#[cfg(feature = "blindbit-wasm")]
|
||||
pub use js_sys;
|
||||
|
15
src/pcd.rs
15
src/pcd.rs
@ -14,6 +14,8 @@ use sp_client::{
|
||||
silentpayments::SilentPaymentAddress,
|
||||
};
|
||||
use tsify::Tsify;
|
||||
use flate2::write::{DeflateEncoder, DeflateDecoder};
|
||||
use flate2::Compression;
|
||||
|
||||
use crate::hash::AnkPcdHash;
|
||||
use crate::serialization::OutPointMemberMap;
|
||||
@ -24,7 +26,6 @@ use crate::{
|
||||
};
|
||||
|
||||
pub const PCD_VERSION: u8 = 1;
|
||||
pub(crate) const ZSTD_COMPRESSION_LEVEL: i32 = zstd::DEFAULT_COMPRESSION_LEVEL;
|
||||
|
||||
pub trait PcdSerializable {
|
||||
fn serialize_to_pcd(&self) -> Result<Vec<u8>>;
|
||||
@ -36,7 +37,7 @@ pub trait PcdSerializable {
|
||||
impl PcdSerializable for serde_json::Value {
|
||||
fn serialize_to_pcd(&self) -> Result<Vec<u8>> {
|
||||
let mut compressed = Vec::new();
|
||||
let mut encoder = zstd::stream::Encoder::new(&mut compressed, ZSTD_COMPRESSION_LEVEL)?;
|
||||
let mut encoder = DeflateEncoder::new(&mut compressed, Compression::default());
|
||||
|
||||
encoder.write_all(&[PCD_VERSION])?;
|
||||
encoder.write_all(&[DataType::Json as u8])?;
|
||||
@ -48,7 +49,9 @@ impl PcdSerializable for serde_json::Value {
|
||||
|
||||
fn deserialize_from_pcd(data: &[u8]) -> Result<Self> {
|
||||
let mut decompressed = Vec::new();
|
||||
zstd::stream::copy_decode(data, &mut decompressed)?;
|
||||
let mut decoder = DeflateDecoder::new(&mut decompressed);
|
||||
decoder.write_all(data)?;
|
||||
let decompressed = decoder.finish()?;
|
||||
|
||||
if decompressed.len() < 3 {
|
||||
return Err(Error::msg("Invalid data: too short"));
|
||||
@ -71,7 +74,7 @@ impl PcdSerializable for serde_json::Value {
|
||||
impl PcdSerializable for FileBlob {
|
||||
fn serialize_to_pcd(&self) -> Result<Vec<u8>> {
|
||||
let mut compressed = Vec::new();
|
||||
let mut encoder = zstd::stream::Encoder::new(&mut compressed, ZSTD_COMPRESSION_LEVEL)?;
|
||||
let mut encoder = DeflateEncoder::new(&mut compressed, Compression::default());
|
||||
|
||||
encoder.write_all(&[PCD_VERSION])?;
|
||||
encoder.write_all(&[DataType::FileBlob as u8])?;
|
||||
@ -87,7 +90,9 @@ impl PcdSerializable for FileBlob {
|
||||
|
||||
fn deserialize_from_pcd(data: &[u8]) -> Result<Self> {
|
||||
let mut decompressed = Vec::new();
|
||||
zstd::stream::copy_decode(data, &mut decompressed)?;
|
||||
let mut decoder = DeflateDecoder::new(&mut decompressed);
|
||||
decoder.write_all(data)?;
|
||||
let decompressed = decoder.finish()?;
|
||||
|
||||
if decompressed.len() < 4 {
|
||||
return Err(Error::msg("Invalid data: too short"));
|
||||
|
@ -2,6 +2,7 @@ use anyhow::Result;
|
||||
use std::collections::{BTreeMap, HashMap, HashSet};
|
||||
use std::str::FromStr;
|
||||
use std::sync::{Mutex, MutexGuard, OnceLock};
|
||||
use std::io::Write;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sp_client::{
|
||||
@ -698,7 +699,7 @@ mod tests {
|
||||
SpClient, SpendKey,
|
||||
};
|
||||
|
||||
use crate::pcd::{Member, ValidationRule, ZSTD_COMPRESSION_LEVEL};
|
||||
use crate::pcd::{Member, ValidationRule};
|
||||
|
||||
use super::*;
|
||||
|
||||
@ -1362,8 +1363,9 @@ mod tests {
|
||||
&Value::String("new_value1".to_owned()),
|
||||
)
|
||||
.unwrap();
|
||||
let updated_value =
|
||||
zstd::encode_all(serialized_value.as_slice(), ZSTD_COMPRESSION_LEVEL).unwrap();
|
||||
let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
|
||||
encoder.write_all(serialized_value.as_slice()).unwrap();
|
||||
let updated_value = encoder.finish().unwrap();
|
||||
new_state
|
||||
.update_value(key_to_modify.as_str(), updated_value.as_slice())
|
||||
.unwrap();
|
||||
@ -1396,8 +1398,9 @@ mod tests {
|
||||
&Value::String("new_value1".to_owned()),
|
||||
)
|
||||
.unwrap();
|
||||
let updated_value =
|
||||
zstd::encode_all(serialized_value.as_slice(), ZSTD_COMPRESSION_LEVEL).unwrap();
|
||||
let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
|
||||
encoder.write_all(serialized_value.as_slice()).unwrap();
|
||||
let updated_value = encoder.finish().unwrap();
|
||||
new_state
|
||||
.update_value(key_to_modify.as_str(), updated_value.as_slice())
|
||||
.unwrap();
|
||||
|
Loading…
x
Reference in New Issue
Block a user