Houston 🚀
Houston is a development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.
Features
- Built-in smart contract compilation, linking, deployment and wasm binary management.
- Automated contract testing with Mocha and Chai.
- Configurable build pipeline with support for custom build processes.
- Scriptable deployment & migrations framework.
- Network management for deploying to Terra's public & private networks.
- Interactive console for direct contract communication.
- Instant rebuilding of wasm binaries during development.
Installation
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 houston
Documentation
To get more information on Houston, check out the documentation.
Kickstart
Houston has five commands to help smart contract development:
init
: for project initialization
compile
: for compiling contracts
deploy
: for deploying contracts to blockchain
add
: for adding or downloading contract cargo projects
test
: for executing test scripts with Mocha and Chai
To get help on each command, run houston help <command>
.
Initialize project
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
|- test
|- houston-config.js
contracts
: contract directory for cosmwasm contract cargos
wasm
: wasm binary directory for compiled contracts
schema
: generated schema for compiled contracts
test
: test script directory for contract interaction
starter
: a starter cosmwasm project
Compile contracts
Set current working directory inside of the project directory
houston compile --contracts [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/terraformlabs/myProject/wasm
> Schemas written to /Users/terraformlabs/myProject/schemas/starter_schemas
Compiled WASM binaries will be placed in wasm
directory as <cargo name>
.wasm.
Generated collection of schema json files will be placed as a directory with the name <cargo name>-schema
in schema
directory.
You will have the new project structure with the following items:
myProject/
|- contracts
| |- starter
|- wasm
| |- starter.wasm
|- schema
| |- starter-schema
| |- config.json
| |- ....
|- test
|- houston-config.js
Contributions
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.
License
This software is licensed under the Apache 2.0 license. See LICENSE for full disclosure.
© 2020 Terraform Labs, PTE.
Powering the innovation of money.