Terrain initial setup

This tutorial uses a Terra-specific development suite called Terrain.

Terrain will help you:

  • Scaffold your dApp project

  • Develop and deploy smart contracts

  • Create custom tasks for blockchain and contract interaction

  • Access a console (or REPL) for interacting with the Terra blockchain

  • Create predefined functions used in tasks and in the console

1. Set up Rust

Rust is the main programming language used for CosmWasm smart contracts. While WASM smart contracts can theoretically be written in any programming language, CosmWasm libraries and tooling work best with Rust.

First, install the latest version of Rust.

Then run the following commands:

# 1. Set 'stable' as the default release channel:

rustup default stable

# 2. Add WASM as the compilation target:

rustup target add wasm32-unknown-unknown

# 3. Install the following package to run custom cargo scripts:

cargo install cargo-run-script

2. Install Terrain

Use npm to install the terrain command-line tool globally:

npm install -g @terra-money/terrain

Check your Terrain version

Make sure you are using the latest version of Terrain. Previous versions may cause errors.

terrain --version

If you installed Terrain from a previous, make sure to update it:

npm uninstall -g @iboss/terrain
npm install -g @terra-money/terrain

Next steps: LocalTerra or Testnet

Depending on your setup, you can either install LocalTerra or use the Pisco testnet to power Terrain.

LocalTerra is a development environment designed to make it easy for smart contract developers to test their contracts locally. Terrain can also interact with the Terra blockchain’s live testing environment using the Pisco testnet.


Localterra may not work properly on machines with less than 16 GB of RAM. Please use the Pisco testnet if your device does not meet this requirement.


Terrain and the testnet
8+ GB of RAM


Terrain and LocalTerra
16+ GB of RAM