Crear una instancia de un contrato CosmWasm

Esta sección describe el proceso de creación de instancias de un contrato inteligente, mostrando la estructura InstantiateMsg pasada durante la creación del contrato y la función Instantiate que se ejecuta tras la ejecución del contrato.

Explicación

InstanciarMsg

InstantiateMsg es el mensaje de inicialización y trata con el variables proporcionadas cuando se crea una instancia del contrato.

Esta función se puede encontrar en msg.rs.

/// Variables for contract instantiation.
/// Exclude variables susceptible to replay attacks or secret data.
pub struct InstantiateMsg {
    pub sent_message: String,
}

Info

Asegúrese de que no se incorporen datos confidenciales propensos a ataques de repetición.

Crear una instancia

Al crear el contrato, la función de creación de instancias establece el estado inicial del contrato inteligente, realiza las comprobaciones necesarias y puede funcionar de forma similar a un mensaje de ejecución.

Esta función se puede encontrar en contract.rs

pub fn instantiate(
    deps: DepsMut,
    _env: Env,
    _info: MessageInfo,
    msg: InstantiateMsg,
) -> Result<Response, ContractError> {
    // Initialize contract's state.
    let state = State {
        global_var: msg.sent_message,
    };
    // Save state to the blockchain.
    STATE.save(deps.storage, &state)?;
    Ok(Response::new().add_attribute("instantiated", "true"))
}

Ejemplo

Para crear instancias de contratos con CosmWasm, puede crear los siguientes archivos: lib.rs contract.rs msg.rs error.rs state.rs helpers.rs

lib.rs

contract.rs

msg.rs

error.rs

state.rs

helpers.rs

Last updated