Elaborar un contrato

En esta sección, descargaremos el código de un contrato de ejemplo y lo compilaremos en un ejecutable binario wasm.

Pre requisitos

Consulte la guía Configuración del entorno para instalar las dependencias necesarias antes de continuar.

Descargar el contrato

Comience descargando el repositorio cw-contracts. Compilarás el contrato de servicio de nombres.

Clonar el repositorio:

git clone https://github.com/InterWasm/cw-contracts
cd cw-contracts
git checkout main
cd contracts/nameservice

Compile el contrato

Compile usando cargo

Ejecute el siguiente comando para compilar el contrato:

cargo wasm

Tras la compilación, debería generarse el fichero target/wasm32-unknown-unknown/release/cw_nameservice.wasm. El tamaño del archivo es de aproximadamente 1,9 MB, lo que indica que se trata de una compilación de lanzamiento pero que aún no se ha eliminado todo el código innecesario. Para almacenar el contrato en la cadena, se requiere optimización. Consulte la sección Compilación optimizada para obtener instrucciones sobre cómo optimizar un contrato.

Compilar con archway developer cli

Ejecute el siguiente comando para compilar el contrato:

archway build

Este proceso también genera una versión no optimizada del contrato, que deberá ser optimizada antes de ser almacenada en la cadena.

Compilación optimizada

Para reducir los costes de gas, el tamaño binario debe ser lo más pequeño posible. De este modo, el despliegue será menos costoso y las tasas por cada interacción serán más bajas. Afortunadamente, hay herramientas disponibles para ayudar con esto. Estas herramientas de optimización producen construcciones reproducibles de contratos inteligentes CosmWasm. Esto significa que terceras partes pueden verificar que el contrato contiene realmente el código reclamado.

Optimizar con archway developer cli

Para construir un binario wasm optimizado para su almacenamiento en la blockchain, utiliza la bandera --optimize. La CLI de Archway Developer utiliza rust-optimizer en segundo plano:

archway build --optimize

Optimiza usando cargo

El siguiente comando debería dar un contrato optimizado que puede ser almacenado en cadena:

RUSTFLAGS='-C link-arg=-s' cargo wasm

Optimización con rust-optimizer

Información

Necesitará tener instalado Docker para ejecutar rust-optimizer.

Navega a la raíz del proyecto y ejecuta el siguiente comando:

docker run --rm -v "$(pwd)":/code \
  --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
  --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
  cosmwasm/rust-optimizer:0.12.12

Este comando optimizará el archivo .wasm y generará un archivo .wasm optimizado en el directorio de artefactos.

Last updated