diff --git a/build.rs b/build.rs index 9922d497..7fa75ddc 100644 --- a/build.rs +++ b/build.rs @@ -86,8 +86,8 @@ fn main() -> Result<()> { let toml = fs::read_to_string(FILE_HASHES_FILE)?; let mut doc: FileHashes = toml::from_str(&toml)?; - let assets_stock_name = format!("{NETWORK}-{LIB_ID_RGB}-{ASSETS_STOCK}"); - let assets_wallets_name = format!("{NETWORK}-{LIB_ID_RGB}-{ASSETS_WALLETS}"); + let assets_stock_name = format!("{LIB_ID_RGB}-{ASSETS_STOCK}"); + let assets_wallets_name = format!("{LIB_ID_RGB}-{ASSETS_WALLETS}"); let assets_stock_hash = blake3::hash(assets_stock_name.as_bytes()) .to_hex() @@ -97,11 +97,11 @@ fn main() -> Result<()> { .to_ascii_lowercase(); doc.ASSETS_STOCK - .entry(assets_stock_hash) + .entry(format!("{NETWORK}-{assets_stock_hash}.c15")) .or_insert(assets_stock_name); doc.ASSETS_WALLETS - .entry(assets_wallets_hash) + .entry(format!("{NETWORK}-{assets_wallets_hash}.c15")) .or_insert(assets_wallets_name); let toml = toml::to_string(&doc)?; diff --git a/file_hashes.toml b/file_hashes.toml index 9fe904a9..685ed620 100644 --- a/file_hashes.toml +++ b/file_hashes.toml @@ -1,5 +1,5 @@ [ASSETS_STOCK] -7e9bb3bc108f2c3a3dc459f44a394db9e4071f0d61de07ece77f6145304b7630 = "bitcoin-urn:ubideco:stl:4fGZWR5mH5zZzRZ1r7CSRe776zm3hLBUngfXc4s3vm3V#saturn-flash-emerald-bitmask-fungible_assets_stock.c15" +"bitcoin-4b1bc93ea7f03c49c4424b56561c9c7437e5f16e5714cece615a48e249264a84.c15" = "urn:ubideco:stl:4fGZWR5mH5zZzRZ1r7CSRe776zm3hLBUngfXc4s3vm3V#saturn-flash-emerald-bitmask-fungible_assets_stock.c15" [ASSETS_WALLETS] -09b66ce867c9b9bd8ced2a15b112a83c753be611319c06b764a445e2c490ea15 = "bitcoin-urn:ubideco:stl:4fGZWR5mH5zZzRZ1r7CSRe776zm3hLBUngfXc4s3vm3V#saturn-flash-emerald-bitmask-fungible_assets_wallets.c15" +"bitcoin-6075e9716c984b37840f76ad2b50b3d1b98ed286884e5ceba5bcc8e6b74988d3.c15" = "urn:ubideco:stl:4fGZWR5mH5zZzRZ1r7CSRe776zm3hLBUngfXc4s3vm3V#saturn-flash-emerald-bitmask-fungible_assets_wallets.c15" diff --git a/src/carbonado.rs b/src/carbonado.rs index 15779f9e..4824c2cd 100644 --- a/src/carbonado.rs +++ b/src/carbonado.rs @@ -41,10 +41,8 @@ pub async fn store( force_write = "/force"; } - let param = format!("{network}-{name}"); - let hash = blake3::hash(param.as_bytes()).to_hex().to_ascii_lowercase(); - - let url = format!("{endpoint}/{pk_hex}/{hash}{force_write}"); + let name = format!("{network}-{name}"); + let url = format!("{endpoint}/{pk_hex}/{name}{force_write}"); let client = reqwest::Client::new(); let response = client .post(&url) @@ -93,10 +91,8 @@ pub async fn store( let pk_hex = hex::encode(pk); let meta: Option<[u8; 8]> = metadata.map(|m| m.try_into().expect("invalid metadata size")); - let (body, _encode_info) = carbonado::file::encode(&sk, Some(&pk), input, level, meta)?; - let hash = blake3::hash(name.as_bytes()).to_hex().to_ascii_lowercase(); - let filepath = handle_file(&pk_hex, &hash, body.len()).await?; + let filepath = handle_file(&pk_hex, name, body.len()).await?; fs::write(filepath, body).await?; Ok(()) } @@ -111,8 +107,7 @@ pub async fn retrieve_metadata(sk: &str, name: &str) -> Result Result Result<(), Stor .to_strict_serialized::() .map_err(|op| StorageError::StrictWrite(name.to_string(), op.to_string()))?; + let hashed_name = blake3::hash(format!("{LIB_ID_RGB}-{name}").as_bytes()) + .to_hex() + .to_lowercase(); + store( sk, - &format!("{LIB_ID_RGB}-{name}"), + &format!("{hashed_name}.c15"), &data, false, Some(RGB_STRICT_TYPE_VERSION.to_vec()), @@ -43,9 +47,13 @@ pub async fn force_store_stock(sk: &str, name: &str, stock: &Stock) -> Result<() .to_strict_serialized::() .map_err(|op| StorageError::StrictWrite(name.to_string(), op.to_string()))?; + let hashed_name = blake3::hash(format!("{LIB_ID_RGB}-{name}").as_bytes()) + .to_hex() + .to_lowercase(); + store( sk, - &format!("{LIB_ID_RGB}-{name}"), + &hashed_name, &data, true, Some(RGB_STRICT_TYPE_VERSION.to_vec()), @@ -55,13 +63,13 @@ pub async fn force_store_stock(sk: &str, name: &str, stock: &Stock) -> Result<() } pub async fn retrieve_stock(sk: &str, name: &str) -> Result { - let (data, _) = retrieve( - sk, - &format!("{LIB_ID_RGB}-{name}"), - vec![&name.to_string(), &format!("{LIB_ID_RGB}-{name}")], - ) - .await - .map_err(|op| StorageError::CarbonadoRetrive(name.to_string(), op.to_string()))?; + let hashed_name = blake3::hash(format!("{LIB_ID_RGB}-{name}").as_bytes()) + .to_hex() + .to_lowercase(); + + let (data, _) = retrieve(sk, &format!("{hashed_name}.c15"), vec![]) + .await + .map_err(|op| StorageError::CarbonadoRetrive(name.to_string(), op.to_string()))?; if data.is_empty() { Ok(Stock::default()) @@ -83,9 +91,13 @@ pub async fn store_wallets( let data = to_allocvec(rgb_wallets) .map_err(|op| StorageError::StrictWrite(name.to_string(), op.to_string()))?; + let hashed_name = blake3::hash(format!("{LIB_ID_RGB}-{name}").as_bytes()) + .to_hex() + .to_lowercase(); + store( sk, - &format!("{LIB_ID_RGB}-{name}"), + &format!("{hashed_name}.c15"), &data, false, Some(RGB_STRICT_TYPE_VERSION.to_vec()), @@ -95,13 +107,13 @@ pub async fn store_wallets( } pub async fn retrieve_wallets(sk: &str, name: &str) -> Result { - let (data, _) = retrieve( - sk, - &format!("{LIB_ID_RGB}-{name}"), - vec![&name.to_string(), &format!("{LIB_ID_RGB}-{name}")], - ) - .await - .map_err(|op| StorageError::CarbonadoRetrive(name.to_string(), op.to_string()))?; + let hashed_name = blake3::hash(format!("{LIB_ID_RGB}-{name}").as_bytes()) + .to_hex() + .to_lowercase(); + + let (data, _) = retrieve(sk, &format!("{hashed_name}.c15"), vec![]) + .await + .map_err(|op| StorageError::CarbonadoRetrive(name.to_string(), op.to_string()))?; if data.is_empty() { Ok(RgbAccount::default())