Skip to main content
This step turns the Rust contract from Step 1 into a WASM component. Run these commands below from the contract repository root, where Cargo.toml and wit/world.wit live.
You do not need cargo-component. With crate-type = ["cdylib", "lib"] in Cargo.toml, the wasm32-wasip2 target emits a WASM component that T3N can inspect and register.

Build the release artifact

Install the WASI Preview 2 target once per machine, then build the release artifact:
rustup target add wasm32-wasip2
cargo build --target wasm32-wasip2 --release
Cargo writes the component to target/wasm32-wasip2/release/. If your package name contains hyphens, Cargo converts them to underscores in the file name. The z-tenant-flight package therefore builds to:
target/wasm32-wasip2/release/z_tenant_flight.wasm
Confirm the file exists before moving on:
ls -lh target/wasm32-wasip2/release/*.wasm
The .wasm file is the artifact you pass to tenant.contracts.register in Step 3.

Verify the component interface

Use wasm-tools to print the component’s WIT interface:
wasm-tools component wit target/wasm32-wasip2/release/z_tenant_flight.wasm
The output should include the host interfaces you imported in wit/world.wit, such as host:interfaces/kv-store, and your exported interface:
export contracts;
If wasm-tools is not installed yet:
cargo install wasm-tools