CW20 Adapter
Background
Messages
RegisterCw20Contract { addr: Addr }
RegisterCw20Contract { addr: Addr }ExecuteMsg::RegisterCw20Contract { addr } => execute_register::handle_register_msg(deps, env, info, addr)
pub fn handle_register_msg(
deps: DepsMut<InjectiveQueryWrapper>,
env: Env,
info: MessageInfo,
addr: Addr,
) -> Result<Response<InjectiveMsgWrapper>, ContractError> {
if is_contract_registered(&deps, &addr) {
return Err(ContractError::ContractAlreadyRegistered);
}
let required_funds = query_denom_creation_fee(&deps.querier)?;
if info.funds.len() > required_funds.len() {
return Err(ContractError::SuperfluousFundsProvided);
}
let mut provided_funds = info.funds.iter();
for required_coin in &required_funds {
let pf = provided_funds
.find(|c| -> bool { c.denom == required_coin.denom })
.ok_or(ContractError::NotEnoughBalanceToPayDenomCreationFee)?;
match pf.amount.cmp(&required_coin.amount) {
Ordering::Greater => return Err(ContractError::SuperfluousFundsProvided),
Ordering::Less => return Err(ContractError::NotEnoughBalanceToPayDenomCreationFee),
Ordering::Equal => {}
}
}
let create_denom_msg = register_contract_and_get_message(deps, &env, &addr)?;
Ok(Response::new().add_message(create_denom_msg))
}Receive { sender: String, amount: Uint128, msg: Binary }
Receive { sender: String, amount: Uint128, msg: Binary }RedeemAndTransfer { recipient: Option<String> }
RedeemAndTransfer { recipient: Option<String> }RedeemAndSend { recipient: String, submessage: Binary }
RedeemAndSend { recipient: String, submessage: Binary }UpdateMetadata { addr : Addr}
UpdateMetadata { addr : Addr}Last updated
