Add Mints
Trust model
Adding a mint to the CDK MultiMintWallet
implies the user trusts this mint enough to hold a cashu balance on it. Adding a mint should therefore need explicit user confirmation in the UI.
async fn add_mint(multi_mint_wallet: &MultiMintWallet, mint_url_str: &str) -> Result<()> {
let mint_url = MintUrl::from_str(mint_url_str)?;
let client = HttpClient::new(mint_url.clone(), None);
let mint_info = client.get_mint_info().await?;
multi_mint_wallet
.localstore
.add_mint(mint_url.clone(), Some(mint_info))
.await?;
// TODO Show mint info to user, get confirmation
let keys = client.get_mint_keys().await?;
let units: Vec<CurrencyUnit> = keys.into_iter().map(|ks| ks.unit).collect();
for unit in units {
let wallet_key = WalletKey::new(mint_url.clone(), unit.clone());
if !multi_mint_wallet.has(&wallet_key).await {
multi_mint_wallet
.create_and_add_wallet(mint_url_str, unit, None)
.await?;
}
}
Ok(())
}
The MintInfo
is described in NUT-06.