An open API service indexing awesome lists of open source software.

https://github.com/terra-money/houston

A development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.
https://github.com/terra-money/houston

Last synced: 7 months ago
JSON representation

A development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.

Awesome Lists containing this project

README

          

# Houston 🚀








npm
npm bundle size





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. **

## Features

- 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.


## 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](https://www.npmjs.com/package/@terra-money/houston):

```sh
npm install -g @terra-money/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

`migrate`: for deploying contracts to blockchain

`add`: for adding or downloading contract cargo projects

To get help on each command, run `houston help `.

### Initialize project

```bash
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

### Compile contracts

Set current working directory inside of the project directory

```shell
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:

```shell
🛠 Compiling your contracts...
===========================
```

After comilation of each contract, you'll get the directories for compiled results as below:

```shell
> WASM written to /Users/...//wasm
> Schemas written to /Users/...//schemas/_schema
```

Compiled WASM binaries will be placed in `wasm` directory as ``.wasm.
Generated collection of schema json files will be placed as a directory with the 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
```

### Running migrations

run your migraion scripts in `migrations` folder after installing packages with the following command:

```shell
npm install
houston migrate
```

## 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](https://github.com/terra-project/houston/blob/master/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](https://github.com/terra-project/houston/blob/master/LICENSE) for full disclosure.

© 2020 Terraform Labs, PTE.


 






Powering the innovation of money.