Despliegue e instanciación de contratos en la cadena
Sólo los archivos wasm optimizados pueden almacenarse en la cadena. Si su proyecto local no tiene una carpeta de artifacts, o, si la carpeta de artifacts está vacía. Vuelva al paso anterior de la guía para obtener información sobre la producción de ejecutables optimizados CosmWasm.
Almacenamiento de contratos en la cadena
Puedes obtener tokens CONST gratuitos de la red de pruebas para cubrir las tasas de transacción en la red de pruebas de Constantine utilizando el faucet disponible en Discord. Para Mainnet tendrás que adquirir tokens ARCH.
Cuando esté listo para almacenar el ejecutable wasm en cadena, ejecute el siguiente comando a través de la CLI de desarrollador:
En el caso de usar archwayd, necesitas añadir el Code Id (que puedes ver mirando los datos de transacción de la tienda y establecer la dirección del admin. Puede comprobar esa información y la dirección del contrato en un blockexplorer).
Entonces, ¿por qué estamos enviando nuestro constructor como {"count":0} y cómo podemos verificar que es correcto?
Desde los archivos de tu proyecto abre src/contract.rs. Cerca de la parte superior, es la función pub fn instantiate, que funciona como un constructor y establece el estado inicial del contrato:
pub fn instantiate(
deps: DepsMut,
_env: Env,
info: MessageInfo,
msg: InstantiateMsg,
) -> Result<Response, ContractError> {
let state = State {
count: msg.count, // Here's our count declaration
owner: info.sender.clone(), // Contract owner is wallet that sent tx
};
STATE.save(deps.storage, &state)?; // Save the state
// More code...
}
Verá que el parámetro msg es de tipo InstantiateMsg que se define en el archivo src/msg.rs y contiene los valores que se pueden enviar en formato de objeto JSON:
...
pub struct InstantiateMsg {
pub count: i32,
}
En tu historial deberías ver que se han creado dos acciones:
la transacción de almacenamiento se produjo cuando el ejecutable wasm se cargó en la cadena
La transacción de instanciación, que crea una instancia del contrato con su propio estado.
El siguiente comando historizará las acciones de despliegue:
También puede acceder a estos datos históricos desde la carpeta ".archway", donde se almacena un archivo respectivo para cada cadena, que contiene los datos históricos. Para Archway testnet, por ejemplo, el archivo sería constantine-3.json.
Configuración del contrato desplegado
Ahora que la dapp está desplegada, se recomienda configurar sus metadatos. Esto te permitirá configurar el contrato inteligente para cobrar recompensas.
Para establecer los metadatos del contrato, utilice el comando:
archway contracts metadata increment2 --owner-address "archway12qj4v8jg5pxk6gsqct09sf9szhwql69xmf9fh4" --rewards-address="archway12qj4v8jg5pxk6gsqct09sf9szhwql69xmf9fh4"
✔ Enter the name or address of the account that will send the transaction … archway12qj4v8jg5pxk6gsqct09sf9szhwql69xmf9fh4
Setting metadata for contract increment2
Chain: constantine-3
Contract: archway1aj4u4qdfqdnenmj4zn99wc8qev09wseytg0xr8eerwk7v0uhsevsqjf6zl
Rewards: archway12qj4v8jg5pxk6gsqct09sf9szhwql69xmf9fh4
Owner: archway12qj4v8jg5pxk6gsqct09sf9szhwql69xmf9fh4
Signer: mywallet
✅ Metadata for the contract increment2-0.1.0 updated
Transaction: D7CBE945F9A464ACB6214FA7E710EB9A147983FE052D68A89FB97C0C5A50BE30
Fijar contratos premiun
Para establecer una prima de contrato, el contrato debe tener ya configurados los metadatos de recompensa. Utilice el siguiente comando para establecer el premiun: