Update README.md
This commit is contained in:
parent
45b3623178
commit
f63ae76832
1 changed files with 71 additions and 68 deletions
|
@ -1,85 +1,88 @@
|
||||||
# CosmWasm Starter Pack
|
# Bisenzone CosmWasm MVP
|
||||||
|
|
||||||
This is a template to build smart contracts in Rust to run inside a
|
CosmWasm smart contracts used in the Bisenzone MVP.
|
||||||
[Cosmos SDK](https://github.com/cosmos/cosmos-sdk) module on all chains that enable it.
|
|
||||||
To understand the framework better, please read the overview in the
|
|
||||||
[cosmwasm repo](https://github.com/CosmWasm/cosmwasm/blob/master/README.md),
|
|
||||||
and dig into the [cosmwasm docs](https://www.cosmwasm.com).
|
|
||||||
This assumes you understand the theory and just want to get coding.
|
|
||||||
|
|
||||||
## Creating a new repo from template
|
## Testing instructions
|
||||||
|
|
||||||
Assuming you have a recent version of Rust and Cargo installed
|
* Deploy the smart contract on a local wasmd instance
|
||||||
(via [rustup](https://rustup.rs/)),
|
(see [Obligation Clearing Mvp: Local setup](https://github.com/informalsystems/obligation-clearing-mvp#local-setup))
|
||||||
then the following should get you a new repo to start a contract:
|
* Should normally be as simple as running the following scripts ->
|
||||||
|
```bash
|
||||||
|
# terminal-1
|
||||||
|
./scripts/keygen.sh
|
||||||
|
./scripts/init-node.sh
|
||||||
|
./scripts/run-node.sh
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
# terminal-2
|
||||||
|
./scripts/build-contract.sh
|
||||||
|
./scripts/deploy-contract.sh artifacts/cw_mtcs.wasm
|
||||||
|
```
|
||||||
|
* Set contract env var (using the output of the `deploy.sh` script) -
|
||||||
|
|
||||||
Install [cargo-generate](https://github.com/ashleygwilliams/cargo-generate) and cargo-run-script.
|
```
|
||||||
Unless you did that before, run this line now:
|
export CONTRACT="wasm13we0myxwzlpx8l5ark8elw5gj5d59dl6cjkzmt80c5q5cv5rt54qhmta7s"
|
||||||
|
|
||||||
```sh
|
|
||||||
cargo install cargo-generate --features vendored-openssl
|
|
||||||
cargo install cargo-run-script
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, use it to create your new contract.
|
* Upload a cycle of obligations -
|
||||||
Go to the folder in which you want to place it and run:
|
|
||||||
|
|
||||||
**Latest**
|
```
|
||||||
|
export EXECUTE='{
|
||||||
|
"upload_obligation": {
|
||||||
|
"creditor": "wasm19u72czh0w4jraan8esalv48nrwemh8kgax69yw",
|
||||||
|
"amount": "100",
|
||||||
|
"memo": "alice -> bob"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from alice --chain-id testing -y
|
||||||
|
|
||||||
```sh
|
export EXECUTE='{
|
||||||
cargo generate --git https://github.com/CosmWasm/cw-template.git --name PROJECT_NAME
|
"upload_obligation": {
|
||||||
|
"creditor": "wasm12r9t5wmre89rwakr0e5nyhfmaf4kdleyltsm9f",
|
||||||
|
"amount": "80",
|
||||||
|
"memo": "bob -> charlie"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from bob --chain-id testing -y
|
||||||
|
|
||||||
|
export EXECUTE='{
|
||||||
|
"upload_obligation": {
|
||||||
|
"creditor": "wasm19xlctyn7ha6pqg7pk9lnk8y60rk8646dm86qgv",
|
||||||
|
"amount": "70",
|
||||||
|
"memo": "charlie -> alice"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from charlie --chain-id testing -y
|
||||||
```
|
```
|
||||||
|
|
||||||
For cloning minimal code repo:
|
* Clear cycle -
|
||||||
|
|
||||||
```sh
|
```
|
||||||
cargo generate --git https://github.com/CosmWasm/cw-template.git --name PROJECT_NAME -d minimal=true
|
export EXECUTE='{
|
||||||
|
"apply_cycle": {
|
||||||
|
"path": ["wasm19xlctyn7ha6pqg7pk9lnk8y60rk8646dm86qgv", "wasm19u72czh0w4jraan8esalv48nrwemh8kgax69yw", "wasm12r9t5wmre89rwakr0e5nyhfmaf4kdleyltsm9f", "wasm19xlctyn7ha6pqg7pk9lnk8y60rk8646dm86qgv"],
|
||||||
|
"amount": "70"
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
wasmd tx wasm execute "$CONTRACT" "$EXECUTE" --from alice --chain-id testing -y
|
||||||
```
|
```
|
||||||
|
|
||||||
You will now have a new folder called `PROJECT_NAME` (I hope you changed that to something else)
|
* Query obligations -
|
||||||
containing a simple working contract and build system that you can customize.
|
|
||||||
|
|
||||||
## Create a Repo
|
```
|
||||||
|
* wasmd query wasm contract-state smart "$CONTRACT" '{
|
||||||
After generating, you have a initialized local git repo, but no commits, and no remote.
|
"get_obligations": {
|
||||||
Go to a server (eg. github) and create a new upstream repo (called `YOUR-GIT-URL` below).
|
"creditor": "wasm19u72czh0w4jraan8esalv48nrwemh8kgax69yw"
|
||||||
Then run the following:
|
}
|
||||||
|
}'
|
||||||
```sh
|
|
||||||
# this is needed to create a valid Cargo.lock file (see below)
|
|
||||||
cargo check
|
|
||||||
git branch -M main
|
|
||||||
git add .
|
|
||||||
git commit -m 'Initial Commit'
|
|
||||||
git remote add origin YOUR-GIT-URL
|
|
||||||
git push -u origin main
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## CI Support
|
* Check balance of the solver (to confirm increase in karma) -
|
||||||
|
|
||||||
We have template configurations for both [GitHub Actions](.github/workflows/Basic.yml)
|
```
|
||||||
and [Circle CI](.circleci/config.yml) in the generated project, so you can
|
wasmd query wasm contract-state smart "$CONTRACT" '{
|
||||||
get up and running with CI right away.
|
"balance": {
|
||||||
|
"address": "wasm19xlctyn7ha6pqg7pk9lnk8y60rk8646dm86qgv"
|
||||||
One note is that the CI runs all `cargo` commands
|
}
|
||||||
with `--locked` to ensure it uses the exact same versions as you have locally. This also means
|
}'
|
||||||
you must have an up-to-date `Cargo.lock` file, which is not auto-generated.
|
```
|
||||||
The first time you set up the project (or after adding any dep), you should ensure the
|
|
||||||
`Cargo.lock` file is updated, so the CI will test properly. This can be done simply by
|
|
||||||
running `cargo check` or `cargo unit-test`.
|
|
||||||
|
|
||||||
## Using your project
|
|
||||||
|
|
||||||
Once you have your custom repo, you should check out [Developing](./Developing.md) to explain
|
|
||||||
more on how to run tests and develop code. Or go through the
|
|
||||||
[online tutorial](https://docs.cosmwasm.com/) to get a better feel
|
|
||||||
of how to develop.
|
|
||||||
|
|
||||||
[Publishing](./Publishing.md) contains useful information on how to publish your contract
|
|
||||||
to the world, once you are ready to deploy it on a running blockchain. And
|
|
||||||
[Importing](./Importing.md) contains information about pulling in other contracts or crates
|
|
||||||
that have been published.
|
|
||||||
|
|
||||||
Please replace this README file with information about your specific project. You can keep
|
|
||||||
the `Developing.md` and `Publishing.md` files as useful references, but please set some
|
|
||||||
proper description in the README.
|
|
||||||
|
|
Loading…
Reference in a new issue