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:
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:
Confirm the file exists before moving on:
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:
The output should include the host interfaces you imported in wit/world.wit, such as host:interfaces/kv-store, and your exported interface:
If wasm-tools is not installed yet: