Houston is a development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.
** 🚨 Houston is now currently in Beta version. Completed version is not ready yet. use it with your own caution. **
- Built-in smart contract compilation, linking, deployment and wasm binary management.
- Configurable build pipeline with support for custom build processes.
- Scriptable deployment & migrations framework.
- Network management for deploying to Terra's public & private networks.
- Instant rebuilding of webassembly binaries during development.
Houston will gracefully setup a stable version of rust compiler and wasm target to develop smart contracts on Terra blockchain.
Grab the latest version of NPM:
npm install -g @terra-money/houston
To get more information on Houston, check out the documentation.
Houston has five commands to help smart contract development:
init
: for project initialization
compile
: for compiling contracts
migrate
: for deploying contracts to blockchain
add
: for adding or downloading contract cargo projects
To get help on each command, run houston help <command>
.
mkdir myProject
cd myProject
houston init
Once this operation is completed, you'll now have a project structure with the following items:
myProject/
|- contracts
| |- starter
|- wasm
|- schema
|- migrations
| |- 0_deploy_starter.ts
|- package.json
|- tsconfig.json
contracts
: directory for cosmwasm contracts
wasm
: wasm binaries of compiled contracts
schema
: generated schema of compiled contracts
test
: test script directory for contract interaction
starter
: a starter cosmwasm contract cargo
package.json
: package manager for migration scripts
tsconfig.json
: Typscript configuration file for migration scripts
Set current working directory inside of the project directory
houston compile [contractName]
All contract cargos in the contracts
directory will be compiled as default.
[contractName]
is an optional parameter to specify which cargo to compile with the command.
Once this operation is initiated, you'll see the event in the console as below:
🛠 Compiling your contracts...
===========================
After comilation of each contract, you'll get the directories for compiled results as below:
> WASM written to /Users/.../<project folder>/wasm
> Schemas written to /Users/.../<project folder>/schemas/<contract name>_schema
Compiled WASM binaries will be placed in wasm
directory as <contract name>
.wasm.
Generated collection of schema json files will be placed as a directory with the name <contract name>-schema
in schemas
directory.
You will have the new project structure with the following items:
myProject/
|- contracts
| |- starter
|- wasm
| |- starter.wasm
|- schema
| |- starter-schema
| |- config.json
| |- ....
| migrations
| |- 0_deploy_starter.ts
| package.json
| tsconfig.json
run your migraion scripts in migrations
folder after installing packages with the following command:
npm install
houston migrate
Contributions are welcome to this project for helping Terra developers to build their dapps. To contribute to this project, you can check CONTRIBUTING.md for the detail.
Or you can join the Terra's official discord channel and discuss new ideas or addition.
This software is licensed under the Apache 2.0 license. See LICENSE for full disclosure.
© 2020 Terraform Labs, PTE.