vectis-wallet 1.0.0-rc2

Vectis library for common messages, states and functions
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::types::error::Inst2CalcError;
use cosmwasm_std::{instantiate2_address, Addr, Binary, CodeInfoResponse, Deps, Env};

pub fn calc_instantiate2_addr_from_contract(
    deps: Deps,
    env: &Env,
    code_id: u64,
    salt: &Binary,
) -> Result<Addr, Inst2CalcError> {
    let creator = deps.api.addr_canonicalize(env.contract.address.as_str())?;

    let CodeInfoResponse { checksum, .. } = deps.querier.query_wasm_code_info(code_id)?;

    Ok(deps
        .api
        .addr_humanize(&instantiate2_address(&checksum, &creator, salt)?)?)
}