Skip to content

Commit

Permalink
Add file hash computation to build script.
Browse files Browse the repository at this point in the history
  • Loading branch information
cryptoquick committed Jul 24, 2023
1 parent 2a4b421 commit da45680
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 2 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ wasm-bindgen-test = "0.3.36"

[build-dependencies]
anyhow = "1.0.71"
blake3 = "1.4.1"
rgb-std = { version = "0.10.2" }
serde = "1.0.164"
toml = { version = "0.7.5", features = ["preserve_order"] }
Expand Down
41 changes: 41 additions & 0 deletions build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,22 @@ const LIB_ID_RGB_CONTRACT_COMMENT: &str =
const LIB_ID_RGB_STD_COMMENT: &str =
"[LIB_ID_RGB_STD]\n# Not consensus-breaking: If changed, only stash and consignments must be updated. No reiussance or migration necessary.";

type HashNameMap = BTreeMap<String, String>;

#[allow(non_snake_case)]
#[derive(Deserialize, Serialize)]
struct FileHashes {
ASSETS_STOCK: HashNameMap,
ASSETS_WALLETS: HashNameMap,
}

const FILE_HASHES_FILE: &str = "file_hashes.toml";
const ASSETS_STOCK: &str = "bitmask-fungible_assets_stock.c15";
const ASSETS_WALLETS: &str = "bitmask-fungible_assets_wallets.c15";
const NETWORK: &str = "bitcoin"; // Only mainnet is tracked, no monetary incentive to upgrade testnet assets

fn main() -> Result<()> {
// lib ids
const BMC_VERSION: &str = env!("CARGO_PKG_VERSION");

let toml = fs::read_to_string(LIB_IDS_FILE)?;
Expand Down Expand Up @@ -67,5 +82,31 @@ fn main() -> Result<()> {

fs::write(LIB_IDS_FILE, format!("{FILE_COMMENT}{toml}"))?;

// file hashes
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_hash = blake3::hash(assets_stock_name.as_bytes())
.to_hex()
.to_ascii_lowercase();
let assets_wallets_hash = blake3::hash(assets_wallets_name.as_bytes())
.to_hex()
.to_ascii_lowercase();

doc.ASSETS_STOCK
.entry(assets_stock_hash)
.or_insert(assets_stock_name);

doc.ASSETS_WALLETS
.entry(assets_wallets_hash)
.or_insert(assets_wallets_name);

let toml = toml::to_string(&doc)?;

fs::write(FILE_HASHES_FILE, toml)?;

Ok(())
}
5 changes: 5 additions & 0 deletions file_hashes.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[ASSETS_STOCK]
7e9bb3bc108f2c3a3dc459f44a394db9e4071f0d61de07ece77f6145304b7630 = "bitcoin-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"
4 changes: 2 additions & 2 deletions src/carbonado.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,9 @@ pub async fn retrieve_metadata(sk: &str, name: &str) -> Result<FileMetadata, Car

let endpoint = CARBONADO_ENDPOINT.read().await.to_string();
let network = NETWORK.read().await.to_string();
let name = format!("{network}-{name}/metadata");
let name = format!("{network}-{name}");
let hash = blake3::hash(name.as_bytes()).to_hex().to_ascii_lowercase();
let url = format!("{endpoint}/{pk}/{hash}");
let url = format!("{endpoint}/{pk}/{hash}/metadata");
let client = reqwest::Client::new();
let response = client
.get(&url)
Expand Down

0 comments on commit da45680

Please sign in to comment.