From 1b188d9ad49b275286adedc2eca37ea376abc25c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:12:12 +0200 Subject: [PATCH] chore(docs): deploy version v0.27.2 (#3703) Co-authored-by: Pantani --- .../version-v0.27.2/01-welcome/01-index.md | 63 + .../version-v0.27.2/01-welcome/02-install.md | 114 + .../01-welcome/_category_.json | 4 + .../02-guide/00-introduction.md | 36 + .../02-guide/02-getting-started.md | 151 + .../02-guide/03-hello/00-express.md | 141 + .../02-guide/03-hello/01-scaffolding.md | 236 + .../02-guide/03-hello/_category_.json | 4 + .../02-guide/04-blog/00-express.md | 309 ++ .../02-guide/04-blog/01-intro.md | 17 + .../02-guide/04-blog/02-scaffolding.md | 124 + .../02-guide/04-blog/03-create.md | 319 ++ .../02-guide/04-blog/04-update.md | 127 + .../02-guide/04-blog/05-delete.md | 74 + .../02-guide/04-blog/06-show.md | 81 + .../02-guide/04-blog/07-list.md | 97 + .../02-guide/04-blog/08-play.md | 97 + .../02-guide/04-blog/09-summary.md | 22 + .../02-guide/04-blog/_category_.json | 4 + .../02-guide/05-loan/00-intro.md | 86 + .../02-guide/05-loan/01-init.md | 72 + .../02-guide/05-loan/02-bank.md | 32 + .../02-guide/05-loan/03-request.md | 117 + .../02-guide/05-loan/04-approve.md | 97 + .../02-guide/05-loan/05-repay.md | 97 + .../02-guide/05-loan/06-liquidate.md | 89 + .../02-guide/05-loan/07-cancel.md | 73 + .../02-guide/05-loan/08-play.md | 318 ++ .../02-guide/05-loan/_category_.json | 4 + .../version-v0.27.2/02-guide/06-ibc.md | 710 +++ .../07-interchange/00-introduction.md | 49 + .../02-guide/07-interchange/01-design.md | 108 + .../02-guide/07-interchange/02-init.md | 219 + .../02-guide/07-interchange/03-walkthrough.md | 687 +++ .../07-interchange/04-creating-order-books.md | 480 ++ .../05-mint-and-burn-voucher.md | 351 ++ .../07-interchange/06-creating-sell-orders.md | 402 ++ .../07-interchange/07-creating-buy-orders.md | 440 ++ .../07-interchange/08-cancelling-orders.md | 200 + .../02-guide/07-interchange/09-tests.md | 729 +++ .../02-guide/07-interchange/_category_.json | 5 + .../version-v0.27.2/02-guide/08-debug.md | 209 + .../version-v0.27.2/02-guide/09-docker.md | 142 + .../version-v0.27.2/02-guide/10-simapp.md | 164 + .../version-v0.27.2/02-guide/_category_.json | 4 + .../version-v0.27.2/02-guide/images/api.png | Bin 0 -> 406674 bytes .../02-guide/images/packet_sendpost.png | Bin 0 -> 402229 bytes .../03-clients/01-go-client.md | 300 ++ .../03-clients/02-typescript.md | 431 ++ .../version-v0.27.2/03-clients/03-vue.md | 174 + .../version-v0.27.2/03-clients/04-react.md | 130 + .../03-clients/_category_.json | 4 + .../version-v0.27.2/04-network/01-chain.md | 237 + .../04-network/02-introduction.md | 75 + .../04-network/03-coordinator.md | 146 + .../04-network/04-validator.md | 161 + .../04-network/05-coordination.md | 72 + .../04-network/_category_.json | 4 + .../04-network/assets/generation.png | Bin 0 -> 93425 bytes .../04-network/assets/genesis.png | Bin 0 -> 135189 bytes .../04-network/assets/launch.png | Bin 0 -> 198418 bytes .../04-network/assets/process.png | Bin 0 -> 56924 bytes .../04-network/assets/requests.png | Bin 0 -> 109980 bytes .../05-contributing/01-docs.md | 105 + .../05-contributing/_category_.json | 4 + .../06-migration/_category_.json | 4 + .../version-v0.27.2/06-migration/readme.md | 14 + .../version-v0.27.2/06-migration/v0.18.md | 458 ++ .../version-v0.27.2/06-migration/v0.19.2.md | 26 + .../version-v0.27.2/06-migration/v0.20.0.md | 12 + .../version-v0.27.2/06-migration/v0.22.0.md | 36 + .../version-v0.27.2/06-migration/v0.24.0.md | 330 ++ .../version-v0.27.2/06-migration/v0.25.0.md | 1187 +++++ .../version-v0.27.2/06-migration/v0.25.1.md | 67 + .../version-v0.27.2/06-migration/v0.26.0.md | 263 ++ .../07-packages/_category_.json | 4 + .../07-packages/cosmostxcollector.md | 200 + .../version-v0.27.2/08-references/01-cli.md | 4146 +++++++++++++++++ .../08-references/02-config.md | 263 ++ .../08-references/_category_.json | 5 + .../plugins/01-using-plugins.md | 43 + .../version-v0.27.2/plugins/02-dev-plugins.md | 244 + .../version-v0.27.2/plugins/_category_.json | 5 + .../version-v0.27.2-sidebars.json | 25 + docs/versions.json | 2 +- 85 files changed, 17080 insertions(+), 1 deletion(-) create mode 100644 docs/versioned_docs/version-v0.27.2/01-welcome/01-index.md create mode 100644 docs/versioned_docs/version-v0.27.2/01-welcome/02-install.md create mode 100644 docs/versioned_docs/version-v0.27.2/01-welcome/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/00-introduction.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/02-getting-started.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/03-hello/00-express.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/03-hello/01-scaffolding.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/03-hello/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/00-express.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/01-intro.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/02-scaffolding.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/03-create.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/04-update.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/05-delete.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/06-show.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/07-list.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/08-play.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/09-summary.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/04-blog/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/00-intro.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/01-init.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/02-bank.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/03-request.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/04-approve.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/05-repay.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/06-liquidate.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/07-cancel.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/08-play.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/05-loan/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/06-ibc.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/00-introduction.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/01-design.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/02-init.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/03-walkthrough.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/04-creating-order-books.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/05-mint-and-burn-voucher.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/06-creating-sell-orders.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/07-creating-buy-orders.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/08-cancelling-orders.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/09-tests.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/08-debug.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/09-docker.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/10-simapp.md create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/images/api.png create mode 100644 docs/versioned_docs/version-v0.27.2/02-guide/images/packet_sendpost.png create mode 100644 docs/versioned_docs/version-v0.27.2/03-clients/01-go-client.md create mode 100644 docs/versioned_docs/version-v0.27.2/03-clients/02-typescript.md create mode 100644 docs/versioned_docs/version-v0.27.2/03-clients/03-vue.md create mode 100644 docs/versioned_docs/version-v0.27.2/03-clients/04-react.md create mode 100644 docs/versioned_docs/version-v0.27.2/03-clients/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/01-chain.md create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/02-introduction.md create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/03-coordinator.md create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/04-validator.md create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/05-coordination.md create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/assets/generation.png create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/assets/genesis.png create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/assets/launch.png create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/assets/process.png create mode 100644 docs/versioned_docs/version-v0.27.2/04-network/assets/requests.png create mode 100644 docs/versioned_docs/version-v0.27.2/05-contributing/01-docs.md create mode 100644 docs/versioned_docs/version-v0.27.2/05-contributing/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/readme.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.18.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.19.2.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.20.0.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.22.0.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.24.0.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.25.0.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.25.1.md create mode 100644 docs/versioned_docs/version-v0.27.2/06-migration/v0.26.0.md create mode 100644 docs/versioned_docs/version-v0.27.2/07-packages/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/07-packages/cosmostxcollector.md create mode 100644 docs/versioned_docs/version-v0.27.2/08-references/01-cli.md create mode 100644 docs/versioned_docs/version-v0.27.2/08-references/02-config.md create mode 100644 docs/versioned_docs/version-v0.27.2/08-references/_category_.json create mode 100644 docs/versioned_docs/version-v0.27.2/plugins/01-using-plugins.md create mode 100644 docs/versioned_docs/version-v0.27.2/plugins/02-dev-plugins.md create mode 100644 docs/versioned_docs/version-v0.27.2/plugins/_category_.json create mode 100644 docs/versioned_sidebars/version-v0.27.2-sidebars.json diff --git a/docs/versioned_docs/version-v0.27.2/01-welcome/01-index.md b/docs/versioned_docs/version-v0.27.2/01-welcome/01-index.md new file mode 100644 index 0000000000..23d3ef1924 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/01-welcome/01-index.md @@ -0,0 +1,63 @@ +--- +slug: / +--- + +import ProjectsTable from '@site/src/components/ProjectsTable'; + +# Introduction to Ignite + +[Ignite CLI](https://github.com/ignite/cli) offers everything you need to build, test, and launch your blockchain with a +decentralized worldwide community. Ignite CLI is built on top of [Cosmos SDK](https://docs.cosmos.network), the world’s +most popular blockchain framework. Ignite CLI accelerates chain development by scaffolding everything you need so you +can focus on business logic. + +## What is Ignite CLI? + +Ignite CLI is an easy-to-use CLI tool for creating and maintaining sovereign application-specific blockchains. +Blockchains created with Ignite CLI use Cosmos SDK and Tendermint. Ignite CLI and the Cosmos SDK modules are written in +the Go programming language. The scaffolded blockchain that is created with Ignite CLI includes a command line interface +that lets you manage keys, create validators, and send tokens. + +With just a few commands, you can use Ignite CLI to: + +- Create a modular blockchain written in Go +- Scaffold modules, messages, types with CRUD operations, IBC packets, and more +- Start a blockchain node in development with live reloading +- Connect to other blockchains with a built-in IBC relayer +- Use generated TypeScript/Vuex clients to interact with your blockchain +- Use the Vue.js web app template with a set of components and Vuex modules + +## Install Ignite CLI + +To install the `ignite` binary in `/usr/local/bin` run the following command: + +``` +curl https://get.ignite.com/cli | bash +``` + +## Projects using Tendermint and Cosmos SDK + +Many projects already showcase the Tendermint BFT consensus engine and the Cosmos SDK. Explore +the [Cosmos ecosystem](https://cosmos.network/ecosystem/apps) to discover a wide variety of apps, blockchains, wallets, +and explorers that are built in the Cosmos ecosystem. + +## Projects building with Ignite CLI + + \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/01-welcome/02-install.md b/docs/versioned_docs/version-v0.27.2/01-welcome/02-install.md new file mode 100644 index 0000000000..87fe81fe61 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/01-welcome/02-install.md @@ -0,0 +1,114 @@ +--- +sidebar_position: 1 +description: Steps to install Ignite CLI on your local computer. +--- + +# Install Ignite CLI + +You can run [Ignite CLI](https://github.com/ignite/cli) in a web-based Gitpod IDE or you can install Ignite CLI on your +local computer. + +## Prerequisites + +Be sure you have met the prerequisites before you install and use Ignite CLI. + +### Operating systems + +Ignite CLI is supported for the following operating systems: + +- GNU/Linux +- macOS +- Windows Subsystem for Linux (WSL) + +### Go + +Ignite CLI is written in the Go programming language. To use Ignite CLI on a local system: + +- Install [Go](https://golang.org/doc/install) (**version 1.19** or higher) +- Ensure the Go environment variables are [set properly](https://golang.org/doc/gopath_code#GOPATH) on your system + +## Verify your Ignite CLI version + +To verify the version of Ignite CLI you have installed, run the following command: + +```bash +ignite version +``` + +## Installing Ignite CLI + +To install the latest version of the `ignite` binary use the following command. + +```bash +curl https://get.ignite.com/cli! | bash +``` + +This command invokes `curl` to download the installation script and pipes the output to `bash` to perform the +installation. The `ignite` binary is installed in `/usr/local/bin`. + +To learn more or customize the installation process, see the [installer docs](https://github.com/ignite/installer) on +GitHub. + +### Write permission + +Ignite CLI installation requires write permission to the `/usr/local/bin/` directory. If the installation fails because +you do not have write permission to `/usr/local/bin/`, run the following command: + +```bash +curl https://get.ignite.com/cli | bash +``` + +Then run this command to move the `ignite` executable to `/usr/local/bin/`: + +```bash +sudo mv ignite /usr/local/bin/ +``` + +On some machines, a permissions error occurs: + +```bash +mv: rename ./ignite to /usr/local/bin/ignite: Permission denied +============ +Error: mv failed +``` + +In this case, use sudo before `curl` and before `bash`: + +```bash +sudo curl https://get.ignite.com/cli | sudo bash +``` + +## Upgrading your Ignite CLI installation + +Before you install a new version of Ignite CLI, remove all existing Ignite CLI installations. + +To remove the current Ignite CLI installation: + +1. On your terminal window, press `Ctrl+C` to stop the chain that you started with `ignite chain serve`. +2. Remove the Ignite CLI binary with `rm $(which ignite)`. + Depending on your user permissions, run the command with or without `sudo`. +3. Repeat this step until all `ignite` installations are removed from your system. + +After all existing Ignite CLI installations are removed, follow the [Installing Ignite CLI](#installing-ignite-cli) +instructions. + +For details on version features and changes, see +the [changelog.md](https://github.com/ignite/cli/blob/main/changelog.md) +in the repo. + +## Build from source + +To experiment with the source code, you can build from source: + +```bash +git clone https://github.com/ignite/cli --depth=1 +cd cli && make install +``` + +## Summary + +- Verify the prerequisites. +- To set up a local development environment, install Ignite CLI locally on your computer. +- Install Ignite CLI by fetching the binary using cURL or by building from source. +- The latest version is installed by default. You can install previous versions of the precompiled `ignite` binary. +- Stop the chain and remove existing versions before installing a new version. diff --git a/docs/versioned_docs/version-v0.27.2/01-welcome/_category_.json b/docs/versioned_docs/version-v0.27.2/01-welcome/_category_.json new file mode 100644 index 0000000000..5437d69109 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/01-welcome/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Welcome", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/00-introduction.md b/docs/versioned_docs/version-v0.27.2/02-guide/00-introduction.md new file mode 100644 index 0000000000..1af3f532f5 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/00-introduction.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 0 +title: Introduction +slug: /guide +--- + +# Introduction + +Developer tutorials provide step-by-step instructions to help you build blockchain developer skills. + +By following these developer tutorials you will learn how to: + +* Install Ignite CLI on your local machine +* Create a new blockchain and start a node locally for development +* Make your blockchain say "Hello, World!" + * Scaffold a Cosmos SDK query + * Modify a keeper method to return a static string + * Use the blockchain CLI to make a query +* Write and read blog posts to your chain in the Blog tutorial + * Scaffold a Cosmos SDK message + * Define new types in protocol buffer files + * Write keeper methods to write data to the store + * Read data from the store and return it as a result a query + * Use the blockchain CLI to broadcast transactions +* Build a blockchain for buying and selling names in the Nameservice tutorial + * Scaffold CRUD logic with `map` + * Use other module methods in your custom module + * Send tokens between addresses +* Build a guessing game with rewards + * Use an escrow account to store tokens +* Use the Inter-Blockchain Communication (IBC) protocol + * Scaffold an IBC-enabled module + * Send and receive IBC packets + * Configure and run a built-in IBC relayer +* Build a decentralized order-book token exchange + * Build an advanced IBC-enabled module diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/02-getting-started.md b/docs/versioned_docs/version-v0.27.2/02-guide/02-getting-started.md new file mode 100644 index 0000000000..d1d8c7c161 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/02-getting-started.md @@ -0,0 +1,151 @@ +--- +sidebar_position: 2 +--- + +# Getting started + +In this tutorial, we will be using Ignite CLI to create a new blockchain. Ignite +CLI is a command line interface that allows users to quickly and easily create +blockchain networks. By using Ignite CLI, we can quickly create a new blockchain +without having to manually set up all the necessary components. + +Once we have created our blockchain with Ignite CLI, we will take a look at the +directory structure and files that were created. This will give us an +understanding of how the blockchain is organized and how the different +components of the blockchain interact with each other. + +By the end of this tutorial, you will have a basic understanding of how to use +Ignite CLI to create a new blockchain, and you will have a high-level +understanding of the directory structure and files that make up a blockchain. +This knowledge will be useful as you continue to explore the world of blockchain +development. + +## Creating a new blockchain + +To create a new blockchain project with Ignite, you will need to run the +following command: + +``` +ignite scaffold chain example +``` + +The [`ignite scaffold chain`](../references/cli#ignite-scaffold-chain) command will create a +new blockchain in a new directory `example`. + +The new blockchain is built using the Cosmos SDK framework and imports several +standard modules to provide a range of functionality. These modules include +`staking`, which enables a delegated Proof-of-Stake consensus mechanism, `bank` +for facilitating fungible token transfers between accounts, and `gov` for +on-chain governance. In addition to these modules, the blockchain also imports +other modules from the Cosmos SDK framework. + +The `example` directory contains the generated files and directories that make +up the structure of a Cosmos SDK blockchain. This directory includes files for +the chain's configuration, application logic, and tests, among others. It +provides a starting point for developers to quickly set up a new Cosmos SDK +blockchain and build their desired functionality on top of it. + +By default, Ignite creates a new empty custom module with the same name as the +blockchain being created (in this case, `example`) in the `x/` directory. This +module doesn't have any functionality by itself, but can serve as a starting +point for building out the features of your application. If you don't want to +create this module, you can use the `--no-module` flag to skip it. + +## Directory structure + +In order to understand what the Ignite CLI has generated for your project, you +can inspect the contents of the `example/` directory. + +The `app/` directory contains the files that connect the different parts of the +blockchain together. The most important file in this directory is `app.go`, +which includes the type definition of the blockchain and functions for creating +and initializing it. This file is responsible for wiring together the various +components of the blockchain and defining how they will interact with each +other. + +The `cmd/` directory contains the main package responsible for the command-line +interface (CLI) of the compiled binary. This package defines the commands that +can be run from the CLI and how they should be executed. It is an important part +of the blockchain project as it provides a way for developers and users to +interact with the blockchain and perform various tasks, such as querying the +blockchain state or sending transactions. + +The `docs/` directory is used for storing project documentation. By default, +this directory includes an OpenAPI specification file, which is a +machine-readable format for defining the API of a software project. The OpenAPI +specification can be used to automatically generate human-readable documentation +for the project, as well as provide a way for other tools and services to +interact with the API. The `docs/` directory can be used to store any additional +documentation that is relevant to the project. + +The `proto/` directory contains protocol buffer files, which are used to +describe the data structure of the blockchain. Protocol buffers are a language- +and platform-neutral mechanism for serializing structured data, and are often +used in the development of distributed systems, such as blockchain networks. The +protocol buffer files in the `proto/` directory define the data structures and +messages that are used by the blockchain, and are used to generate code for +various programming languages that can be used to interact with the blockchain. +In the context of the Cosmos SDK, protocol buffer files are used to define the +specific types of data that can be sent and received by the blockchain, as well +as the specific RPC endpoints that can be used to access the blockchain's +functionality. + +The `testutil/` directory contains helper functions that are used for testing. +These functions provide a convenient way to perform common tasks that are needed +when writing tests for the blockchain, such as creating test accounts, +generating transactions, and checking the state of the blockchain. By using the +helper functions in the `testutil/` directory, developers can write tests more +quickly and efficiently, and can ensure that their tests are comprehensive and +effective. + +The `x/` directory contains custom Cosmos SDK modules that have been added to +the blockchain. Standard Cosmos SDK modules are pre-built components that +provide common functionality for Cosmos SDK-based blockchains, such as support +for staking and governance. Custom modules, on the other hand, are modules that +have been developed specifically for the blockchain project and provide +project-specific functionality. + +The `config.yml` file is a configuration file that can be used to customize the +blockchain during development. This file includes settings that control various +aspects of the blockchain, such as the network's ID, account balances, and the +node parameters. + +The `.github` directory contains a GitHub Actions workflow that can be used to +automatically build and release a blockchain binary. GitHub Actions is a tool +that allows developers to automate their software development workflows, +including building, testing, and deploying their projects. The workflow in the +`.github` directory is used to automate the process of building the blockchain +binary and releasing it, which can save time and effort for developers. + +The `readme.md` file is a readme file that provides an overview of the +blockchain project. This file typically includes information such as the +project's name and purpose, as well as instructions on how to build and run the +blockchain. By reading the `readme.md` file, developers and users can quickly +understand the purpose and capabilities of the blockchain project and get +started using it. + +## Starting a blockchain node + +To start a blockchain node in development, you can run the following command: + +``` +ignite chain serve +``` + +The [`ignite chain serve`](../references/cli#ignite-scaffold-chain) command is used to start +a blockchain node in development mode. It first compiles and installs the binary +using the `ignite chain build` command, then initializes the blockchain's data +directory for a single validator using the `ignite chain init` command. After +that, it starts the node locally and enables automatic code reloading so that +changes to the code can be reflected in the running blockchain without having to +restart the node. This allows for faster development and testing of the +blockchain. + +Congratulations! 🥳 You have successfully created a brand-new Cosmos blockchain +using the Ignite CLI. This blockchain uses the delegated proof of stake (DPoS) +consensus algorithm, and comes with a set of standard modules for token +transfers, governance, and inflation. Now that you have a basic understanding of +your Cosmos blockchain, it's time to start building custom functionality. In the +following tutorials, you will learn how to build custom modules and add new +features to your blockchain, allowing you to create a unique and powerful +decentralized application. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/00-express.md b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/00-express.md new file mode 100644 index 0000000000..89e76bcfb4 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/00-express.md @@ -0,0 +1,141 @@ +--- +description: Step-by-step guidance to build your first blockchain and your first Cosmos SDK module. +title: Express tutorial +--- + +# "Hello, World!" in 5 minutes + +In this tutorial, you will create a simple blockchain with a custom query that +responds with `"Hello, %s!"`, where `%s` is a name provided in the query. To do +this, you will use the Ignite CLI to generate most of the code, and then modify +the query to return the desired response. After completing the tutorial, you +will have a better understanding of how to create custom queries in a +blockchain. + +First, create a new `hello` blockchain with Ignite CLI: + +``` +ignite scaffold chain hello +``` + +Let's add a query to the blockchain we just created. + +In the Cosmos SDK, a query is a request for information from the blockchain. +Queries are used to retrieve data from the blockchain, such as the current state +of the ledger or the details of a specific transaction. The Cosmos SDK provides +a number of built-in query methods that can be used to retrieve data from the +blockchain, and developers can also create custom queries to access specific +data or perform complex operations. Queries are processed by the blockchain's +nodes and the results are returned to the querying client. + +## Create a query with Ignite + +To add a query, run the following command inside the `hello` directory: + +``` +ignite scaffold query say-hello name --response name +``` + +The `ignite scaffold query` command is a tool used to quickly create new +queries. When you run this command, it makes changes to your source code to add +the new query and make it available in your API. This command accepts a query +name (`"say-hello"`) and a list of request fields (in our case only `name`). The +optional `--response` flag specifies the return values of the query. + +This command made the following changes to the source code. + +The `proto/hello/hello/query.proto` file was modified to define the request and +response for a query, as well as to add the `SayHello` query in the `Query` +service. + +The `x/hello/client/cli/query_say_hello.go` file was created and added to the +project. This file contains a CLI command `CmdSayHello` that allows users to +submit a "say hello" query to the blockchain. This command allows users to +interact with the blockchain in a more user-friendly way, allowing them to +easily submit queries and receive responses from the blockchain. + +The `x/hello/client/cli/query.go` was modified to add the `CmdSayHello` command +to the CLI of the blockchain. + +The `x/hello/keeper/query_say_hello.go` file was created with a keeper method +called `SayHello`. This method is responsible for handling the "say hello" +query, which can be called by a client using the command-line interface (CLI) or +an API. When the "say hello" query is executed, the `SayHello` method is called +to perform the necessary actions and return a response to the client. The +`SayHello` method may retrieve data from the application's database, process the +data, and return a result to the client in a specific format, such as a string +of text or a data structure. + +To change the source code so that the query returns the `"Hello, %s!"` string, +modify the return statement in `query_say_hello.go` to return +`fmt.Sprintf("hello %s", req.Name)`. + +```go title="x/hello/keeper/query_say_hello.go" +func (k Keeper) SayHello(goCtx context.Context, req *types.QuerySayHelloRequest) (*types.QuerySayHelloResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: Process the query + _ = ctx + // highlight-next-line + return &types.QuerySayHelloResponse{Name: fmt.Sprintf("Hello, %s!", req.Name)}, nil +} +``` + +The function now returns a `QuerySayHelloResponse` struct with the `Name` field +set to the string `"Hello, %s!"` with `req.Name` as the value for the `%s` +placeholder. It also returns a nil error to indicate success. + +Now that you have added a query your blockchain and modified it return the value +you want, you can start your blockchain with Ignite: + +``` +ignite chain serve +``` + +After starting your blockchain, you can use its command-line interface (CLI) to +interact with it and perform various actions such as querying the blockchain's +state, sending transactions, and more. + +You can use the `hellod` binary to run the `say-hello` query: + +``` +hellod q hello say-hello bob +``` + +Once you run this command, the `hellod` binary will send a `say-hello` query to +your blockchain with the argument `bob`. The blockchain will process the query +and return the result, which will be printed by the `hellod` binary. In this +case, the expected result is a string containing the message `Hello, bob!`. + +``` +name: Hello, bob! +``` + +Congratulations! 🎉 You have successfully created a new Cosmos SDK module called +`hello` with a custom query functionality. This allows users to query the +blockchain and receive a response with a personalized greeting. This tutorial +demonstrated how to use Ignite CLI to create a custom query in a blockchain. + +Ignite is an incredibly convenient tool for developers because it automatically +generates much of the code required for a project. This saves developers time +and effort by reducing the amount of code they need to write manually. With +Ignite, developers can quickly and easily set up the basic structure of their +project, allowing them to focus on the more complex and unique aspects of their +work. + +However, it is also important for developers to understand how the code +generated by Ignite works under the hood. One way to do this is to implement the +same functionality manually, without using Ignite. For example, in this tutorial +Ignite was used to generate query functionality, now could try implementing the +same functionality manually to see how it works and gain a deeper understanding +of the code. + +Implementing the same functionality manually can be time-consuming and +challenging, but it can also be a valuable learning experience. By seeing how +the code works at a low level, developers can gain a better understanding of how +different components of their project fit together and how they can be +customized and optimized. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/01-scaffolding.md b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/01-scaffolding.md new file mode 100644 index 0000000000..130552636e --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/01-scaffolding.md @@ -0,0 +1,236 @@ +--- +title: In-depth tutorial +--- + +# In-depth "Hello, World!" tutorial + +In this tutorial you will implement "Hello, World!" functionality from +scratch. The functionality of the application you will be building will be +identical to what the one you created in the "Express tutorial" section, but +here you will be doing it manually in order to gain a deeper understanding of +the process. + +To begin, let's start with a fresh `hello` blockchain. You can either roll back +the changes you made in the previous section or create a new blockchain using +Ignite. Either way, you will have a blank blockchain that is ready for you to +work with. + +``` +ignite scaffold chain hello +``` + +## `SayHello` RPC + +In Cosmos SDK blockchains, queries are defined as remote procedure calls (RPCs) +in a `Query` service in protocol buffer files. To add a new query, you can add +the following code to the `query.proto` file of your module: + +```protobuf title="proto/hello/hello/query.proto" +service Query { + // highlight-start + rpc SayHello(QuerySayHelloRequest) returns (QuerySayHelloResponse) { + option (google.api.http).get = "/hello/hello/say_hello/{name}"; + } + // highlight-end +} +``` + +The RPC accepts a request argument of type `QuerySayHelloRequest` and returns a +value of type `QuerySayHelloResponse`. To define these types, you can add the +following code to the `query.proto` file: + +```protobuf title="proto/hello/hello/query.proto" +message QuerySayHelloRequest { + string name = 1; +} + +message QuerySayHelloResponse { + string name = 1; +} +``` + +To use the types defined in `query.proto`, you must transpile the protocol +buffer files into Go source code. This can be done by running `ignite chain +serve`, which will build and initialize the blockchain and automatically +generate the Go source code from the protocol buffer files. Alternatively, you +can run `ignite generate proto-go` to only generate the Go source code from the +protocol buffer files, without building and initializing the blockchain. + +## `SayHello` keeper method + +After defining the query, request, and response types in the `query.proto` file, +you will need to implement the logic for the query in your code. This typically +involves writing a function that processes the request and returns the +appropriate response. Create a new file `query_say_hello.go` with the following +contents: + +```go title="x/hello/keeper/query_say_hello.go" +package keeper + +import ( + "context" + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "hello/x/hello/types" +) + +func (k Keeper) SayHello(goCtx context.Context, req *types.QuerySayHelloRequest) (*types.QuerySayHelloResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + ctx := sdk.UnwrapSDKContext(goCtx) + // TODO: Process the query + _ = ctx + return &types.QuerySayHelloResponse{Name: fmt.Sprintf("hello %s", req.Name)}, nil +} +``` + +This code defines a `SayHello` function that accepts a request of type +`QuerySayHelloRequest` and returns a value of type `QuerySayHelloResponse`. The +function first checks if the request is valid, and then processes the query by +returning the response message with the provided name as the value for the `%s` +placeholder. You can add additional logic to the function as needed, such as +retrieving data from the blockchain or performing complex operations, to handle +the query and return the appropriate response. + +## `CmdSayHello` command + +After implementing the query logic, you will need to make the query available to +clients so that they can call it and receive the response. This typically +involves adding the query to the blockchain's application programming interface +(API) and providing a command-line interface (CLI) command that allows users to +easily submit the query and receive the response. + +To provide a CLI command for the query, you can create the `query_say_hello.go` +file and implement a `CmdSayHello` command that calls the `SayHello` function +and prints the response to the console. + +```go title="x/hello/client/cli/query_say_hello.go" +package cli + +import ( + "strconv" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" + + "hello/x/hello/types" +) + +var _ = strconv.Itoa(0) + +func CmdSayHello() *cobra.Command { + cmd := &cobra.Command{ + Use: "say-hello [name]", + Short: "Query say-hello", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + reqName := args[0] + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + params := &types.QuerySayHelloRequest{ + Name: reqName, + } + res, err := queryClient.SayHello(cmd.Context(), params) + if err != nil { + return err + } + return clientCtx.PrintProto(res) + }, + } + flags.AddQueryFlagsToCmd(cmd) + return cmd +} +``` + +The code defines a `CmdSayHello` command. The command is defined using the +`cobra` library, which is a popular framework for building command-line +applications in Go. The command accepts a `name` as an argument and uses it to +create a `QuerySayHelloRequest` struct that is passed to the `SayHello` function +from the `types.QueryClient`. The `SayHello` function is used to send the +`say-hello` query to the blockchain, and the response is stored in the `res` +variable. + +The `QuerySayHelloRequest` struct is defined in the `query.proto` file, which is +a Protocol Buffer file that defines the request and response types for the +query. The `QuerySayHelloRequest` struct includes a `Name` field of type +`string`, which is used to provide the name to be included in the response +message. + +After the query has been sent and the response has been received, the code uses +the `clientCtx.PrintProto` function to print the response to the console. The +`clientCtx` variable is obtained using the `client.GetClientQueryContext` +function, which provides access to the client context, including the client's +configuration and connection information. The `PrintProto` function is used to +print the response using the Protocol Buffer format, which allows for efficient +serialization and deserialization of the data. + +The `flags.AddQueryFlagsToCmd` function is used to add query-related flags to +the command. This allows users to specify additional options when calling the +command, such as the node URL and other query parameters. These flags are used +to configure the query and provide the necessary information to the `SayHello` +function, allowing it to connect to the blockchain and send the query. + +To make the `CmdSayHello` command available to users, you will need to add it to +the chain's binary. This is typically done by modifying the +`x/hello/client/cli/query.go` file and adding the +`cmd.AddCommand(CmdSayHello())` statement. This adds the `CmdSayHello` command +to the list of available commands, allowing users to call it from the +command-line interface (CLI). + +```go title="x/hello/client/cli/query.go" +func GetQueryCmd(queryRoute string) *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + cmd.AddCommand(CmdQueryParams()) + // highlight-next-line + cmd.AddCommand(CmdSayHello()) + return cmd +} +``` + +Once you have provided a CLI command, users will be able to call the `say-hello` +query and receive the appropriate response. + +Save all the changes you made to the source code of your project and run the +following command to start a blockchain node: + +``` +ignite chain serve +``` + +Use the following command to submit the query and receive the response: + +``` +hellod q hello say-hello bob +``` + +This command will send a "say-hello" query to the blockchain with the name "bob" +and print the response of "Hello, bob!" to the console. You can modify the query +and response as needed to suit your specific requirements and provide the +desired functionality. + +Congratulations on completing the "Hello, World!" tutorial! In this tutorial, +you learned how to define a new query in a protocol buffer file, implement the +logic for the query in your code, and make the query available to clients +through the blockchain's API and CLI. By following the steps outlined in the +tutorial, you were able to create a functional query that can be used to +retrieve data from your blockchain or perform other operations as needed. + +Now that you have completed the tutorial, you can continue to build on your +knowledge of the Cosmos SDK and explore the many features and capabilities it +offers. You may want to try implementing more complex queries or experiment with +other features of the SDK to see what you can create. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/_category_.json b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/_category_.json new file mode 100644 index 0000000000..871a74e160 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/03-hello/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Hello, World!", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/00-express.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/00-express.md new file mode 100644 index 0000000000..e2cb2fc142 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/00-express.md @@ -0,0 +1,309 @@ +--- +description: Learn module basics by writing and reading blog posts to your chain. +title: Express tutorial +--- + +# "Build a blog" in 5 minutes + +In this tutorial, we will create a blockchain with a module that allows us to +write and read data from the blockchain. This module will implement the ability +to create and read blog posts, similar to a blogging application. The end user +will be able to submit new blog posts and view a list of existing posts on the +blockchain. This tutorial will guide you through the process of creating and +using this module to interact with the blockchain. + +The goal of this tutorial is to provide step-by-step instructions for creating a +feedback loop that allows you to submit data to the blockchain and read that +data back from the blockchain. By the end of this tutorial, you will have +implemented a complete feedback loop and will be able to use it to interact with +the blockchain. + +First, create a new `blog` blockchain with Ignite CLI: + +``` +ignite scaffold chain blog +``` + +In order to create a blog application that uses a blockchain, we need to define +the requirements for our application. We want the application to store objects +of type `Post` on the blockchain. These objects should have two properties: a +`title` and a `body`. + +In addition to storing posts on the blockchain, we also want to provide users +with the ability to perform CRUD (create, read, update, and delete) operations +on these posts. This will allow users to create new posts, read existing posts, +update the contents of existing posts, and delete posts that are no longer +needed. + +One of the features of the Ignite CLI is the ability to generate code that +implements basic CRUD functionality. This is accomplished through the use of +scaffolding commands, which can be used to quickly generate the necessary code +for creating, reading, updating, and deleting data in your application. + +The Ignite CLI is capable of generating code for data that is stored in +different types of data structures. This includes lists, which are collections +of data indexed by an incrementing integer, maps, which are collections indexed +by a custom key, and singles, which are single instances of data. By using these +different data structures, you can customize your application to fit your +specific needs. For example, if you are building a blog application, you may +want to use a list to store all posts, with each post indexed by an integer. +Alternatively, you could use a map to index each post by its unique title, or a +single to store a single post. The choice of data structure will depend on the +specific requirements of your application. + +In addition to the data structure you choose, the Ignite CLI also requires you +to provide the name of the type of data that it will generate code for, as well +as fields that describe the type of data. For example, if you are creating a +blog application, you may want to create a type called "Post" that has fields +for the "title" and "body" of the post. The Ignite CLI will use this information +to generate the necessary code for creating, reading, updating, and deleting +data of this type in your application. + +Switch to the `blog` directory and run the `ignite scaffold list` command: + +``` +cd blog +ignite scaffold list post title body +``` + +Now that you have used the Ignite CLI to generate code for your application, +let's review what it has created. The Ignite CLI will have generated code for +the data structure and data type that you specified, as well as code for the +basic CRUD operations that are needed to manipulate this data. This code will +provide a solid foundation for your application, and you can customize it +further to fit your specific needs. By reviewing the code generated by the +ignite CLI, you can ensure that it meets your requirements and get a better +understanding of how to build your application using this tool. + +The Ignite CLI has generated several files and modifications in the +`proto/blog/blog` directory. These include: + +* `post.proto`: This is a protocol buffer file that defines the `Post` type, + with fields for the `title`, `body`, `id`, and `creator`. +* `tx.proto`: This file has been modified to include three RPCs (remote + procedure calls): `CreatePost`, `UpdatePost`, and `DeletePost`. Each of these + RPCs corresponds to a Cosmos SDK message that can be used to perform the + corresponding CRUD operation on a post. +* `query.proto`: This file has been modified to include two queries: `Post` and + `PostAll`. The `Post` query can be used to retrieve a single post by its ID, + while the `PostAll` query can be used to retrieve a paginated list of posts. +* `genesis.proto`: This file has been modified to include posts in the genesis + state of the module, which defines the initial state of the blockchain when it + is first started. + +The Ignite CLI has also generated several new files in the `x/blog/keeper` +directory that implement the CRUD-specific logic for your application. These +include: + +* `msg_server_post.go`: This file implements keeper methods for the + `CreatePost`, `UpdatePost`, and `DeletePost` messages. These methods are + called when a corresponding message is processed by the module, and they + handle the specific logic for each of the CRUD operations. +* `query_post.go`: This file implements the `Post` and `PostAll` queries, which + are used to retrieve individual posts by ID or a paginated list of posts, + respectively. +* `post.go`: This file implements the underlying functions that the keeper + methods depend on. These functions include appending (adding) posts to the + store, getting individual posts, getting the post count, and other operations + that are needed to manage the posts in the application. + +Overall, these files provide the necessary implementation for the CRUD +functionality of your blog application. They handle the specific logic for each +of the CRUD operations, as well as the underlying functions that these +operations depend on. + +Files were created and modified in the `x/blog/types` directory. + +* `messages_post.go`: This new file contains Cosmos SDK message constructors and + associated methods such as `Route()`, `Type()`, `GetSigners()`, + `GetSignBytes()`, and `ValidateBasic()`. +* `keys.go`: This file was modified to include key prefixes for storing blog + posts. By using key prefixes, we can ensure that the data for our blog posts + is kept separate from other types of data in the database, and that it can be + easily accessed when needed. +* `genesis.go`: This file was modified to define the initial (genesis) state of + the blog module, as well as the `Validate()` function for validating this + initial state. This is an important step in setting up our blockchain, as it + defines the initial data and ensures that it is valid according to the rules + of our application. +* `codec.go`: This file was modified to register our message types with the + encoder, allowing them to be properly serialized and deserialized when + transmitted over the network. + +Additionally, `*.pb.go` files were generated from `*.proto` files, and they +contain type definitions for messages, RPCs, and queries used by our +application. These files are automatically generated from the `*.proto` files +using the Protocol Buffers (protobuf) tool, which allows us to define the +structure of our data in a language-agnostic way. + +The Ignite CLI has added functionality to the `x/blog/client/cli` directory by +creating and modifying several files. +* `tx_post.go`: This file was created to implement CLI commands for broadcasting + transactions containing messages for the blog module. These commands allow + users to easily send messages to the blockchain using the Ignite CLI. +* `query_post.go`: This file was created to implement CLI commands for querying + the blog module. These commands allow users to retrieve information from the + blockchain, such as a list of blog posts. +* `tx.go`: This file was modified to add the CLI commands for broadcasting + transactions to the chain's binary. +* `query.go`: This file was also modified to add the CLI commands for querying + the chain to the chain's binary. + +As you can see, the `ignite scaffold list` command has generated and modified a +number of source code files. These files define the types of messages, logic +that gets executed when a message is processed, and the wiring that connects +everything together. This includes the logic for creating, updating, and +deleting blog posts, as well as the queries needed to retrieve this information. + +To see the generated code in action, we will need to start the blockchain. We +can do this by using the `ignite chain serve` command, which will build, +initialize, and start the blockchain for us: + +``` +ignite chain serve +``` + +Once the blockchain is running, we can use the binary to interact with it and +see how the code handles creating, updating, and deleting blog posts. We can +also see how it processes and responds to queries. This will give us a better +understanding of how our application works and allow us to test its +functionality. + +While `ignite chain serve` is running in one terminal window, open another +terminal and use the chain's binary to create a new blog post on the blockchain: + +``` +blogd tx blog create-post 'Hello, World!' 'This is a blog post' --from alice +``` + +When using the `--from` flag to specify the account that will be used to sign a +transaction, it's important to ensure that the specified account is available +for use. In a development environment, you can see a list of available accounts +in the output of the `ignite chain serve` command, or in the `config.yml` file. + +It's also worth noting that the `--from` flag is required when broadcasting +transactions. This flag specifies the account that will be used to sign the +transaction, which is a crucial step in the transaction process. Without a valid +signature, the transaction will not be accepted by the blockchain. Therefore, +it's important to ensure that the account specified with the `--from` flag is +available. + +After the transaction has been broadcasted successfully, you can query the +blockchain for the list of blog posts. To do this, you can use the `blogd q blog +list-post` command, which will return a paginated list of all the blog posts +that have been added to the blockchain. + +``` +blogd q blog list-post + +Post: +- body: This is a blog post + creator: cosmos1xz770h6g55rrj8vc9ll9krv6mr964tzhqmsu2v + id: "0" + title: Hello, World! +pagination: + next_key: null + total: "0" +``` + +By querying the blockchain, you can verify that your transaction was processed +successfully and that the blog post has been added to the chain. Additionally, +you can use other query commands to retrieve information about other data on the +blockchain, such as accounts, balances, and governance proposals. + +Let's modify the blog post that we just created by changing the `body` content. +To do this, we can use the `blogd tx blog update-post` command, which allows us +to update an existing blog post on the blockchain. When running this command, we +will need to specify the ID of the blog post that we want to modify, as well as +the new body content that we want to use. After running this command, the +transaction will be broadcasted to the blockchain and the blog post will be +updated with the new body content. + +``` +blogd tx blog update-post 0 'Hello, World!' 'This is a blog post from Alice' --from alice +``` + +Now that we have updated the blog post with new content, let's query the +blockchain again to see the changes. To do this, we can use the `blogd q blog +list-post` command, which will return a list of all the blog posts on the +blockchain. By running this command again, we can see the updated blog post in +the list, and we can verify that the changes we made have been successfully +applied to the blockchain. + + +``` +blogd q blog list-post + +Post: +- body: This is a blog post from Alice + creator: cosmos1xz770h6g55rrj8vc9ll9krv6mr964tzhqmsu2v + id: "0" + title: Hello, World! +pagination: + next_key: null + total: "0" +``` + +Let's try to delete one of the blog posts using Bob's account. However, since +the blog post was created using Alice's account, we can expect the blockchain to +check whether the user is authorized to delete the post. In this case, since Bob +is not the author of the post, his transaction should be rejected by the +blockchain. + +To delete a blog post, we can use the `blogd tx blog delete-post` command, which +allows us to delete an existing blog post on the blockchain. When running this +command, we will need to specify the ID of the blog post that we want to delete, +as well as the account that we want to use for signing the transaction. In this +case, we will use Bob's account to sign the transaction. + +After running this command, the transaction will be broadcasted to the +blockchain. However, since Bob is not the author of the post, the blockchain +should reject his transaction and the blog post will not be deleted. This is an +example of how the blockchain can enforce rules and permissions, and it shows +that only authorized users are able to make changes to the blockchain. + +``` +blogd tx blog delete-post 0 --from bob + +raw_log: 'failed to execute message; message index: 0: incorrect owner: unauthorized' +``` + +Now, let's try to delete the blog post again, but this time using Alice's +account. Since Alice is the author of the blog post, she should be authorized to +delete it. + +``` +blogd tx blog delete-post 0 --from alice +``` + +To check whether the blog post has been successfully deleted by Alice, we can +query the blockchain for a list of posts again. + +``` +blogd q blog list-post + +Post: [] +pagination: + next_key: null + total: "0" +``` + +Congratulations on successfully completing the tutorial on building a blog with +Ignite CLI! By following the instructions, you have learned how to create a new +blockchain, generate code for a "post" type with CRUD functionality, start a +local blockchain, and test out the functionality of your blog. + +Now that you have a working example of a simple application, you can experiment +with the code generated by Ignite and see how changes affect the behavior of the +application. This is a valuable skill to have, as it will allow you to customize +your application to fit your specific needs and improve the functionality of +your application. You can try making changes to the data structure or data type, +or add additional fields or functionality to the code. + +In the following tutorials, we will take a closer look at the code that Ignite +generates in order to better understand how to build blockchains. By writing +some of the code ourselves, we can gain a deeper understanding of how Ignite +works and how it can be used to create applications on a blockchain. This will +help us learn more about the capabilities of Ignite CLI and how it can be used +to build robust and powerful applications. Keep an eye out for these tutorials +and get ready to dive deeper into the world of blockchains with Ignite! \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/01-intro.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/01-intro.md new file mode 100644 index 0000000000..c3d1807902 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/01-intro.md @@ -0,0 +1,17 @@ +--- +title: In-depth tutorial +--- + +# In-depth blog tutorial + +In this tutorial, you will learn how to create a blog application as a Cosmos +SDK blockchain using the Ignite CLI by building it from scratch. This means that +you will be responsible for setting up the necessary types, messages, and +queries and writing the logic to create, read, update, and delete blog posts on +the blockchain. + +The functionality of the application you will be building will be identical to +what is generated by the Ignite CLI command `ignite scaffold list post title +body`, but you will be doing it manually in order to gain a deeper understanding +of the process. Through this tutorial, you will learn how to build a blog +application on a Cosmos SDK blockchain using the Ignite CLI in a hands-on way. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/02-scaffolding.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/02-scaffolding.md new file mode 100644 index 0000000000..a5f07f02bb --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/02-scaffolding.md @@ -0,0 +1,124 @@ +# Creating the structure + +Create a new blockchain with the following command: + +``` +ignite scaffold chain blog +``` + +This will create a new directory called `blog/` containing the necessary files +and directories for your [blockchain +application](https://docs.cosmos.network/main/basics/app-anatomy). Next, +navigate to the newly created directory by running: + +``` +cd blog +``` + +Since your app will be storing and operating with blog posts, you will need to +create a `Post` type to represent these posts. You can do this using the +following Ignite CLI command: + +``` +ignite scaffold type post title body creator id:uint +``` + +This will create a `Post` type with four fields: `title`, `body`, `creator`, all +of type `string`, and `id` of type `uint`. + +It is a good practice to commit your changes to a version control system like +Git after using Ignite's code scaffolding commands. This will allow you to +differentiate between changes made automatically by Ignite and changes made +manually by developers, and also allow you to roll back changes if necessary. +You can commit your changes to Git with the following commands: + +``` +git add . +git commit -am "ignite scaffold type post title body" +``` + +### Creating messages + +Next, you will be implementing CRUD (create, read, update, and delete) +operations for your blog posts. Since create, update, and delete operations +change the state of the application, they are considered write operations. In +Cosmos SDK blockchains, state is changed by broadcasting +[transactions](https://docs.cosmos.network/main/basics/tx-lifecycle) that +contain messages that trigger state transitions. To create the logic for +broadcasting and handling transactions with a "create post" message, you can use +the following Ignite CLI command: + +``` +ignite scaffold message create-post title body --response id:uint +``` + +This will create a "create post" message with two fields: `title` and `body`, +both of which are of type `string`. Posts will be stored in the key-value store +in a list-like data structure, where they are indexed by an incrementing integer +ID. When a new post is created, it will be assigned an ID integer. The +`--response` flag is used to return `id` of type `uint` as a response to the +"create post" message. + +To update a specific blog post in your application, you will need to create a +message called "update post" that accepts three arguments: `title`, `body`, and +`id`. The `id` argument of type `uint` is necessary to specify which blog post +you want to update. You can create this message using the Ignite CLI command: + +``` +ignite scaffold message update-post title body id:uint +``` + +To delete a specific blog post in your application, you will need to create a +message called "delete post" that accepts only the `id` of the post to be +deleted. You can create this message using the Ignite CLI command: + +``` +ignite scaffold message delete-post id:uint +``` + +### Creating queries + +[Queries](https://docs.cosmos.network/main/basics/query-lifecycle) allow users +to retrieve information from the blockchain state. In your application, you will +have two queries: "show post" and "list post". The "show post" query will allow +users to retrieve a specific post by its ID, while the "list post" query will +return a paginated list of all stored posts. + +To create the "show post" query, you can use the following Ignite CLI command: + +``` +ignite scaffold query show-post id:uint --response post:Post +``` + +This query will accept `id` of type `uint` as an argument, and will return a +`post` of type `Post` as a response. + +To create the "list post" query, you can use the following Ignite CLI command: + +``` +ignite scaffold query list-post --response post:Post --paginated +``` + +This query will return a post of type Post in a paginated output. The +`--paginated` flag indicates that the query should return its results in a +paginated format, allowing users to retrieve a specific page of results at a +time. + +## Summary + +Congratulations on completing the initial setup of your blockchain application! +You have successfully created a "post" data type and generated the necessary +code for handling three types of messages (create, update, and delete) and two +types of queries (list and show posts). + +However, at this point, the messages you have created will not trigger any state +transitions, and the queries you have created will not return any results. This +is because Ignite only generates the boilerplate code for these features, and it +is up to you to implement the necessary logic to make them functional. + +In the next chapters of the tutorial, you will learn how to implement the +message handling and query logic to complete your blockchain application. This +will involve writing code to process the messages and queries you have created +and use them to modify or retrieve data from the blockchain's state. By the end +of this process, you will have a fully functional blog application on a Cosmos +SDK blockchain. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/03-create.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/03-create.md new file mode 100644 index 0000000000..5e0ea9209e --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/03-create.md @@ -0,0 +1,319 @@ +# Creating posts + +In this chapter, we will be focusing on the process of handling a "create post" +message. This involves the use of a special type of function known as a keeper +method. [Keeper](https://docs.cosmos.network/main/building-modules/keeper) +methods are responsible for interacting with the blockchain and modifying its +state based on the instructions provided in a message. + +When a "create post" message is received, the corresponding keeper method will +be called and passed the message as an argument. The keeper method can then use +the various getter and setter functions provided by the store object to retrieve +and modify the current state of the blockchain. This allows the keeper method to +effectively process the "create post" message and make the necessary updates to +the blockchain. + +In order to keep the code for accessing and modifying the store object clean and +separate from the logic implemented in the keeper methods, we will create a new +file called `post.go`. This file will contain functions that are specifically +designed to handle operations related to creating and managing posts within the +blockchain. + +## Appending posts to the store + +```go title="x/blog/keeper/post.go" +package keeper + +import ( + "encoding/binary" + + "blog/x/blog/types" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k Keeper) AppendPost(ctx sdk.Context, post types.Post) uint64 { + count := k.GetPostCount(ctx) + post.Id = count + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.PostKey)) + appendedValue := k.cdc.MustMarshal(&post) + store.Set(GetPostIDBytes(post.Id), appendedValue) + k.SetPostCount(ctx, count+1) + return count +} +``` + +This code defines a function called `AppendPost` which belongs to a `Keeper` +type. The `Keeper` type is responsible for interacting with the blockchain and +modifying its state in response to various messages. + +The `AppendPost` function takes in two arguments: a `Context` object and a +`Post` object. The [`Context`](https://docs.cosmos.network/main/core/context) +object is a standard parameter in many functions in the Cosmos SDK and is used +to provide contextual information about the current state of the blockchain, +such as the current block height. The `Post` object represents a post that will +be added to the blockchain. + +The function begins by retrieving the current post count using the +`GetPostCount` method. You will implement this method in the next step as it has +not been implemented yet. This method is called on the `Keeper` object and takes +in a `Context` object as an argument. It returns the current number of posts +that have been added to the blockchain. + +Next, the function sets the ID of the new post to be the current post count, so +that each post has a unique identifier. It does this by assigning the value of +count to the `Id` field of the `Post` object. + +The function then creates a new +[store](https://docs.cosmos.network/main/core/store) object using the +`prefix.NewStore` function. The `prefix.NewStore` function takes in two +arguments: the `KVStore` associated with the provided context and a key prefix +for the `Post` objects. The `KVStore` is a key-value store that is used to +persist data on the blockchain, and the key prefix is used to differentiate the +`Post` objects from other types of objects that may be stored in the same +`KVStore`. + +The function then serializes the `Post` object using the `cdc.MustMarshal` +function and stores it in the blockchain using the `Set` method of the store +object. The `cdc.MustMarshal` function is part of the Cosmos SDK's +[encoding/decoding](https://docs.cosmos.network/main/core/encoding) library and +is used to convert the `Post` object into a byte slice that can be stored in the +`KVStore`. The `Set` method is called on the store object and takes in two +arguments: a key and a value. In this case, the key is a byte slice generated by +the `GetPostIDBytes` function and the value is the serialized `Post` object. You +will implement this method in the next step as it has not been implemented yet. + +Finally, the function increments the post count by one and updates the +blockchain state using the `SetPostCount` method. You will implement this method +in the next step as it has not been implemented yet. This method is called on +the Keeper object and takes in a `Context` object and a new post count as +arguments. It updates the current post count in the blockchain to be the new +post count provided. + +The function then returns the ID of the newly created post, which is the current +post count before it was incremented. This allows the caller of the function to +know the ID of the post that was just added to the blockchain. + +To complete the implementation of `AppendPost`, the following tasks need to be +performed: + +* Define `PostKey`, which will be used to store and retrieve posts from the + database. +* Implement `GetPostCount`, which will retrieve the current number of posts + stored in the database. +* Implement `GetPostIDBytes`, which will convert a post ID to a byte array. +* Implement `SetPostCount`, which will update the post count stored in the + database. + +### Post key prefix + +In the file `keys.go`, let's define the `PostKey` prefix as follows: + +```go title="x/blog/types/keys.go" +const ( + PostKey = "Post/value/" +) +``` + +This prefix will be used to uniquely identify a post within the system. It will +be used as the beginning of the key for each post, followed by the ID of the +post to create a unique key for each post. + +### Getting the post count + +In the file `post.go`, let's define the `GetPostCount` function as follows: + +```go title="x/blog/keeper/post.go" +func (k Keeper) GetPostCount(ctx sdk.Context) uint64 { + store := prefix.NewStore(ctx.KVStore(k.storeKey), []byte{}) + byteKey := types.KeyPrefix(types.PostCountKey) + bz := store.Get(byteKey) + if bz == nil { + return 0 + } + return binary.BigEndian.Uint64(bz) +} +``` + +This code defines a function named `GetPostCount` that belongs to the `Keeper` +struct. The function takes in a single argument, a context object `ctx` of type +`sdk.Context`, and returns a value of type `uint64`. + +The function begins by creating a new store using the key-value store in the +context and an empty byte slice as the prefix. It then defines a byte slice +`byteKey` using the `KeyPrefix` function from the `types` package, which takes +in the `PostCountKey`. You will define `PostCountKey` in the next step. + +The function then retrieves the value at the key `byteKey` in the store using +the `Get` method and stores it in a variable `bz`. + +Next, the function checks if the value at `byteKey` is `nil` using an if +statement. If it is `nil`, meaning that the key does not exist in the store, the +function returns 0. This indicates that there are no elements or posts +associated with the key. + +If the value at `byteKey` is not nil, the function uses the `binary` package's +`BigEndian` type to parse the bytes in `bz` and returns the resulting `uint64` +value. The `BigEndian` type is used to interpret the bytes in `bz` as a +big-endian encoded unsigned 64-bit integer. The `Uint64` method converts the +bytes to a `uint64` value and returns it. + +`GetPostCount` function is used to retrieve the total number of posts stored in +the key-value store, represented as a `uint64` value. + +In the file `keys.go`, let's define the `PostCountKey` as follows: + +```go title="x/blog/types/keys.go" +const ( + PostCountKey = "Post/count/" +) +``` + +This key will be used to keep track of the ID of the latest post added to the +store. + +### Converting post ID to bytes + +Now, let's implement `GetPostIDBytes`, which will convert a post ID to a byte +array. + +```go title="x/blog/keeper/post.go" +func GetPostIDBytes(id uint64) []byte { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, id) + return bz +} +``` + +`GetPostIDBytes` takes in a value `id` of type `uint64` and returns a value of +type `[]byte`. + +The function starts by creating a new byte slice `bz` with a length of 8 using +the `make` built-in function. It then uses the `binary` package's `BigEndian` +type to encode the value of `id` as a big-endian encoded unsigned integer and +store the result in `bz` using the `PutUint64` method. Finally, the function +returns the resulting byte slice `bz`. + +This function can be used to convert a post ID, represented as a `uint64`, to a +byte slice that can be used as a key in a key-value store. The +`binary.BigEndian.PutUint64` function encodes the `uint64` value of `id` as a +big-endian encoded unsigned integer and stores the resulting bytes in the +`[]byte` slice `bz`. The resulting byte slice can then be used as a key in the +store. + +### Updating the post count + +Implement `SetPostCount` in `post.go`, which will update the post count stored +in the database. + +```go title="x/blog/keeper/post.go" +func (k Keeper) SetPostCount(ctx sdk.Context, count uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), []byte{}) + byteKey := types.KeyPrefix(types.PostCountKey) + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, count) + store.Set(byteKey, bz) +} +``` + +This code defines a function `SetPostCount` in the `Keeper` struct. The function +takes in a context `ctx` of type `sdk.Context` and a value `count` of type +`uint64`, and does not return a value. + +The function first creates a new store by calling the `NewStore` function from +the prefix package and passing in the key-value store from the context and an +empty byte slice as the prefix. It stores the resulting store in a variable +named `store`. + +Next, the function defines a byte slice `byteKey` using the `KeyPrefix` function +from the `types` package and passing in the `PostCountKey`. The `KeyPrefix` +function returns a byte slice with the given key as a prefix. + +The function then creates a new byte slice `bz` with a length of 8 using the +`make` built-in function. It then uses the `binary` package's `BigEndian` type +to encode the value of count as a big-endian encoded unsigned integer and store +the result in `bz` using the `PutUint64` method. + +Finally, the function calls the `Set` method on the `store` variable, passing in +`byteKey` and `bz` as arguments. This sets the value at the key `byteKey` in the +store to the value `bz`. + +This function can be used to update the count of posts stored in the database. +It does this by converting the `uint64` value of count to a byte slice using the +`binary.BigEndian.PutUint64` function, and then storing the resulting byte slice +at the key `byteKey` in the store using the `Set` method. + +Now that you have implemented the code for creating blog posts, you can proceed +to implement the keeper method that is invoked when the "create post" message is +processed. + +## Handling the "create post" message + +```go title="x/blog/keeper/msg_server_create_post.go" +package keeper + +import ( + "context" + + "blog/x/blog/types" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k msgServer) CreatePost(goCtx context.Context, msg *types.MsgCreatePost) (*types.MsgCreatePostResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + var post = types.Post{ + Creator: msg.Creator, + Title: msg.Title, + Body: msg.Body, + } + id := k.AppendPost( + ctx, + post, + ) + return &types.MsgCreatePostResponse{ + Id: id, + }, nil +} +``` + +The `CreatePost` function is a message handler for the `MsgCreatePost` message +type. It is responsible for creating a new post on the blockchain based on the +information provided in the `MsgCreatePost` message. + +The function first retrieves the Cosmos SDK context from the Go context using +the `sdk.UnwrapSDKContext` function. It then creates a new `Post` object using +the `Creator`, `Title`, and `Body` fields from the MsgCreatePost message. + +Next, the function calls the `AppendPost` method on the `msgServer` object +(which is of the Keeper type) and passes in the Cosmos SDK context and the new +`Post` object as arguments. The `AppendPost` method is responsible for adding +the new post to the blockchain and returning the ID of the new post. + +Finally, the function returns a `MsgCreatePostResponse` object that contains the +ID of the new post. It also returns a nil error, indicating that the operation +was successful. + +## Summary + +Great job! You have successfully implemented the logic for writing blog posts to +the blockchain store and the keeper method that will be called when a "create +post" message is processed. + +The `AppendPost` keeper method retrieves the current post count, sets the ID of +the new post to be the current post count, serializes the post object, and +stores it in the blockchain using the `Set` method of the `store` object. The +key for the post in the store is a byte slice generated by the `GetPostIDBytes` +function and the value is the serialized post object. The function then +increments the post count by one and updates the blockchain state using the +`SetPostCount` method. + +The `CreatePost` handler method receives a `MsgCreatePost` message containing +the data for the new post, creates a new `Post` object using this data, and +passes it to the `AppendPost` keeper method to be added to the blockchain. It +then returns a `MsgCreatePostResponse` object containing the ID of the newly +created post. + +By implementing these methods, you have successfully implemented the necessary +logic for handling "create post" messages and adding posts to the blockchain. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/04-update.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/04-update.md new file mode 100644 index 0000000000..7be1ca80bc --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/04-update.md @@ -0,0 +1,127 @@ +# Updating posts + +In this chapter, we will be focusing on the process of handling an "update post" +message. + +To update a post, you need to retrieve the specific post from the store using +the "Get" operation, modify the values, and then write the updated post back to +the store using the "Set" operation. + +Let's first implement a getter and a setter logic. + +## Getting posts + +Implement the `GetPost` keeper method in `post.go`: + +```go title="x/blog/keeper/post.go" +func (k Keeper) GetPost(ctx sdk.Context, id uint64) (val types.Post, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.PostKey)) + b := store.Get(GetPostIDBytes(id)) + if b == nil { + return val, false + } + k.cdc.MustUnmarshal(b, &val) + return val, true +} +``` + +`GetPost` takes in two arguments: a context `ctx` and an `id` of type `uint64` +representing the ID of the post to be retrieved. It returns a `types.Post` +struct containing the values of the post, and a boolean value indicating whether +the post was found in the database. + +The function first creates a `store` using the `prefix.NewStore` method, passing +in the key-value store from the context and the `types.KeyPrefix` function +applied to the `types.PostKey` constant as arguments. It then attempts to +retrieve the post from the store using the `store.Get` method, passing in the ID +of the post as a byte slice. If the post is not found in the store, it returns +an empty `types.Post` struct and a boolean value of false. + +If the post is found in the store, the function unmarshals the retrieved byte +slice into a `types.Post` struct using the `cdc.MustUnmarshal` method, passing +in a pointer to the val variable as an argument. It then returns the val struct +and a boolean value of true to indicate that the post was found in the database. + +## Setting posts + +Implement the `SetPost` keeper method in `post.go`: + +```go title="x/blog/keeper/post.go" +func (k Keeper) SetPost(ctx sdk.Context, post types.Post) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.PostKey)) + b := k.cdc.MustMarshal(&post) + store.Set(GetPostIDBytes(post.Id), b) +} +``` + +`SetPost` takes in two arguments: a context `ctx` and a `types.Post` struct +containing the updated values for the post. The function does not return +anything. + +The function first creates a store using the `prefix.NewStore` method, passing +in the key-value store from the context and the `types.KeyPrefix` function +applied to the `types.PostKey` constant as arguments. It then marshals the +updated post struct into a byte slice using the `cdc.MustMarshal` method, +passing in a pointer to the post struct as an argument. Finally, it updates the +post in the store using the `store.Set` method, passing in the ID of the post as +a byte slice and the marshaled post struct as arguments. + + +## Update posts + +```go title="x/blog/keeper/msg_server_update_post.go" +package keeper + +import ( + "context" + "fmt" + + "blog/x/blog/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) UpdatePost(goCtx context.Context, msg *types.MsgUpdatePost) (*types.MsgUpdatePostResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + var post = types.Post{ + Creator: msg.Creator, + Id: msg.Id, + Title: msg.Title, + Body: msg.Body, + } + val, found := k.GetPost(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != val.Creator { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + k.SetPost(ctx, post) + return &types.MsgUpdatePostResponse{}, nil +} +``` + +`UpdatePost` takes in a context and a message `MsgUpdatePost` as input, and +returns a response `MsgUpdatePostResponse` and an `error`. The function first +retrieves the current values of the post from the database using the provided +`msg.Id`, and checks if the post exists and if the `msg.Creator` is the same as +the current owner of the post. If either of these checks fail, it returns an +error. If both checks pass, it updates the post in the database with the new +values provided in `msg`, and returns a response without an error. + +## Summary + +Well done! You have successfully implemented a number of important methods for +managing posts within a store. + +The `GetPost` method allows you to retrieve a specific post from the store based +on its unique identification number, or post ID. This can be useful for +displaying a specific post to a user, or for updating it. + +The `SetPost` method enables you to update an existing post in the store. This +can be useful for correcting mistakes or updating the content of a post as new +information becomes available. + +Finally, you implemented the `UpdatePost` method, which is called whenever the +blockchain processes a message requesting an update to a post. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/05-delete.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/05-delete.md new file mode 100644 index 0000000000..4bef35b8de --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/05-delete.md @@ -0,0 +1,74 @@ +# Deleting posts + +In this chapter, we will be focusing on the process of handling a "delete post" +message. + +## Removing posts + +```go title="x/blog/keeper/post.go" +func (k Keeper) RemovePost(ctx sdk.Context, id uint64) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.PostKey)) + store.Delete(GetPostIDBytes(id)) +} +``` + +`RemovePost` function takes in two arguments: a context object `ctx` and an +unsigned integer `id`. The function removes a post from a key-value store by +deleting the key-value pair associated with the given `id`. The key-value store +is accessed using the `store` variable, which is created by using the `prefix` +package to create a new store using the context's key-value store and a prefix +based on the `PostKey` constant. The `Delete` method is then called on the +`store` object, using the `GetPostIDBytes` function to convert the `id` to a +byte slice as the key to delete. + +## Deleting posts + +```go title="x/blog/keeper/msg_server_delete_post.go" +package keeper + +import ( + "context" + "fmt" + + "blog/x/blog/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (k msgServer) DeletePost(goCtx context.Context, msg *types.MsgDeletePost) (*types.MsgDeletePostResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + val, found := k.GetPost(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrap(sdkerrors.ErrKeyNotFound, fmt.Sprintf("key %d doesn't exist", msg.Id)) + } + if msg.Creator != val.Creator { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "incorrect owner") + } + k.RemovePost(ctx, msg.Id) + return &types.MsgDeletePostResponse{}, nil +} +``` + +`DeletePost` takes in two arguments: a context `goCtx` of type `context.Context` +and a pointer to a message of type `*types.MsgDeletePost`. The function returns +a pointer to a message of type `*types.MsgDeletePostResponse` and an `error`. + +Inside the function, the context is unwrapped using the `sdk.UnwrapSDKContext` +function and the value of the post with the ID specified in the message is +retrieved using the `GetPost` function. If the post is not found, an error is +returned using the `sdkerrors.Wrap` function. If the creator of the message does +not match the creator of the post, another error is returned. If both of these +checks pass, the `RemovePost` function is called with the context and the ID of +the post to delete the post. Finally, the function returns a response message +with no data and a `nil` error. + +In short, `DeletePost` handles a request to delete a post, ensuring that the +requester is the creator of the post before deleting it. + +## Summary + +Congratulations on completing the implementation of the `RemovePost` and +`DeletePost` methods in the keeper package! These methods provide functionality +for removing a post from a store and handling a request to delete a post, +respectively. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/06-show.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/06-show.md new file mode 100644 index 0000000000..b7e60f3813 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/06-show.md @@ -0,0 +1,81 @@ +# Show a post + +In this chapter, you will implement a feature in your blogging application that +enables users to retrieve individual blog posts by their unique ID. This ID is +assigned to each blog post when it is created and stored on the blockchain. By +adding this querying functionality, users will be able to easily retrieve +specific blog posts by specifying their ID. + +## Show post + +Let's implement the `ShowPost` keeper method that will be called when a user +makes a query to the blockchain application, specifying the ID of the desired +post. + +```go title="x/blog/keeper/query_show_post.go" +package keeper + +import ( + "context" + + "blog/x/blog/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) ShowPost(goCtx context.Context, req *types.QueryShowPostRequest) (*types.QueryShowPostResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + ctx := sdk.UnwrapSDKContext(goCtx) + post, found := k.GetPost(ctx, req.Id) + if !found { + return nil, sdkerrors.ErrKeyNotFound + } + + return &types.QueryShowPostResponse{Post: post}, nil +} +``` + +`ShowPost` is a function for retrieving a single post object from the +blockchain's state. It takes in two arguments: a `context.Context` object called +`goCtx` and a pointer to a `types.QueryShowPostRequest` object called `req`. It +returns a pointer to a `types.QueryShowPostResponse` object and an `error`. + +The function first checks if the `req` argument is `nil`. If it is, it returns +an `error` with the code `InvalidArgument` and the message "invalid request" +using the `status.Error` function from the `google.golang.org/grpc/status` +package. + +If the `req` argument is not `nil`, the function unwraps the `sdk.Context` +object from the `context.Context` object using the `sdk.UnwrapSDKContext` +function. It then retrieves a post object with the specified `Id` from the +blockchain's state using the `GetPost` function, and checks if the post was +found by checking the value of the `found` boolean variable. If the post was not +found, it returns an error with the type `sdkerrors.ErrKeyNotFound`. + +If the post was found, the function creates a new `types.QueryShowPostResponse` +object with the retrieved post object as a field, and returns a pointer to this +object and a `nil` error. + +## Modify `QueryShowPostResponse` + +Include the option `[(gogoproto.nullable) = false]` in the `post` field in the +`QueryShowPostResponse` message to generate the field without a pointer. + +```proto title="proto/blog/blog/query.proto" +message QueryShowPostResponse { + // highlight-next-line + Post post = 1 [(gogoproto.nullable) = false]; +} +``` + +Run the command to generate Go files from proto: + +``` +ignite generate proto-go +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/07-list.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/07-list.md new file mode 100644 index 0000000000..268a3349a5 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/07-list.md @@ -0,0 +1,97 @@ +# List posts + +In this chapter, you will develop a feature that enables users to retrieve all +of the blog posts stored on your blockchain application. The feature will allow +users to perform a query and receive a paginated response, which means that the +output will be divided into smaller chunks or "pages" of data. This will allow +users to more easily navigate and browse through the list of posts, as they will +be able to view a specific number of posts at a time rather than having to +scroll through a potentially lengthy list all at once. + +## List posts + +Let's implement the `ListPost` keeper method that will be called when a user +makes a query to the blockchain application, requesting a paginated list of all +the posts stored on chain. + +```go title="x/blog/keeper/query_list_post.go" +package keeper + +import ( + "context" + + "blog/x/blog/types" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/query" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) ListPost(goCtx context.Context, req *types.QueryListPostRequest) (*types.QueryListPostResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var posts []types.Post + ctx := sdk.UnwrapSDKContext(goCtx) + + store := ctx.KVStore(k.storeKey) + postStore := prefix.NewStore(store, types.KeyPrefix(types.PostKey)) + + pageRes, err := query.Paginate(postStore, req.Pagination, func(key []byte, value []byte) error { + var post types.Post + if err := k.cdc.Unmarshal(value, &post); err != nil { + return err + } + + posts = append(posts, post) + return nil + }) + + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryListPostResponse{Post: posts, Pagination: pageRes}, nil +} +``` + +`ListPost` takes in two arguments: a context object and a request object of type +`QueryListPostRequest`. It returns a response object of type +`QueryListPostResponse` and an error. + +The function first checks if the request object is `nil` and returns an error +with a `InvalidArgument` code if it is. It then initializes an empty slice of +`Post` objects and unwraps the context object. + +It retrieves a key-value store from the context using the `storeKey` field of +the keeper struct and creates a new store using a prefix of the `PostKey`. It +then calls the `Paginate` function from the `query` package on the store and the +pagination information in the request object. The function passed as an argument +to Paginate iterates over the key-value pairs in the store and unmarshals the +values into `Post` objects, which are then appended to the `posts` slice. + +If an error occurs during pagination, the function returns an `Internal error` +with the error message. Otherwise, it returns a `QueryListPostResponse` object +with the list of posts and pagination information. + +## Modify `QueryListPostResponse` + +Add a `repeated` keyword to return a list of posts and include the option +`[(gogoproto.nullable) = false]` to generate the field without a pointer. + +```proto title="proto/blog/blog/query.proto" +message QueryListPostResponse { + // highlight-next-line + repeated Post post = 1 [(gogoproto.nullable) = false]; + cosmos.base.query.v1beta1.PageResponse pagination = 2; +} +``` + +Run the command to generate Go files from proto: + +``` +ignite generate proto-go +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/08-play.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/08-play.md new file mode 100644 index 0000000000..abda90113f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/08-play.md @@ -0,0 +1,97 @@ +# Play + +## Create a blog post by Alice + +``` +blogd tx blog create-post hello world --from alice +``` + +## Show a blog post + +``` +blogd q blog show-post 0 +``` + +```yml +post: + body: world + creator: cosmos1x33ummgkjdd6h2frlugt3tft7vnc0nxyfxnx9h + id: "0" + title: hello +``` + +## Create a blog post by Bob + +``` +blogd tx blog create-post foo bar --from bob +``` + +## List all blog posts with pagination + +``` +blogd q blog list-post +``` + +```yml +pagination: + next_key: null + total: "2" +post: +- body: world + creator: cosmos1x33ummgkjdd6h2frlugt3tft7vnc0nxyfxnx9h + id: "0" + title: hello +- body: bar + creator: cosmos1ysl9ws3fdamrrj4fs9ytzrrzw6ul3veddk7gz3 + id: "1" + title: foo +``` + +## Update a blog post + +``` +blogd tx blog update-post hello cosmos 0 --from alice +``` + +``` +blogd q blog show-post 0 +``` + +```yml +post: + body: cosmos + creator: cosmos1x33ummgkjdd6h2frlugt3tft7vnc0nxyfxnx9h + id: "0" + title: hello +``` + +## Delete a blog post + +``` +blogd tx blog delete-post 0 --from alice +``` + +``` +blogd q blog list-post +``` + +```yml +pagination: + next_key: null + total: "1" +post: +- body: bar + creator: cosmos1ysl9ws3fdamrrj4fs9ytzrrzw6ul3veddk7gz3 + id: "1" + title: foo +``` + +## Delete a blog post unsuccessfully + +``` +blogd tx blog delete-post 1 --from alice +``` + +```yml +raw_log: 'failed to execute message; message index: 0: incorrect owner: unauthorized' +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/09-summary.md b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/09-summary.md new file mode 100644 index 0000000000..c841606652 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/09-summary.md @@ -0,0 +1,22 @@ +# Summary + +Congratulations on completing the Blog tutorial and building your first +functional application-specific blockchain using Ignite and Cosmos SDK! This is +a significant accomplishment, and you should be proud of the hard work and +dedication you put into it. + +One of the great things about using Ignite is that it allows you to quickly +generate most of the code for your app with just a few commands. This not only +saves you time, but also provides a solid structure for you to build upon as you +develop your app further. In this tutorial, you were able to create code for +handling four types of messages and two types of queries, which are important +building blocks for any blockchain application. + +You also tackled the task of implementing business-specific logic for creating, +updating, and deleting blog posts, as well as fetching individual blog posts by +ID and paginated lists of posts. You should now have a good understanding of how +to implement this sort of functionality in a blockchain context. + +Overall, completing this tutorial is a major accomplishment, and you should feel +confident in your ability to continue developing and expanding upon your app. +Keep up the great work, and keep learning and growing as a developer! \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/_category_.json b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/_category_.json new file mode 100644 index 0000000000..bfc03e31cc --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/04-blog/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Module basics: Blog", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/00-intro.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/00-intro.md new file mode 100644 index 0000000000..9c3380bcd9 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/00-intro.md @@ -0,0 +1,86 @@ +# DeFi Loan + +Decentralized finance (DeFi) is a rapidly growing sector of the blockchain +ecosystem that is transforming the way we think about financial instruments and +services. DeFi offers a wide range of innovative financial products and +services, including lending, borrowing, spot trading, margin trading, and flash +loans, that are accessible to anyone with an internet connection and a digital +wallet. + +One of the key benefits of DeFi is that it allows end users to access financial +instruments and services quickly and easily, without the need for complex +onboarding processes or the submission of personal documents such as passports +or background checks. This makes DeFi an attractive alternative to traditional +banking systems, which can be slow, costly, and inconvenient. + +In this tutorial, you will learn how to create a DeFi platform that enables +users to lend and borrow digital assets from each other. The platform you will +build will be powered by a blockchain, which provides a decentralized and +immutable record of all transactions. This ensures that the platform is +transparent, secure, and resistant to fraud. + +A loan is a financial transaction in which one party, the borrower, receives a +certain amount of assets, such as money or digital tokens, and agrees to pay +back the loan amount plus a fee to the lender by a predetermined deadline. To +secure the loan, the borrower provides collateral, which may be seized by the +lender if the borrower fails to pay back the loan as agreed. + +A loan has several properties that define its terms and conditions. + +The `id` is a unique identifier that is used to identify the loan on a +blockchain. + +The `amount` is the amount of assets that are being lent to the borrower. + +The `fee` is the cost that the borrower must pay to the lender for the loan. + +The `collateral` is the asset or assets that the borrower provides to the lender +as security for the loan. + +The `deadline` is the date by which the borrower must pay back the loan. If the +borrower fails to pay back the loan by the deadline, the lender may choose to +liquidate the loan and seize the collateral. + +The `state` of a loan describes the current status of the loan and can take on +several values, such as `requested`, `approved`, `paid`, `cancelled`, or +`liquidated`. A loan is in the `requested` state when the borrower first submits +a request for the loan. If the lender approves the request, the loan moves to +the `approved` state. When the borrower repays the loan, the loan moves to the +`paid` state. If the borrower cancels the loan before it is approved, the loan +moves to the `cancelled` state. If the borrower is unable to pay back the loan +by the deadline, the lender may choose to liquidate the loan and seize the +collateral. In this case, the loan moves to the `liquidated` state. + +In a loan transaction, there are two parties involved: the borrower and the +lender. The borrower is the party that requests the loan and agrees to pay back +the loan amount plus a fee to the lender by a predetermined deadline. The lender +is the party that approves the loan request and provides the borrower with the +loan amount. + +As a borrower, you should be able to perform several actions on the loan +platform. These actions may include: + +* requesting a loan, +* canceling a loan, +* repaying a loan. + +Requesting a loan allows you to specify the terms and conditions of the loan, +including the amount, the fee, the collateral, and the deadline for repayment. +If you cancel a loan, you can withdraw your request for the loan before it is +approved or funded. Repaying a loan allows you to pay back the loan amount plus +the fee to the lender in accordance with the loan terms. + +As a lender, you should be able to perform two actions on the platform: + +* approving a loan +* liquidating a loan. + +Approving a loan allows you to accept the terms and conditions of the loan and +send the loan amount to the borrower. Liquidating a loan allows the lender to +seize the collateral if you are unable to pay back the loan by the deadline. + +By performing these actions, lenders and borrowers can interact with each other +and facilitate the lending and borrowing of digital assets on the platform. The +platform enables users to access financial instruments and services that allow +them to manage their assets and achieve their financial goals in a secure and +transparent manner. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/01-init.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/01-init.md new file mode 100644 index 0000000000..9a979da953 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/01-init.md @@ -0,0 +1,72 @@ +# Creating a structure of the application + +To create a structure for a blockchain application that enables users to lend +and borrow digital assets from each other, use the Ignite CLI to generate the +necessary code. + +First, create a new blockchain called `loan` by running the following command: + +``` +ignite scaffold chain loan --no-module +``` + +The `--no-module` flag tells Ignite not to create a default module. Instead, you +will create the module yourself in the next step. + +Next, change the directory to `loan/`: + +``` +cd loan +``` + +Create a module with a dependency on the standard Cosmos SDK `bank` module by +running the following command: + +``` +ignite scaffold module loan --dep bank +``` + +Create a `loan` model with a list of properties. + +``` +ignite scaffold list loan amount fee collateral deadline state borrower lender --no-message +``` + +The `--no-message` flag tells Ignite not to generate Cosmos SDK messages for +creating, updating, and deleting loans. Instead, you will generate the code for +custom messages. + + +To generate the code for handling the messages for requesting, approving, +repaying, liquidating, and cancelling loans, run the following commands: + +``` +ignite scaffold message request-loan amount fee collateral deadline +``` + +``` +ignite scaffold message approve-loan id:uint +``` + +``` +ignite scaffold message repay-loan id:uint +``` + +``` +ignite scaffold message liquidate-loan id:uint +``` + +``` +ignite scaffold message cancel-loan id:uint +``` + +Great job! By using a few simple commands with Ignite CLI, you have successfully +set up the foundation for your blockchain application. You have created a loan +model and included keeper methods to allow interaction with the store. In +addition, you have also implemented message handlers for five custom messages. + +Now that the basic structure is in place, it's time to move on to the next phase +of development. In the coming sections, you will be focusing on implementing the +business logic within the message handlers you have created. This will involve +writing code to define the specific actions and processes that should be carried +out when each message is received. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/02-bank.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/02-bank.md new file mode 100644 index 0000000000..440c806e79 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/02-bank.md @@ -0,0 +1,32 @@ +# Importing methods from the Bank keeper + +In the previous step you have created the `loan` module with `ignite scaffold +module` using `--dep bank`. This command created a new module and added the +`bank` keeper to the `loan` module, which allows you to add and use bank's +keeper methods in loan's keeper methods. + +To see the changes made by `--dep bank`, review the following files: +`x/loan/keeper/keeper.go` and `x/loan/module.go`. + +Ignite takes care of adding the `bank` keeper, but you still need to tell the +`loan` module which `bank` methods you will be using. You will be using three +methods: `SendCoins`, `SendCoinsFromAccountToModule`, and +`SendCoinsFromModuleToAccount`. You can do that by adding method signatures to +the `BankKeeper` interface: + +```go title="x/loan/types/expected_keepers.go" +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type BankKeeper interface { + SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + // highlight-start + SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error + // highlight-end +} +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/03-request.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/03-request.md new file mode 100644 index 0000000000..a68aed6845 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/03-request.md @@ -0,0 +1,117 @@ +# Request a loan + +Implement `RequestLoan` keeper method that will be called whenever a user +requests a loan. `RequestLoan` creates a new loan with the provided data, sends +the collateral from the borrower's account to a module account, and adds the +loan to the blockchain's store. + +## Keeper method + +```go title="x/loan/keeper/msg_server_request_loan.go" +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "loan/x/loan/types" +) + +func (k msgServer) RequestLoan(goCtx context.Context, msg *types.MsgRequestLoan) (*types.MsgRequestLoanResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + var loan = types.Loan{ + Amount: msg.Amount, + Fee: msg.Fee, + Collateral: msg.Collateral, + Deadline: msg.Deadline, + State: "requested", + Borrower: msg.Creator, + } + borrower, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + collateral, err := sdk.ParseCoinsNormalized(loan.Collateral) + if err != nil { + panic(err) + } + sdkError := k.bankKeeper.SendCoinsFromAccountToModule(ctx, borrower, types.ModuleName, collateral) + if sdkError != nil { + return nil, sdkError + } + k.AppendLoan(ctx, loan) + return &types.MsgRequestLoanResponse{}, nil +} +``` + +The function takes in two arguments: a `context.Context` object and a pointer to +a `types.MsgRequestLoan` struct. It returns a pointer to a +`types.MsgRequestLoanResponse` struct and an `error` object. + +The first thing the function does is create a new `types.Loan` struct with the +data from the input `types.MsgRequestLoan` struct. It sets the `State` field of +`the types.Loan` struct to "requested". + +Next, the function gets the borrower's address from the `msg.Creator` field of +the input `types.MsgRequestLoan` struct. It then parses the `loan.Collateral` +field (which is a string) into `sdk.Coins` using the `sdk.ParseCoinsNormalized` +function. + +The function then sends the collateral from the borrower's account to a module +account using the `k.bankKeeper.SendCoinsFromAccountToModule` function. Finally, +it adds the new loan to a keeper using the `k.AppendLoan` function. The function +returns a `types.MsgRequestLoanResponse` struct and a `nil` error if all goes +well. + +## Basic message validation + +When a loan is created, a certain message input validation is required. You want +to throw error messages in case the end user tries impossible inputs. + +```go title="x/loan/types/message_request_loan.go" +package types + +import ( + // highlight-next-line + "strconv" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func (msg *MsgRequestLoan) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + // highlight-start + amount, _ := sdk.ParseCoinsNormalized(msg.Amount) + if !amount.IsValid() { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "amount is not a valid Coins object") + } + if amount.Empty() { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "amount is empty") + } + fee, _ := sdk.ParseCoinsNormalized(msg.Fee) + if !fee.IsValid() { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "fee is not a valid Coins object") + } + deadline, err := strconv.ParseInt(msg.Deadline, 10, 64) + if err != nil { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "deadline is not an integer") + } + if deadline <= 0 { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "deadline should be a positive integer") + } + collateral, _ := sdk.ParseCoinsNormalized(msg.Collateral) + if !collateral.IsValid() { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "collateral is not a valid Coins object") + } + if collateral.Empty() { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "collateral is empty") + } + // highlight-end + return nil +} +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/04-approve.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/04-approve.md new file mode 100644 index 0000000000..4fb75acf66 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/04-approve.md @@ -0,0 +1,97 @@ +# Approve a loan + +After a loan request has been made, it is possible for another account to +approve the loan and accept the terms proposed by the borrower. This process +involves the transfer of the requested funds from the lender to the borrower. + +To be eligible for approval, a loan must have a status of "requested." This +means that the borrower has made a request for a loan and is waiting for a +lender to agree to the terms and provide the funds. Once a lender has decided to +approve the loan, they can initiate the transfer of the funds to the borrower. + +Upon loan approval, the status of the loan is changed to "approved." This +signifies that the funds have been successfully transferred and that the loan +agreement is now in effect. + +## Keeper method + +```go title="x/loan/keeper/msg_server_approve_loan.go" +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "loan/x/loan/types" +) + +func (k msgServer) ApproveLoan(goCtx context.Context, msg *types.MsgApproveLoan) (*types.MsgApproveLoanResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + loan, found := k.GetLoan(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrapf(sdkerrors.ErrKeyNotFound, "key %d doesn't exist", msg.Id) + } + if loan.State != "requested" { + return nil, sdkerrors.Wrapf(types.ErrWrongLoanState, "%v", loan.State) + } + lender, _ := sdk.AccAddressFromBech32(msg.Creator) + borrower, _ := sdk.AccAddressFromBech32(loan.Borrower) + amount, err := sdk.ParseCoinsNormalized(loan.Amount) + if err != nil { + return nil, sdkerrors.Wrap(types.ErrWrongLoanState, "Cannot parse coins in loan amount") + } + err = k.bankKeeper.SendCoins(ctx, lender, borrower, amount) + if err != nil { + return nil, err + } + loan.Lender = msg.Creator + loan.State = "approved" + k.SetLoan(ctx, loan) + return &types.MsgApproveLoanResponse{}, nil +} +``` + +`ApproveLoan` takes a context and a message of type `*types.MsgApproveLoan` as +input, and returns a pointer to a `types.MsgApproveLoanResponse` and an `error`. + +The function first retrieves a loan object by calling `k.GetLoan(ctx, msg.Id)`, +where `ctx` is a context object, `k` is the `msgServer` object, `GetLoan` is a +method on `k`, and `msg.Id` is a field of the msg object passed as an argument. +If the loan is not found, it returns `nil` and an error wrapped with +`sdkerrors.ErrKeyNotFound`. + +Next, the function checks if the loan's state is `"requested"`. If it is not, it +returns `nil` and an error wrapped with `types.ErrWrongLoanState`. + +If the loan's state is `"requested"`, the function parses the addresses of the +lender and borrower from bech32 strings, and then parses the `amount` of the +loan from a string. If there is an error parsing the coins in the loan amount, +it returns `nil` and an error wrapped with `types.ErrWrongLoanState`. + +Otherwise, the function calls the `SendCoins` method on the `k.bankKeeper` +object, passing it the context, the lender and borrower addresses, and the +amount of the loan. It then updates the lender field of the loan object and sets +its state to `"approved"`. Finally, it stores the updated loan object by calling +`k.SetLoan(ctx, loan)`. + +At the end, the function returns a `types.MsgApproveLoanResponse` object and +`nil` for the error. + +## Register a custom error + +To register the custom error `ErrWrongLoanState` that is used in the +`ApproveLoan` function, modify the "errors.go" file: + +```go title="x/loan/types/errors.go" +package types + +import ( + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var ( + ErrWrongLoanState = sdkerrors.Register(ModuleName, 2, "wrong loan state") +) +``` \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/05-repay.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/05-repay.md new file mode 100644 index 0000000000..72150f695f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/05-repay.md @@ -0,0 +1,97 @@ +# Repay a loan + +The `RepayLoan` method is responsible for handling the repayment of a loan. This +involves transferring the borrowed funds, along with any agreed upon fees, from +the borrower to the lender. In addition, the collateral that was provided as +part of the loan agreement will be released from the escrow account and returned +to the borrower. + +It is important to note that the `RepayLoan` method can only be called under +certain conditions. Firstly, the transaction must be signed by the borrower of +the loan. This ensures that only the borrower has the ability to initiate the +repayment process. Secondly, the loan must be in an approved status. This means +that the loan has received approval and is ready to be repaid. + +To implement the `RepayLoan` method, we must ensure that these conditions are +met before proceeding with the repayment process. Once the necessary checks have +been performed, the method can then handle the transfer of funds and the release +of the collateral from the escrow account. + +## Keeper method + +```go title="x/loan/keeper/msg_server_repay_loan.go" +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "loan/x/loan/types" +) + +func (k msgServer) RepayLoan(goCtx context.Context, msg *types.MsgRepayLoan) (*types.MsgRepayLoanResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + loan, found := k.GetLoan(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrapf(sdkerrors.ErrKeyNotFound, "key %d doesn't exist", msg.Id) + } + if loan.State != "approved" { + return nil, sdkerrors.Wrapf(types.ErrWrongLoanState, "%v", loan.State) + } + lender, _ := sdk.AccAddressFromBech32(loan.Lender) + borrower, _ := sdk.AccAddressFromBech32(loan.Borrower) + if msg.Creator != loan.Borrower { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "Cannot repay: not the borrower") + } + amount, _ := sdk.ParseCoinsNormalized(loan.Amount) + fee, _ := sdk.ParseCoinsNormalized(loan.Fee) + collateral, _ := sdk.ParseCoinsNormalized(loan.Collateral) + err := k.bankKeeper.SendCoins(ctx, borrower, lender, amount) + if err != nil { + return nil, err + } + err = k.bankKeeper.SendCoins(ctx, borrower, lender, fee) + if err != nil { + return nil, err + } + err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, borrower, collateral) + if err != nil { + return nil, err + } + loan.State = "repayed" + k.SetLoan(ctx, loan) + return &types.MsgRepayLoanResponse{}, nil +} +``` + +`RepayLoan` takes in two arguments: a context and a pointer to a +`types.MsgRepayLoan` type. It returns a pointer to a +`types.MsgRepayLoanResponse` type and an `error`. + +The method first retrieves a loan from storage by passing the provided loan ID +to the `k.GetLoan` method. If the loan cannot be found, the method returns an +error wrapped in a `sdkerrors.ErrKeyNotFound` error. + +The method then checks that the state of the loan is "approved". If it is not, +the method returns an error wrapped in a `types.ErrWrongLoanState` error. + +Next, the method converts the lender and borrower addresses stored in the loan +struct to `sdk.AccAddress` types using the `sdk.AccAddressFromBech32` function. +It then checks that the transaction is signed by the borrower of the loan by +comparing the `msg.Creator` field to the borrower address stored in the loan +struct. If these do not match, the method returns an error wrapped in a +`sdkerrors.ErrUnauthorized` error. + +The method then parses the loan amount, fee, and collateral stored in the loan +struct as `sdk.Coins` using the `sdk.ParseCoinsNormalized` function. It then +uses the `k.bankKeeper.SendCoins` function to transfer the loan amount and fee +from the borrower to the lender. It then uses the +`k.bankKeeper.SendCoinsFromModuleToAccount` function to transfer the collateral +from the escrow account to the borrower. + +Finally, the method updates the state of the loan to "repayed" and stores the +updated loan in storage using the `k.SetLoan` method. The method returns a +`types.MsgRepayLoanResponse` and a `nil` error to indicate that the repayment +process was successful. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/06-liquidate.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/06-liquidate.md new file mode 100644 index 0000000000..8d49058b76 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/06-liquidate.md @@ -0,0 +1,89 @@ +# Liquidate loan + +The `LiquidateLoan` method is a function that allows the lender to sell off the +collateral belonging to the borrower in the event that the borrower has failed +to repay the loan by the specified deadline. This process is known as +"liquidation" and is typically carried out as a way for the lender to recoup +their losses in the event that the borrower is unable to fulfill their repayment +obligations. + +During the liquidation process, the collateral tokens that have been pledged by +the borrower as security for the loan are transferred from the borrower's +account to the lender's account. This transfer is initiated by the lender and is +typically triggered when the borrower fails to repay the loan by the agreed upon +deadline. Once the collateral has been transferred, the lender can then sell it +off in order to recoup their losses and compensate for the unpaid loan. + +## Keeper method + +```go title="x/loan/keeper/msg_server_liquidate_loan.go" +package keeper + +import ( + "context" + "strconv" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "loan/x/loan/types" +) + +func (k msgServer) LiquidateLoan(goCtx context.Context, msg *types.MsgLiquidateLoan) (*types.MsgLiquidateLoanResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + loan, found := k.GetLoan(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrapf(sdkerrors.ErrKeyNotFound, "key %d doesn't exist", msg.Id) + } + if loan.Lender != msg.Creator { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "Cannot liquidate: not the lender") + } + if loan.State != "approved" { + return nil, sdkerrors.Wrapf(types.ErrWrongLoanState, "%v", loan.State) + } + lender, _ := sdk.AccAddressFromBech32(loan.Lender) + collateral, _ := sdk.ParseCoinsNormalized(loan.Collateral) + deadline, err := strconv.ParseInt(loan.Deadline, 10, 64) + if err != nil { + panic(err) + } + if ctx.BlockHeight() < deadline { + return nil, sdkerrors.Wrap(types.ErrDeadline, "Cannot liquidate before deadline") + } + err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, lender, collateral) + if err != nil { + return nil, err + } + loan.State = "liquidated" + k.SetLoan(ctx, loan) + return &types.MsgLiquidateLoanResponse{}, nil +} +``` + +`LiquidateLoan` takes in a context and a `types.MsgLiquidateLoan` message as input and returns a types.MsgLiquidateLoanResponse message and an error as output. + +The function first retrieves a loan using the `GetLoan` method and the `Id` field of the input message. If the loan is not found, it returns an error using the `sdkerrors.Wrap` function and the `sdkerrors.ErrKeyNotFound` error code. + +Next, the function checks that the `Creator` field of the input message is the same as the `Lender` field of the loan. If they are not the same, it returns an error using the `sdkerrors.Wrap` function and the `sdkerrors.ErrUnauthorized` error code. + +The function then checks that the State field of the loan is equal to "approved". If it is not, it returns an error using the `sdkerrors.Wrapf` function and the `types.ErrWrongLoanState` error code. + +The function then converts the Lender field of the loan to an address using the `sdk.AccAddressFromBech32` function and the `Collateral` field to coins using the `sdk.ParseCoinsNormalized` function. It also converts the `Deadline` field to an integer using the `strconv.ParseInt` function. If this function returns an error, it panics. + +Finally, the function checks that the current block height is greater than or equal to the deadline. If it is not, it returns an error using the `sdkerrors.Wrap` function and the `types.ErrDeadline` error code. If all checks pass, the function uses the `bankKeeper.SendCoinsFromModuleToAccount` method to transfer the collateral from the module account to the lender's account and updates the `State` field of the loan to `"liquidated"`. It then stores the updated loan using the `SetLoan` method and returns a `types.MsgLiquidateLoanResponse` message with no error. + +## Register a custom error + +```go title="x/loan/types/errors.go" +package types + +import ( + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var ( + ErrWrongLoanState = sdkerrors.Register(ModuleName, 2, "wrong loan state") + // highlight-next-line + ErrDeadline = sdkerrors.Register(ModuleName, 3, "deadline") +) +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/07-cancel.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/07-cancel.md new file mode 100644 index 0000000000..3997072a92 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/07-cancel.md @@ -0,0 +1,73 @@ +# Cancel a loan + +As a borrower, you have the option to cancel a loan you have created if you no +longer want to proceed with it. However, this action is only possible if the +loan's current status is marked as "requested". + +If you decide to cancel the loan, the collateral tokens that were being held as +security for the loan will be transferred back to your account from the module +account. This means that you will regain possession of the collateral tokens you +had originally put up for the loan. + +```go title="x/loan/keeper/msg_server_cancel_loan.go" +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "loan/x/loan/types" +) + +func (k msgServer) CancelLoan(goCtx context.Context, msg *types.MsgCancelLoan) (*types.MsgCancelLoanResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + loan, found := k.GetLoan(ctx, msg.Id) + if !found { + return nil, sdkerrors.Wrapf(sdkerrors.ErrKeyNotFound, "key %d doesn't exist", msg.Id) + } + if loan.Borrower != msg.Creator { + return nil, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "Cannot cancel: not the borrower") + } + if loan.State != "requested" { + return nil, sdkerrors.Wrapf(types.ErrWrongLoanState, "%v", loan.State) + } + borrower, _ := sdk.AccAddressFromBech32(loan.Borrower) + collateral, _ := sdk.ParseCoinsNormalized(loan.Collateral) + err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, borrower, collateral) + if err != nil { + return nil, err + } + loan.State = "cancelled" + k.SetLoan(ctx, loan) + return &types.MsgCancelLoanResponse{}, nil +} +``` + +`CancelLoan` takes in two arguments: a `context.Context` named `goCtx` and a +pointer to a `types.MsgCancelLoan` named `msg`. It returns a pointer to a +`types.MsgCancelLoanResponse` and an error. + +The function begins by using the `sdk.UnwrapSDKContext` method to get the +`sdk.Context` from the `context.Context` object. It then uses the `GetLoan` +method of the `msgServer` type to retrieve a loan identified by the `Id` field +of the `msg` argument. If the loan is not found, the function returns an error +using the `sdk.ErrKeyNotFound` error wrapped with the `sdk.Wrap` method. + +Next, the function checks if the `Creator` field of the msg argument is the same +as the `Borrower` field of the loan. If they are not the same, the function +returns an error using the `sdk.ErrUnauthorized` error wrapped with the +`sdk.Wrap` method. + +The function then checks if the `State` field of the loan is equal to the string +`"requested"`. If it is not, the function returns an error using the +types.`ErrWrongLoanState` error wrapped with the `sdk.Wrapf` method. + +If the loan has the correct state and the creator of the message is the borrower +of the loan, the function proceeds to send the collateral coins held in the +`Collateral` field of the loan back to the borrower's account using the +`SendCoinsFromModuleToAccount` method of the `bankKeeper`. The function then +updates the State field of the loan to the string "cancelled" and sets the +updated loan using the `SetLoan` method. Finally, the function returns a +`types.MsgCancelLoanResponse` object and a nil error. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/08-play.md b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/08-play.md new file mode 100644 index 0000000000..eb715b0512 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/08-play.md @@ -0,0 +1,318 @@ +# Play + +Add `10000foocoin` to Alice's account. These tokens will be used as a loan +collateral. + +```yml title="config.yml" +version: 1 +accounts: + - name: alice + coins: + - 20000token + # highlight-next-line + - 10000foocoin + - 200000000stake + - name: bob + coins: + - 10000token + - 100000000stake +client: + openapi: + path: docs/static/openapi.yml +faucet: + name: bob + coins: + - 5token + - 100000stake +validators: + - name: alice + bonded: 100000000stake +``` + +Start a blockchain node: + +``` +ignite chain serve +``` + +## Repaying a loan + +Request a loan of `1000token` with `100token` as a fee and `1000foocoin` as a +collateral from Alice's account. The deadline is set to `500` blocks: + +``` +loand tx loan request-loan 1000token 100token 1000foocoin 500 --from alice +``` + +``` +loand q loan list-loan +``` + +```yml +Loan: +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "500" + fee: 100token + id: "0" + lender: "" + state: requested +``` + +Please be aware that the addresses displayed in your terminal window (such as those in the `borrower` field) will not match the ones provided in this tutorial. This is because Ignite generates new accounts each time a chain is started, unless an account has a mnemonic specified in the `config.yml` file. + +Approve the loan from Bob's account: + +``` +loand tx loan approve-loan 0 --from bob +``` + +``` +loand q loan list-loan +``` + +The `lender` field has been updated to Bob's address and the `state` field has +been updated to `approved`: + +```yml +Loan: +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "500" + fee: 100token + id: "0" + # highlight-start + lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4 + state: approved + # highlight-end +``` + +``` +loand q bank balances $(loand keys show alice -a) +``` + +The `foocoin` balance has been updated to `9000`, because `1000foocoin` has been +transferred as collateral to the module account. The `token` balance has been +updated to `21000`, because `1000token` has been transferred from Bob's account +to Alice's account as a loan: + +```yml +balances: + # highlight-start +- amount: "9000" + denom: foocoin + # highlight-end +- amount: "100000000" + denom: stake + # highlight-start +- amount: "21000" + denom: token + # highlight-end +``` + +``` +loand q bank balances $(loand keys show bob -a) +``` + +The `token` balance has been updated to `9000`, because `1000token` has been +transferred from Bob's account to Alice's account as a loan: + +```yml +balances: +- amount: "100000000" + denom: stake + # highlight-start +- amount: "9000" + denom: token + # highlight-end +``` + +Repay the loan from Alice's account: + +``` +loand tx loan repay-loan 0 --from alice +``` + +``` +loand q loan list-loan +``` + +The `state` field has been updated to `repayed`: + +```yml +Loan: +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "500" + fee: 100token + id: "0" + lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4 + # highlight-next-line + state: repayed +``` + +``` +loand q bank balances $(loand keys show alice -a) +``` + +The `foocoin` balance has been updated to `10000`, because `1000foocoin` has +been transferred from the module account to Alice's account. The `token` balance +has been updated to `19900`, because `1000token` has been transferred from +Alice's account to Bob's account as a repayment and `100token` has been +transferred from Alice's account to Bob's account as a fee: + +```yml +balances: + # highlight-start +- amount: "10000" + denom: foocoin + # highlight-end +- amount: "100000000" + denom: stake + # highlight-start +- amount: "19900" + denom: token + # highlight-end +``` + +``` +loand q bank balances $(loand keys show bob -a) +``` + +The `token` balance has been updated to `10100`, because `1000token` has been +transferred from Alice's account to Bob's account as a repayment and `100token` +has been transferred from Alice's account to Bob's account as a fee: + +```yml +balances: +- amount: "100000000" + denom: stake + # highlight-start +- amount: "10100" + denom: token + # highlight-end +``` + +## Liquidating a loan + +Request a loan of `1000token` with `100token` as a fee and `1000foocoin` as a +collateral from Alice's account. The deadline is set to `20` blocks. The +deadline is set to a very small value, so that the loan can be quickly +liquidated in the next step: + +``` +loand tx loan request-loan 1000token 100token 1000foocoin 20 --from alice +``` + +``` +loand q loan list-loan +``` + +A loan has been added to the list: + +```yml +Loan: +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "500" + fee: 100token + id: "0" + lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4 + state: repayed + # highlight-start +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "20" + fee: 100token + id: "1" + lender: "" + state: requested + # highlight-end +``` + +Approve the loan from Bob's account: + +``` +loand tx loan approve-loan 1 --from bob +``` + +Liquidate the loan from Bob's account: + +``` +loand tx loan liquidate-loan 1 --from bob +``` + +``` +loand q loan list-loan +``` + +The loan has been liquidated: + +```yml +Loan: +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "500" + fee: 100token + id: "0" + lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4 + state: repayed + # highlight-start +- amount: 1000token + borrower: cosmos153dk8qh56v4yg6e4uzrvvqjueu6d36fptlr2kw + collateral: 1000foocoin + deadline: "20" + fee: 100token + id: "1" + lender: cosmos1qfzpxfhsu2qfy2exkukuanrkzrrexh9yeg2pr4 + state: liquidated + # highlight-end +``` + +``` +loand q bank balances $(loand keys show alice -a) +``` + +The `foocoin` balance has been updated to `9000`, because `1000foocoin` has been +transferred from Alice's account to the module account as a collateral. Alice +has lost her collateral, but she has kept the loan amount: + +```yml +balances: + # highlight-start +- amount: "9000" + denom: foocoin + # highlight-end +- amount: "100000000" + denom: stake + # highlight-start +- amount: "20900" + denom: token + # highlight-end +``` + +``` +loand q bank balances $(loand keys show bob -a) +``` + +The `foocoin` balance has been updated to `1000`, because `1000foocoin` has been +transferred from the module account to Bob's account as a collateral. Bob has +gained the collateral, but he has lost the loan amount: + +```yml +balances: + # highlight-start +- amount: "1000" + denom: foocoin + # highlight-end +- amount: "100000000" + denom: stake +- amount: "9100" + denom: token +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/_category_.json b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/_category_.json new file mode 100644 index 0000000000..0a76ef93ff --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/05-loan/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Advanced Module: DeFi Loan", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/06-ibc.md b/docs/versioned_docs/version-v0.27.2/02-guide/06-ibc.md new file mode 100644 index 0000000000..83efb4f760 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/06-ibc.md @@ -0,0 +1,710 @@ +--- +sidebar_position: 7 +description: Build an understanding of how to create and send packets across blockchains and navigate between blockchains. +title: "Inter-Blockchain Communication: Basics" +--- + +# Inter-Blockchain Communication: Basics + +The Inter-Blockchain Communication protocol (IBC) is an important part of the +Cosmos SDK ecosystem. The Hello World tutorial is a time-honored tradition in +computer programming. This tutorial builds an understanding of how to create and +send packets across blockchain. This foundational knowledge helps you navigate +between blockchains with the Cosmos SDK. + +**You will learn how to** + +- Use IBC to create and send packets between blockchains. +- Navigate between blockchains using the Cosmos SDK and the Ignite CLI Relayer. +- Create a basic blog post and save the post on another blockchain. + +## What is IBC? + +The Inter-Blockchain Communication protocol (IBC) allows blockchains to talk to +each other. IBC handles transport across different sovereign blockchains. This +end-to-end, connection-oriented, stateful protocol provides reliable, ordered, +and authenticated communication between heterogeneous blockchains. + +The [IBC protocol in the Cosmos +SDK](https://ibc.cosmos.network/main/ibc/overview.html) is the standard for the +interaction between two blockchains. The IBCmodule interface defines how packets +and messages are constructed to be interpreted by the sending and the receiving +blockchain. + +The IBC relayer lets you connect between sets of IBC-enabled chains. This +tutorial teaches you how to create two blockchains and then start and use the +relayer with Ignite CLI to connect two blockchains. + +This tutorial covers essentials like modules, IBC packets, relayer, and the +lifecycle of packets routed through IBC. + +## Create a blockchain + +Create a blockchain app with a blog module to write posts on other blockchains +that contain the Hello World message. For this tutorial, you can write posts for +the Cosmos SDK universe that contain Hello Mars, Hello Cosmos, and Hello Earth +messages. + +For this simple example, create an app that contains a blog module that has a +post transaction with title and text. + +After you define the logic, run two blockchains that have this module installed. + +- The chains can send posts between each other using IBC. + +- On the sending chain, save the `acknowledged` and `timed out` posts. + +After the transaction is acknowledged by the receiving chain, you know that the +post is saved on both blockchains. + +- The sending chain has the additional data `postID`. + +- Sent posts that are acknowledged and timed out contain the title and the + target chain of the post. These identifiers +- are visible on the parameter `chain`. The following chart shows the lifecycle + of a packet that travels through IBC. + +![The Lifecycle of an IBC packet](./images/packet_sendpost.png) + +## Build your blockchain app + +Use Ignite CLI to scaffold the blockchain app and the blog module. + +### Build a new blockchain + +To scaffold a new blockchain named `planet`: + +```bash +ignite scaffold chain planet --no-module +cd planet +``` + +A new directory named `planet` is created in your home directory. The `planet` +directory contains a working blockchain app. + +### Scaffold the blog module inside your blockchain + +Next, use Ignite CLI to scaffold a blog module with IBC capabilities. The blog +module contains the logic for creating blog posts and routing them through IBC +to the second blockchain. + +To scaffold a module named `blog`: + +```bash +ignite scaffold module blog --ibc +``` + +A new directory with the code for an IBC module is created in `planet/x/blog`. +Modules scaffolded with the `--ibc` flag include all the logic for the +scaffolded IBC module. + +### Generate CRUD actions for types + +Next, create the CRUD actions for the blog module types. + +Use the `ignite scaffold list` command to scaffold the boilerplate code for the +create, read, update, and delete (CRUD) actions. + +These `ignite scaffold list` commands create CRUD code for the following +transactions: + +- Creating blog posts + + ```bash + ignite scaffold list post title content creator --no-message --module blog + ``` + +- Processing acknowledgments for sent posts + + ```bash + ignite scaffold list sentPost postID title chain creator --no-message --module blog + ``` + +- Managing post timeouts + + ```bash + ignite scaffold list timedoutPost title chain creator --no-message --module blog + ``` + +The scaffolded code includes proto files for defining data structures, messages, +messages handlers, keepers for modifying the state, and CLI commands. + +### Ignite CLI Scaffold List Command Overview + +``` +ignite scaffold list [typeName] [field1] [field2] ... [flags] +``` + +The first argument of the `ignite scaffold list [typeName]` command specifies +the name of the type being created. For the blog app, you created `post`, +`sentPost`, and `timedoutPost` types. + +The next arguments define the fields that are associated with the type. For the +blog app, you created `title`, `content`, `postID`, and `chain` fields. + +The `--module` flag defines which module the new transaction type is added to. +This optional flag lets you manage multiple modules within your Ignite CLI app. +When the flag is not present, the type is scaffolded in the module that matches +the name of the repo. + +When a new type is scaffolded, the default behavior is to scaffold messages that +can be sent by users for CRUD operations. The `--no-message` flag disables this +feature. Disable the messages option for the app since you want the posts to be +created upon reception of IBC packets and not directly created from a user's +messages. + +### Scaffold a sendable and interpretable IBC packet + +You must generate code for a packet that contains the title and the content of +the blog post. + +The `ignite packet` command creates the logic for an IBC packet that can be sent +to another blockchain. + +- The `title` and `content` are stored on the target chain. + +- The `postID` is acknowledged on the sending chain. + +To scaffold a sendable and interpretable IBC packet: + +```bash +ignite scaffold packet ibcPost title content --ack postID --module blog +``` + +Notice the fields in the `ibcPost` packet match the fields in the `post` type +that you created earlier. + +- The `--ack` flag defines which identifier is returned to the sending + blockchain. + +- The `--module` flag specifies to create the packet in a particular IBC module. + +The `ignite packet` command also scaffolds the CLI command that is capable of +sending an IBC packet: + +```bash +planetd tx blog send-ibcPost [portID] [channelID] [title] [content] +``` + +## Modify the source code + +After you create the types and transactions, you must manually insert the logic +to manage updates in the database. Modify the source code to save the data as +specified earlier in this tutorial. + +### Add creator to the blog post packet + +Start with the proto file that defines the structure of the IBC packet. + +To identify the creator of the post in the receiving blockchain, add the +`creator` field inside the packet. This field was not specified directly in the +command because it would automatically become a parameter in the `SendIbcPost` +CLI command. + +```protobuf title="proto/planet/blog/packet.proto" +message IbcPostPacketData { + string title = 1; + string content = 2; + // highlight-next-line + string creator = 3; +} +``` + +To make sure the receiving chain has content on the creator of a blog post, add +the `msg.Creator` value to the IBC `packet`. + +- The content of the `sender` of the message is automatically included in + `SendIbcPost` message. +- The sender is verified as the signer of the message, so you can add the + `msg.Sender` as the creator to the new packet +- before it is sent over IBC. + +```go title="x/blog/keeper/msg_server_ibc_post.go" +package keeper + +import ( + // ... + "planet/x/blog/types" +) + +func (k msgServer) SendIbcPost(goCtx context.Context, msg *types.MsgSendIbcPost) (*types.MsgSendIbcPostResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // TODO: logic before transmitting the packet + + // Construct the packet + var packet types.IbcPostPacketData + + packet.Title = msg.Title + packet.Content = msg.Content + // highlight-next-line + packet.Creator = msg.Creator + + // Transmit the packet + err := k.TransmitIbcPostPacket( + ctx, + packet, + msg.Port, + msg.ChannelID, + clienttypes.ZeroHeight(), + msg.TimeoutTimestamp, + ) + if err != nil { + return nil, err + } + + return &types.MsgSendIbcPostResponse{}, nil +} +``` + +### Receive the post + +The methods for primary transaction logic are in the `x/blog/keeper/ibc_post.go` +file. Use these methods to manage IBC packets: + +- `TransmitIbcPostPacket` is called manually to send the packet over IBC. This + method also defines the logic before the packet is sent over IBC to another + blockchain app. +- `OnRecvIbcPostPacket` hook is automatically called when a packet is received + on the chain. This method defines the packet reception logic. +- `OnAcknowledgementIbcPostPacket` hook is called when a sent packet is + acknowledged on the source chain. This method defines the logic when the + packet has been received. +- `OnTimeoutIbcPostPacket` hook is called when a sent packet times out. This + method defines the logic when the packet is not received on the target chain + +You must modify the source code to add the logic inside those functions so that +the data tables are modified accordingly. + +On reception of the post message, create a new post with the title and the +content on the receiving chain. + +To identify the blockchain app that a message is originating from and who +created the message, use an identifier in the following format: + +`--` + +Finally, the Ignite CLI-generated AppendPost function returns the ID of the new +appended post. You can return this value to the source chain through +acknowledgment. + +Append the type instance as `PostID` on receiving the packet: + +- The context `ctx` is an [immutable data + structure](https://docs.cosmos.network/main/core/context.html#go-context-package) + that has header data from the transaction. See [how the context is + initiated](https://github.com/cosmos/cosmos-sdk/blob/main/types/context.go#L71) +- The identifier format that you defined earlier +- The `title` is the Title of the blog post +- The `content` is the Content of the blog post + +In the `x/blog/keeper/ibc_post.go` file, make sure to import `"strconv"` below +`"errors"`: + +```go title="x/blog/keeper/ibc_post.go" +import ( + //... + + "strconv" + +// ... +) +``` + +Then modify the `OnRecvIbcPostPacket` keeper function with the following code: + +```go +package keeper + +// ... + +func (k Keeper) OnRecvIbcPostPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IbcPostPacketData) (packetAck types.IbcPostPacketAck, err error) { + // validate packet data upon receiving + if err := data.ValidateBasic(); err != nil { + return packetAck, err + } + + id := k.AppendPost( + ctx, + types.Post{ + Creator: packet.SourcePort + "-" + packet.SourceChannel + "-" + data.Creator, + Title: data.Title, + Content: data.Content, + }, + ) + + packetAck.PostID = strconv.FormatUint(id, 10) + + return packetAck, nil +} +``` + +### Receive the post acknowledgement + +On the sending blockchain, store a `sentPost` so you know that the post has been +received on the target chain. + +Store the title and the target to identify the post. + +When a packet is scaffolded, the default type for the received acknowledgment +data is a type that identifies if the packet treatment has failed. The +`Acknowledgement_Error` type is set if `OnRecvIbcPostPacket` returns an error +from the packet. + +```go title="x/blog/keeper/ibc_post.go" +package keeper + +// ... + +// x/blog/keeper/ibc_post.go +func (k Keeper) OnAcknowledgementIbcPostPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IbcPostPacketData, ack channeltypes.Acknowledgement) error { + switch dispatchedAck := ack.Response.(type) { + case *channeltypes.Acknowledgement_Error: + // We will not treat acknowledgment error in this tutorial + return nil + case *channeltypes.Acknowledgement_Result: + // Decode the packet acknowledgment + var packetAck types.IbcPostPacketAck + + if err := types.ModuleCdc.UnmarshalJSON(dispatchedAck.Result, &packetAck); err != nil { + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("cannot unmarshal acknowledgment") + } + + k.AppendSentPost( + ctx, + types.SentPost{ + Creator: data.Creator, + PostID: packetAck.PostID, + Title: data.Title, + Chain: packet.DestinationPort + "-" + packet.DestinationChannel, + }, + ) + + return nil + default: + return errors.New("the counter-party module does not implement the correct acknowledgment format") + } +} +``` + +### Store information about the timed-out packet + +Store posts that have not been received by target chains in `timedoutPost` +posts. This logic follows the same format as `sentPost`. + +```go title="x/blog/keeper/ibc_post.go" +func (k Keeper) OnTimeoutIbcPostPacket(ctx sdk.Context, packet channeltypes.Packet, data types.IbcPostPacketData) error { + k.AppendTimedoutPost( + ctx, + types.TimedoutPost{ + Creator: data.Creator, + Title: data.Title, + Chain: packet.DestinationPort + "-" + packet.DestinationChannel, + }, + ) + + return nil +} + +``` + +This last step completes the basic `blog` module setup. The blockchain is now +ready! + +## Use the IBC modules + +You can now spin up the blockchain and send a blog post from one blockchain app +to the other. Multiple terminal windows are required to complete these next +steps. + +### Test the IBC modules + +To test the IBC module, start two blockchain networks on the same machine. Both +blockchains use the same source code. Each blockchain has a unique chain ID. + +One blockchain is named `earth` and the other blockchain is named `mars`. + +The `earth.yml` and `mars.yml` files are required in the project directory: + +```yaml title="earth.yml" +version: 1 +build: + proto: + path: proto + third_party_paths: + - third_party/proto + - proto_vendor +accounts: +- name: alice + coins: + - 1000token + - 100000000stake +- name: bob + coins: + - 500token + - 100000000stake +faucet: + name: bob + coins: + - 5token + - 100000stake + host: 0.0.0.0:4500 +genesis: + chain_id: earth +validators: +- name: alice + bonded: 100000000stake + home: $HOME/.earth +``` + +```yaml title="mars.yml" +version: 1 +build: + proto: + path: proto + third_party_paths: + - third_party/proto + - proto_vendor +accounts: +- name: alice + coins: + - 1000token + - 1000000000stake +- name: bob + coins: + - 500token + - 100000000stake +faucet: + name: bob + coins: + - 5token + - 100000stake + host: :4501 +genesis: + chain_id: mars +validators: +- name: alice + bonded: 100000000stake + app: + api: + address: :1318 + grpc: + address: :9092 + grpc-web: + address: :9093 + config: + p2p: + laddr: :26658 + rpc: + laddr: :26659 + pprof_laddr: :6061 + home: $HOME/.mars +``` + +Open a terminal window and run the following command to start the `earth` +blockchain: + +```bash +ignite chain serve -c earth.yml +``` + +Open a different terminal window and run the following command to start the +`mars` blockchain: + +```bash +ignite chain serve -c mars.yml +``` + +### Remove Existing Relayer and Ignite CLI Configurations + +If you previously used the relayer, follow these steps to remove exiting relayer +and Ignite CLI configurations: + +- Stop your blockchains and delete previous configuration files: + + ```bash + rm -rf ~/.ignite/relayer + ``` + +If existing relayer configurations do not exist, the command returns `no matches +found` and no action is taken. + +### Configure and start the relayer + +First, configure the relayer. Use the Ignite CLI `configure` command with the +`--advanced` option: + +```bash +ignite relayer configure -a \ + --source-rpc "http://0.0.0.0:26657" \ + --source-faucet "http://0.0.0.0:4500" \ + --source-port "blog" \ + --source-version "blog-1" \ + --source-gasprice "0.0000025stake" \ + --source-prefix "cosmos" \ + --source-gaslimit 300000 \ + --target-rpc "http://0.0.0.0:26659" \ + --target-faucet "http://0.0.0.0:4501" \ + --target-port "blog" \ + --target-version "blog-1" \ + --target-gasprice "0.0000025stake" \ + --target-prefix "cosmos" \ + --target-gaslimit 300000 +``` + +When prompted, press Enter to accept the default values for `Source Account` and +`Target Account`. + +The output looks like: + +``` +--------------------------------------------- +Setting up chains +--------------------------------------------- + +🔐 Account on "source" is "cosmos1xcxgzq75yrxzd0tu2kwmwajv7j550dkj7m00za" + + |· received coins from a faucet + |· (balance: 100000stake,5token) + +🔐 Account on "target" is "cosmos1nxg8e4mfp5v7sea6ez23a65rvy0j59kayqr8cx" + + |· received coins from a faucet + |· (balance: 100000stake,5token) + +⛓ Configured chains: earth-mars +``` + +In a new terminal window, start the relayer process: + +```bash +ignite relayer connect +``` + +Results: + +``` +------ +Paths +------ + +earth-mars: + earth > (port: blog) (channel: channel-0) + mars > (port: blog) (channel: channel-0) + +------ +Listening and relaying packets between chains... +------ +``` + +### Send packets + +You can now send packets and verify the received posts: + +```bash +planetd tx blog send-ibc-post blog channel-0 "Hello" "Hello Mars, I'm Alice from Earth" --from alice --chain-id earth --home ~/.earth +``` + +To verify that the post has been received on Mars: + +```bash +planetd q blog list-post --node tcp://localhost:26659 +``` + +The packet has been received: + +```yaml +Post: + - content: Hello Mars, I'm Alice from Earth + creator: blog-channel-0-cosmos1aew8dk9cs3uzzgeldatgzvm5ca2k4m98xhy20x + id: "0" + title: Hello +pagination: + next_key: null + total: "1" +``` + +To check if the packet has been acknowledged on Earth: + +```bash +planetd q blog list-sent-post +``` + +Output: + +```yaml +SentPost: + - chain: blog-channel-0 + creator: cosmos1aew8dk9cs3uzzgeldatgzvm5ca2k4m98xhy20x + id: "0" + postID: "0" + title: Hello +pagination: + next_key: null + total: "1" +``` + +To test timeout, set the timeout time of a packet to 1 nanosecond, verify that +the packet is timed out, and check the timed-out posts: + +```bash +planetd tx blog send-ibc-post blog channel-0 "Sorry" "Sorry Mars, you will never see this post" --from alice --chain-id earth --home ~/.earth --packet-timeout-timestamp 1 +``` + +Check the timed-out posts: + +```bash +planetd q blog list-timedout-post +``` + +Results: + +```yaml +TimedoutPost: + - chain: blog-channel-0 + creator: cosmos1fhpcsxn0g8uask73xpcgwxlfxtuunn3ey5ptjv + id: "0" + title: Sorry +pagination: + next_key: null + total: "2" +``` + +You can also send a post from Mars: + +```bash +planetd tx blog send-ibc-post blog channel-0 "Hello" "Hello Earth, I'm Alice from Mars" --from alice --chain-id mars --home ~/.mars --node tcp://localhost:26659 +``` + +List post on Earth: + +```bash +planetd q blog list-post +``` + +Results: + +```yaml +Post: + - content: Hello Earth, I'm Alice from Mars + creator: blog-channel-0-cosmos1xtpx43l826348s59au24p22pxg6q248638q2tf + id: "0" + title: Hello +pagination: + next_key: null + total: "1" +``` + +## Congratulations 🎉 + +By completing this tutorial, you've learned to use the Inter-Blockchain +Communication protocol (IBC). + +Here's what you accomplished in this tutorial: + +- Built two Hello blockchain apps as IBC modules +- Modified the generated code to add CRUD action logic +- Configured and used the Ignite CLI relayer to connect two blockchains with + each other +- Transferred IBC packets from one blockchain to another diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/00-introduction.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/00-introduction.md new file mode 100644 index 0000000000..3b553768e9 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/00-introduction.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 0 +slug: /guide/interchange +--- + +# Introduction + +The Interchain Exchange is a module to create buy and sell orders between blockchains. + +In this tutorial, you learn how to create a Cosmos SDK module that can create order pairs, buy orders, and sell orders. +You create order books and buy and sell orders across blockchains, which in turn enables you to swap token from one +blockchain to another. + +**Note:** The code in this tutorial is written specifically for this tutorial and is intended only for educational +purposes. This tutorial code is not intended to be used in production. + +If you want to see the end result, see the example implementation in +the [interchange repo](https://github.com/tendermint/interchange). + +**You will learn how to:** + +- Create a blockchain with Ignite CLI +- Create a Cosmos SDK IBC module +- Create an order book that hosts buy and sell orders with a module +- Send IBC packets from one blockchain to another +- Deal with timeouts and acknowledgements of IBC packets + +## How the Interchange Exchange Module Works + +To build an exchange that works with two or more blockchains, follow the steps in this tutorial to create a Cosmos SDK +module called `dex`. + +The new `dex` module allows you to open an exchange order book for a pair of token: a token from one blockchain and a token +on another blockchain. The blockchains are required to have the `dex` module available. + +Token can be bought or sold with limit orders on a simple order book. In this tutorial, there is no notion of a +liquidity pool or automated market maker (AMM). + +The market is unidirectional: + +- The token sold on the source chain cannot be bought back as it is +- The token bought from the target chain cannot be sold back using the same pair. + +If a token on a source chain is sold, it can only be bought back by creating a new pair on the order book. +This workflow is due to the nature of the Inter-Blockchain Communication protocol (IBC) which creates a `voucher` +token on the target blockchain. There is a difference of a native blockchain token and a `voucher` token that is minted +on another blockchain. You must create a second order book pair in order to receive the native token back. + +In the next chapter, you learn details about the design of the interblockchain exchange. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/01-design.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/01-design.md new file mode 100644 index 0000000000..87727c39aa --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/01-design.md @@ -0,0 +1,108 @@ +--- +sidebar_position: 1 +description: Learn about the interchain exchange module design. +--- + +# App Design + +In this chapter, you learn how the interchain exchange module is designed. The module has order books, buy orders, and +sell orders. + +- First, create an order book for a pair of token. +- After an order book exists, you can create buy and sell orders for this pair of token. + +The module uses the Inter-Blockchain Communication +protocol [IBC](https://github.com/cosmos/ibc/blob/old/ibc/2_IBC_ARCHITECTURE.md). +By using IBC, the module can create order books so that multiple blockchains can interact and exchange their token. + +You create an order book pair with a token from one blockchain and another token from another blockchain. In this +tutorial, call the module you create the `dex` module. + +> When a user exchanges a token with the `dex` module, a `voucher` of that token is received on the other blockchain. +> This voucher is similar to how an `ibc-transfer` is constructed. Since a blockchain module does not have the rights +> to mint new token of a blockchain into existence, the token on the target chain is locked up, and the buyer receives +> a `voucher` of that token. + +This process can be reversed when the `voucher` gets burned to unlock the original token. This exchange process is +explained in more detail throughout the tutorial. + +## Assumption of the Design + +An order book can be created for the exchange of any tokens between any pair of chains. + +- Both blockchains require the `dex` module to be installed and running. +- There can only be one order book for a pair of token at the same time. + + + +A specific chain cannot mint new coins of its native token. + + + +This module is inspired by the [`ibc transfer`](https://github.com/cosmos/ibc-go/tree/main/modules/apps/transfer) +module on the Cosmos SDK. The `dex` module you create in this tutorial has similarities, like the `voucher` creation. + +However, the new `dex` module you are creating is more complex because it supports creation of: + +- Several types of packets to send +- Several types of acknowledgments to treat +- More complex logic on how to treat a packet on receipt, on timeout, and more + +## Interchain Exchange Overview + +Assume you have two blockchains: Venus and Mars. + +- The native token on Venus is `venuscoin`. +- The native token on Mars is `marscoin`. + +When a token is exchanged from Mars to Venus: + +- The Venus blockchain has an IBC `voucher` token with a denom that looks like `ibc/B5CB286...A7B21307F`. +- The long string of characters after `ibc/` is a denom trace hash of a token that was transferred using IBC. + +Using the blockchain's API you can get a denom trace from that hash. The denom trace consists of a `base_denom` and a +`path`. In our example: + +- The `base_denom` is `marscoin`. +- The `path` contains pairs of ports and channels through which the token has been transferred. + +For a single-hop transfer, the `path` is identified by `transfer/channel-0`. + +Learn more about token paths +in [ICS 20 Fungible Token Transfer](https://github.com/cosmos/ibc/tree/main/spec/app/ics-020-fungible-token-transfer). + +**Note:** This token `ibc/Venus/marscoin` cannot be sold back using the same order book. If you want to "reverse" the +exchange and receive the Mars token back, you must create and use a new order book for the `ibc/Venus/marscoin` to +`marscoin` transfer. + +## The Design of the Order Books + +As a typical exchange, a new pair implies the creation of an order book with orders to sell `marscoin` or orders to buy +`venuscoin`. Here, you have two chains and this data structure must be split between Mars and Venus. + +- Users from chain Mars sell `marscoin`. +- Users from chain Venus buy `marscoin`. + +Therefore, we represent: + +- All orders to sell `marscoin` on chain Mars. +- All orders to buy `marscoin` on chain Venus. + +In this example, blockchain Mars holds the sell orders and blockchain Venus holds the buy orders. + +## Exchanging Tokens Back + +Like `ibc-transfer`, each blockchain keeps a trace of the token voucher that was created on the other blockchain. + +If blockchain Mars sells `marscoin` to chain Venus and `ibc/Venus/marscoin` is minted on Venus then, if +`ibc/Venus/marscoin` is sold back to Mars, the token is unlocked and the token that is received is `marscoin`. + +## Features + +The features supported by the interchain exchange module are: + +- Create an exchange order book for a token pair between two chains +- Send sell orders on source chain +- Send buy orders on target chain +- Cancel sell or buy orders diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/02-init.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/02-init.md new file mode 100644 index 0000000000..a8c96755f2 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/02-init.md @@ -0,0 +1,219 @@ +--- +sidebar_position: 2 +description: Create the blockchain for the interchain exchange app. +--- + +# App Init + +## Initialize the Blockchain + +In this chapter, you create the basic blockchain module for the interchain exchange app. You scaffold the blockchain, +the module, the transaction, the IBC packets, and messages. In later chapters, you integrate more code into each of the +transaction handlers. + +## Create the Blockchain + +Scaffold a new blockchain called `interchange`: + +```bash +ignite scaffold chain interchange --no-module +``` + +A new directory named `interchange` is created. + +Change into this directory where you can scaffold modules, types, and maps: + +```bash +cd interchange +``` + +The `interchange` directory contains a working blockchain app. + +A local GitHub repository has been created for you with the initial scaffold. + +Next, create a new IBC module. + +## Create the dex Module + +Scaffold a module inside your blockchain named `dex` with IBC capabilities. + +The dex module contains the logic to create and maintain order books and route them through IBC to the second +blockchain. + +```bash +ignite scaffold module dex --ibc --ordering unordered --dep bank +``` + +## Create CRUD logic for Buy and Sell Order Books + +Scaffold two types with create, read, update, and delete (CRUD) actions. + +Run the following Ignite CLI `type` commands to create `sellOrderBook` and `buyOrderBook` types: + +```bash +ignite scaffold map sell-order-book amountDenom priceDenom --no-message --module dex +ignite scaffold map buy-order-book amountDenom priceDenom --no-message --module dex +``` + +The values are: + +- `amountDenom`: the token to be sold and in which quantity +- `priceDenom`: the token selling price + +The `--no-message` flag specifies to skip the message creation. Custom messages will be created in the next steps. + +The `--module dex` flag specifies to scaffold the type in the `dex` module. + +## Create the IBC Packets + +Create three packets for IBC: + +- An order book pair `createPair` +- A sell order `sellOrder` +- A buy order `buyOrder` + +```bash +ignite scaffold packet create-pair sourceDenom targetDenom --module dex +ignite scaffold packet sell-order amountDenom amount:int priceDenom price:int --ack remainingAmount:int,gain:int --module dex +ignite scaffold packet buy-order amountDenom amount:int priceDenom price:int --ack remainingAmount:int,purchase:int --module dex +``` + +The optional `--ack` flag defines field names and types of the acknowledgment returned after the packet has been +received by the target chain. The value of the `--ack` flag is a comma-separated list of names (no spaces). Append +optional types after a colon (`:`). + +## Cancel messages + +Cancelling orders is done locally in the network, there is no packet to send. + +Use the `message` command to create a message to cancel a sell or buy order: + +```bash +ignite scaffold message cancel-sell-order port channel amountDenom priceDenom orderID:int --desc "Cancel a sell order" --module dex +ignite scaffold message cancel-buy-order port channel amountDenom priceDenom orderID:int --desc "Cancel a buy order" --module dex +``` + +Use the optional `--desc` flag to define a description of the CLI command that is used to broadcast a transaction with +the message. + +## Trace the Denom + +The token denoms must have the same behavior as described in the `ibc-transfer` module: + +- An external token received from a chain has a unique `denom`, referred to as `voucher`. +- When a token is sent to a blockchain and then sent back and received, the chain can resolve the voucher and convert + it back to the original token denomination. + +`Voucher` tokens are represented as hashes, therefore you must store which original denomination is related to a +voucher. +You can do this with an indexed type. + +For a `voucher` you store, define the source port ID, source channel ID, and the original denom: + +```bash +ignite scaffold map denom-trace port channel origin --no-message --module dex +``` + +## Create the Configuration for Two Blockchains + +Add two config files `mars.yml` and `venus.yml` to test two blockchain networks with specific token for each. + +Add the config files in the `interchange` folder. + +The native denoms for Mars are `marscoin`, and for Venus `venuscoin`. + +Create the `mars.yml` file with your content: + +```yaml title="mars.yml" +version: 1 +build: + proto: + path: proto + third_party_paths: + - third_party/proto + - proto_vendor +accounts: +- name: alice + coins: + - 1000token + - 100000000stake + - 1000marscoin +- name: bob + coins: + - 500token + - 1000marscoin + - 100000000stake +faucet: + name: bob + coins: + - 5token + - 100000stake + host: 0.0.0.0:4500 +genesis: + chain_id: mars +validators: +- name: alice + bonded: 100000000stake + home: $HOME/.mars +``` + +Create the `venus.yml` file with your content: + +```yaml title="venus.yml" +version: 1 +build: + proto: + path: proto + third_party_paths: + - third_party/proto + - proto_vendor +accounts: +- name: alice + coins: + - 1000token + - 1000000000stake + - 1000venuscoin +- name: bob + coins: + - 500token + - 1000venuscoin + - 100000000stake +faucet: + name: bob + coins: + - 5token + - 100000stake + host: :4501 +genesis: + chain_id: venus +validators: +- name: alice + bonded: 100000000stake + app: + api: + address: :1318 + grpc: + address: :9092 + grpc-web: + address: :9093 + config: + p2p: + laddr: :26658 + rpc: + laddr: :26659 + pprof_laddr: :6061 + home: $HOME/.venus +``` + +In order to run two blockchains side by side on a single machine, you need to +start them on different ports. `venus.yml` has a validators configuration that +stars services HTTP API, gRPC, P2P and RPC services on custom ports. + +After scaffolding, now is a good time to make a commit to the local GitHub repository that was created for you. + +```bash +git add . +git commit -m "Scaffold module, maps, packages and messages for the dex" +``` + +Implement the code for the order book in the next chapter. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/03-walkthrough.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/03-walkthrough.md new file mode 100644 index 0000000000..131dbba605 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/03-walkthrough.md @@ -0,0 +1,687 @@ +--- +sidebar_position: 3 +description: Walkthrough of commands to use the interchain exchange module. +--- + +# Use the Interchain Exchange + +In this chapter, you will learn about the exchange and how it will function once +it is implemented. This will give you a better understanding of what you will be +building in the coming chapters. + +To achieve this, we will perform the following tasks: + +* Start two local blockchains +* Set up an IBC relayer between the two chains +* Create an exchange order book for a token pair on the two chains +* Submit sell orders on the Mars chain +* Submit buy orders on the Venus chain +* Cancel sell or buy orders + +Starting the two local blockchains and setting up the IBC relayer will allow us +to create an exchange order book between the two chains. This order book will +allow us to submit sell and buy orders, as well as cancel any orders that we no +longer want to maintain. + +It is important to note that the commands in this chapter will only work +properly if you have completed all the following chapters in this tutorial. By +the end of this chapter, you should have a good understanding of how the +exchange will operate. + +## Start blockchain nodes + +To start using the interchain exchange, you will need to start two separate +blockchains. This can be done by running the `ignite chain serve` command, +followed by the `-c` flag and the path to the configuration file for each +blockchain. For example, to start the `mars` blockchain, you would run: + +``` +ignite chain serve -c mars.yml +``` + +To start the `venus` blockchain, you would run a similar command, but with the +path to the `venus.yml` configuration file: + +``` +ignite chain serve -c venus.yml +``` + +Once both blockchains are running, you can proceed with configuring the relayer +to enable interchain exchange between the two chains. + +## Relayer + +Next, let's set up an IBC relayer between two chains. If you have used a relayer +in the past, reset the relayer configuration directory: + +``` +rm -rf ~/.ignite/relayer +``` + +Now you can use the `ignite relayer configure` command. This command allows you +to specify the source and target chains, along with their respective RPC +endpoints, faucet URLs, port numbers, versions, gas prices, and gas limits. + +``` +ignite relayer configure -a --source-rpc "http://0.0.0.0:26657" --source-faucet "http://0.0.0.0:4500" --source-port "dex" --source-version "dex-1" --source-gasprice "0.0000025stake" --source-prefix "cosmos" --source-gaslimit 300000 --target-rpc "http://0.0.0.0:26659" --target-faucet "http://0.0.0.0:4501" --target-port "dex" --target-version "dex-1" --target-gasprice "0.0000025stake" --target-prefix "cosmos" --target-gaslimit 300000 +``` + +To create a connection between the two chains, you can use the ignite relayer +connect command. This command will establish a connection between the source and +target chains, allowing you to transfer data and assets between them. + +``` +ignite relayer connect +``` + +Now that we have two separate blockchain networks up and running, and a relayer +connection established to facilitate communication between them, we are ready to +begin using the interchain exchange binary to interact with these networks. This +will allow us to create order books and buy/sell orders, enabling us to trade +assets between the two chains. + +## Order Book + +To create an order book for a pair of tokens, you can use the following command: + +``` +interchanged tx dex send-create-pair dex channel-0 marscoin venuscoin --from alice --chain-id mars --home ~/.mars +``` + +This command will create an order book for the pair of tokens `marscoin` and +`venuscoin`. The command will be executed by the user `alice` on the Mars +blockchain. The `--home` parameter specifies the location of the configuration +directory for the Mars blockchain. + +Creating an order book affects state on the Mars blockchain to which the +transaction was broadcast and the Venus blockchain. + +On the Mars blockchain, the `send-create-pair` command creates an empty sell +order book. + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 0 + orders: [] + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +On the Venus blockchain, the same `send-createPair` command creates a buy order +book: + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 0 + orders: [] + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +In the `create-pair` command on the Mars blockchain, an IBC packet is sent to +the Venus chain. This packet contains information that is used to create a buy +order book on the Venus chain. + +When the Venus chain receives the IBC packet, it processes the information +contained in the packet and creates a buy order book. The Venus chain then sends +an acknowledgement back to the Mars chain to confirm that the buy order book has +been successfully created. + +Upon receiving the acknowledgement from the Venus chain, the Mars chain creates +a sell order book. This sell order book is associated with the buy order book on +the Venus chain, allowing users to trade assets between the two chains. + +## Sell Order + +After creating an order book, the next step is to create a sell order. This can +be done using the `send-sell-order` command, which is used to broadcast a +transaction with a message that locks a specified amount of tokens and creates a +sell order on the Mars blockchain. + +``` +interchanged tx dex send-sell-order dex channel-0 marscoin 10 venuscoin 15 --from alice --chain-id mars --home ~/.mars +``` + +In the example provided, the `send-sell-order` command is used to create a sell +order for 10 `marscoin` token and 15 `venuscoin` token. This sell order will be +added to the order book on the Mars blockchain. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +```yml +balances: +- amount: "990" # decreased from 1000 + denom: marscoin +- amount: "1000" + denom: token +``` + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 1 + orders: # a new sell order is created + - amount: 10 + creator: cosmos14ntyzr6d2dx4ppds9tvenx53fn0xl5jcakrtm4 + id: 0 + price: 15 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +## Buy order + +After creating a sell order, the next step in the trading process is typically +to create a buy order. This can be done using the `send-buy-order` command, +which is used to lock a specified amount of tokens and create a buy order on the +Venus blockchain + +``` +interchanged tx dex send-buy-order dex channel-0 marscoin 10 venuscoin 5 --from alice --chain-id venus --home ~/.venus --node tcp://localhost:26659 +``` + +In the example provided, the `send-buy-order` command is used to create a buy +order for 10 `marscoin` token and 5 `venuscoin` token. This buy order will be +added to the order book on the Venus blockchain. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +```yml +balances: +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "950" # decreased from 1000 + denom: venuscoin +``` + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 1 + orders: # a new buy order is created + - amount: 10 + creator: cosmos1mrrttwtdcp47pl4hq6sar3mwqpmtc7pcl9e6ss + id: 0 + price: 5 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +## Perform an Exchange with a Sell Order + +You currently have two open orders for `marscoin`: + +* A sell order on the Mars chain, where you are offering to sell 10 `marscoin` + for 15 `venuscoin`. +* A buy order on the Venus chain, where you are willing to buy 5 `marscoin` for + 5 `venuscoin`. + +To perform an exchange, you can send a sell order to the Mars chain using the +following command: + +``` +interchanged tx dex send-sell-order dex channel-0 marscoin 5 venuscoin 3 --from alice --home ~/.mars +``` + +This sell order, offering to sell 5 `marscoin` for 3 `venuscoin`, will be filled +on the Venus chain by the existing buy order. This will result in the amount of +the buy order on the Venus chain being reduced by 5 `marscoin`. + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 1 + orders: + - amount: 5 # decreased from 10 + creator: cosmos1mrrttwtdcp47pl4hq6sar3mwqpmtc7pcl9e6ss + id: 0 + price: 5 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +The sender of the filled sell order traded 5 `marscoin` for 25 `venuscoin` +tokens. This means that the amount of the sell order (5 `marscoin`) was +multiplied by the price of the buy order (5 `venuscoin`) to determine the value +of the exchange. In this case, the value of the exchange was 25 `venuscoin` +vouchers. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +```yml +balances: +- amount: "25" # increased from 0 + denom: ibc/BB38C24E9877 +- amount: "985" # decreased from 990 + denom: marscoin +- amount: "1000" + denom: token +``` + +The counterparty, or the sender of the buy `marscoin` order, will receive 5 +`marscoin` as a result of the exchange. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +```yml +balances: +- amount: "5" # increased from 0 + denom: ibc/745B473BFE24 # marscoin voucher +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "950" + denom: venuscoin +``` + +The `venuscoin` balance has remained unchanged because the appropriate amount of +`venuscoin` (50) was already locked at the time the buy order was created in the +previous step. + + +## Perform an Exchange with a Buy Order + +To perform an exchange with a buy order, send a transaction to the decentralized +exchange to buy 5 `marscoin` for 15 `venuscoin`. This is done by running the +following command: + +``` +interchanged tx dex send-buy-order dex channel-0 marscoin 5 venuscoin 15 --from alice --home ~/.venus --node tcp://localhost:26659 +``` + +This buy order will be immediately filled on the Mars chain, and the creator of +the sell order will receive 75 `venuscoin` vouchers as payment. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +```yml +balances: +- amount: "100" # increased from 25 + denom: ibc/BB38C24E9877 # venuscoin voucher +- amount: "985" + denom: marscoin +- amount: "1000" + denom: token +``` + +The amount of the sell order will be decreased by the amount of the filled buy +order, so in this case it will be decreased by 5 `marscoin`. + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 1 + orders: + - amount: 5 # decreased from 10 + creator: cosmos14ntyzr6d2dx4ppds9tvenx53fn0xl5jcakrtm4 + id: 0 + price: 15 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +The creator of the buy order receives 5 marscoin vouchers for 75 venuscoin +(5marscoin * 15venuscoin): + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +```yml +balances: +- amount: "10" # increased from 5 + denom: ibc/745B473BFE24 # marscoin vouchers +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "875" # decreased from 950 + denom: venuscoin +``` + +## Complete Exchange with a Partially Filled Sell Order + +To complete the exchange with a partially filled sell order, send a transaction +to the decentralized exchange to sell 10 `marscoin` for 3 `venuscoin`. This is +done by running the following command: + +``` +interchanged tx dex send-sell-order dex channel-0 marscoin 10 venuscoin 3 --from alice --home ~/.mars +``` + +In this scenario, the sell amount is 10 `marscoin`, but there is an existing buy +order for only 5 `marscoin`. The buy order will be filled completely and removed +from the order book. The author of the previously created buy order will receive +10 `marscoin` vouchers from the exchange. + +To check the balances, she can run the following command: + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +```yml +balances: +- amount: "15" # increased from 5 + denom: ibc/745B473BFE24 # marscoin voucher +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "875" + denom: venuscoin +``` + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 1 + orders: [] # buy order with amount 5marscoin has been closed + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +The author of the sell order successfuly exchanged 5 marscoin and received 25 +venuscoin vouchers. The other 5marscoin created a sell order: + +```yml +balances: +- amount: "125" # increased from 100 + denom: ibc/BB38C24E9877 # venuscoin vouchers +- amount: "975" # decreased from 985 + denom: marscoin +- amount: "1000" + denom: token +``` + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 2 + orders: + - amount: 5 # hasn't changed + creator: cosmos14ntyzr6d2dx4ppds9tvenx53fn0xl5jcakrtm4 + id: 0 + price: 15 + - amount: 5 # new order is created + creator: cosmos14ntyzr6d2dx4ppds9tvenx53fn0xl5jcakrtm4 + id: 1 + price: 3 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +## Complete Exchange with a Partially Filled Buy Order + +To complete the exchange with a partially filled buy order, send a transaction +to the decentralized exchange to buy 10 `marscoin` for 5 `venuscoin`. This is +done by running the following command: + +``` +interchanged tx dex send-buy-order dex channel-0 marscoin 10 venuscoin 5 --from alice --home ~/.venus --node tcp://localhost:26659 +``` + +In this scenario, the buy order is only partially filled for 5 `marscoin`. There +is an existing sell order for 5 `marscoin` (with a price of 3 `venuscoin`) on +the Mars chain, which is completely filled and removed from the order book. The +author of the closed sell order will receive 15 `venuscoin` vouchers as payment, +which is the product of 5 `marscoin` and 3 `venuscoin`. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +```yml +balances: +- amount: "140" # increased from 125 + denom: ibc/BB38C24E9877 # venuscoin vouchers +- amount: "975" + denom: marscoin +- amount: "1000" + denom: token +``` + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 2 + orders: + - amount: 5 # order hasn't changed + creator: cosmos14ntyzr6d2dx4ppds9tvenx53fn0xl5jcakrtm4 + id: 0 + price: 15 + # a sell order for 5 marscoin has been closed + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +In this scenario, the author of the buy order will receive 5 `marscoin` vouchers +as payment, which locks up 50 `venuscoin` of their token. The remaining 5 +`marscoin` that is not filled by the sell order will create a new buy order on +the Venus chain. This means that the author of the buy order is still interested +in purchasing 5 `marscoin`, and is willing to pay the specified price for it. +The new buy order will remain on the order book until it is filled by another +sell order, or it is cancelled by the buyer. + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +```yml +balances: +- amount: "20" # increased from 15 + denom: ibc/745B473BFE24 # marscoin vouchers +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "825" # decreased from 875 + denom: venuscoin +``` + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 2 + orders: + - amount: 5 # new buy order is created + creator: cosmos1mrrttwtdcp47pl4hq6sar3mwqpmtc7pcl9e6ss + id: 1 + price: 5 + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +## Cancel an Order + +After the exchanges described, there are still two open orders: a sell order on +the Mars chain (5 `marscoin` for 15 `venuscoin`), and a buy order on the Venus +chain (5 `marscoin` for 5 `venuscoin`). + +To cancel an order on a blockchain, you can use the `cancel-sell-order` or +`cancel-buy-order` command, depending on the type of order you want to cancel. +The command takes several arguments, including the `channel-id` of the IBC +connection, the `amount-denom` and `price-denom` of the order, and the +`order-id` of the order you want to cancel. + +To cancel a sell order on the Mars chain, you would run the following command: + +``` +interchanged tx dex cancel-sell-order dex channel-0 marscoin venuscoin 0 --from alice --home ~/.mars +``` + +This will cancel the sell order and remove it from the order book. The balance +of Alice's `marscoin` will be increased by the amount of the cancelled sell +order. + +To check Alice's balances, including her updated `marscoin` balance, run the +following command: + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.mars) +``` + +This will return a list of Alice's balances, including her updated `marscoin` +balance. + +```yml +balances: +- amount: "140" + denom: ibc/BB38C24E9877 +- amount: "980" # increased from 975 + denom: marscoin +- amount: "1000" + denom: token +``` + +After the sell order on the Mars chain has been cancelled, the sell order book +on that blockchain will be empty. This means that there are no longer any active +sell orders on the Mars chain, and anyone interested in purchasing `marscoin` +will need to create a new buy order. The sell order book will remain empty until +a new sell order is created and added to it. + +``` +interchanged q dex list-sell-order-book +``` + +```yml +sellOrderBook: +- amountDenom: marscoin + book: + idCount: 2 + orders: [] + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +To cancel a buy order on the `Venus` chain, you can run the following command: + +``` +interchanged tx dex cancel-buy-order dex channel-0 marscoin venuscoin 1 --from alice --home ~/.venus --node tcp://localhost:26659 +``` + +This will cancel the buy order and remove it from the order book. The balance of +Alice's `venuscoin` will be increased by the amount of the cancelled buy order. + +To check Alice's balances, including her updated `venuscoin` balance, you can +run the following command: + +``` +interchanged q bank balances $(interchanged keys show -a alice --home ~/.venus) --node tcp://localhost:26659 +``` + +The amount of `venuscoin` is increased: + +```yml +balances: +- amount: "20" + denom: ibc/745B473BFE24 +- amount: "900000000" + denom: stake +- amount: "1000" + denom: token +- amount: "850" # increased from 825 + denom: venuscoin +``` + +This will return a list of Alice's balances, including her updated `venuscoin` +balance. + +After canceling a buy order, the buy order book on the Venus blockchain will be +empty. This means that there are no longer any active buy orders on the chain, +and anyone interested in selling `marscoin` will need to create a new sell +order. The buy order book will remain empty until a new buy order is created and +added to it. + +``` +interchanged q dex list-buy-order-book --node tcp://localhost:26659 +``` + +```yml +buyOrderBook: +- amountDenom: marscoin + book: + idCount: 2 + orders: [] + index: dex-channel-0-marscoin-venuscoin + priceDenom: venuscoin +``` + +In this walkthrough, we demonstrated how to set up an interchain exchange for +trading tokens between two different blockchain networks. This involved creating +an exchange order book for a specific token pair and establishing a fixed +exchange rate between the two. + +Once the exchange was set up, users could send sell orders on the Mars chain and +buy orders on the Venus chain. This allowed them to offer their tokens for sale +or purchase tokens from the exchange. In addition, users could also cancel their +orders if needed. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/04-creating-order-books.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/04-creating-order-books.md new file mode 100644 index 0000000000..d95c7580db --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/04-creating-order-books.md @@ -0,0 +1,480 @@ +--- +sidebar_position: 4 +description: Implement logic to create order books. +--- + +# Implement the Order Books + +In this chapter, you implement the logic to create order books. + +In the Cosmos SDK, the state is stored in a key-value store. Each order book is stored under a unique key that is +composed of four values: + +- Port ID +- Channel ID +- Source denom +- Target denom + +For example, an order book for marscoin and venuscoin could be stored under `dex-channel-4-marscoin-venuscoin`. + +First, define a function that returns an order book store key: + +```go +// x/dex/types/keys.go +package types + +import "fmt" + +// ... +func OrderBookIndex(portID string, channelID string, sourceDenom string, targetDenom string) string { + return fmt.Sprintf("%s-%s-%s-%s", portID, channelID, sourceDenom, targetDenom) +} +``` + +The `send-create-pair` command is used to create order books. This command: + +- Creates and broadcasts a transaction with a message of type `SendCreatePair`. +- The message gets routed to the `dex` module. +- Finally, a `SendCreatePair` keeper method is called. + +You need the `send-create-pair` command to do the following: + +- When processing `SendCreatePair` message on the source chain: + - Check that an order book with the given pair of denoms does not yet exist. + - Transmit an IBC packet with information about port, channel, source denoms, and target denoms. +- After the packet is received on the target chain: + - Check that an order book with the given pair of denoms does not yet exist on the target chain. + - Create a new order book for buy orders. + - Transmit an IBC acknowledgement back to the source chain. +- After the acknowledgement is received on the source chain: + - Create a new order book for sell orders. + +## Message Handling in SendCreatePair + +The `SendCreatePair` function was created during the IBC packet scaffolding. The function creates an IBC packet, +populates it with source and target denoms, and transmits this packet over IBC. + +Now, add the logic to check for an existing order book for a particular pair of denoms: + +```go +// x/dex/keeper/msg_server_create_pair.go + +package keeper + +import ( + "errors" + // ... +) + +func (k msgServer) SendCreatePair(goCtx context.Context, msg *types.MsgSendCreatePair) (*types.MsgSendCreatePairResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Get an order book index + pairIndex := types.OrderBookIndex(msg.Port, msg.ChannelID, msg.SourceDenom, msg.TargetDenom) + + // If an order book is found, return an error + _, found := k.GetSellOrderBook(ctx, pairIndex) + if found { + return &types.MsgSendCreatePairResponse{}, errors.New("the pair already exist") + } + + // Construct the packet + var packet types.CreatePairPacketData + + packet.SourceDenom = msg.SourceDenom + packet.TargetDenom = msg.TargetDenom + + // Transmit the packet + _, err := k.TransmitCreatePairPacket( + ctx, + packet, + msg.Port, + msg.ChannelID, + clienttypes.ZeroHeight(), + msg.TimeoutTimestamp, + ) + if err != nil { + return nil, err + } + + return &types.MsgSendCreatePairResponse{}, nil +} +``` + +## Lifecycle of an IBC Packet + +During a successful transmission, an IBC packet goes through these stages: + +1. Message processing before packet transmission on the source chain +2. Reception of a packet on the target chain +3. Acknowledgment of a packet on the source chain +4. Timeout of a packet on the source chain + +In the following section, implement the packet reception logic in the `OnRecvCreatePairPacket` function and the packet +acknowledgement logic in the `OnAcknowledgementCreatePairPacket` function. + +Leave the Timeout function empty. + +## Receive an IBC packet + +The protocol buffer definition defines the data that an order book contains. + +Add the `OrderBook` and `Order` messages to the `order.proto` file. + +First, add the proto buffer files to build the Go code files. You can modify these files for the purpose of your app. + +Create a new `order.proto` file in the `proto/interchange/dex` directory and add the content: + +```protobuf +// proto/interchange/dex/order.proto + +syntax = "proto3"; + +package interchange.dex; + +option go_package = "interchange/x/dex/types"; + +message OrderBook { + int32 idCount = 1; + repeated Order orders = 2; +} + +message Order { + int32 id = 1; + string creator = 2; + int32 amount = 3; + int32 price = 4; +} +``` + +Modify the `buy_order_book.proto` file to have the fields for creating a buy order on the order book. +Don't forget to add the import as well. + +**Tip:** Don't forget to add the import as well. + +```protobuf +// proto/interchange/dex/buy_order_book.proto + +// ... + +import "interchange/dex/order.proto"; + +message BuyOrderBook { + // ... + OrderBook book = 4; +} +``` + +Modify the `sell_order_book.proto` file to add the order book into the buy order book. + +The proto definition for the `SellOrderBook` looks like: + +```protobuf +// proto/interchange/dex/sell_order_book.proto + +// ... +import "interchange/dex/order.proto"; + +message SellOrderBook { + // ... + OrderBook book = 4; +} +``` + +Now, use Ignite CLI to build the proto files for the `send-create-pair` command: + +```bash +ignite generate proto-go --yes +``` + +Start enhancing the functions for the IBC packets. + +Create a new file `x/dex/types/order_book.go`. + +Add the new order book function to the corresponding Go file: + +```go +// x/dex/types/order_book.go + +package types + +func NewOrderBook() OrderBook { + return OrderBook{ + IdCount: 0, + } +} +``` + +To create a new buy order book type, define `NewBuyOrderBook` in a new file `x/dex/types/buy_order_book.go` : + +```go +// x/dex/types/buy_order_book.go + +package types + +func NewBuyOrderBook(AmountDenom string, PriceDenom string) BuyOrderBook { + book := NewOrderBook() + return BuyOrderBook{ + AmountDenom: AmountDenom, + PriceDenom: PriceDenom, + Book: &book, + } +} +``` + +When an IBC packet is received on the target chain, the module must check whether a book already exists. If not, then +create a buy order book for the specified denoms. + +```go +// x/dex/keeper/create_pair.go + +package keeper + +// ... + +func (k Keeper) OnRecvCreatePairPacket(ctx sdk.Context, packet channeltypes.Packet, data types.CreatePairPacketData) (packetAck types.CreatePairPacketAck, err error) { + // ... + + // Get an order book index + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.SourceDenom, data.TargetDenom) + + // If an order book is found, return an error + _, found := k.GetBuyOrderBook(ctx, pairIndex) + if found { + return packetAck, errors.New("the pair already exist") + } + + // Create a new buy order book for source and target denoms + book := types.NewBuyOrderBook(data.SourceDenom, data.TargetDenom) + + // Assign order book index + book.Index = pairIndex + + // Save the order book to the store + k.SetBuyOrderBook(ctx, book) + return packetAck, nil +} +``` + +## Receive an IBC Acknowledgement + +When an IBC acknowledgement is received on the source chain, the module must check whether a book already exists. If +not, +create a sell order book for the specified denoms. + +Create a new file `x/dex/types/sell_order_book.go`. +Insert the `NewSellOrderBook` function which creates a new sell order book. + +```go +// x/dex/types/sell_order_book.go + +package types + +func NewSellOrderBook(AmountDenom string, PriceDenom string) SellOrderBook { + book := NewOrderBook() + return SellOrderBook{ + AmountDenom: AmountDenom, + PriceDenom: PriceDenom, + Book: &book, + } +} +``` + +Modify the Acknowledgement function in the `x/dex/keeper/create_pair.go` file: + +```go +// x/dex/keeper/create_pair.go + +package keeper + +// ... + +func (k Keeper) OnAcknowledgementCreatePairPacket(ctx sdk.Context, packet channeltypes.Packet, data types.CreatePairPacketData, ack channeltypes.Acknowledgement) error { + switch dispatchedAck := ack.Response.(type) { + case *channeltypes.Acknowledgement_Error: + return nil + case *channeltypes.Acknowledgement_Result: + // Decode the packet acknowledgment + var packetAck types.CreatePairPacketAck + if err := types.ModuleCdc.UnmarshalJSON(dispatchedAck.Result, &packetAck); err != nil { + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("cannot unmarshal acknowledgment") + } + + // Set the sell order book + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.SourceDenom, data.TargetDenom) + book := types.NewSellOrderBook(data.SourceDenom, data.TargetDenom) + book.Index = pairIndex + k.SetSellOrderBook(ctx, book) + + return nil + default: + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("invalid acknowledgment format") + } +} +``` + +In this section, you implemented the logic behind the new `send-create-pair` command: + +- When an IBC packet is received on the target chain, `send-create-pair` command creates a buy order book. +- When an IBC acknowledgement is received on the source chain, the `send-create-pair` command creates a sell order book. + +### Implement the appendOrder Function to Add Orders to the Order Book + +```go +// x/dex/types/order_book.go + +package types + +import ( + "errors" + "sort" +) + +func NewOrderBook() OrderBook { + return OrderBook{ + IdCount: 0, + } +} + +const ( + MaxAmount = int32(100000) + MaxPrice = int32(100000) +) + +type Ordering int + +const ( + Increasing Ordering = iota + Decreasing +) + +var ( + ErrMaxAmount = errors.New("max amount reached") + ErrMaxPrice = errors.New("max price reached") + ErrZeroAmount = errors.New("amount is zero") + ErrZeroPrice = errors.New("price is zero") + ErrOrderNotFound = errors.New("order not found") +) +``` + +The `AppendOrder` function initializes and appends a new order to an order book from the order information: + +```go +// x/dex/types/order_book.go + +func (book *OrderBook) appendOrder(creator string, amount int32, price int32, ordering Ordering) (int32, error) { + if err := checkAmountAndPrice(amount, price); err != nil { + return 0, err + } + + // Initialize the order + var order Order + order.Id = book.GetNextOrderID() + order.Creator = creator + order.Amount = amount + order.Price = price + + // Increment ID tracker + book.IncrementNextOrderID() + + // Insert the order + book.insertOrder(order, ordering) + return order.Id, nil +} +``` + +#### Implement the checkAmountAndPrice Function For an Order + +The `checkAmountAndPrice` function checks for the correct amount or price: + +```go +// x/dex/types/order_book.go + +func checkAmountAndPrice(amount int32, price int32) error { + if amount == int32(0) { + return ErrZeroAmount + } + if amount > MaxAmount { + return ErrMaxAmount + } + + if price == int32(0) { + return ErrZeroPrice + } + if price > MaxPrice { + return ErrMaxPrice + } + + return nil +} +``` + +#### Implement the GetNextOrderID Function + +The `GetNextOrderID` function gets the ID of the next order to append: + +```go +// x/dex/types/order_book.go + +func (book OrderBook) GetNextOrderID() int32 { + return book.IdCount +} +``` + +#### Implement the IncrementNextOrderID Function + +The `IncrementNextOrderID` function updates the ID count for orders: + +```go +// x/dex/types/order_book.go + +func (book *OrderBook) IncrementNextOrderID() { + // Even numbers to have different ID than buy orders + book.IdCount++ +} +``` + +#### Implement the insertOrder Function + +The `insertOrder` function inserts the order in the book with the provided order: + +```go +// x/dex/types/order_book.go + +func (book *OrderBook) insertOrder(order Order, ordering Ordering) { + if len(book.Orders) > 0 { + var i int + + // get the index of the new order depending on the provided ordering + if ordering == Increasing { + i = sort.Search(len(book.Orders), func(i int) bool { return book.Orders[i].Price > order.Price }) + } else { + i = sort.Search(len(book.Orders), func(i int) bool { return book.Orders[i].Price < order.Price }) + } + + // insert order + orders := append(book.Orders, &order) + copy(orders[i+1:], orders[i:]) + orders[i] = &order + book.Orders = orders + } else { + book.Orders = append(book.Orders, &order) + } +} +``` + +This completes the order book setup. + +Now is a good time to save the state of your implementation. +Because your project is in a local repository, you can use git. Saving your current state lets you jump back and forth +in case you introduce errors or need a break. + +```bash +git add . +git commit -m "Create Order Books" +``` + +In the next chapter, you learn how to deal with vouchers by minting and burning vouchers and locking and unlocking +native blockchain token in your app. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/05-mint-and-burn-voucher.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/05-mint-and-burn-voucher.md new file mode 100644 index 0000000000..fed19764ef --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/05-mint-and-burn-voucher.md @@ -0,0 +1,351 @@ +--- +order: 5 +description: Mint vouchers and lock and unlock native token from a blockchain. +--- + +# Mint and Burn Vouchers + +In this chapter, you learn about vouchers. The `dex` module implementation mints vouchers and locks and unlocks native +token from a blockchain. + +There is a lot to learn from this `dex` module implementation: + +- You work with the `bank` keeper and use several methods it offers. +- You interact with another module and use the module account to lock tokens. + +This implementation can teach you how to use various interactions with module accounts or minting, locking or burning +tokens. + +## Create the SafeBurn Function to Burn Vouchers or Lock Tokens + +The `SafeBurn` function burns tokens if they are IBC vouchers (have an `ibc/` prefix) and locks tokens if they are +native to the chain. + +Create a new `x/dex/keeper/mint.go` file: + +```go +// x/dex/keeper/mint.go + +package keeper + +import ( + "fmt" + "strings" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + ibctransfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types" + + "interchange/x/dex/types" +) + +// isIBCToken checks if the token came from the IBC module +// Each IBC token starts with an ibc/ denom, the check is rather simple +func isIBCToken(denom string) bool { + return strings.HasPrefix(denom, "ibc/") +} + +func (k Keeper) SafeBurn(ctx sdk.Context, port string, channel string, sender sdk.AccAddress, denom string, amount int32) error { + if isIBCToken(denom) { + // Burn the tokens + if err := k.BurnTokens(ctx, sender, sdk.NewCoin(denom, sdkmath.NewInt(int64(amount)))); err != nil { + return err + } + } else { + // Lock the tokens + if err := k.LockTokens(ctx, port, channel, sender, sdk.NewCoin(denom, sdkmath.NewInt(int64(amount)))); err != nil { + return err + } + } + + return nil +} +``` + +If the token comes from another blockchain as an IBC token, the burning method actually burns those IBC tokens on one +chain and unlocks them on the other chain. The native token are locked away. + +Now, implement the `BurnTokens` keeper method as used in the previous function. The `bankKeeper` has a useful function +for this: + +```go +// x/dex/keeper/mint.go + +package keeper + +// ... + +func (k Keeper) BurnTokens(ctx sdk.Context, sender sdk.AccAddress, tokens sdk.Coin) error { + // transfer the coins to the module account and burn them + if err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, sender, types.ModuleName, sdk.NewCoins(tokens)); err != nil { + return err + } + + if err := k.bankKeeper.BurnCoins( + ctx, types.ModuleName, sdk.NewCoins(tokens), + ); err != nil { + // NOTE: should not happen as the module account was + // retrieved on the step above and it has enough balance + // to burn. + panic(fmt.Sprintf("cannot burn coins after a successful send to a module account: %v", err)) + } + + return nil +} +``` + +Implement the `LockTokens` keeper method. + +To lock token from a native chain, you can send the native token to the Escrow Address: + +```go +// x/dex/keeper/mint.go + +package keeper + +// ... + +func (k Keeper) LockTokens(ctx sdk.Context, sourcePort string, sourceChannel string, sender sdk.AccAddress, tokens sdk.Coin) error { + // create the escrow address for the tokens + escrowAddress := ibctransfertypes.GetEscrowAddress(sourcePort, sourceChannel) + + // escrow source tokens. It fails if balance insufficient + if err := k.bankKeeper.SendCoins( + ctx, sender, escrowAddress, sdk.NewCoins(tokens), + ); err != nil { + return err + } + + return nil +} +``` + +`BurnTokens` and `LockTokens` use `SendCoinsFromAccountToModule`, `BurnCoins`, and `SendCoins` keeper methods of the +`bank` module. + +To start using these function from the `dex` module, first add them to the `BankKeeper` interface in the +`x/dex/types/expected_keepers.go` file. + +```go +// x/dex/types/expected_keepers.go + +package types + +import sdk "github.com/cosmos/cosmos-sdk/types" + +// BankKeeper defines the expected bank keeper +type BankKeeper interface { + //... + SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error +} +``` + +## SaveVoucherDenom + +The `SaveVoucherDenom` function saves the voucher denom to be able to convert it back later. + +Create a new `x/dex/keeper/denom.go` file: + +```go +// x/dex/keeper/denom.go + +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + ibctransfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types" + + "interchange/x/dex/types" +) + +func (k Keeper) SaveVoucherDenom(ctx sdk.Context, port string, channel string, denom string) { + voucher := VoucherDenom(port, channel, denom) + + // Store the origin denom + _, saved := k.GetDenomTrace(ctx, voucher) + if !saved { + k.SetDenomTrace(ctx, types.DenomTrace{ + Index: voucher, + Port: port, + Channel: channel, + Origin: denom, + }) + } +} +``` + +Finally, the last function to implement is the `VoucherDenom` function that returns the voucher of the denom from the +port ID and channel ID: + +```go +// x/dex/keeper/denom.go + +package keeper + +// ... + +func VoucherDenom(port string, channel string, denom string) string { + // since SendPacket did not prefix the denomination, we must prefix denomination here + sourcePrefix := ibctransfertypes.GetDenomPrefix(port, channel) + + // NOTE: sourcePrefix contains the trailing "/" + prefixedDenom := sourcePrefix + denom + + // construct the denomination trace from the full raw denomination + denomTrace := ibctransfertypes.ParseDenomTrace(prefixedDenom) + voucher := denomTrace.IBCDenom() + return voucher[:16] +} +``` + +### Implement an OriginalDenom Function + +The `OriginalDenom` function returns back the original denom of the voucher. + +False is returned if the port ID and channel ID provided are not the origins of the voucher: + +```go +// x/dex/keeper/denom.go + +package keeper + +// ... + +func (k Keeper) OriginalDenom(ctx sdk.Context, port string, channel string, voucher string) (string, bool) { + trace, exist := k.GetDenomTrace(ctx, voucher) + if exist { + // Check if original port and channel + if trace.Port == port && trace.Channel == channel { + return trace.Origin, true + } + } + + // Not the original chain + return "", false +} +``` + +### Implement a SafeMint Function + +If a token is an IBC token (has an `ibc/` prefix), the `SafeMint` function mints IBC token with `MintTokens`. +Otherwise, it unlocks native token with `UnlockTokens`. + +Go back to the `x/dex/keeper/mint.go` file and add the following code: + +```go +// x/dex/keeper/mint.go + +package keeper + +// ... + +func (k Keeper) SafeMint(ctx sdk.Context, port string, channel string, receiver sdk.AccAddress, denom string, amount int32) error { + if isIBCToken(denom) { + // Mint IBC tokens + if err := k.MintTokens(ctx, receiver, sdk.NewCoin(denom, sdkmath.NewInt(int64(amount)))); err != nil { + return err + } + } else { + // Unlock native tokens + if err := k.UnlockTokens( + ctx, + port, + channel, + receiver, + sdk.NewCoin(denom, sdkmath.NewInt(int64(amount))), + ); err != nil { + return err + } + } + + return nil +} +``` + +#### Implement a `MintTokens` Function + +You can use the `bankKeeper` function again to MintCoins. These token will then be sent to the receiver account: + +```go +// x/dex/keeper/mint.go + +package keeper + +// ... + +func (k Keeper) MintTokens(ctx sdk.Context, receiver sdk.AccAddress, tokens sdk.Coin) error { + // mint new tokens if the source of the transfer is the same chain + if err := k.bankKeeper.MintCoins( + ctx, types.ModuleName, sdk.NewCoins(tokens), + ); err != nil { + return err + } + + // send to receiver + if err := k.bankKeeper.SendCoinsFromModuleToAccount( + ctx, types.ModuleName, receiver, sdk.NewCoins(tokens), + ); err != nil { + panic(fmt.Sprintf("unable to send coins from module to account despite previously minting coins to module account: %v", err)) + } + + return nil +} +``` + +Finally, add the function to unlock token after they are sent back to the native blockchain: + +```go +// x/dex/keeper/mint.go + +package keeper + +// ... + +func (k Keeper) UnlockTokens(ctx sdk.Context, sourcePort string, sourceChannel string, receiver sdk.AccAddress, tokens sdk.Coin) error { + // create the escrow address for the tokens + escrowAddress := ibctransfertypes.GetEscrowAddress(sourcePort, sourceChannel) + + // escrow source tokens. It fails if balance insufficient + if err := k.bankKeeper.SendCoins( + ctx, escrowAddress, receiver, sdk.NewCoins(tokens), + ); err != nil { + return err + } + + return nil +} +``` + +The `MintTokens` function uses two keeper methods from the `bank` module: `MintCoins` and `SendCoinsFromModuleToAccount` +. +To import these methods, add their signatures to the `BankKeeper` interface in the `x/dex/types/expected_keepers.go` +file: + +```go +// x/dex/types/expected_keepers.go + +package types + +// ... + +type BankKeeper interface { + // ... + MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error +} +``` + +## Summary + +You finished the mint and burn voucher logic. + +It is a good time to make another git commit to save the state of your work: + +```bash +git add . +git commit -m "Add Mint and Burn Voucher" +``` + +In the next chapter, you look into creating sell orders. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/06-creating-sell-orders.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/06-creating-sell-orders.md new file mode 100644 index 0000000000..99b3925da5 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/06-creating-sell-orders.md @@ -0,0 +1,402 @@ +--- +sidebar_position: 6 +description: Implement logic to create sell orders. +--- + +# Create Sell Orders + +In this chapter, you implement the logic for creating sell orders. + +The packet proto file for a sell order is already generated. Add the seller information: + +```protobuf +// proto/dex/packet.proto + +message SellOrderPacketData { + // ... + string seller = 5; +} +``` + +Now, use Ignite CLI to build the proto files for the `send-sell-order` command. You used this command in a previous +chapter. + +```bash +ignite generate proto-go --yes +``` + +## Message Handling in SendSellOrder + +Sell orders are created using the `send-sell-order` command. This command creates a transaction with a `SendSellOrder` +message that triggers the `SendSellOrder` keeper method. + +The `SendSellOrder` command: + +* Checks that an order book for a specified denom pair exists. +* Safely burns or locks token. + * If the token is an IBC token, burn the token. + * If the token is a native token, lock the token. +* Saves the voucher that is received on the target chain to later resolve a denom. +* Transmits an IBC packet to the target chain. + +```go +// x/dex/keeper/msg_server_sell_order.go + +package keeper + +import ( + "context" + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + clienttypes "github.com/cosmos/ibc-go/v6/modules/core/02-client/types" + + "interchange/x/dex/types" +) + +func (k msgServer) SendSellOrder(goCtx context.Context, msg *types.MsgSendSellOrder) (*types.MsgSendSellOrderResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // If an order book doesn't exist, throw an error + pairIndex := types.OrderBookIndex(msg.Port, msg.ChannelID, msg.AmountDenom, msg.PriceDenom) + _, found := k.GetSellOrderBook(ctx, pairIndex) + if !found { + return &types.MsgSendSellOrderResponse{}, errors.New("the pair doesn't exist") + } + + // Get sender's address + sender, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return &types.MsgSendSellOrderResponse{}, err + } + + // Use SafeBurn to ensure no new native tokens are minted + if err := k.SafeBurn(ctx, msg.Port, msg.ChannelID, sender, msg.AmountDenom, msg.Amount); err != nil { + return &types.MsgSendSellOrderResponse{}, err + } + + // Save the voucher received on the other chain, to have the ability to resolve it into the original denom + k.SaveVoucherDenom(ctx, msg.Port, msg.ChannelID, msg.AmountDenom) + + var packet types.SellOrderPacketData + packet.Seller = msg.Creator + packet.AmountDenom = msg.AmountDenom + packet.Amount = msg.Amount + packet.PriceDenom = msg.PriceDenom + packet.Price = msg.Price + + // Transmit the packet + err = k.TransmitSellOrderPacket(ctx, packet, msg.Port, msg.ChannelID, clienttypes.ZeroHeight(), msg.TimeoutTimestamp) + if err != nil { + return nil, err + } + + return &types.MsgSendSellOrderResponse{}, nil +} +``` + +## On Receiving a Sell Order + +When a "sell order" packet is received on the target chain, you want the module to: + +* Update the sell order book +* Distribute sold token to the buyer +* Send the sell order to chain A after the fill attempt + +```go +// x/dex/keeper/sell_order.go + +package keeper + +// ... + +func (k Keeper) OnRecvSellOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.SellOrderPacketData) (packetAck types.SellOrderPacketAck, err error) { + if err := data.ValidateBasic(); err != nil { + return packetAck, err + } + + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.AmountDenom, data.PriceDenom) + book, found := k.GetBuyOrderBook(ctx, pairIndex) + if !found { + return packetAck, errors.New("the pair doesn't exist") + } + + // Fill sell order + remaining, liquidated, gain, _ := book.FillSellOrder(types.Order{ + Amount: data.Amount, + Price: data.Price, + }) + + // Return remaining amount and gains + packetAck.RemainingAmount = remaining.Amount + packetAck.Gain = gain + + // Before distributing sales, we resolve the denom + // First we check if the denom received comes from this chain originally + finalAmountDenom, saved := k.OriginalDenom(ctx, packet.DestinationPort, packet.DestinationChannel, data.AmountDenom) + if !saved { + // If it was not from this chain we use voucher as denom + finalAmountDenom = VoucherDenom(packet.SourcePort, packet.SourceChannel, data.AmountDenom) + } + + // Dispatch liquidated buy orders + for _, liquidation := range liquidated { + liquidation := liquidation + addr, err := sdk.AccAddressFromBech32(liquidation.Creator) + if err != nil { + return packetAck, err + } + + if err := k.SafeMint(ctx, packet.DestinationPort, packet.DestinationChannel, addr, finalAmountDenom, liquidation.Amount); err != nil { + return packetAck, err + } + } + + // Save the new order book + k.SetBuyOrderBook(ctx, book) + + return packetAck, nil +} +``` + +### Implement the FillSellOrder Function + +The `FillSellOrder` function tries to fill the buy order with the order book and returns all the side effects: + +```go +// x/dex/types/buy_order_book.go + +package types + +// ... + +func (b *BuyOrderBook) FillSellOrder(order Order) ( + remainingSellOrder Order, + liquidated []Order, + gain int32, + filled bool, +) { + var liquidatedList []Order + totalGain := int32(0) + remainingSellOrder = order + + // Liquidate as long as there is match + for { + var match bool + var liquidation Order + remainingSellOrder, liquidation, gain, match, filled = b.LiquidateFromSellOrder( + remainingSellOrder, + ) + if !match { + break + } + + // Update gains + totalGain += gain + + // Update liquidated + liquidatedList = append(liquidatedList, liquidation) + + if filled { + break + } + } + + return remainingSellOrder, liquidatedList, totalGain, filled +} +``` + +### Implement The LiquidateFromSellOrder Function + +The `LiquidateFromSellOrder` function liquidates the first sell order of the book from the buy order. If no match is +found, return false for match: + +```go +// x/dex/types/buy_order_book.go + +package types + +// ... + +func (b *BuyOrderBook) LiquidateFromSellOrder(order Order) ( + remainingSellOrder Order, + liquidatedBuyOrder Order, + gain int32, + match bool, + filled bool, +) { + remainingSellOrder = order + + // No match if no order + orderCount := len(b.Book.Orders) + if orderCount == 0 { + return order, liquidatedBuyOrder, gain, false, false + } + + // Check if match + highestBid := b.Book.Orders[orderCount-1] + if order.Price > highestBid.Price { + return order, liquidatedBuyOrder, gain, false, false + } + + liquidatedBuyOrder = *highestBid + + // Check if sell order can be entirely filled + if highestBid.Amount >= order.Amount { + remainingSellOrder.Amount = 0 + liquidatedBuyOrder.Amount = order.Amount + gain = order.Amount * highestBid.Price + + // Remove the highest bid if it has been entirely liquidated + highestBid.Amount -= order.Amount + if highestBid.Amount == 0 { + b.Book.Orders = b.Book.Orders[:orderCount-1] + } else { + b.Book.Orders[orderCount-1] = highestBid + } + + return remainingSellOrder, liquidatedBuyOrder, gain, true, true + } + + // Not entirely filled + gain = highestBid.Amount * highestBid.Price + b.Book.Orders = b.Book.Orders[:orderCount-1] + remainingSellOrder.Amount -= highestBid.Amount + + return remainingSellOrder, liquidatedBuyOrder, gain, true, false +} +``` + +### Implement the OnAcknowledgement Function for Sell Order Packets + +After an IBC packet is processed on the target chain, an acknowledgement is returned to the source chain and processed +by the `OnAcknowledgementSellOrderPacket` function. + +The dex module on the source chain: + +* Stores the remaining sell order in the sell order book. +* Distributes sold tokens to the buyers. +* Distributes the price of the amount sold to the seller. +* On error, mints the burned tokens. + +```go +// x/dex/keeper/sell_order.go + +package keeper + +// ... + +func (k Keeper) OnAcknowledgementSellOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.SellOrderPacketData, ack channeltypes.Acknowledgement) error { + switch dispatchedAck := ack.Response.(type) { + case *channeltypes.Acknowledgement_Error: + // In case of error we mint back the native token + receiver, err := sdk.AccAddressFromBech32(data.Seller) + if err != nil { + return err + } + + if err := k.SafeMint(ctx, packet.SourcePort, packet.SourceChannel, receiver, data.AmountDenom, data.Amount); err != nil { + return err + } + + return nil + case *channeltypes.Acknowledgement_Result: + // Decode the packet acknowledgment + var packetAck types.SellOrderPacketAck + if err := types.ModuleCdc.UnmarshalJSON(dispatchedAck.Result, &packetAck); err != nil { + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("cannot unmarshal acknowledgment") + } + + // Get the sell order book + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.AmountDenom, data.PriceDenom) + book, found := k.GetSellOrderBook(ctx, pairIndex) + if !found { + panic("sell order book must exist") + } + + // Append the remaining amount of the order + if packetAck.RemainingAmount > 0 { + _, err := book.AppendOrder(data.Seller, packetAck.RemainingAmount, data.Price) + if err != nil { + return err + } + + // Save the new order book + k.SetSellOrderBook(ctx, book) + } + + // Mint the gains + if packetAck.Gain > 0 { + receiver, err := sdk.AccAddressFromBech32(data.Seller) + if err != nil { + return err + } + + finalPriceDenom, saved := k.OriginalDenom(ctx, packet.SourcePort, packet.SourceChannel, data.PriceDenom) + if !saved { + // If it was not from this chain we use voucher as denom + finalPriceDenom = VoucherDenom(packet.DestinationPort, packet.DestinationChannel, data.PriceDenom) + } + + if err := k.SafeMint(ctx, packet.SourcePort, packet.SourceChannel, receiver, finalPriceDenom, packetAck.Gain); err != nil { + return err + } + } + + return nil + default: + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("invalid acknowledgment format") + } +} +``` + +```go +// x/dex/types/sell_order_book.go + +package types + +// ... + +func (s *SellOrderBook) AppendOrder(creator string, amount int32, price int32) (int32, error) { + return s.Book.appendOrder(creator, amount, price, Decreasing) +} +``` + +### Add the OnTimeout of a Sell Order Packet Function + +If a timeout occurs, mint back the native token: + +```go +// x/dex/keeper/sell_order.go + +package keeper + +// ... + +func (k Keeper) OnTimeoutSellOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.SellOrderPacketData) error { + // In case of error we mint back the native token + receiver, err := sdk.AccAddressFromBech32(data.Seller) + if err != nil { + return err + } + + if err := k.SafeMint(ctx, packet.SourcePort, packet.SourceChannel, receiver, data.AmountDenom, data.Amount); err != nil { + return err + } + + return nil +} +``` + +## Summary + +Great, you have completed the sell order logic. + +It is a good time to make another git commit again to save the state of your work: + +```bash +git add . +git commit -m "Add Sell Orders" +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/07-creating-buy-orders.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/07-creating-buy-orders.md new file mode 100644 index 0000000000..05fb6471a6 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/07-creating-buy-orders.md @@ -0,0 +1,440 @@ +--- +sidebar_position: 7 +description: Implement the buy order logic. +--- + +# Creating Buy Orders + +In this chapter, you implement the creation of buy orders. The logic is very similar to the sell order logic you +implemented in the previous chapter. + +## Modify the Proto Definition + +Add the buyer to the proto file definition: + +```protobuf +// proto/interchange/dex/packet.proto + +message BuyOrderPacketData { + // ... + string buyer = 5; +} +``` + +Now, use Ignite CLI to build the proto files for the `send-buy-order` command. You used this command in previous +chapters. + +```bash +ignite generate proto-go --yes +``` + +## IBC Message Handling in SendBuyOrder + +* Check if the pair exists on the order book +* If the token is an IBC token, burn the tokens +* If the token is a native token, lock the tokens +* Save the voucher received on the target chain to later resolve a denom + +```go +// x/dex/keeper/msg_server_buy_order.go + +package keeper + +import ( + "context" + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "interchange/x/dex/types" +) + +func (k msgServer) SendBuyOrder(goCtx context.Context, msg *types.MsgSendBuyOrder) (*types.MsgSendBuyOrderResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Cannot send a order if the pair doesn't exist + pairIndex := types.OrderBookIndex(msg.Port, msg.ChannelID, msg.AmountDenom, msg.PriceDenom) + _, found := k.GetBuyOrderBook(ctx, pairIndex) + if !found { + return &types.MsgSendBuyOrderResponse{}, errors.New("the pair doesn't exist") + } + + // Lock the token to send + sender, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return &types.MsgSendBuyOrderResponse{}, err + } + + // Use SafeBurn to ensure no new native tokens are minted + if err := k.SafeBurn(ctx, msg.Port, msg.ChannelID, sender, msg.PriceDenom, msg.Amount*msg.Price); err != nil { + return &types.MsgSendBuyOrderResponse{}, err + } + + // Save the voucher received on the other chain, to have the ability to resolve it into the original denom + k.SaveVoucherDenom(ctx, msg.Port, msg.ChannelID, msg.PriceDenom) + + // Construct the packet + var packet types.BuyOrderPacketData + + packet.Buyer = msg.Creator + packet.AmountDenom = msg.AmountDenom + packet.Amount = msg.Amount + packet.PriceDenom = msg.PriceDenom + packet.Price = msg.Price + + // Transmit the packet + err = k.TransmitBuyOrderPacket( + ctx, + packet, + msg.Port, + msg.ChannelID, + clienttypes.ZeroHeight(), + msg.TimeoutTimestamp, + ) + if err != nil { + return nil, err + } + + // Transmit an IBC packet... + return &types.MsgSendBuyOrderResponse{}, nil +} +``` + +## On Receiving a Buy Order + +* Update the buy order book +* Distribute sold token to the buyer +* Send the sell order to chain A after the fill attempt + +```go +// x/dex/keeper/buy_order.go + +package keeper + +// ... + +func (k Keeper) OnRecvBuyOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.BuyOrderPacketData) (packetAck types.BuyOrderPacketAck, err error) { + // validate packet data upon receiving + if err := data.ValidateBasic(); err != nil { + return packetAck, err + } + + // Check if the sell order book exists + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.AmountDenom, data.PriceDenom) + book, found := k.GetSellOrderBook(ctx, pairIndex) + if !found { + return packetAck, errors.New("the pair doesn't exist") + } + + // Fill buy order + remaining, liquidated, purchase, _ := book.FillBuyOrder(types.Order{ + Amount: data.Amount, + Price: data.Price, + }) + + // Return remaining amount and gains + packetAck.RemainingAmount = remaining.Amount + packetAck.Purchase = purchase + + // Before distributing gains, we resolve the denom + // First we check if the denom received comes from this chain originally + finalPriceDenom, saved := k.OriginalDenom(ctx, packet.DestinationPort, packet.DestinationChannel, data.PriceDenom) + if !saved { + // If it was not from this chain we use voucher as denom + finalPriceDenom = VoucherDenom(packet.SourcePort, packet.SourceChannel, data.PriceDenom) + } + + // Dispatch liquidated buy order + for _, liquidation := range liquidated { + liquidation := liquidation + addr, err := sdk.AccAddressFromBech32(liquidation.Creator) + if err != nil { + return packetAck, err + } + + if err := k.SafeMint( + ctx, + packet.DestinationPort, + packet.DestinationChannel, + addr, + finalPriceDenom, + liquidation.Amount*liquidation.Price, + ); err != nil { + return packetAck, err + } + } + + // Save the new order book + k.SetSellOrderBook(ctx, book) + + return packetAck, nil +} +``` + +### Implement a FillBuyOrder Function + +The `FillBuyOrder` function tries to fill the sell order with the order book and returns all the side effects: + +```go +// x/dex/types/sell_order_book.go + +package types + +// ... + +func (s *SellOrderBook) FillBuyOrder(order Order) ( + remainingBuyOrder Order, + liquidated []Order, + purchase int32, + filled bool, +) { + var liquidatedList []Order + totalPurchase := int32(0) + remainingBuyOrder = order + + // Liquidate as long as there is match + for { + var match bool + var liquidation Order + remainingBuyOrder, liquidation, purchase, match, filled = s.LiquidateFromBuyOrder( + remainingBuyOrder, + ) + if !match { + break + } + + // Update gains + totalPurchase += purchase + + // Update liquidated + liquidatedList = append(liquidatedList, liquidation) + + if filled { + break + } + } + + return remainingBuyOrder, liquidatedList, totalPurchase, filled +} +``` + +### Implement a LiquidateFromBuyOrder Function + +The `LiquidateFromBuyOrder` function liquidates the first buy order of the book from the sell order. If no match is +found, return false for match: + +```go +// x/dex/types/sell_order_book.go + +package types + +// ... + +func (s *SellOrderBook) LiquidateFromBuyOrder(order Order) ( + remainingBuyOrder Order, + liquidatedSellOrder Order, + purchase int32, + match bool, + filled bool, +) { + remainingBuyOrder = order + + // No match if no order + orderCount := len(s.Book.Orders) + if orderCount == 0 { + return order, liquidatedSellOrder, purchase, false, false + } + + // Check if match + lowestAsk := s.Book.Orders[orderCount-1] + if order.Price < lowestAsk.Price { + return order, liquidatedSellOrder, purchase, false, false + } + + liquidatedSellOrder = *lowestAsk + + // Check if buy order can be entirely filled + if lowestAsk.Amount >= order.Amount { + remainingBuyOrder.Amount = 0 + liquidatedSellOrder.Amount = order.Amount + purchase = order.Amount + + // Remove lowest ask if it has been entirely liquidated + lowestAsk.Amount -= order.Amount + if lowestAsk.Amount == 0 { + s.Book.Orders = s.Book.Orders[:orderCount-1] + } else { + s.Book.Orders[orderCount-1] = lowestAsk + } + + return remainingBuyOrder, liquidatedSellOrder, purchase, true, true + } + + // Not entirely filled + purchase = lowestAsk.Amount + s.Book.Orders = s.Book.Orders[:orderCount-1] + remainingBuyOrder.Amount -= lowestAsk.Amount + + return remainingBuyOrder, liquidatedSellOrder, purchase, true, false +} +``` + +## Receiving a Buy Order Acknowledgment + +After a buy order acknowledgement is received, chain `Mars`: + +* Stores the remaining sell order in the sell order book. +* Distributes sold `marscoin` to the buyers. +* Distributes to the seller the price of the amount sold. +* On error, mints back the burned tokens. + +```go +// x/dex/keeper/buy_order.go + +package keeper + +// ... + +func (k Keeper) OnAcknowledgementBuyOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.BuyOrderPacketData, ack channeltypes.Acknowledgement) error { + switch dispatchedAck := ack.Response.(type) { + case *channeltypes.Acknowledgement_Error: + // In case of error we mint back the native token + receiver, err := sdk.AccAddressFromBech32(data.Buyer) + if err != nil { + return err + } + + if err := k.SafeMint( + ctx, + packet.SourcePort, + packet.SourceChannel, + receiver, + data.PriceDenom, + data.Amount*data.Price, + ); err != nil { + return err + } + + return nil + case *channeltypes.Acknowledgement_Result: + // Decode the packet acknowledgment + var packetAck types.BuyOrderPacketAck + + if err := types.ModuleCdc.UnmarshalJSON(dispatchedAck.Result, &packetAck); err != nil { + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("cannot unmarshal acknowledgment") + } + + // Get the sell order book + pairIndex := types.OrderBookIndex(packet.SourcePort, packet.SourceChannel, data.AmountDenom, data.PriceDenom) + book, found := k.GetBuyOrderBook(ctx, pairIndex) + if !found { + panic("buy order book must exist") + } + + // Append the remaining amount of the order + if packetAck.RemainingAmount > 0 { + _, err := book.AppendOrder( + data.Buyer, + packetAck.RemainingAmount, + data.Price, + ) + if err != nil { + return err + } + + // Save the new order book + k.SetBuyOrderBook(ctx, book) + } + + // Mint the purchase + if packetAck.Purchase > 0 { + receiver, err := sdk.AccAddressFromBech32(data.Buyer) + if err != nil { + return err + } + + finalAmountDenom, saved := k.OriginalDenom(ctx, packet.SourcePort, packet.SourceChannel, data.AmountDenom) + if !saved { + // If it was not from this chain we use voucher as denom + finalAmountDenom = VoucherDenom(packet.DestinationPort, packet.DestinationChannel, data.AmountDenom) + } + + if err := k.SafeMint( + ctx, + packet.SourcePort, + packet.SourceChannel, + receiver, + finalAmountDenom, + packetAck.Purchase, + ); err != nil { + return err + } + } + + return nil + default: + // The counter-party module doesn't implement the correct acknowledgment format + return errors.New("invalid acknowledgment format") + } +} +``` + +`AppendOrder` appends an order in the buy order book. +Add the following function to the `x/dex/types/buy_order_book.go` file in the `types` directory. + +```go +// x/dex/types/buy_order_book.go + +package types + +// ... + +func (b *BuyOrderBook) AppendOrder(creator string, amount int32, price int32) (int32, error) { + return b.Book.appendOrder(creator, amount, price, Increasing) +} +``` + +## OnTimeout of a Buy Order Packet + +If a timeout occurs, mint back the native token: + +```go +// x/dex/keeper/buy_order.go + +package keeper + +// ... + +func (k Keeper) OnTimeoutBuyOrderPacket(ctx sdk.Context, packet channeltypes.Packet, data types.BuyOrderPacketData) error { + // In case of error we mint back the native token + receiver, err := sdk.AccAddressFromBech32(data.Buyer) + if err != nil { + return err + } + + if err := k.SafeMint( + ctx, + packet.SourcePort, + packet.SourceChannel, + receiver, + data.PriceDenom, + data.Amount*data.Price, + ); err != nil { + return err + } + + return nil +} +``` + +## Summary + +Congratulations, you implemented the buy order logic. + +Again, it's a good time to save your current state to your local GitHub repository: + +```bash +git add . +git commit -m "Add Buy Orders" +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/08-cancelling-orders.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/08-cancelling-orders.md new file mode 100644 index 0000000000..103ff5ffbd --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/08-cancelling-orders.md @@ -0,0 +1,200 @@ +--- +sidebar_position: 8 +description: Enable cancelling of buy and sell orders. +--- + +# Cancelling Orders + +You have implemented order books, buy and sell orders. In this chapter, you enable cancelling of buy and sell orders. + +## Cancel a Sell Order + +To cancel a sell order, you have to get the ID of the specific sell order. Then you can use the function +`RemoveOrderFromID` to remove the specific order from the order book and update the keeper accordingly. + +Move to the keeper directory and edit the `x/dex/keeper/msg_server_cancel_sell_order.go` file: + +```go +// x/dex/keeper/msg_server_cancel_sell_order.go + +package keeper + +import ( + "context" + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "interchange/x/dex/types" +) + +func (k msgServer) CancelSellOrder(goCtx context.Context, msg *types.MsgCancelSellOrder) (*types.MsgCancelSellOrderResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Retrieve the book + pairIndex := types.OrderBookIndex(msg.Port, msg.Channel, msg.AmountDenom, msg.PriceDenom) + s, found := k.GetSellOrderBook(ctx, pairIndex) + if !found { + return &types.MsgCancelSellOrderResponse{}, errors.New("the pair doesn't exist") + } + + // Check order creator + order, err := s.Book.GetOrderFromID(msg.OrderID) + if err != nil { + return &types.MsgCancelSellOrderResponse{}, err + } + + if order.Creator != msg.Creator { + return &types.MsgCancelSellOrderResponse{}, errors.New("canceller must be creator") + } + + // Remove order + if err := s.Book.RemoveOrderFromID(msg.OrderID); err != nil { + return &types.MsgCancelSellOrderResponse{}, err + } + + k.SetSellOrderBook(ctx, s) + + // Refund seller with remaining amount + seller, err := sdk.AccAddressFromBech32(order.Creator) + if err != nil { + return &types.MsgCancelSellOrderResponse{}, err + } + + if err := k.SafeMint(ctx, msg.Port, msg.Channel, seller, msg.AmountDenom, order.Amount); err != nil { + return &types.MsgCancelSellOrderResponse{}, err + } + + return &types.MsgCancelSellOrderResponse{}, nil +} +``` + +### Implement the GetOrderFromID Function + +The `GetOrderFromID` function gets an order from the book from its ID. + +Add this function to the `x/dex/types/order_book.go` function in the `types` directory: + +```go +// x/dex/types/order_book.go + +func (book OrderBook) GetOrderFromID(id int32) (Order, error) { + for _, order := range book.Orders { + if order.Id == id { + return *order, nil + } + } + + return Order{}, ErrOrderNotFound +} +``` + +### Implement the RemoveOrderFromID Function + +The `RemoveOrderFromID` function removes an order from the book and keeps it ordered: + +```go +// x/dex/types/order_book.go + +package types + +// ... + +func (book *OrderBook) RemoveOrderFromID(id int32) error { + for i, order := range book.Orders { + if order.Id == id { + book.Orders = append(book.Orders[:i], book.Orders[i+1:]...) + return nil + } + } + + return ErrOrderNotFound +} +``` + +## Cancel a Buy Order + +To cancel a buy order, you have to get the ID of the specific buy order. Then you can use the function +`RemoveOrderFromID` to remove the specific order from the order book and update the keeper accordingly: + +```go +// x/dex/keeper/msg_server_cancel_buy_order.go + +package keeper + +import ( + "context" + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "interchange/x/dex/types" +) + +func (k msgServer) CancelBuyOrder(goCtx context.Context, msg *types.MsgCancelBuyOrder) (*types.MsgCancelBuyOrderResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Retrieve the book + pairIndex := types.OrderBookIndex(msg.Port, msg.Channel, msg.AmountDenom, msg.PriceDenom) + b, found := k.GetBuyOrderBook(ctx, pairIndex) + if !found { + return &types.MsgCancelBuyOrderResponse{}, errors.New("the pair doesn't exist") + } + + // Check order creator + order, err := b.Book.GetOrderFromID(msg.OrderID) + if err != nil { + return &types.MsgCancelBuyOrderResponse{}, err + } + + if order.Creator != msg.Creator { + return &types.MsgCancelBuyOrderResponse{}, errors.New("canceller must be creator") + } + + // Remove order + if err := b.Book.RemoveOrderFromID(msg.OrderID); err != nil { + return &types.MsgCancelBuyOrderResponse{}, err + } + + k.SetBuyOrderBook(ctx, b) + + // Refund buyer with remaining price amount + buyer, err := sdk.AccAddressFromBech32(order.Creator) + if err != nil { + return &types.MsgCancelBuyOrderResponse{}, err + } + + if err := k.SafeMint( + ctx, + msg.Port, + msg.Channel, + buyer, + msg.PriceDenom, + order.Amount*order.Price, + ); err != nil { + return &types.MsgCancelBuyOrderResponse{}, err + } + + return &types.MsgCancelBuyOrderResponse{}, nil +} +``` + +## Summary + +You have completed implementing the functions that are required for the `dex` module. In this chapter, you have +implemented the design for cancelling specific buy or sell orders. + +To test if your Ignite CLI blockchain builds correctly, use the `chain build` command: + +```bash +ignite chain build +``` + +Again, it is a good time (a great time!) to add your state to the local GitHub repository: + +```bash +git add . +git commit -m "Add Cancelling Orders" +``` + +Finally, it's now time to write test files. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/09-tests.md b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/09-tests.md new file mode 100644 index 0000000000..24981931ea --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/09-tests.md @@ -0,0 +1,729 @@ +--- +sidebar_position: 9 +description: Add test files. +--- + +# Write Test Files + +To test your application, add the test files to your code. + +After you add the test files, change into the `interchange` directory with your terminal, then run: + +```bash +go test -timeout 30s ./x/dex/types +``` + +## Order Book Tests + +Create a new `x/dex/types/order_book_test.go` file in the `types` directory. + +Add the following testsuite: + +```go +// x/dex/types/order_book_test.go + +package types_test + +import ( + "math/rand" + "testing" + + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "interchange/x/dex/types" +) + +func GenString(n int) string { + alpha := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + + buf := make([]rune, n) + for i := range buf { + buf[i] = alpha[rand.Intn(len(alpha))] + } + + return string(buf) +} + +func GenAddress() string { + pk := ed25519.GenPrivKey().PubKey() + addr := pk.Address() + return sdk.AccAddress(addr).String() +} + +func GenAmount() int32 { + return int32(rand.Intn(int(types.MaxAmount)) + 1) +} + +func GenPrice() int32 { + return int32(rand.Intn(int(types.MaxPrice)) + 1) +} + +func GenPair() (string, string) { + return GenString(10), GenString(10) +} + +func GenOrder() (string, int32, int32) { + return GenLocalAccount(), GenAmount(), GenPrice() +} + +func GenLocalAccount() string { + return GenAddress() +} + +func MockAccount(str string) string { + return str +} + +func OrderListToOrderBook(list []types.Order) types.OrderBook { + listCopy := make([]*types.Order, len(list)) + for i, order := range list { + order := order + listCopy[i] = &order + } + + return types.OrderBook{ + IdCount: 0, + Orders: listCopy, + } +} + +func TestRemoveOrderFromID(t *testing.T) { + inputList := []types.Order{ + {Id: 3, Creator: MockAccount("3"), Amount: 2, Price: 10}, + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + } + + book := OrderListToOrderBook(inputList) + expectedList := []types.Order{ + {Id: 3, Creator: MockAccount("3"), Amount: 2, Price: 10}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + } + expectedBook := OrderListToOrderBook(expectedList) + err := book.RemoveOrderFromID(2) + require.NoError(t, err) + require.Equal(t, expectedBook, book) + + book = OrderListToOrderBook(inputList) + expectedList = []types.Order{ + {Id: 3, Creator: MockAccount("3"), Amount: 2, Price: 10}, + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + } + expectedBook = OrderListToOrderBook(expectedList) + err = book.RemoveOrderFromID(0) + require.NoError(t, err) + require.Equal(t, expectedBook, book) + + book = OrderListToOrderBook(inputList) + expectedList = []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + } + expectedBook = OrderListToOrderBook(expectedList) + err = book.RemoveOrderFromID(3) + require.NoError(t, err) + require.Equal(t, expectedBook, book) + + book = OrderListToOrderBook(inputList) + err = book.RemoveOrderFromID(4) + require.ErrorIs(t, err, types.ErrOrderNotFound) +} +``` + +## Buy Order Tests + +Create a new `x/dex/types/buy_order_book_test.go` file in the `types` directory to add the tests for the Buy Order Book: + +```go +// x/dex/types/buy_order_book_test.go + +package types_test + +import ( + "sort" + "testing" + + "github.com/stretchr/testify/require" + + "interchange/x/dex/types" +) + +func OrderListToBuyOrderBook(list []types.Order) types.BuyOrderBook { + listCopy := make([]*types.Order, len(list)) + for i, order := range list { + order := order + listCopy[i] = &order + } + + book := types.BuyOrderBook{ + AmountDenom: "foo", + PriceDenom: "bar", + Book: &types.OrderBook{ + IdCount: 0, + Orders: listCopy, + }, + } + return book +} + +func TestAppendOrder(t *testing.T) { + buyBook := types.NewBuyOrderBook(GenPair()) + + // Prevent zero amount + seller, amount, price := GenOrder() + _, err := buyBook.AppendOrder(seller, 0, price) + require.ErrorIs(t, err, types.ErrZeroAmount) + + // Prevent big amount + _, err = buyBook.AppendOrder(seller, types.MaxAmount+1, price) + require.ErrorIs(t, err, types.ErrMaxAmount) + + // Prevent zero price + _, err = buyBook.AppendOrder(seller, amount, 0) + require.ErrorIs(t, err, types.ErrZeroPrice) + + // Prevent big price + _, err = buyBook.AppendOrder(seller, amount, types.MaxPrice+1) + require.ErrorIs(t, err, types.ErrMaxPrice) + + // Can append buy orders + for i := 0; i < 20; i++ { + // Append a new order + creator, amount, price := GenOrder() + newOrder := types.Order{ + Id: buyBook.Book.IdCount, + Creator: creator, + Amount: amount, + Price: price, + } + orderID, err := buyBook.AppendOrder(creator, amount, price) + + // Checks + require.NoError(t, err) + require.Contains(t, buyBook.Book.Orders, &newOrder) + require.Equal(t, newOrder.Id, orderID) + } + + require.Len(t, buyBook.Book.Orders, 20) + require.True(t, sort.SliceIsSorted(buyBook.Book.Orders, func(i, j int) bool { + return buyBook.Book.Orders[i].Price < buyBook.Book.Orders[j].Price + })) +} + +type liquidateSellRes struct { + Book []types.Order + Remaining types.Order + Liquidated types.Order + Gain int32 + Match bool + Filled bool +} + +func simulateLiquidateFromSellOrder( + t *testing.T, + inputList []types.Order, + inputOrder types.Order, + expected liquidateSellRes, +) { + book := OrderListToBuyOrderBook(inputList) + expectedBook := OrderListToBuyOrderBook(expected.Book) + + require.True(t, sort.SliceIsSorted(book.Book.Orders, func(i, j int) bool { + return book.Book.Orders[i].Price < book.Book.Orders[j].Price + })) + require.True(t, sort.SliceIsSorted(expectedBook.Book.Orders, func(i, j int) bool { + return expectedBook.Book.Orders[i].Price < expectedBook.Book.Orders[j].Price + })) + + remaining, liquidated, gain, match, filled := book.LiquidateFromSellOrder(inputOrder) + + require.Equal(t, expectedBook, book) + require.Equal(t, expected.Remaining, remaining) + require.Equal(t, expected.Liquidated, liquidated) + require.Equal(t, expected.Gain, gain) + require.Equal(t, expected.Match, match) + require.Equal(t, expected.Filled, filled) +} + +func TestLiquidateFromSellOrder(t *testing.T) { + // No match for empty book + inputOrder := types.Order{Id: 10, Creator: MockAccount("1"), Amount: 100, Price: 30} + book := OrderListToBuyOrderBook([]types.Order{}) + _, _, _, match, _ := book.LiquidateFromSellOrder(inputOrder) + require.False(t, match) + + // Buy book + inputBook := []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + } + + // Test no match if highest bid too low (25 < 30) + book = OrderListToBuyOrderBook(inputBook) + _, _, _, match, _ = book.LiquidateFromSellOrder(inputOrder) + require.False(t, match) + + // Entirely filled (30 < 50) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 22} + expected := liquidateSellRes{ + Book: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 20, Price: 25}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 22}, + Liquidated: types.Order{Id: 0, Creator: MockAccount("0"), Amount: 30, Price: 25}, + Gain: int32(30 * 25), + Match: true, + Filled: true, + } + simulateLiquidateFromSellOrder(t, inputBook, inputOrder, expected) + + // Entirely filled and liquidated ( 50 = 50) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 50, Price: 15} + expected = liquidateSellRes{ + Book: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 15}, + Liquidated: types.Order{Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + Gain: int32(50 * 25), + Match: true, + Filled: true, + } + simulateLiquidateFromSellOrder(t, inputBook, inputOrder, expected) + + // Not filled and entirely liquidated (60 > 50) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 10} + expected = liquidateSellRes{ + Book: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 10, Price: 10}, + Liquidated: types.Order{Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + Gain: int32(50 * 25), + Match: true, + Filled: false, + } + simulateLiquidateFromSellOrder(t, inputBook, inputOrder, expected) +} + +type fillSellRes struct { + Book []types.Order + Remaining types.Order + Liquidated []types.Order + Gain int32 + Filled bool +} + +func simulateFillSellOrder( + t *testing.T, + inputList []types.Order, + inputOrder types.Order, + expected fillSellRes, +) { + book := OrderListToBuyOrderBook(inputList) + expectedBook := OrderListToBuyOrderBook(expected.Book) + + require.True(t, sort.SliceIsSorted(book.Book.Orders, func(i, j int) bool { + return book.Book.Orders[i].Price < book.Book.Orders[j].Price + })) + require.True(t, sort.SliceIsSorted(expectedBook.Book.Orders, func(i, j int) bool { + return expectedBook.Book.Orders[i].Price < expectedBook.Book.Orders[j].Price + })) + + remaining, liquidated, gain, filled := book.FillSellOrder(inputOrder) + + require.Equal(t, expectedBook, book) + require.Equal(t, expected.Remaining, remaining) + require.Equal(t, expected.Liquidated, liquidated) + require.Equal(t, expected.Gain, gain) + require.Equal(t, expected.Filled, filled) +} + +func TestFillSellOrder(t *testing.T) { + var inputBook []types.Order + + // Empty book + inputOrder := types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 30} + expected := fillSellRes{ + Book: []types.Order{}, + Remaining: inputOrder, + Liquidated: []types.Order(nil), + Gain: int32(0), + Filled: false, + } + simulateFillSellOrder(t, inputBook, inputOrder, expected) + + // No match + inputBook = []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + } + expected = fillSellRes{ + Book: inputBook, + Remaining: inputOrder, + Liquidated: []types.Order(nil), + Gain: int32(0), + Filled: false, + } + simulateFillSellOrder(t, inputBook, inputOrder, expected) + + // First order liquidated, not filled + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 22} + expected = fillSellRes{ + Book: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 10, Price: 22}, + Liquidated: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + }, + Gain: int32(50 * 25), + Filled: false, + } + simulateFillSellOrder(t, inputBook, inputOrder, expected) + + // Filled with two order + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 18} + expected = fillSellRes{ + Book: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 190, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 18}, + Liquidated: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 10, Price: 20}, + }, + Gain: int32(50*25 + 10*20), + Filled: true, + } + simulateFillSellOrder(t, inputBook, inputOrder, expected) + + // Not filled, buy order book liquidated + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 300, Price: 10} + expected = fillSellRes{ + Book: []types.Order{}, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 20, Price: 10}, + Liquidated: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + }, + Gain: int32(50*25 + 200*20 + 30*15), + Filled: false, + } + simulateFillSellOrder(t, inputBook, inputOrder, expected) +} +``` + +## Sell Order Tests + +Create a new testsuite for Sell Orders in a new file `x/dex/types/sell_order_book_test.go`: + +```go +// x/dex/types/sell_order_book_test.go + +package types_test + +import ( + "sort" + "testing" + + "github.com/stretchr/testify/require" + + "interchange/x/dex/types" +) + +func OrderListToSellOrderBook(list []types.Order) types.SellOrderBook { + listCopy := make([]*types.Order, len(list)) + for i, order := range list { + order := order + listCopy[i] = &order + } + + book := types.SellOrderBook{ + AmountDenom: "foo", + PriceDenom: "bar", + Book: &types.OrderBook{ + IdCount: 0, + Orders: listCopy, + }, + } + return book +} + +func TestSellOrderBook_AppendOrder(t *testing.T) { + sellBook := types.NewSellOrderBook(GenPair()) + + // Prevent zero amount + seller, amount, price := GenOrder() + _, err := sellBook.AppendOrder(seller, 0, price) + require.ErrorIs(t, err, types.ErrZeroAmount) + + // Prevent big amount + _, err = sellBook.AppendOrder(seller, types.MaxAmount+1, price) + require.ErrorIs(t, err, types.ErrMaxAmount) + + // Prevent zero price + _, err = sellBook.AppendOrder(seller, amount, 0) + require.ErrorIs(t, err, types.ErrZeroPrice) + + // Prevent big price + _, err = sellBook.AppendOrder(seller, amount, types.MaxPrice+1) + require.ErrorIs(t, err, types.ErrMaxPrice) + + // Can append sell orders + for i := 0; i < 20; i++ { + // Append a new order + creator, amount, price := GenOrder() + newOrder := types.Order{ + Id: sellBook.Book.IdCount, + Creator: creator, + Amount: amount, + Price: price, + } + orderID, err := sellBook.AppendOrder(creator, amount, price) + + // Checks + require.NoError(t, err) + require.Contains(t, sellBook.Book.Orders, &newOrder) + require.Equal(t, newOrder.Id, orderID) + } + require.Len(t, sellBook.Book.Orders, 20) + require.True(t, sort.SliceIsSorted(sellBook.Book.Orders, func(i, j int) bool { + return sellBook.Book.Orders[i].Price > sellBook.Book.Orders[j].Price + })) +} + +type liquidateBuyRes struct { + Book []types.Order + Remaining types.Order + Liquidated types.Order + Purchase int32 + Match bool + Filled bool +} + +func simulateLiquidateFromBuyOrder( + t *testing.T, + inputList []types.Order, + inputOrder types.Order, + expected liquidateBuyRes, +) { + book := OrderListToSellOrderBook(inputList) + expectedBook := OrderListToSellOrderBook(expected.Book) + require.True(t, sort.SliceIsSorted(book.Book.Orders, func(i, j int) bool { + return book.Book.Orders[i].Price > book.Book.Orders[j].Price + })) + require.True(t, sort.SliceIsSorted(expectedBook.Book.Orders, func(i, j int) bool { + return expectedBook.Book.Orders[i].Price > expectedBook.Book.Orders[j].Price + })) + + remaining, liquidated, purchase, match, filled := book.LiquidateFromBuyOrder(inputOrder) + + require.Equal(t, expectedBook, book) + require.Equal(t, expected.Remaining, remaining) + require.Equal(t, expected.Liquidated, liquidated) + require.Equal(t, expected.Purchase, purchase) + require.Equal(t, expected.Match, match) + require.Equal(t, expected.Filled, filled) +} + +func TestLiquidateFromBuyOrder(t *testing.T) { + // No match for empty book + inputOrder := types.Order{Id: 10, Creator: MockAccount("1"), Amount: 100, Price: 10} + book := OrderListToSellOrderBook([]types.Order{}) + _, _, _, match, _ := book.LiquidateFromBuyOrder(inputOrder) + require.False(t, match) + + // Sell book + inputBook := []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + } + + // Test no match if lowest ask too high (25 < 30) + book = OrderListToSellOrderBook(inputBook) + _, _, _, match, _ = book.LiquidateFromBuyOrder(inputOrder) + require.False(t, match) + + // Entirely filled (30 > 15) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 20, Price: 30} + expected := liquidateBuyRes{ + Book: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 2, Creator: MockAccount("2"), Amount: 10, Price: 15}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 30}, + Liquidated: types.Order{Id: 2, Creator: MockAccount("2"), Amount: 20, Price: 15}, + Purchase: int32(20), + Match: true, + Filled: true, + } + simulateLiquidateFromBuyOrder(t, inputBook, inputOrder, expected) + + // Entirely filled (30 = 30) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 30} + expected = liquidateBuyRes{ + Book: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 30}, + Liquidated: types.Order{Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + Purchase: int32(30), + Match: true, + Filled: true, + } + simulateLiquidateFromBuyOrder(t, inputBook, inputOrder, expected) + + // Not filled and entirely liquidated (60 > 30) + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 30} + expected = liquidateBuyRes{ + Book: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 30}, + Liquidated: types.Order{Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + Purchase: int32(30), + Match: true, + Filled: false, + } + simulateLiquidateFromBuyOrder(t, inputBook, inputOrder, expected) +} + +type fillBuyRes struct { + Book []types.Order + Remaining types.Order + Liquidated []types.Order + Purchase int32 + Filled bool +} + +func simulateFillBuyOrder( + t *testing.T, + inputList []types.Order, + inputOrder types.Order, + expected fillBuyRes, +) { + book := OrderListToSellOrderBook(inputList) + expectedBook := OrderListToSellOrderBook(expected.Book) + + require.True(t, sort.SliceIsSorted(book.Book.Orders, func(i, j int) bool { + return book.Book.Orders[i].Price > book.Book.Orders[j].Price + })) + require.True(t, sort.SliceIsSorted(expectedBook.Book.Orders, func(i, j int) bool { + return expectedBook.Book.Orders[i].Price > expectedBook.Book.Orders[j].Price + })) + + remaining, liquidated, purchase, filled := book.FillBuyOrder(inputOrder) + + require.Equal(t, expectedBook, book) + require.Equal(t, expected.Remaining, remaining) + require.Equal(t, expected.Liquidated, liquidated) + require.Equal(t, expected.Purchase, purchase) + require.Equal(t, expected.Filled, filled) +} + +func TestFillBuyOrder(t *testing.T) { + var inputBook []types.Order + + // Empty book + inputOrder := types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 10} + expected := fillBuyRes{ + Book: []types.Order{}, + Remaining: inputOrder, + Liquidated: []types.Order(nil), + Purchase: int32(0), + Filled: false, + } + simulateFillBuyOrder(t, inputBook, inputOrder, expected) + + // No match + inputBook = []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + } + expected = fillBuyRes{ + Book: inputBook, + Remaining: inputOrder, + Liquidated: []types.Order(nil), + Purchase: int32(0), + Filled: false, + } + simulateFillBuyOrder(t, inputBook, inputOrder, expected) + + // First order liquidated, not filled + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 18} + expected = fillBuyRes{ + Book: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 30, Price: 18}, + Liquidated: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + }, + Purchase: int32(30), + Filled: false, + } + simulateFillBuyOrder(t, inputBook, inputOrder, expected) + + // Filled with two order + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 60, Price: 22} + expected = fillBuyRes{ + Book: []types.Order{ + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + {Id: 1, Creator: MockAccount("1"), Amount: 170, Price: 20}, + }, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 0, Price: 22}, + Liquidated: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 30, Price: 20}, + }, + Purchase: int32(30 + 30), + Filled: true, + } + simulateFillBuyOrder(t, inputBook, inputOrder, expected) + + // Not filled, sell order book liquidated + inputOrder = types.Order{Id: 10, Creator: MockAccount("1"), Amount: 300, Price: 30} + expected = fillBuyRes{ + Book: []types.Order{}, + Remaining: types.Order{Id: 10, Creator: MockAccount("1"), Amount: 20, Price: 30}, + Liquidated: []types.Order{ + {Id: 2, Creator: MockAccount("2"), Amount: 30, Price: 15}, + {Id: 1, Creator: MockAccount("1"), Amount: 200, Price: 20}, + {Id: 0, Creator: MockAccount("0"), Amount: 50, Price: 25}, + }, + Purchase: int32(30 + 200 + 50), + Filled: false, + } + simulateFillBuyOrder(t, inputBook, inputOrder, expected) +} +``` + +## Successful Test Output + +When the tests are successful, your output is: + +``` +ok interchange/x/dex/types 0.550s +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/_category_.json b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/_category_.json new file mode 100644 index 0000000000..aab4fa0969 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/07-interchange/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Advanced Module: Interchange", + "position": 8, + "link": null + } \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/08-debug.md b/docs/versioned_docs/version-v0.27.2/02-guide/08-debug.md new file mode 100644 index 0000000000..e1b578a9fe --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/08-debug.md @@ -0,0 +1,209 @@ +--- +description: Debugging your Cosmos SDK blockchain +--- + +# Debugging a chain + +Ignite chain debug command can help you find issues during development. It uses +[Delve](https://github.com/go-delve/delve) debugger which enables you to +interact with your blockchain app by controlling the execution of the process, +evaluating variables, and providing information of thread / goroutine state, CPU +register state and more. + +## Debug Command + +The debug command requires that the blockchain app binary is build with +debugging support by removing optimizations and inlining. A debug binary is +built by default by the `ignite chain serve` command or can optionally be +created using the `--debug` flag when running `ignite chain init` or `ignite +chain build` sub-commands. + +To start a debugging session in the terminal run: + +``` +ignite chain debug +``` + +The command runs your blockchan app in the background, attaches to it and +launches a terminal debugger shell: + +``` +Type 'help' for list of commands. +(dlv) +``` + +At this point the blockchain app blocks execution, so you can set one or more +breakpoints before continuing execution. + +Use the +[break](https://github.com/go-delve/delve/blob/master/Documentation/cli/README.md#break) +(alias `b`) command to set any number of breakpoints using, for example the +`:` notation: + +``` +(dlv) break x/hello/client/cli/query_say_hello.go:14 +``` + +This command adds a breakpoint to the `x/hello/client/cli/query_say_hello.go` +file at line 14. + +Once all breakpoints are set resume blockchain execution using the +[continue](https://github.com/go-delve/delve/blob/master/Documentation/cli/README.md#continue) +(alias `c`) command: + +``` +(dlv) continue +``` + +The debugger will launch the shell and stop blockchain execution again when a +breakpoint is triggered. + +Within the debugger shell use the `quit` (alias `q`) or `exit` commands to stop +the blockchain app and exit the debugger. + +## Debug Server + +A debug server can optionally be started in cases where the default terminal +client is not desirable. When the server starts it first runs the blockchain +app, attaches to it and finally waits for a client connection. The default +server address is *tcp://127.0.0.1:30500* and it accepts both JSON-RPC or DAP +client connections. + +To start a debug server use the following flag: + +``` +ignite chain debug --server +``` + +To start a debug server with a custom address use the following flags: + +``` +ignite chain debug --server --server-address 127.0.0.1:30500 +``` + +The debug server stops automatically when the client connection is closed. + +## Debugging Clients + +### Gdlv: Multiplatform Delve UI + +[Gdlv](https://github.com/aarzilli/gdlv) is a graphical frontend to Delve for +Linux, Windows and macOS. + +Using it as debugging client is straightforward as it doesn't require any +configuration. Once the debug server is running and listening for client +requests connect to it by running: + +``` +gdlv connect 127.0.0.1:30500 +``` + +Setting breakpoints and continuing execution is done in the same way as Delve, +by using the `break` and `continue` commands. + +### Visual Studio Code + +Using [Visual Studio Code](https://code.visualstudio.com/) as debugging client +requires an initial configuration to allow it to connect to the debug server. + +Make sure that the [Go](https://code.visualstudio.com/docs/languages/go) +extension is installed. + +VS Code debugging is configured using the `launch.json` file which is usually +located inside the `.vscode` folder in your workspace. + +You can use the following launch configuration to set up VS Code as debugging +client: + +```json title=launch.json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Connect to Debug Server", + "type": "go", + "request": "attach", + "mode": "remote", + "remotePath": "${workspaceFolder}", + "port": 30500, + "host": "127.0.0.1" + } + ] +} +``` + +Alternatively it's possible to create a custom `launch.json` file from the "Run +and Debug" panel. When prompted choose the Go debugger option labeled "Go: +Connect to Server" and enter the debug host address and then the port number. + +## Example: Debugging a Blockchain App + +In this short example we will be using Ignite CLI to create a new blockchain and +a query to be able to trigger a debugging breakpoint when the query is called. + +Create a new blockchain: + +``` +ignite scaffold chain hello +``` + +Scaffold a new query in the `hello` directory: + +``` +ignite scaffold query say-hello name --response name +``` + +The next step initializes the blockchain's data directory and compiles a debug +binary: + +``` +ignite chain init --debug +``` + +Once the initialization finishes launch the debugger shell: + +``` +ignite chain debug +``` + +Within the debugger shell create a breakpoint that will be triggered when the +`SayHello` function is called and then continue execution: + +``` +(dlv) break x/hello/keeper/query_say_hello.go:12 +(dlv) continue +``` + +From a different terminal use the `hellod` binary to call the query: + +``` +hellod query hello say-hello bob +``` + +A debugger shell will be launched when the breakpoint is triggered: + +``` + 7: "google.golang.org/grpc/codes" + 8: "google.golang.org/grpc/status" + 9: "hello/x/hello/types" + 10: ) + 11: +=> 12: func (k Keeper) SayHello(goCtx context.Context, req *types.QuerySayHelloRequest) (*types.QuerySayHelloResponse, error) { + 13: if req == nil { + 14: return nil, status.Error(codes.InvalidArgument, "invalid request") + 15: } + 16: + 17: ctx := sdk.UnwrapSDKContext(goCtx) +``` + +From then on you can use Delve commands like `next` (alias `n`) or `print` +(alias `p`) to control execution and print values. For example, to print the +*name* argument value use the `print` command followed by "req.Name": + +``` +(dlv) print req.Name +"bob" +``` + +Finally, use `quit` (alias `q`) to stop the blockchain app and finish the +debugging session. diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/09-docker.md b/docs/versioned_docs/version-v0.27.2/02-guide/09-docker.md new file mode 100644 index 0000000000..77edaa31ab --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/09-docker.md @@ -0,0 +1,142 @@ +--- +description: Run Ignite CLI using a Docker container. +--- + +# Running inside a Docker container + +You can run Ignite CLI inside a Docker container without installing the Ignite +CLI binary directly on your machine. + +Running Ignite CLI in Docker can be useful for various reasons; isolating your +test environment, running Ignite CLI on an unsupported operating system, or +experimenting with a different version of Ignite CLI without installing it. + +Docker containers are like virtual machines because they provide an isolated +environment to programs that runs inside them. In this case, you can run Ignite +CLI in an isolated environment. + +Experimentation and file system impact is limited to the Docker instance. The +host machine is not impacted by changes to the container. + +## Prerequisites + +Docker must be installed. See [Get Started with +Docker](https://www.docker.com/get-started). + +## Ignite CLI Commands in Docker + +After you scaffold and start a chain in your Docker container, all Ignite CLI +commands are available. Just type the commands after `docker run -ti +ignite/cli`. For example: + +```bash +docker run -ti ignitehq/cli -h +docker run -ti ignitehq/cli scaffold chain planet +docker run -ti ignitehq/cli chain serve +``` + +## Scaffolding a chain + +When Docker is installed, you can build a blockchain with a single command. + +Ignite CLI, and the chains you serve with Ignite CLI, persist some files. When +using the CLI binary directly, those files are located in `$HOME/.ignite` and +`$HOME/.cache`, but in the context of Docker it's better to use a directory +different from `$HOME`, so we use `$HOME/sdh`. This folder should be created +manually prior to the docker commands below, or else Docker creates it with the +root user. + +```bash +mkdir $HOME/sdh +``` + +To scaffold a blockchain `planet` in the `/apps` directory in the container, run +this command in a terminal window: + +```bash +docker run -ti -v $HOME/sdh:/home/tendermint -v $PWD:/apps ignitehq/cli:0.25.2 scaffold chain planet +``` + +Be patient, this command takes a minute or two to run because it does everything +for you: + +- Creates a container that runs from the `ignitehq/cli:0.25.2` image. +- Executes the Ignite CLI binary inside the image. +- `-v $HOME/sdh:/home/tendermint` maps the `$HOME/sdh` directory in your local + computer (the host machine) to the home directory `/home/tendermint` inside + the container. +- `-v $PWD:/apps` maps the current directory in the terminal window on the host + machine to the `/apps` directory in the container. You can optionally specify + an absolute path instead of `$PWD`. + + Using `-w` and `-v` together provides file persistence on the host machine. + The application source code on the Docker container is mirrored to the file + system of the host machine. + + **Note:** The directory name for the `-w` and `-v` flags can be a name other + than `/app`, but the same directory must be specified for both flags. If you + omit `-w` and `-v`, the changes are made in the container only and are lost + when that container is shut down. + +## Starting a blockchain + +To start the blockchain node in the Docker container you just created, run this +command: + +```bash +docker run -ti -v $HOME/sdh:/home/tendermint -v $PWD:/apps -p 1317:1317 -p 26657:26657 ignitehq/cli:0.25.2 chain serve -p planet +``` + +This command does the following: + +- `-v $HOME/sdh:/home/tendermint` maps the `$HOME/sdh` directory in your local + computer (the host machine) to the home directory `/home/tendermint` inside + the container. +- `-v $PWD:/apps` persists the scaffolded app in the container to the host + machine at current working directory. +- `serve -p planet` specifies to use the `planet` directory that contains the + source code of the blockchain. +- `-p 1317:1317` maps the API server port (cosmos-sdk) to the host machine to + forward port 1317 listening inside the container to port 1317 on the host + machine. +- `-p 26657:26657` maps RPC server port 26657 (tendermint) on the host machine + to port 26657 in Docker. +- After the blockchain is started, open `http://localhost:26657` to see the + Tendermint API. +- The `-v` flag specifies for the container to access the application's source + code from the host machine, so it can build and run it. + +## Versioning + +You can specify which version of Ignite CLI to install and run in your Docker +container. + +### Latest version + +- By default, `ignite/cli` resolves to `ignite/cli:latest`. +- The `latest` image tag is always the latest stable [Ignite CLI + release](https://github.com/ignite/cli/releases). + +For example, if latest release is +[v0.25.2](https://github.com/ignite/cli/releases/tag/v0.25.2), the `latest` tag +points to the `0.25.2` tag. + +### Specific version + +You can specify to use a specific version of Ignite CLI. All available tags are +in the [ignite/cli +image](https://hub.docker.com/r/ignite/cli/tags?page=1&ordering=last_updated) on +Docker Hub. + +For example: + +- Use `ignitehq/cli:0.25.2` (without the `v` prefix) to use version `0.25.2`. +- Use `ignitehq/cli` to use the latest version. +- Use `ignitehq/cli:main` to use the `main` branch, so you can experiment with + the upcoming version. + +To get the latest image, run `docker pull`. + +```bash +docker pull ignitehq/cli:main +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/10-simapp.md b/docs/versioned_docs/version-v0.27.2/02-guide/10-simapp.md new file mode 100644 index 0000000000..fd2dcea96f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/10-simapp.md @@ -0,0 +1,164 @@ +--- +sidebar_position: 10 +description: Test different scenarios for your chain. +--- + +# Chain simulation + +The Ignite CLI chain simulator can help you to run your chain based in +randomized inputs for you can make fuzz testing and also benchmark test for your +chain, simulating the messages, blocks, and accounts. You can scaffold a +template to perform simulation testing in each module along with a boilerplate +simulation methods for each scaffolded message. + +## Module simulation + +Every new module that is scaffolded with Ignite CLI implements the Cosmos SDK +[Module +Simulation](https://docs.cosmos.network/main/building-modules/simulator.html). + +- Each new message creates a file with the simulation methods required for the + tests. +- Scaffolding a `CRUD` type like a `list` or `map` creates a simulation file + with `create`, `update`, and `delete` simulation methods in the + `x//simulation` folder and registers these methods in + `x//module_simulation.go`. +- Scaffolding a single message creates an empty simulation method to be + implemented by the user. + +We recommend that you maintain the simulation methods for each new modification +into the message keeper methods. + +Every simulation is weighted because the sender of the operation is assigned +randomly. The weight defines how much the simulation calls the message. + +For better randomizations, you can define a random seed. The simulation with the +same random seed is deterministic with the same output. + +## Scaffold a simulation + +To create a new chain: + +``` +ignite scaffold chain mars +``` + +Review the empty `x/mars/simulation` folder and the +`x/mars/module_simulation.go` file to see that a simulation is not registered. + +Now, scaffold a new message: + +``` +ignite scaffold list user address balance:uint state +``` + +A new file `x/mars/simulation/user.go` is created and is registered with the +weight in the `x/mars/module_simulation.go` file. + +Be sure to define the proper simulation weight with a minimum weight of 0 and a +maximum weight of 100. + +For this example, change the `defaultWeightMsgDeleteUser` to 30 and the +`defaultWeightMsgUpdateUser` to 50. + +Run the `BenchmarkSimulation` method into `app/simulation_test.go` to run +simulation tests for all modules: + +``` +ignite chain simulate +``` + +You can also define flags that are provided by the simulation. Flags are defined +by the method `simapp.GetSimulatorFlags()`: + +``` +ignite chain simulate -v --numBlocks 200 --blockSize 50 --seed 33 +``` + +Wait for the entire simulation to finish and check the result of the messages. + +The default `go test` command works to run the simulation: + +``` +go test -v -benchmem -run=^$ -bench ^BenchmarkSimulation -cpuprofile cpu.out ./app -Commit=true +``` + +### Skip message + +Use logic to avoid sending a message without returning an error. Return only +`simtypes.NoOpMsg(...)` into the simulation message handler. + +## Params + +Scaffolding a module with params automatically adds the module in the +`module_simulaton.go` file: + +``` +ignite s module earth --params channel:string,minLaunch:uint,maxLaunch:int +``` + +After the parameters are scaffolded, change the +`x//module_simulation.go` file to set the random parameters into the +`RandomizedParams` method. The simulation will change the params randomly +according to call the function. + +## Invariants + +Simulating a chain can help you prevent [chain invariants +errors](https://docs.cosmos.network/main/building-modules/invariants.html). An +invariant is a function called by the chain to check if something broke, +invalidating the chain data. To create a new invariant and check the chain +integrity, you must create a method to validate the invariants and register all +invariants. + + +For example, in `x/earth/keeper/invariants.go`: + +```go title="x/earth/keeper/invariants.go" +package keeper + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/tendermint/spn/x/launch/types" +) + +const zeroLaunchTimestampRoute = "zero-launch-timestamp" + +// RegisterInvariants registers all module invariants +func RegisterInvariants(ir sdk.InvariantRegistry, k Keeper) { + ir.RegisterRoute(types.ModuleName, zeroLaunchTimestampRoute, + ZeroLaunchTimestampInvariant(k)) +} + +// ZeroLaunchTimestampInvariant invariant that checks if the +// `LaunchTimestamp is zero +func ZeroLaunchTimestampInvariant(k Keeper) sdk.Invariant { + return func(ctx sdk.Context) (string, bool) { + all := k.GetAllChain(ctx) + for _, chain := range all { + if chain.LaunchTimestamp == 0 { + return sdk.FormatInvariant( + types.ModuleName, zeroLaunchTimestampRoute, + "LaunchTimestamp is not set while LaunchTriggered is set", + ), true + } + } + return "", false + } +} +``` + +Now, register the keeper invariants into the `x/earth/module.go` file: + +```go +package earth + +// ... + +// RegisterInvariants registers the capability module's invariants. +func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { + keeper.RegisterInvariants(ir, am.keeper) +} +``` diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/_category_.json b/docs/versioned_docs/version-v0.27.2/02-guide/_category_.json new file mode 100644 index 0000000000..4de109a727 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/02-guide/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Develop a chain", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/images/api.png b/docs/versioned_docs/version-v0.27.2/02-guide/images/api.png new file mode 100644 index 0000000000000000000000000000000000000000..2034f2bdacb6d30dfc7f6ea4aa7f6b12286ccb6d GIT binary patch literal 406674 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

q#fA)@K^5cvvcQ%^Lnh*; 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≧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 -MZuTjO$ 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/02-guide/images/packet_sendpost.png b/docs/versioned_docs/version-v0.27.2/02-guide/images/packet_sendpost.png new file mode 100644 index 0000000000000000000000000000000000000000..c96cdcdd3e6c3e1637c46bc368c89fca52d85012 GIT binary patch literal 402229 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 d+F7Fu!S78Bjz>Pmd=p z%~R6^jLDAJkC;z9Uta9t9XQupKP!dZaW)}p@S*t+r?_T4P`y{JX_alfE;2AHKrMgd z%h-cT*>zH*$SJaxPrTv}GQl-iYk2^Zd))1|h!kBrx*(s76?RY@+J5*)S=i~&GZLZf zuMK_03T7!y~V= zgU`?TbnxpkDJ$(~^rYW^EmowDwX7{Y7V}M>qTW-^`D>~PZQe4KVcDwaWeFscR{rWzQRB`&Tv15BbhhG z$uU3^qUmH1Morpt@#1}3)zfTVYPQA3T`m;4f)4;~{&bOME0y8(yJ?>1Npp?+x680S zb3-sUzho9++f6^jC<$eMmA$aKVTQ~R^-#PwFua@{^Ak0Uu^{>Y=%SZbE-bML zJ;V8$!lK@klw=zcCTzWpjup9ya}W==^Ge`y5C{dlRFI>huovTJ<>V~TCSa?%#heEzF~li%jky=aPKE@t66X$tf0_8m3z zd}T6~jZx^u!nr*|)PS}BK7F_|gw$i}0VT`ET8CC&)z(XZ`-~n!!qbXx82iYOtXiDB$&LcVEc@ z&kuyTkH?~{B)%FUTRPoJsv0wdWYH>1If3WoZ7o;<-{rU&rQx-uJ8h@*crdd;KRzJg z|MEvKQQfQZ$*KBDE8L7KkI(%is0(SGdXz70*Kx-H+wC6czv)a8u;s#^F<&NaFEMaw ze>6SyE{%xc!?(Mg9?};a7?)t`fo|wfN2t~`0P=BnN%k{QxCkWwyi{C2>!Z;-aZq)L zd~-W3(B6cszba7ivSGN~y6c%G;8;Z#&sLBC6_0N5@TYa-i`dh}22sp^V|(X&o?(6< z$zXOIcKS3RvSBjcjk`ISnLpW>bp=yd0DdB7<7!9bQTCT0SwwHnh_feOkyf&||A2u| z@Z>9vYU=V}%3T%um7hOxsD7-o`(O4^mwqdZs;k-S>Bco4FFE*szCzjVUZx?rUsp>J ztTrSQ)eIfj+`{IK(pC(Y_s4g-J*%p(zx;jQHCWLR?wv`z&mpXCFs*UxedE;ZQCvKOz078lejpZr*b1l@klcP6gqOW0&umCw!hfKl$4d&b6gqkNBA?Ts>r+ag+Ju(^DNbvlp+ITd}gPXfug#H7{7G zhjcH@byJpHx%)@A3Jr#B^Q#Bak&m5ij3S%sj}6^LR>{fyF4KN^=$2-Ow-1k_e}BV- zN({Sj_m>;|e8)|`8u)~cuqPy+(T)@^(1CuV?Lhd!<-py4{AD$b?CJSyuX^PmRslIa zstKF5-y3-AQro)1Qstd)AFEqhE(2Jp7GTaOrvV+0UW!h#d*}Cgi11AUC|8p8@fd>v zE2GNo|6{bHujg}!9Yj3`St?PEjt0LeC*>P;cw)iEO>_L;RdYYE*1N!=%ak;+ay6@v zz<)>97vEE|H<=dK172JVYJg>gnawPjm%>I}L}b7AhZ9>dX$^weJ9}&DO&}o7H3Q+&5fK(|5 z56b7ZhATFoeDwlgyeSh+b#B3`#Y9!^(KztH#umv4KMtjZHvVOZHu0v-c*AeS#eW}D zEc?~Yyy%yH!K-^ym^r`yofPT*!fOMFpe$W+i_`q3NjERp>bewBJCIOnlz&{cUY3Yt zFRo#L2!|@T%468ubhPd`I@?%c&C`Q1Znsu*LCTL8cqWYJv;X-&$_MG}bgweDhCVBE zV3&YdP;tNGsXeJFPR_Zpmo|JOb;1pJyQg4a(ptBb5B>K6!hFFUG>Ug-cJ^=Io{hx= z^)&w@(nwdv;VXp*K^Oejt+G?eK2+;c8kkH8d#e&;;F@~nOe-kp9CHaI(LmIUbG%#YTw@!B4tDdYmYI?zOL*ipQ+Y8Y!mOq_Pq~=dtc9d zbvEz;p1Uk@e|@C_s#Vzzw@5#Sypd85*-8z|%biB}c1ti89T={#GB}29wG}=6 zXIK&sdaN`t<+^}PE*Fv5UZFll+Lk(k(LZlA;fm*9%L`)b(E&1Vx2_4mNcFW2g3q6F z`gvfLz=O!0naqwBSpfEU+6=!Ti2gQ*eg2d?xZd!;Lt_i~9y$i@0e^;5xv}RZi{}^( ze#F%IHYYo0@dwv>IS99PN71kRm-WJ_9;!R@?eRjxg`!y3*4gDUiC#>nfUB) z@BX6sU6$Ij-TI=pGeWqQ}mMp<;^Vnk4Hkoc!d#)UCw!y(_V#LA0m5Sj@m~|eCUH6k z8>!|P?_2uJczm*XTM(WaODcSln?#gHK$&7@0+pjEcljwfL^dQ+&Csz%Z^f=MoC%9sTs-b zCu0gJu`vE*&8v`y6bWCb$%FCo0#%vrUL7URWCb!+u-iuFC&CriZ?6vG74n9-C101V z-YLxND*;>dGy17C-2k1G8#KCnQb4bw|F(=lcX= zY$BMh1-i6?o~|s({tx{KGL31=f!^vARReIB;z6|&H6gslKKJL8_-3bM7-_uBJ&pWQ z^&E`n^Q8ZQrS|x*S+|nkjC>q&e!~9K(_l-t7n4>`DUi9@JeZW8E>FJ#?_A4#eEFQF zXT6xNbdLWQy$_FBc((uPedi&m4f+x~rhSt3uFyXsynL-O#AWNt&<$SO61nB0yAS3eR#;+H zCX<$!(kh~@XcOA6ma_f8P|=r0B}9)bxfOce~Fi@p4y69jF=^sQP8&%1e)*@HDZmH$gQZdR=kkJzcJ(Tk{!11Jic0lww6P8UjpT z>*W4;)o;)P`8l%{2VVL_jwPhw`HPCeD-&=V)^*Pcj*=3Qf)EmX0X;9PPe!bdAJWs) zAI?nf)xTZ)?L)CLv=4G)Zt`^V*mL2XwB`&--1U0S9wKF4Q(Q;Hczyj650JoDyrxT)MZqRrG%W2JPJWdsbM{u5LCTJeuiG!=u8rdQH8Y zI(rD5cmV0LupphJ)&DQJQqYVPdAfmd`#N1U_0I$NRQUtzqZ4&npYsm0JoNDv8#*Z} z+FVhum|0qmh0A+>HTkRWIBvgNcjT+(?6X-)B(V;AQU5qqr z@2Pe*8Gi$|Frx-99h3lqOcM;CB{D(cpQincMOx3J!eVr(tG;g%JgHCWz9v)Xdi`RH&}d#^qq<1l2WwOUqTQpJ+tQ~Z(+du_^O zhFR+D>z~7hUQ4QF$15rRH7E5QMLVCr=_H1k-S<*O4!!lX|7muSvKo>+p12YHxCl8S z&iq22RsoNp&htAsJ&fJb_uGULySwz0mfG<%+vVRr?>Oq~cL&QAVX}S>mrs8U9?g9- zxgEhUJS;7DS)ICay`3X_I$`6xjuu;h2aixL!Y}6#hg1APi!T>$&mE-vjES%^_;QrZ zxH{-~YO#XsV5uc&z3XgKF4%!NS|@0CX%Q?g7hsd*j3hQQQ1c4Ho(1{tq_#K{BW(6{ zj~82mDEQ14?t-mM*L}`+Bk>A;@U~&5v~AL@?lzrml!6?fb&r&`ss0E#En;T&TxHmO zx8D+L$q*if^S{KcMJc$RmqOVXmmBd95w~OTkxbyjGuRtn+#!Fq__Gp?h_PL1IBu`_8dJWUYXrrt!$o zqJR!`%I%v81)1BA@5WJl7C+0}WPmJ#Rv4#YYw_Zt#MZEUMBl4~!;R81X}b0i+diUD z;@+g0YQ%}jrkExCOP!HF`MyZPipTh~-6cDctZCnEir?CtDeP`lPfjl(n%kP4&;iT6g?{U4ZL$L3S)G zJwu;*DK`+*YohvGH_!rD#EWm1oZN;mkmh4eKoEbU^Xe zal-45A1ucx9B955+V{&?MU~(EQQnE6uffG4x}Q8li3b)?Y3;1$Lyf$@)FmW3r6u@J?dIC{U30NZ{IUvOsN|BCWxSMmh4lrLA%@Y zbgGs9+47${=lJjLEM6Tjk0rDwK@LP-!wagTE}lqE#UN@S#$L75mJ&luLkr*bXj7J} zRRRNF)-)N{Ghnm(e#rMZq+AmHA|*}vog{C2O0;i_G#dGtnXKo-NKFY;bzsrN8A%xk zsq(<~0t0pHnQJ>Qq$zFz?ecKpV4o) zm{)M{(!l(Osio(`69d~VEjG$8hhHT)v}ic?=R^hY+&x6w04I$)c&2@njUk-*$$htB zEYJ0LN|rLGZ&NF9TPoi>En=$f{bh{H_vAm3#9G#V=aXOKNLFFZn4=K(>ysiE?=ElF zQ7TF7YOKi)gzD`gWiwAFM>c1+y^0?d1_u$BT}+N2(8$MWuSWLrS8V5BF_h;I7s-3% zjoUdmSWW6tC@da2Xq?uzw2&P5V#iH`@@0O>$>R{yf9J5uTm>4&309`9*IUYZUoH!r zQGp4;X-=yQ;@y(kJHRA$`P?f&*Ki>98vPR9Dq{Km>QA@~>L1_*Q}J5Y zE1K-!WK8=P1#PCEu@k{hEsF}qAFrQP{$o?F0J0ZMltkxy=1&`6OH=n6NHGR8rX+-~ zHDo8S0kv5h{4l)8V5dJ$tCD~ss!v1Xt;A8mf>&qrapyRT-aiWLRgy@RdG?nsWbW?u z$rC*BP*EX$XCih>*=whV^PED62~tU9%lTHohgSF8nZh)S8NYFNPecT*Ct3{ zA3)h!eI-MzAHLF@9`)IK{K)^kY}-pH)08|M4qs|{+l8F!8V{;6(YkH)mj*QMet_Gp zp!fQERo4GrVX;*@%*s@E2KDuepxF_JKFwFZAQzg}Cq;4|3>7Agc(D~@i?fSi{LP2Y zn~!4jSG=yomLhkrb~jzxQ_tremCyKD<6B(<<`b(L6ENXV;xk*FvQ_5i#FoXK_q~_5 zHNW7Jd87~fwHE(YY;r*fwN#de3U?TH9JdlHkUaWc9u|s5%f^#C%E2g(hCo01TZwfX z5xEHa4ZqB;WI9owk1di?TR%&!E$`E@J3rX-fdj8}G4n;aSlnO*A60d>+2cc}J_axW zWp9BKHHWsNhTKMy6{^g5*3$uq(!mV_`OIwpe2n~!OcxL<(KQ^z2UdRT?n7=yeGcDuJ0f6z-z_5$BOH5@5rwskUegCy1h5J1-;;Q z=~fuAmufZ_v|QpQn?f(~KC_Dv%ooQyt>NH&yQX|$*Mr3U3Es!x)TiGyy(`snU=LB3 zKAMsydJc2c7+xAxC?TNgN^{c@})70$J`#zc-Tu zHp<3Ln@g{&q2wM!P#_hV*jycU2I-cYL7la+`EC*zdh1s_Gy+#X8WSev4VY zR@eUCv~!d|5Phym{7h!cpHI1dk6Rm9p;T|Lx!5K}&HORsGRG%ui*Bkk$Qrgqhvm8J zLw-2%`8oO5O{wxS(5Ai|zK%+LVk`YkENGRqB&J^3h5i_4E)&-~o}r#SiZlAs z|5lAQ#)icJDf<`@`eXY9*>q`KLk@n;+OUj)On%0`=mK7J?@P~PGUvGy;uk7g2obTM zdn@C)q22m{1Yb6n?)~SYGU{BCzr9R|t-xZbA)9`T65dJE#O}P~AZ<@adgFYFY3`fQ z|M&nnRCLN#{?R!y?%-2aF2djiH3PRJ<$%9_8-OSg>85c$7G*6{4sl?(8Lzi}z3Are z2Gw%}A8H7)re?ok<_Cr<*doJ5mA!Zxek;+|;ZL#Z^Qw)q+VHMH)n`gb`;KsSd?`%# zFDEO0B+)z@C_%Z@e|PXQV%ziUz1Ki&qwrCuw?yhYG25o(J@YSKfIer=&OC@i> z`rDtGDo%?e382SXet*f>4Q|2zj*W9aY`^1g3Pd*O*iW&y!{ow#@9Eu_NPDFnMyHdn zgse_ipq&lA-KBXTX5iSTL7Wp>xt!HFa5*`DuBUJeI)9Ll{8Cqg>lys5Yl%g)?vl7M zek@y4S8!*o?hSaZ(&D_-lnD=RVa1MnuSeoGxJ*kqTuPPzkj_weUHGQ|pI3*yK!~x8 zp(F?=lrgzDPHQiXz92PM$vBRD?Ub;VNCdWuKI}q1TskIuD33LafTOE#FDrBg(h?IC zpy+zDFnlL)*Q)BGsFkq;h4{ZN_<8I;F9S`Ux9@ySn^A;CQYYfM3 zhe@l&RHHa9?sn4lf&g;QrUE57}RC zC0`dYJP(7lIx0WGk)pul{ZO5kSE~DzFYY!d+@J3FXp~kR9_>7dcwx@ksx&s-&mW75 zB4FN6G{Y!v{ZhxtG~Mn9@zMsXb_o@WVA$a|56OCEgR#Um~UtMj)ypsF{B3^E9 zlZ*BVePpF<*>c&3RT=A@IXm%w!#CE*rJmi&?9E>GB7_dnNg9+)PbH_yXf)~n+81UC zv`eaBvpv{vx66v56$eqX)QzeTRvB}h?=1sB?**lUW3fkFgh7^8W)Jl^(RREO2_t{ z+}Y6Ewa|J;M!i+pbaQbfh^orG39*eY(|Ql<`nn`0;2#KkVCK&99!a*mSOF=`$zF@d zxtT;g_XPyoPtBMbNJWRAz?=4`mf=yKKvbiPXh>*shHaL^amp? zUfpUxAu*H7Xg2uWBjMcr2uGopN3zS4@|7mwu$!aGH@?RnRlb|jSu6iEvff6pXi>@R z+1OIuhT*$#=qui$Ca8;=hi8rwB9TA(pN`U5Ef;!}@WC#N8}nSP*N72lt<5@t@YlqO zmRDbM^#tqPmC%$QdQja0BRU|7N~19cH$VN&X*X7~8`8iiEorqO9;Vm>H2{0`9sFvp zm!Zt}@FkC5yuTL+^~`(@3)EQ0ZPXkB^tGr22ai`_zij-WkDfLilv21^6+tI>@XAX8 z(r4NSBdPSWF8XUP8$62SRLSsHd&M4nUUet1!vizdQ_}c|>9HSyJT9|I={1I~lRkdp zkS;fH>Mn?KGF4LkTp6*gU5@tl!h5La%W7F!9!YR3w~o?Y$J&%FHv0bc*D-#0QF zh92aEo^D8UK8{~O_J9kfqo&Pv^gNOG_aN5twk}0KUdfjuv#`;AzPK!$j$fUoj*HWf z;LG}>S<4SbQgx3ud96MBX)6mH;ukG#nMBuR^BC0K4McjS2c`(pm)!T zsI=IBL-{IUNUu@Rh+u$N6(lf56>pNtK)T8-)%*eeSE1MH9S_v59?Bl3ktf?xWlxvA z{dYmxa87X8hGNFR^Xpz};VLRWG`0|glkpl8sJWz))XmTOJqUxS*3J^1yx>7&A?=$~t+3X5*St~C6 z^A=|}Sf)tIBwh*U42`o31nEcx^-8gnpG|d%J?i#f+3YLL-#fewZ~9VvtJS4eHL{e8 z(=NN@cE;v(&)Kpq$<@3PZ<}DRuJ(OgVxisehFSuc^CJBa@M5jB>i2IV-Yc&X*av;P zZfyH|XP3@+Y_piV9&i{S)No2bT?*KtwJ~C^Owqk%2%pXSpZB)~a+RjEq9l0=U}%Hk z!KAXh+sHxJ{WhNcNQ>nhVOGb3kZT#xkiJ!bLK$$tQ&cu&L3 z6LDd3DuqO|XMg?I#j3&W$;z;mA^U{*XQUkLXzBQVk1QPb-Xzcb;r3q3_VzX@&wDHy z<+rH#G%jIRB=VP2L5|8^6b+NQe%%nWsG_>zy^oO#wa;oeW}6lU2XT9UXElsdj{!^4Zercqp6k(GeaT(ssi{&q`P?HBYsA3y8D>^vk{94%19`uWb zvf?z~Kj@o)Sl4x0>te9uTC#Ute9uN-fyXjG^KzLEKmNu~Ppg?q9Xi=Wl!s;5?h0_A z&vGX=TvfipLHp!OHsRJEv}A7<`iAW!9Q&SQTZ?Mg|I+4wPEe(az1=2$w*70B&~}zuBAqkfU;`FWlL) z*^89?disWJZ4>ypdm2RcMVax=KdvV+gkQLkAW}IBt+^7~n?PXZAkz@+9H2-fwPbL4 zD(!B%%5^^X+NCCw{Iq;x#OC6+%IBD{M8!fUc6=^Yp^NQ3Iu%gjNkTB1 zv>^42f8Vi#O3P$7P&8t`axu(ddcVy$Cm1l*J!tGBeWR9Ou_rJSn%_&xzd&u#5B56U zCirn+5x0#T&utvV#E_GxWDjkP2ia{ZklM9(Zr*m(<@j%-=cXs`zTn(KNx;+4Udgy0 z)a|9?hjoYoT#gv3I}jsLlsCL+Hxv=5vi4lbgdCXkZcH1}&s?E)`PtF^lB@TI8vYCE zxvK7q_g?`oH49E+WWdp!-PRt`NOxwO1h$ypsnAv`1_1-eXB|N zTP#PJ7;CyHH$km#N8so$EP7?hnWYzBcsmS2@zf%2DNv(kJpYbO5pUku)W+61mraqB ziV(jeli3*n@bPm^L~G}YfctydXK(Off&B6EIx0eAdS`GN`y<_bb{l(DXi#s3_6#NL4Arh6{tUG-;^yTf2D}d(~ zeW3VptX=vpq?X1^{H}a<`pvC}$3_A2@ zHbLmc&!^Db1(?^Y5yoz}!adBxoYYm zSYm_S-%PM`xy*Py(*HRXZ{Sw0(3GqR9vl_^;Awwn`p&RlZ#&shwT_8Yi(&5wug8Xa zr0Y<2Df^*z>kIMEC<*0`bVNV980XmJxymc4{i8G(-R^po>?`;f{Y-t~1cGa)*(FUm zRN*cY4Q1AnvuuU9Nvw`H59Ax3@uwQ2gjznsug2rY;!Q`*`Kf%uEOb2cQDi!>_cM=4 zOa_2&%4K4VOb1zBN~UWCDQ7NCSsUK&BW~R=Czo8X$E&n@a9p?ZaHRf(V{_!goaA(~ z=Azard(I62M%%*?=pc5*065&sU6+WKwmCe(_%19pQsy47&XBw@0}aKN3rI1Z)9ZMB z$cSEX<0hk!x1yo|Bm1f@YWTx%rTZ$J@(pbY6Lu0XBi}_yHZ$4YK75^9h3o4zNA9#z zQ~!TrhN0pfN@Jg^2)Iw$;ZYN-b}Xd^;?{Vp>_p{&O#>rvu3Udua;P5tSWtCbPHzmt z>}LnfGzn=a6iW7Im5=Hq7o4Q>yM*LH{z-o(E$%Rd5!YW;$k?*aox7u`3Uz9vUAJzTx%<78cFtD<@W`2>Uw=*&ieWQKhDv}VzF2=Y1 zww2AK(UeUz|AzB(H=UuBgOKr#9Jm>}HqCHT%@-H!u{^fb^NSNYF1B7;y)JuY2dD7+ zNRBUSDjUgw&t{Gef)b~%D7(_xZneo`;Ax!}M@8oMdO#?k3tk|p`YSL1rYLB4z#-h3{y9+QpBMNg&zt-uxSe2&vspDcZ2{sse@bcoK*W&o*h@RQR@9{sjwJPC| zRx{pv-0E(0eb-|UH0@oYsguED1a*DOn5+n@_ljGekdywj8L}@urNdJ?t{GZCJe2Nt zmfGD|n<7hduJP z7+zH8r3yb`67-Fa4DH|R0W^nEuMy!!HQE7CaKj(eN``DWP)=yT8NGc5q-7zoR;N(^ z>a{2dK=cUtVggwR2S!2cW96D_)7xK9Li$ev|9Id0GdN%d$aN%su8-?$PBA2^x!c#- z)6&lcFvo&duGt2TWUP}U6Rue{y4FjlGL=yU-`i^WN>O=k*r;)ysS}FdkXWG`%i^tOBFS8v!P=@Vy zD!!Mfls+JwRvzTyD&QrP(FsdnJei_vJDImM+5ga3a4hLpxQ!6%Gl~w?vm8q3x6r^j zZ0b}+i+kQTIFcDsjk3^5dy_GhMSIzxgqQkYo14Mo2Jp?IAW&zkER{#qZUc(&%4t8o z#35%Qt=Qt{F%tLgQ#dx0hQtOp4{my}SNr)VP^|4Oj0uZ@a<*cv!In24c6wE>-VhKiX2tND1~ekpuAeV;$RIrn-uhUGe0f8W#Yk=qrdGO!7&QJOvut5;Jo z&XGUrD$q28O`cm;vwFL{;(0%>zV5yxb!Drv%&uIC)3k`J((>wwhkokan|oVibIx#> z1fJG4Vi>Nz6=#+%cAwmOl#Fy=ADVG%n;)fi+jpjV^5rD7%|c#!%YdSpe@c#U|MpeG z%U_n<4j$g)c5(A)tb@=bW)LjZYQ;p$lO!0#2u`4i^vz+Xx)S~?|N2_VU81J-y`0QO zkQlHzq{*O_Nj0Dj2~XO}KQnCm1^id#(}HL)sV`_Q6Z77+TC$gsH)*VHuOg6qV24$r z{o!(B4$2Go&KD!_fQVKno4Tw)AYQpBT=i12#{8oZpZrrH>seE9p&EVGriF^|$gnmO z0^<4C0N>|}M@y5jT-p8xL%y8SqNfu}yat2y2MhNAbVZ*W(46PmLs^#bfdE6ej{kY( zFqqMIBQ8dC>`1`9@Ex0#{g!d1iz8|w)h*k0* zaZts&?}HZ%8>ywxYolu;OIB?lw?g68vE-SopX7?9ofe z{WU$gB&5KOiPbkpXThhIR&x^C&bQ?`B7HSurJnJ6?~(J;3M#$V20qWNw#K%c3aq+3 zVEuUIV}%e>=^tjwGWWi5ZpxlyKcyT+I%vq3HnZHnE3=6*ZddYiir*<+mz;Wy`0^1# zsXY+zIPFc3UCm$<;Z96l0_BH<`2=TEgRi{+wm%6r?M;jfK=OO9L+}*_yvjTJ7-}xWi!@Du2L{py)8v?K53u_^uCaUc z@^(#9*i7R`T1TP)W+sGNV97zoF%EVTrtGD~06G2=13dSty7&h3T0cW~!kf{|`6Iit zw2tRH;^qgHSO15ks|;xR|GFv)BBi2qH_}Ru5P`-jFu;hOm;Is-1UvwN(b91Mk6h5p?I}I5GIqWl|hf5x%jQj@C|`0sH9q8`ly- zVXeuNBJPjA_NVQBO@YttGgESV#|!a$0hS(|e}ige?hAj_cH&>X*cfRi2@S&Xz7t41 z4#2`(Iq2ALsKCU!4EdVTB__13X)>svelBmTaN+IJtiaN*F+Rnph4A*&t3Fg_c=`$D zs?sH~CF-*_T0FLdx4>2x8iySQy}zyZ^e4biU9E~55%BCB42efj4wfE#!y6cN`K3&# z5RxMN%ZpIbsMlW4Bd;zxPXmYj1^7)pM1Oy7JupOBD8CbKaErub$*qTftZWUSkVK0m zyu2O%(A>VXLt%U!KKWw(YmB#0U+*_@)$Nw&j{?m)j7m@Mke4yTD!cPAXB54<;PEBh zxr#Ssv6!Edcrrazagy4r-w-0%=NwhwzkGP{EtNWrQCL;fn1iBAI3~)3>7L9@H(XIK zocoDx?4Z3=iQeGTU&&9z5M>k|_`K{FZjIBB0OE$-uY?pEert;aXzOX<7tu=0Pnr^w z{cxEGJ@W4X!(+#t=pDy97p>N&LBqC{kd(z&vmp_Li8H82!5LG$OU4zp!AcZT8~XEu zgL4=08kfl@km2QDKXbW7*+0#m=K=fmz8517HC`3g7WU!8Sz9CpJ%}BnI8V|e%LQ7d z^%iAuMkljC&ZPp=>JwjbocpH)%3bY8Hk(DyT)*x%JJ6GpsvTSdq>;Rl?QsaT*9z3^u2(*)egHdE-rFPnGRuZ3KvL z*;2I|$}tDV%MIJWt#|I|(;Z0^aaIsbDE|H4NO_BsO%x(*=^Mwr&9d}Iv{V)ZQdi$@ z5=`1WaqN3Hcr%R-^fmjQ!b216z?+f|2D8u^?cZ=@u~6Z#c{KId z-2&UGfpZDDn0>5NHdKMJd{&V!+9`GgCHHFGL9Dh?N4T#aq9OVmi6w>!QOOFBV5YBM zTk?!9N(Q6TKA>1q&=JFTGht<_xs7X&H(Balq&-JG)Iuo8431yHB?-M}7uAwE;X(3j zY^;01idJU`Bt;H!x|R{Sy!+V`PdM2X-@Y1w&;&&t8K`&o(EmTg@ie1#aa(>jvvh=FRROF>g4utS_J0JLjMo; z>nf?`UBQ@XFWu19KRez3BXf&dG)75C8WFEiAJaH<>gUxq??FZAqi0-M{VNvy(kw{s zV{7o%pdPz@-d5F71g_ClnY)_9!18z5PCs1+OyKFYAq;PYhOW*^&e?l@v7-d4BT`8-5Bldvrlhf3-fCgVjPQOLpwnUETsjN z$Nf=I^S%m!CR3}mu*Vfk%D3;u$~^%*R#djJwoI_*u}c1`6r{47NZ!z%>X?4h=`rF9 z8Lx*P3w9RZ^`V3@Kxk*wDi0dkqW9@pL8`Iw=HRjqry}7*Iw;$ZH-CsrP{9C+^vf^+ zAf;&bG+c~B?gB#>HPvl$1gOsb{K-2FoxDFM717)7^CC=W{8`b>=(#>4_yGB(i-10kTr>^{%A@y_8WB59P+&}hSQH+uk zUA`!3^bMPmBnm zM-xOynbbM(B5u9pDWK>AI0tYph}shX4y95sm~e&++mT%Bt0>uiv*)b zYVfG#rppRJi6BIpiCdXRkC?mHx-+@$9c_q2hve1L{zCI!FDUAKe!p{9<3XwM0;Y}4 zqb?j&O@NT<^bzqu6mK~jZm6EnxC+p}B}L~cHfn0AXI=54>w@L#`J&e+zP6g*M?ddu zeQH~?rV>tCC-&kFR1Pj@WC_rXunqYLd2sD->;J68Q{hkiZ57Cw;Lc={L#@tihrM7N z)X`Tl^&fjL`>Wsrz_(8fb~<7h%c*xbc^02*T-pI&uT8c6?XOFzY63h{XHUXpBKfI{ z63L%>hII={`V1_T?cJy+BV)SJ-V>MGADSLvc+;YS{cqpRrv}t7In5bcTjW`8m;W|K z^8AHy`nz~|q3NspKczd<9=uzxT(4%90o0U&5_6seTR0seg?lR*Oou9IK(AOTIsC(Q zC@MwsY6X7Zg#GAFD$~BQFw;91JMLbGuNe&14_P!TXG)&hn8h|6^K=_7IY$xnkXl1% z`Fks)kFCDzd-XgsbXIuVd$&K%lbRRJvE&7O4Fmi`@&0wn%P1n0OusEH_>MsrAWC{y zgm@#g!Y+x&5J{?j|J?}> z>b8-SRLPEX6jKC=xd^zG9$=Yw;nBn6hP7D&UtY##{y;_s#(TotWvg(iR_gEF7ThMo zqWQhIL34%_IoldW`*;NugH?Y&IXNo%v@q)dr1Kee*3l>cpAqPQ$YNe4Pt zpW9Y1eQ9g}Bx}db_NRAaayDH4dh__8xvJs7%8t}rjcnV+Ii;rR0s89++83o^gp8h3 zaMFEDTa8WY_`T7JUC}i!2ixtYdwX5#9ES`jBfhAi%qCglk+WybF0^v#7vgo4OHKfk z2^^VURuQATO;A-(v6n~7JuQBYjE@}re3>*r_etcJ`ikN*R}%}J`^xjsifBKv#WIaP z`CZ+X?Enkvb?&*5y*OGFRM>XNYe~`5?S1RDX&(!3*S+B{vynvI_PxCU7gn(XjN_$8vst{u8vuv-UWm==aC@ zKUO`{?>$R$SY?e>5S_)0&r*fjt}Gii?6$I{rKX?tjZ~**+lY}bw-~&Glz~X+JiYSp zT5)i6A%A4vSZ{5cz#doRD~SIvg1J zakl#3XldZ~M>)uen;ljzf=rYns4VAyfQc3~Y4xY!p5BS7f%72T#V=QT&MQKB*~j1_ zm(Or1WfW)Zs*n-kIoKNFMjTfu>FnfR>J z5ZutVoBnR|pl)Jj_!BwLWsn}D+=cOMcvV`l^!Pr*OJ1?g_bp z8H4SsrVkmY8(}fU3#DwFL;hLK+*%Z3uPLoXmUR`=J=q&GBFq%PjTaZv3VN9J;%6*G zBcK!PAL4+iMiDyk@U~Wj=-RE{M(jgaVz*p6Uz|R>kl;UXRhr6iyggSp#i089A<&)k zmXAg16kxWQ`hvk_Mt8pHjrhIh#AUjnYnIKsmRn8F3HAX>yKR8c1~dy&#@XOmTvlEs zEH_Zm^u&I3Y~e5|^;=#fOyxx{h5iQ6#lB0(z7e#A%N^R zFfGY3!}Ocqu#0U;7~{vL^HFpbX`>-{zdPa-N>mc{S{ztNL63(oc8;}%?s7oxSP~cI zdfgbaz%(C+e)(4VoP~6oCEI4BKHTu)FmP=TVC4Pgve@V9 zV)yWpVn6Qgn(XS<%0GkMe}6~%#X+{jg_s5UMEMkvDGWA2wAwfb+~C+6JlM^*HMLO8 z3Uq(+f(9?PX6^FcONzW@Sz!5M zZ~wa5_PZxMVrVWY1lrL1*$RlcU*S<*NBv`if~9PtLCi8Vx73OOaR9FblKz=Q5Sh`< zU8@)8oN!^c8qO`ra*VA=4uhU(Y`w9c++x9NmYi8;?*h91A|$A`A=dt0-hAwcR$)kN#lQSkGA8(W zw_71kXXWqDv4^Na%T45{S`Uk274TJ>*T45!{(V2Rmsjqevo*35hltMD+r)X;a{7xs z!e+*W5?GCqUoctk%qxFoKa=n3-r;*sc9S?Y5WVgn)+A5}u!8YE6UfH6rCLPL@P`=5 z4_)^Jp2Gt&{DqfT#n5&CfU$5~>1dhb@JLh^wt78}x0w{pwc6%7rYVNZmDZZe&}}#; zQPEe?#$I5Riq{15V1f_s1CpJmNSWFv<=rSfna=AeDTzBy#my!a1WD!Un^091!b%^= zKon<26P@4cWp=Wr0G>Jm(bI3MTU<80LV|orAIgN?C8@?*T|^_vR*nsV#(bLJgw2@x zM^zrSTr6FJRO#APFP!c6IPpsVeToyY^_>Dc<370q>}z@n)rV2naL*5rxnA3rkN#p% ztyA2U;d-1L8v->X&R?PqFPA~5UDiAfAR<(55qdhoXB8zK_sv76#|b7dy2rPUCN@Li z8giUd;}jaGZ;^4-0hFsTm3JMLIFTjDFGuJuzTtQku>^yLqoDeUvcBV9$&O~Fuj@~y zPc%jloATE3>3t_W?%@t^n4Nf`NTxzTjSsBB>I<(D_f>R;`9eDF)Bd7Pd%v6ma(eqs~7vkpqECuQs0Fc4hGIl zuyyJo?3njW+GLB`c5{0q36{QQ2N&h*F5S_=1U<}_R~*h*Od+@S;|BdTw$y{9p0i>{ ze8-TIPu5dACVe6Dk+#E*=QF1 zDWjcvtH^tSvBJYm=bBmHQ=KN-W`7GmS1f6sC}WwYlawKPbpyI)i}*y*XZ#yy+oD9< zip1bh5!yKCuG#l^C4csopDd=fM#>XClsHwNg4b+ohkJewT~^{gHu$hPb1i&o`!72t z#CJa$e0Hj;4ua-X3e(m*vp6pZTR*@h{;ZZyWGI^?3*K2@GN{U)IJBNxVRL4(`gz5y zeD})d!7wlNs8#>a8xH;3*w{f%d21l0n6KsPMsa}%dK2dc?TT#Di;w}#v_{)_8PgUb zncg5ffO*uLav=u*M|4HNx77Rj8C{jutPW?z{3pYKaQ?S7oc(=(4Fx*n>_%SebAf7g zo|)S)gmV@nbp{^SvwP(HPsSROUw_tUX@eU_Mpy;P~GLh`h^@ z2NM11rnJKRXCZ^8a0|+O+(sNJ-NNCa$Gw=)RlZNukvw%$66rH8l2)YWDNL6%HP#V8 zth&IKP$M=-nFb6n)0*BZ$bsr{#)W^`fyo+lYQjhf84i) z*}}z6fw)rNk8ZzhQ&ibXtrm41*INBRT(5jCrm2;k|aHv#3x@|StvyPDtNE^ zQF9=>Qr^jL^Mi}oNxjQB*S49SanQ5)yS`Qy|NbyiCcw~Lzv{hcgLaAR%#0HDu(~YVY0neA>81RPV7&T`LL8ob+R76O1Iy)OyE)hGm^O7r7n=f3Uh?RNu*GKTuqxJa^qseI6zVp(0mk%ghfJU3J|1j* z&<6&>YX3f}b+k+0vY_2};z@^%Lpl<{KqJ1q^yarm<_P0S&fZ`Pz0+46GjB!HsF~Be zNL=)5JUGG4I##7-CXatAG_VTozBPwhI8B>x@vP+6dNo*>JNe@^<3;H4p;UlDfJzM{ zrowsjj)<}YxNQY((vBi;;s6bd3%>at6~+pc&3!uV$fH-dQ+)PhQs>R_ovLlSn)}@6 zlGzX5^%i8tv`ro-A~V2Snf*lEA!liOAV~sE-qc0F{+rypl(WMki1c?eui$Hg{R-Os z0R-~XCCG8mzZumdHM6dxJO4eCANFJ5`3)k|vMUjd#|1y4>c@sVMt`iUs6NaVO<|0A zAqLwqCy5^6_UA7xUT!Vub+ri-ZD3}GIO5Ex7&F+d2_I$DAjZi)_5?wsP)5~5AP>5j z)}Fsp^tpI$YoII0_+(8go_;FC6!P-mz-KO`s_5auhdiyR=3fyh*X$iR%?OyaoYfVu zZH*kAqP#p4zEsR($R}Jr08E^O1x2|YAKGl1ZF@SPkAl}WfSPa6gFBq%S*TftH8p%4 zMJ+rT_}AdW=Mhq_XQ&yjkn6We#zVp0#vh5NAjO{RX3kU3UuFCMVdYwHcD&(D(FN=+ zPHI6%za;o$z-2z{(+N2hmoC-?@Uf3w zNiv=NA(zrZpE0iMZXWR^lKFH6Yd*~Df#$A3aOFy6EwKQ1TUGd&yqHkKB|d|gM_%z<%ewb z6f$}oXaHcL$?KbLsiy^4J51(OX1{epS-nlOzR>2Y;VHaN6^^g=NAfNLYgn4oO7ojJ`Yo*Q!e4!nZUs0FQ z0{7J=g*sleMxr>ZW^JyW#`n}!H{%6lPw8TwBB8())ZQDT*;zUB4bSnUKG;TxRIZno z_?5E!OkE}xHxOBe9F(S-&oOVFjh4~;d>Hgg0i z6x<&05D3l0-8~Q!wE^0id?GBL zp!HNfzwZ!TGxAEtk@+=+nX@*VJ+nHXMzQ^%muonHVvbkz!YwV}PH7@O za{q!>mt2<-Ba;Bqu=3lnr>crIpBOsDv8kY2xLt@Fp@^P3+{ ze#Xnrl}&{HteVvLOEN=pW=KG81V!Qn?TJO4yp{rCtc9u{MrzM|Tkv6B>e!Z)M#ZVp61JP?7p)$YNp|lGANb`16$yG%+|vvGS`T`1|3fo0 zMvh)o-EQ~3RfnJpjcs;fM5|E%r^dVR>b6z6CXyNOaDpkiPl~Z9jIeLOIV@kW8l?q6m-!$Xbir7pQvB8o3?X@$X>3S|VdwP22|I*QR@y(J9s&fya+9{_=e5GI#+{4!Uj4l%U z=W&xOeGt1!3F>t?1}{%733GWl>6C|kI?cu*)}Y&#=9r%Q2oR}DClVoMFt|AxB3d-6 z`y{<~my4zOUcU2IcGX!$6X2oe5BQ00xpFFY+CaaVVF?VRl&73)<%+XXev6@`EC{z# zib4g{{dnVeUhTF+U>9I67A#TwF5d)`?HzlfQ=>XKKB?-HRrw*jPW|oW% zMu8-U@c!nhi}YSKw>$?^-`l4`ypsYU1Mi&+(%{9Hm2RP@_=LhHtr13ZxLA zCg$rtt@Yh@fLc9t!W_CxS$lX)+@O63yQA*T1Q_KyN|YMVQ7;T{fhqshvdPl!MMZzR zUUt9a`ZrMKZNW$@?4OV_h`1}6`d8}iear_Hld-awPvjfz-_S%_X{p@Jd|Bx%rjBIX z(f)T}0kW7YK~{v9Tsnd|J)}3WGXcW2tO)=yMT4ra^4?Y@ahNO7@iM`U|KfiJc2O`WCMw~v+`q>yg!5}+KOdf$v9fqr&B^E2`^}kjiJtiLpyL0`! zMg&Pc;2`AH9f@n1O6 z_C+e?kb}=QlV5=mr#BI}mSs}A1{CLHF@>TaHLx{B9-<+6$_$e!Zf1REg~~o>dY;E1 zwMj8ZDLD7ho3Q%UV6RP6lUkO5NTtw}cHRa>sE0s@=~sa&mass}w><5Z@j1ASCIxrn z<#oy*8%x7<(@Jd3zmHnh+*+^OX>1>&B!!)o)Nc1^b5aL=8+99U@Yh^A`Kxd}=uZ;B zK&t!CD1Ua_o3iXxpUZ>tNjuQop0MHoik=<69>FS+YVh_NPan$jk(=EYI}1}2kGc(^ zd)cyc4}V3sJv8CTv-nZV3ta50PwW`ci7t}%nMn=tXgRoQe<5*5bqS1xJ$psW)~TDWUPH_n{R5RWMSt;!J(&%^Fm z7t{?$DGx@RMxEt&U$qn1<%17MsVO8brT3OcEvB{n9)oxlG!`u60wFa_V6SPJRi%#^Fnil&P}ThN*~CrKdG_S z8-YAInbL<%zZ5jod1Ba5*3w1%49A1}pX@pm`2e8YbBO>S>vyKz z2kDz0kn@vG4AT{GUgb|X={W$<=-bq&NKqSEgLub_wAwMBMtS4X2|Wp9XP2vN(lMQu zYgb+*yfgxqZ`JCQ5;_pp={FXgTFR0$8YL|ju7aLi=QC|X?bft$-w zeLxqjD-OM7abwImxtd7}83u;^Rl?_R@=Pz*vE8D6~B^>iH=fV z+S1*>Laq^BBxh2{`NkNqITnATm)SPsm@oA+jIrf#Im>Ce-m_L1;^iVB(@h54>@f9 zFZYjwHqE`Kca(SzD_xtStQv06&vHMnuD(!`&g}M>@@bpzNQM=j3E}idh!G;BsA->9 zLdUIbdo`(*$0~#tNtymMf7glQ@=3n5aBK#$+<&w;wbm($Sa>Mx;q^6w7bAUM-x4L5 zq}+YPY(a>sk>ezTcKLK&`#hwDe0@SQ(L=ACkul)BBghls#O{(8BA+rdFK4_;b7Zn< z#ZXH>l&K06+#5?dKTGs~aq8t>aPvRvC4Rk|_&w2yOaSD>sbW@qH6n-z>zkRk-#0_o zH8v;$rRjH>z`4an2TJVMs-Ej2@_uXOFmhI9jDo}U=l3_Dx$Z&%4GIzEz-#?06;qFr zXX^_Yt;q@!ZZ{MWp=}J}%I}jiF)@(bHSL44xLM#k_JL}7*vkrL8K~2E8g=R9ADfS| zUAkm;MJCt2Gz#2PKTS7cDP~lmyOts^0*1Zhx(=n^n3U^vw6S#VsHwLps-#0%TPkiS3UKI2+7b&;2JLFMhLcu@K0Y-DaeJ@y}O!U8cowzM`AkTb;@LI$|>ctiq z*_~VAd|ZPAmd__-4YFdR1s;dyL`?cAsWC0+oH+6`xu{tw0{J8%`F3`I6s-^)RX3}l zPzAQc)Lz`Yo;O-um89R<*jrEJZa_DNB@6WYMIKnLOhRz_buHn{|HHCAksoL=CaQnZ zIG-)-%X|-|h3(8#S09{|F_aEcy)aE833^gFQAdk{B@xFbALtiIxo{eF;s%?@#5GbDie*Kc(eHHnm1G}sf<`wZsNsHX#E9c3Aykjd# zB=9a3m#@;Pln$~H*xW@_O&xj{wR!P7@L|13+$jde~t;v_mm&(tZ?2LuZ53?%@(Cc*b1sUDdlqYhh=Z-qbB%J3oo_MXx0% zu3{P;&M!Qe#O0u{#-)OR_`D+Ne>#Fo=JtR{iD1QV3xg>R1vMW4w$V(iLn}Z$7aQt2 z4@^Qwi*I4dSUmFt-c@$JgMMa(jUV?ER=2FVnny^pqEY6WAs4bK9d)1y!vBj_-73ZINJc_m5x_N7$I#1Z++P3prz$=vwlSrauZO0gjkjjPC zMKX%VuVLM)lIIPNDz2rxK>XWbs?BMhz&S9+hE6*w8${#k*xG2VDRQgU$C5k5ufoUu zpfs*`5xt~Ni4J&v)t!r0{nBA#3tJFlKDVOV`u$RtCwZPyA>si&89`)$m3_*@c+%vD zvv#Z>GoRuww`7OAnfmlJOfwWjus~u+C93==ZwpE4N1M3`@V}vbRAL-1GWRjKCgKi1@@A$Hj%xMXBof2_Ds0=!Z@9aH zyGc$~w(H(~=RD3VNhY5;wI%R2L2hXuKjJaq(tc!}Z%n3(T;eeCgmSCsx$S%=OUV0y zw+Ht`17e>6zTQ5@RUMIXS3(M3z7_V!@n05B_ENRA-Bc{yl}eI4df~Xpi>Z#2O3=$A zBii^3C8hFA^25~cbA9$!Q7{wL73r$y{W)rB?Ib~UO!*8XUSlvODCRbQ4RnKZt(5!? zjq=NBoCTR~HJi$NGxjr*UqUJLRb{W6qoRRjN{Jd`KJWUU7O~AHVHjC5XgzhBs$(W=PZ?eZ84tCavxLIY6rOJLQ0ls#&at0uL zTVL#Ge;e%GFDvkhpItjYQce%qiTqfj$7))f$){ldy0%07OlB(#hH_%3D5YYGU}bje z=jw|V6nG-!SW)||vp8nX1%_$Pzg_N;WA8Bs`OzC9D^NmT%nl;EIHoFY?)n0@8>AWjs?5fxbO>L$0V%9wje(eXi`7#92?+e^5vHK_e1a0s=z20hF!-|1UsB)hsqCh)xILYgE1{0(fN^9l0bCcH40>S0z^1`IPDU zZ-Y5LR(`1b->lQq4Rr$LPKwV@q2KqB1@yi2t8EowXcm&DG&q_*!^;?a3p?Zk0)C~^7cD5vQI$zNYpN1E))0JiP6!HCsWN= z{|S*vn8Tg1=#?|LsDWv=m3Im!5QM>cD;>2QniA%}{2{>ZdO_ej!)Y{hOp(pY$F#xQ zVGt@=8{&VfEfoI!f*Uv_!p%&=cy4}jV_QA`gm@B|h{(e6R=W}1mMk`kg?F4)qZmmX zKF;fZ`V@-T6r>6CP#PT4kzt7YyQKnIYo3W*%8qJXBl8q?b6xy(xmqF-8?FX6?%|qT z;j%~YpXv{~y&!zItljNSHE^eM`Q7EenE5y*2BNXAc~I@%;TeemD5W;r3#CFAPG4X8 zY1_VUtNje}iMm%?YZ1oHnX{CkU})p!ki{@&#KG4Z5X#qtvD^Uls~>;eF|wzzhD7dl zQoz=2KX|6g2sT2|+GbA{9=zwUAxQg6C41QB_XcZTV@e*n{%_Um{*wfp}|$mDSMxUVxTD0)`96Z}dBSU}^QkQu?3k@=qf;iPR8sxI7XO+z>7Y8++| zDjH+eW&B{wO`qk=@^|QJ>4z1QT+%urq}a<9f}>cbqp%IG#|kv;(5a*A4~C8Q`{<(X z$`%CpF8mMj(8IYIXjO^mNI~Y`V19_8MH3M^_!IhSH z&WoJ2U`w0Ve_Fr2031G#E0#WQDCSr+c+Hcea}s>%6Dh_Ztbg&w5BLon`kqrmWD z5R~(6YEQ`-gSpY;(HpPF%-$)WKm|JGYf`-*=opw9?h3aUS!VKTdwnCjN&8f3XMbcn z5*=3QAm|&RM9DnF8S5UG%F|S~Y$2jgjV9S@G7jg#-seh-j~3cE^2!3)vznBo#0@^{ zt;k$Dy5cN(Ko;*)4=b$o{aZ~s;4ZY1NdeWQES;*98b8N(){TcZ4BLY&7*sv$_0e!A zeTX}LX2D#qje-3o2f`&Ukknns8=V~8(zcrYlgiY_noAa5w}PSwPRP`r8f1%{MZLb| zN27Vs+8h;{hNwW>Fu3g%U&;&#_Ug-=;Tip047YT5!q`R`IKosQ(rUJ|~7aM(@V6 zhZ|!=u`>TAE&BRuRZHhFsW*oGud`D695c`y^Nhz^JJA%YM!uvRV$LCnTlXvmp0RtD z6kz>oe#qLGm3Nvst=FCpRv&1S;0C?2?2E4t!AIbFtt58RGzrS1vfrolC5py+xWE5g z=5Q{o$k!jor3HB@dJ#WB5l6+^Q#Zw#GOHm;(G+Iq5^(r&CQRVVvGZ;})%5CSzI|vu z;)_JgOd=+CH)dLq0k*N?_U{KzlfmDZnq5TuRHvoP;y5HTHG@R0_9;|Oc@+JrYFW8l z@VSdfU0za@iXVR3FAtg)|G=7Lcr`j$=~PvuCG@G5w>O1x+UtSgruW{PpH@4=z3Ned z<@9L_Ax3Bp4Um$5d@>GuQkaMCa2Ta5r@xgUfd0xPI(i(`+FPy*t!$5hSAKR{`zm#% z+@b@L8Gpl+RLM@d@WV%W#yM6-!B(kWFqxiNB3NeB|7o-gHi>w%K7-SX)ld9A4+;=- za42Gc(vTa!;a&ue(Im697#8=I;+h85HH{vJP8RStzs@YVs9&|*)%w^(S8mIcDR@zm z{6Pqo`>VIYZK51ZCuW2#i3(`TwvmZ=wd7Jp*FO^D88+Vn_mSx=?a@7luHerlR3Ux^ z#FWHWO>81g7TH3@$c|g`C+1DL4>XY*0t)h;7Kk3y+3YCvU7lv*;E}#ZZsFPSA<1e-vt1@YUHl z_~!|=tOSSHR4ZmWF`MCA0&{|GA|m`=^4vW3VM}&A@woxl(T^hF-HPhgZq`TYg=Y4I zgtRDsGX_?Odb(SjCY4RBXRaNn5`1rD6iuZc&7i@djds=)62I3YEmlydcSE8}R1rj1 zgwt2^qwuxs(~)WeUGjuCj6?roWui`eSsr&Cvo`qW+20n7fJ%Hjkd@5;oB*ZHRoZ+g zuvmy*KeUxTG9(A;9v%CBr_|UsW%*w=!o%PrMS@fCQo-2=&&vZ1PiW+yIOXn$LkOPA z8wDati`que{6`DP{@9Uq~58XWMnh^Hdo?3&FhbAUBaT$0xT7_2FuPu(hU<38nRdjr~(iDPy-f9+DXrr}L zwtDTWuGTNFs61vkfN7^)-=_Vevm*{1>>G_Yi52$cE*!QaWnjO03M6lPS^rG&mA(T# zrMY1qTsN#$1?RiV1s)x$>AxU#(rkG+4y(hfC9=Yn`0u0G71+>F1ca`=cLi4a zQjj#rIjow0_plp4H+ih;ekomU8Rald&0PVKepMw60HW)0nQQQ#5Oz$1C9z5g@Paic zBQir=<8ESsrS%v?xAV*gW7@G=)A~c-YAqm4jJc{LtY$s&V)$iOS)1+jv6C{R3CSL8 zofwdC>^K8ShrC8Ajk-QLw^E4;DWhdBEwII-#_Gh8Z3VAR2PR>ZH|WZ`th$cl9-qmi z?FyD?E&UvSVokyP@7&4&AW1W%cg0umAUT{ROnOfA(vC@hDJ_x`uW!QF7NS%O$)=xP z@y_+MI-9TkC`ep`P_P=P&Lq#pO#>~t12j(6KAA@0%Kpswp%{ds+8^A_fsiKeja4(cv7Zi^%7-@D>foC*S z`-`dUyvj{CxioV1Z7uk5@{Hm9*@Z#=$Hj9=*f+@Q4ED0#s+Md{;N|v9P8GP%ckN($ zA~&?LF+idJ(DzJmw~jUx^CDAnGJa^xA#l0m8{RKNf-~w|zIHEl+TPvZU4xQs@3XTm zT?y5FKfYnN@R&%fM^y9F%0K?{w#=D^+@veuYj#CP8(XC3)s|dkRdb_T+idEBEIU}~q92q+!-=W?{Zh%Sjb|&M^P~p+|s3Y$B|+*KmyJLR*G@U2+bQDT4-k+9Gh4 zhXVPdq_UNGAA6LfBte`JN`^4WQOJA@A2P7wVFeq^;|v`*;>Xuq6b|yP9;)xEjLafS zE<-AQ; zc}IuGreb1!X`_X$oj_0e63D3~*U0ZB%`q0i8J(I4?}J9q;*qUQ0N*XMqO%$H&hduK zK}dmz{)_T$t|2U-2Dl*P|HpS>?{sDSnKmLJv7!S2d03-}XE4+JA~SA&?r#nr^sW#U zk5{J^J$dh?uM%P=9D!l8_fXF}F1E$CyzVN298+VYO_;&;jgAj|dd02|(6(5^=#uD2 zLbbCs2m|Q#t|?kN)kb;fA}2e`ODe(lNZXW)w0X51pEZP~tDh0V&{YmxXJL&EEyp+= z&scShlCDf5q%zBxS0f)`_Vf4*A# zBp}?V90K=naOen&69=8<2+_eNV*y)j$u@hpD)hRVZkG(+8cPbOzNT z0!aKJdAycHZ>s81g!l0&9s-(~4{^ic+fTnU{)>lP(*5~AlFmA+ssD}RCWw>@A~~c% zQb4)|K~h3G1;o+aAtEIu9gz;zz5w=pRSlb zJMNJe&qxdOXxRIMyvKm-kmLO%7eblNf~lIkAUbogb=aiAyz2c%0d4A%=@$#-8 zLult?@X()~-@;Ks<5rZi$FbHM=`6q2bvn|32k+8nza&*Psjt;qORV`BGYFj=?zyx8 zpCA9&>lRR=1S&R0T6*6YKTBcrvNT`>yYi}Es8BhB3mDLkEQOhfB3pTtAFK|}kq|ri zswXZM!&M``U0x*yqlR8U1V5^}d$kmo1HRkW3D7pv#A{>st%;X>CwI{c_7JAnJQnQ8 znH17*;^+y~QyfXtP2{jvp!UwrZqFF?f-%exf5eXPbTjmO>juI;;w-dRec&=7acCsY)1*7pjUQ zlQH+n>B2ylS?i`sgfx|P{i%yaK5OaLh`PMt<%nU`*EA}wrAK)>R9J65tsm7!S_1tp zlIP87XQo=30%T5iJ5wo?VYZyoTpHX>c>lE6mwJN6bz9@EPRyk761fl48vFxJ>McHx zS|OwR=lCE1RS z7v=5+{8o?0L!+%p4SN}|#=({t9qlr5!1x&iJEtGwOvJ`K`2x}gILNAWQ=wS#AIV}r zgIx>X-~_t1>bIb@9IffYZZv3*&_Ac)i3tRk8^QdTsaxZBcQ8{n)mWY!O_QVopW8)G zXOq}9)_Zmkh-xn>_9Q&|q86i`ZQv-c7ZH&H9Cw4bZ{eGglz7gq20_;=xCM zzeRXxYK|jiyw}^T3(ZgJG)GRuusA@MlJ9fr4;9|~?xzo4FFX=0ijkuLlm|n?p4^%b zOQ&Hc`~m%JOJd02I`{yuk=GDkVD)&9EiC^&8x*+D%N1mrrFb6N%LfY19sVBD*g!4A zM!1|LqUk9`&i_a7qi?1}&ix#%gP%}=gg`8WAmu%Q79>wLVEk5KhfH4c+6nlUiC!P7Jg;$LMt7ZT795U+Sf8w z-w#zCPoE`#T=PW9L{T)iypR}mQ0MZnk96C39lu^45ulI?=waUB6?ZkLN7?2 zG49k?qi_w~gZmt}m`l$55hg7ebJ!}8c{|SgTfW+#Qt*yuW^)LH96d#XE=n!WGfQXp zk8H04j@B{ce~}63`Ts{xVTBnuj)oE3xj6ZF$fvxf1)NTvH!2UWBtJ(lw+lHiM7C$) zZ$)jHIIjy6sAQ+Dl$s-krAYzw56&HG&|PV3b8gY|ll&iGEjq2G)3{QItltO(a?f)$ zC9ourzP?}dg=9QhtBr^Aly{)~B8m7~eNL9|=Xc;QX}CxfmMf-v2hu^BAE=qME38IM z0TaMugceNmitY|2VL`<$b2=tLhHgK5uVUs;KmlIufCCqGJVZZ>FN77jejMQ)pfvq@ z%0&&(^XsgLcZAEQnbveLR#k>%djV2;#v2s@peor^LxwA0Cpg1O=e^h@fxoXOB2Df- zf(c2XO~ZbX%cX>B2Tp~y?Jm7ZzE?(sDV<8XKm`zzHZ`d2-7)oi)I_9UGr(JA}bNo7(s`CV>83d0UwAyes?U&ga*X%1p(vRN{QqQ&- zd)dOY+xXE)zXj7wedB|!lqDzpijhOY>I|l4f60D#P6$E@Hx8J!J?lV@PYq7pUw7Z0 z2r3X>0tRsK{$PJ_6~y$xG`N{AVvx9UliiLnZX+#Zb{*3`6;#`3Gd+UNSV@4cVhTVU zi0qrHuhe`NBm-_YAD&%5-F8c*dbd^cjv5EKCVuwr6LV(rw7Y4#$t?7t3u~E>yiBlW zg%X|OSKa%|#G?Jnf0IK-L&dZ|1h~~)2X--D937H4X1wIQ+lcyFo06n&>jTrJAkQdu zIK_N(rgnNgMkik>?^?<)*Um=s5Fww_EZlFo^+Q1q^iE8NT>4#>y)aJJp0 z1H8$9y0m(C@Z#GS;W67~id!&Kh|`~9^G+1w`Mo)DvK-e8YPro{dp-w`o5$w*&7IcY)gz{7+^)c@Ag_Y(Bd_i5RXkI2(OAke}297$;O&!y1?C z$y%f(7R8a~&QIwcSce-)7`qwElBw~dunFfz1SVXanqd-d%6C6w&?Yq`ug#j+z=9VQ z!O9kDzdWC}t+kvx&X}1(c9P&yuaYALG;gq4{(R%;JI&G@r1+ZbYys# zx+@6IfgSnw7yF<1R{V6Feo}!9t{Ga)1CPlc{V`q;m4z9fR$s(X&1K@I(Y%Os_9y?A zqt#Q)X{UfC@0bHBvBAGP(u8%1Q+*eyv=WZ{7w&0eV?5I#bbbJm2Xi0a}t9QmHIM{u4CWFEt*Cd8(=In)K2< zQ3FbM8SQ?+f_@{4bN0Sdwbmaf*1yR=PqghCL{63l?q#JpbEhkY`y@6b<^`X{8Ro|C z79zK=eP7~3-AilazmWTW^h)p*2lk#6aumdS{dm=TtCpjMr2`GdJ?*#%mHmI1H2Pd} z9L}+D9`dNk3NKww$x?5`l5E!8_j1&*6z(^Qg88dB zA0;%v``MKAEe4|1A8s!x46TW)M0Kpkgv6Xt6y=3U+&#l`e#&tIEFFp|CQ2P z>$F?1UwpWyJ(x3h3#~zs>+PyQ&cI_KP8DIzoEw@tiTl#l^J{I7#_LxG836(z=B;rr z`gZO|D=D_t=`;#vHw{h-D8LmYWXn0j{+$=$C*jPR5{$S7R-K_GIeLB&W_x;de?K^$ z(1=&d;)k^Mw##enwp#T^{wYx}R{4Be$hcGgT+W6_b)>USom-G%y>s6?XY4(^@tTKE z2oXedQI;GOdvwB>;;!SBDlmmjWG!-h{}E zH~9l(w^>7{;G!0T3+YJX@ux6}ToPsk=}=}%t-PYRruq$Cc}6@PEX{2kLXC;wu4XYy zXtiJr`To71^%16vtoo7*@87m+THp_)E*Y^_Eyykx8WksO00x9~*@(f-5&j44FQu3Q zGN>HicrAEH4qb&n+YT?T%QOh3deWydi#k1g|{@+cm@A$vspPudjvK%2#1&5g>> z5kZ9iy&NWWs_vJ0_m6$}`ZnCk0uMSU^}n$G@M}S*Lfj|~;Jo{_4yIT!b)@88a@h)b zZ;+Cr{`4y=i7Es4Racs+kY0>bQwZ5GbY7|b)`w14JlVq_sRCe8?Wnty+wJ}HnGp|_ zzxKThC(ULhfQ3ESx5Lo!b6;k@`Awurw#VwPpyp;s<3-f&phOita!&L@UN|Sz_N;?ITR$ zMm)(6-KNSZ&S~%Ow%E4jB~c#iXS~XH+EP?5GiSwnRN#qw(txpp={Qug8D4+0xGVZa z?N{UdAm`QjGURrI2>B2HCf}PgS)8{5hS#~0KVf<~LD$HC_EqP*2$%7nN5u!U=fe)g zM+2808BNJ`=B{}3Qyk;cfb!n#vcD^FXV}U-|2w%tD#=9nbAMk5%XksKw|CkMM7l>1e`_4J4TY4Ds;@LNMckzQI z+|{u<*bk)3(87XmA=5LdD)L8W3(aGQUl~z}NBOC3!#s=KRX5s3bP$aPyJ!B6S=1o<|5+i=WIw#?vAM&~r3X~Wx?>_6Y6tn2f2ytufuEQk< zsy{G&SKt@X@#{m_AWiaO8}DD|FTP_?&UGC}ALqv_Z5=7O)ttM)`V$fmEC>9(rpb}9 zv$GXd?C97-^ubHFOQd_^`(1I*NV<8^-Q$Dd0tfYpkZAEzjRfOcZ)`5(*h)IA9{a~j zRwGNi>olz={O%BQ4}yi=m@Cpme>Lc5yb+EsOd{_0d%Iq{qC?2hK%G50gNTzvQZk0R zEc4o?cY!JnA|*$s*Y6;Ka!Y%+E0Et}CrazyGVU4J65iUOhWG}p7VvXV`E@rt3{zyC zdA*fZyXyp$+hr(cE7yx>1AR<6wPsfChpYMT{mEcF@V@1^{VF%XYvc0P4r>d6vv9Xc z-t(zXeoNGxG*6)-LV#bFesANQwU+iK=RZj2y=!I9iOgMhqs2PN&jU5Czfw)TpLc^H zRo~>x%=NP*?6&oNc?|4xYt?VB8{+NLFndN`e+&wr60(Bnm0PH#y_Yo}7ZvR5=xP znvnB#ad_g72~2RB!Ik8`=eD4u#pC`n{E__abNC$ZOClN`Iv zEJp&?ruyT=$E))6>BtYiDNeK=)43}6o*^+l{2$Prw;J?(9QUm57A;d*F3ctUC`50> zh#%DO`q}FgXsx^MhN)6L1b$#6V~00?ZQgtIvB-tDSvt@5?*Q4W8WdMECHV-EY_KJS zA_1+oPW=Gfw2^faug)h&B1Q7Xf1hmqp&i!(zd0Ru9t?bNJ0baXh@GAFRQ@!>A@Kgm zDTS}HGfaa*7EuRAMiqwsxMutq-(xc;!QNSFYXWls=DX?t&I{AYDswHbstjyI737fy zk*g8RrntRVErfb5HZi@5&l?(s?lwSl=$iIR^$4dv(eKV%@k+QYMk-Z0jmCjpSF5WF zb-5Uwn=7{uM1C)q&N_Q#(tEdAmdpyO;#1m4;K`Z^O>Y5@#rna_Jlrg$Zd6fX3HdH} zO30wiPM=;=5#GW(4HXS{6%@>soABOZO!?Ng2|q1&klXb$*@ppnSScywIPT4VPH(VqHh#+6n9Cyi*EFJ7>me8> z7Nh{ll9aQ$Zb7#)kdQEwA}S{SkdCnTyHC()BIJWK2kHh-)-8I*!sEVZn6vY~t@ch) z$)@EJPPO}8VH_OnqQ)_JmRh%nBPV~#|d9T_%20 zR)DhYKzUn$YQ2l>aKi`5^g9zBON$b_2q-PWq~|UwydPcrgpkxtSDIozQu6m*57p~h zZSU`9zn_y@c)nOBw+4M^GbF6_tso+vNn~fmd~;~h$<}(Y*S_%QyVks>NuCf5hTlxq zB2H%Y{D4fIvAIVu$$_CcwfcTBk@8@E8k0)5<}nyk1XZ8tAiivTs9o&mtUvAHcT8)<-k< z3Tzeda29}+`L#=kUGwjwV%(nA_UEdw{R;P%vt-#-r}x+hMwI;jk3>&hp?yRJZq<|<6Ix`VXyfGK%A^ue)bM68t$z|!);-IG9FK%k*}os8(?wdV|# z4i01S;s^=0c~vl&rzac2K&9KZf1@KI^XQ%VVS^vxPe}_wWa6!o2G-=Q)3uWh>P%z(qs7 z`Att;zsp#hO=npFz{#?*xN1S_d+S-#UDLJ(q91f?um2_Zz}NfrSAT>hFF%=#Kr%v)MX@A%6loU%(mjAZD z)CShNsd~iDiNB7%B}8$m;nB4>%{vAAEyp&nuJr_9vkizXv^*1 z8ocU*=mj(6d(&(ciMsQssHj=!QTId9l`iHV4}D%6Jq)U4*b?h1wEQ+6Ttb=NM9I;) zJ-0yx9IZ}nW;q(K+rJO(Ka#Eyj1uB50HxK8Jk@wQ8EuajA&7AO(Ccl;vo;%a!=oL8 zxvusLAdo+P(#n7;uEWGp!*^~ziQ+Ku)DTq4$6>Kt<*0VX%5jE%V3-*Et zsA~7PS5b91-lU{2-qdHt3<#EE#%r`h%0FAtmVqRWOg<0KdGdTxoq@G7qvU|{ZX9zh zG+#7`zy11qtspGU#5_`ON6hh|?i=3OgBxGxEG`E7eq74N+J_PLI%uOLs;05=vod4m zTJ9>o&x)U`Zcu_=&HWTY`uJRLV9lAEbz@iNv?XrfVw@l_Yg~xtM>Vj_aEXUB%_ap! zr|QR->Izi;j65|EzJu(rgCqPnK1VKkZGG8Gh96tYcu<;oVG6nllbs5ezEtia{;%ij zo>2$l>FI;(x-y5Od<3#Xh6O`pDF_HfmNGv{_Iz>+pHbSs7q-fkGaP73BQZ3n#U7-T zq(U92{c?FFa8@*lXwR4bF)FR=6=O1czA;+m)g8}oVvQH#Bn?>IqViN9J|3N)sgAiG zE#0l`k<@gtDCvz$1iZnd>kVQW~(}-P^ed1 z#+(Y^A@jK>Y{~-u3~gWmX&BoU_8r+K=<9pF;m~&=_z7K58+}8mn!wu0CrdG^N01I) zCcp*bPfef|%Qcak86tygT6IeL;2HAiRt!_l*6%2x%_E^@vW2U(O@Id@)g1%l!qGpi zLYTw7vxm#gjg=C}F5kea_Tnfl?qOK_8q--Z(Z*fI8@ZdmgtFA>Wz1ttnukBl{qP{j z>Lp0KL9@1_5&%fPr`gWr_$jcp4>Djh&vSRWE@D0J{QWwQ356Jpj{B_fwAFTOcJv`( zMzw*1jHR%cG}=EO=1!VpPd1-(_?#c^)C*jWEZAXbr`VDEu9?>VmwmXt#~51aUl9F} zWt!!dlb5DoQ&ZF5+VbTO2M@U%%;}7LblwTxDvjNzG9=(6*OG_XmM&Kxfy0kTTYTN_ z{%6^%8oXx3@tX9W_tIYz!6z;C0xo6o$sg&hlg{GaNYLVyKdKxzu9VUkBThKk4CAR~ zf+u_Bw0wuh_=m+KHt-3$@!|4HN>LL*x-ywtok64e!*5|A;&WSgoAWT-LG`T;a9dH+lPZiz^_T z04wdo_PPe#TFaT%&vdHYKhA{52E{OFaWMtO0 zrKaAHlKxzY--Vo}^%OTu3#^cQ5!k(lBI;giDyZo~%kVy4bu*NA@|wC}I54OBd%bWp zhHuw2VJG)Sj$Hlgqg0NL!%4oczqbE#qtW1R%5_9(%>Fn{doV7JmZ|&PWTTy%nbpba zps49z55vrKW$|kZ?UUmZhA5{p*C##AA9`n}{SUjHa$M`aAzIAjTsl7Hld!h%DzjHk z#Vb@NLBY(8hW^_3{YZ1hY^`7v{%*#UGBlPLZkT z2Yb&pm!qa0ItE-OvDe#*E4uF99A0P@iCn}`OaQg8d53$6tlbOVBi!H*8~(8Lp?U9} z?`_xO+ox7|7>01+7Kg+`oVG(I@0Lwjthl0245O1-%6<*yys>xr8pjcidv)BaYSn*C ztz;O<65@gu5LwOOvG%Sf|J=)&Wp_?nnpwCT^!-~!0S}XRl1YeNy9UOv>iiwW2MF$n zM;{?ij5NlME6BSB-p*6D=fEb&*ysdN-(6$irX@UtpiJ?-YKXAkz{4&Uy7ZiRtgRLlQGa}SwJz9rH54jeP0K2a0OpSSA?@^2GA-4ihndu8_ zfOF#(f5}i(^>>?N9U+r@P}j$i!Bn0WJ#QTj`Z_Agx84iH?lvRs0rM^zfHfTUy7aub zWxykXqP50h-g~|N1;VbUrj54w5qZ+;;i$pqrTnyz)^kC@9?9x!wzu!tk{#SCVaB!% zLsf}T-ZNfX^**((l>v7X>bsF_b(EsT76SIG*@s22F*8 z0|g$efrQQCV>vUyeixVdX6A9=!Lsu#iC!F6;YWrPcCA;|S&^%Y(tE#m;Id%yAsBi>=jr&o&m~Ej_4d!e+Y*{VDOM*okKOft@s9mVK4YjwpQ_ziL7DBpL%x zKr6~vi6F0jtUnmX#pUe<|C8Bv>-bwFVo^{O4b=2!X$Xpd!x4XR6e4WRY=i8iEFh*K zmAszC!!%4R#w|mZkzZMc|6Mx;+!k4>_mZ?qxcO{|MA-HShP1B9j94J>$?5JZr z856x!-pT8=Z&GBAOtgWEQ8C(8tD~2U6R)yH1~ax|W2enUcH~~C4{eNf|1E5!@DmCCcXx(VWZa`f$Pqz5Ay{FDt~jsCYf& zx0w8c5oBVlxokr*s=KAZX_{94eVrXIVQW)*t#Ov1LHPLV%;lQa_(7e z?uyn>HVcZUS@)#4v7oYpI?GvQjVsEXN2R`|YCe?PIrmC-DoQbk=D-2!s%1B%ybh{o zC_NA{RWd%z5UD_$JpG|PCnwJNQsiTmml{iA``oF}ZWMc&d&D{n~>7oKL( zH-tRN#QY%-76{yX&A9(0IMgS0<(c#W$aSsvdKW8)AhX@>7Z z%PtDIq-CZ*6?xG3A2?<4bWa$$zRoR$YPtx+VWPz2O_wi4l_655Zlj;*61x{B4A)pr#IM#K7>f)~& zI6M}soQv>?O*X3SH0&t9e$l%@8ahBKj^+q42(X>FJhUref4mw;v7E5$SRO&uuH|&y zWX(fe=4npXt-9qZ&}08#-vBb|WTy*zZJk|g5W}QI;43p8A@gL`FI8x8aJ+TpH$CGA z9t&DyOX}+&KaBVK%l&|uArc%(ThD1e_#OL`>Fh(m(B6Hk^R0~zEoRKmUm~oi`e3JP zD#;ozE4-wHyDq`6RFF-D$u70XaqoX|)h@{uUFq|#vPy=;n_-YqudPw9=OCAL;=I3L zCBwU7w|5XN4eY<_c7OjY_vwlSQhPylIi7qv94)neb1r+IA7}UfRVlnMkZku+rA$hn zuCdd+8!8r8u$s|jG&sza+@`>0MFBr?E_8~<(!sR8Z7Qj&^B?JTjf(9=-zCcVd{0C? z)2c}5`t8{{r&D9^f=|_~1AX+9^Z~xUmFwMh1VMIa3O-}=J5DjV;3@l~ zr&Cm0tM*5fY35Yw-m|E69Cl(@_Ssk^ML|YYr{}eu{^d15YP{cuy_JHC0mVBoIB@vM zW$*H6Dh_3aHW!uM5sl{mp~OrRQYw&I^-WLA8}$j0ZDUqffXoD;;ShRV?_gdG@d41%KH=LdW<-KfXR}tGnIpT*h?a*wopK z`s!@&P_4UGE`eBzZ`aH-WN>fJ`cX(&s^p8(Y%yrGf)m;W_1{`$KnsePF;okk<`Nl3 zSFK|yJL-F|j^kSJn>YAxjcG{^OZRZv+Z?v-L)P_#E~k1=xT%Se!$Mn_VUp9M!+CbS+Y5H#D#$LPPc-h`gF&OW`^GH|@d)TR;*V?45OjmtCO_Qwc zHvuUg@@ zXHFQN&2=^(>`1>rWREzE2JDW>&oh=(7UK1~yK^KjI-NfM>c>4Fus)7t4)~()oQ}NT zr6hh01kxbc9_4CYzg)VqvW2LnH%(m;SZ(XZaR2ztVw#-o*?~N2;<8&`m6;Yxe7eki zj6|qQO#cw8waCd)IS_NS6BjP=oZh#_S|t@=cP>4)_@w^K zXbJq`o9CQu{~IG@R%(ZwO=FJ5oF5=I>T??RapqUfZ50+QAD%^URfbe4$_^yum^t z^z2!P}+EE_)L)CZiGXRh3Sb!MTdXD!htLOpAp79&ZYBt06W)_I91jO5wo zxi1@~`=w;Cgbd~KAu90X=tqBfKc&tq7|&HrGhb=O;Ixq1g=Jcm$9@6RMOWDY15o4r z5~>IZS2KIgM#&rtSzOj9|L@rG`U~`dOja1=tWDbRvdm<;>wYWrrlz%(y5AZuKWIiE z4&)6%+<3;|Lq987({$K!o_Yk#D7VTHl~)PmE}oF^rL41dIpw> z5D7lYsc|RrG^vB^VgAJB0w$bdU@Qf!g(+wF=pa4(Qe63-&m*0SuSFqNw=aZ#6Dp}D zz@xvvfn}=im}Cmk^b7qspP~~Ne*1ydJ1@fG-s2t2-;t=GnYi@z53(urXbFup(OebM zeGO_#-F~Z>T3u!~RsR_hxBo^4gIqZZ>6IM`2{}rDmtLCSI6wON>Ac2obhaO8R`S!m zzp1-u@bP5g1NXphxQq~9SvS^Tf z??vLYDL^8%^}JazyU=OSt8vPqGvJ8e%a7%}z4j!*y>u0~MbHIPpGWK2} z!~okb;@PW7`iic}hVa1iRYOs;ik#XwmxUgeMR~lhDKlk-1F(#+9FtPz_lQbe_2v1y@_f4ltGpO z64hWryc^aJ1z`kr?5F2AE-z}$D@RecN5-9=cIlEf+X;|&c}CXpS{O=T=3FpyaTrX{ zO|b>CSibCOZB9>XfzQqv9>Mt!ym0dAaN{FX_0SRJ#odg0x`0_G|H)6Ln8X}M9ceZs z6q7*%&;8Y_7xb87DN&yLakt3vJdhCVRc^sI{X+H^S_(s-vl;7IkOZ11i1Xg~wR47v zvt4`{*TH|gqSj3FdB2yE-{y0|;pF5nJ;ReN0!aW7&?uOC$yAe(>4dZ9o+WpEqyfjs z(z6W-U(PDWet))WI)|jznPy8kKe7?G1u0x2;v5B&T|5E9i zKkRPBN4h_79y;lpMS$w;@#N$t1SrVY~$R?+*bh9Eru+*{qXg>hh`8|Ko z1{1l_=)RNhZJ`A|uZA}8ExC+r54zWk{n-%nE^4Hrs%Dzzd4nyx$NCH5)AWj~GTI?t zN2ZJU$MPrBD)wdynbS~mp0%@hpCYG$jn|CGi70jA-Ms?;zr9yj87aodr}JBHqgH-` zpZ>YgCp*~XWc+Bo90x(09Zl4Kg9TrYMiTSO)mGop?u%4iOLOI3)k9FV(mh1{Q7N2$ zIu)4&fF3BnmfAF0yviwU#XVJsBiQ3&GtBK z@ygDRPwGjh4=j6~XhnNYpW)j!ko7X8q+`36*xc>5OkYq$(aS3z|8S9#+T4RAa@7za zy6Nv2R$CKm>gGljg5tL(@ujCHIPA%Z!t@-J3vJT1Z9>(Vz*{kuJ;1l790$HO6grzy zs}9m7iOGBN(Tug{5vrrYggVNBO17625m^bLC|fNiUdne=X4i#4qyVv}`k5ZnR)*!V zSry{IeMIYYo0>F28t@{yIVZ)6DEstHQWn73?f&Zg zw>ye8`bN7Ap@W0p3e;7fy|L<$n&B;8Tw3~q7u6zPcbxh~LlsH0poVz$*pdb$abiWf zg%7}fd;NbYAbiX5U;O3hlBgY5ZuX>sw}e4@u;5dW&oXnyV-;U(2~V3TKR%0Kj|Y(L z%l?_djIDoF(eMTZ)bu)Xm2yHu^o}Vu!h+BRK_`3rKePYk+`+AIl@mFr7CO})D$AR^ z3jsfIQot_Ks*xYD@|kHZ4bdOl&d zPh`XO&5WzLH-7Ec6`QI-rcS~p3SLQX%8v=*OJo+wvw~y!{L%=TmB>Re&3svh-JUOJ zVu5JJ5DUoyMN<~>I1y#QZeb?hxq8gxZwH6>%_)rEn#Nza;FYiz)ail96bt{ir#_gf z_1Vh5*igosP)aI_GE69W;B&eUcJ$=gIpkK*(bY=2-(zS)zj6N^6zvz4aiWu3Lw2+% z7oTd0&J5dg+4o+^=C}7Hc5h5!e^kQAIh;oCefd7d z>h{q5-tXx{<%eKWw!6WeILMD$@?O!@+xg9sgipt}r|q5JzN1JSg}#!H_qS?A^Ou^5 z(21tWPun|=rB;sfKKUc4?yGE^y!+2vM-q#X{H2N~3UvRDb-g6zsL?eX^SMVdL5>o+SO;ZUGO)Ux4f)xP>8hV#{3dI7#ea52AuaOHyL zf%khyGm^Hp8I10CN^SUVk{mG|j#Hpj2hO3X^0Uq0CxxSj%I~5#4+ouYJk(xv{bqC2 zRgyvC2itG$YZ(;r3Gj00l}j!FTTL|N5exSY7wkaw>$N+y4pP=5FXxRmj6LGTa}lASNl8HtetQ;HP3|=vY}!yHObObZ7W?T?Bt0UbeTM8!ci=H< ztsu6rSMp$8_RFdpg!E9i2)(D@LxR&)h5+T+ixJjZ@2Wd|ua#PVNz_S{*6mOZA<-vQCh0vc)9?Zm|G8B}EzM;|#rnOOr;>CTYW(-?EwH z2-}1bhH|B7uxiNXsc6>c#gVSbhp{CiZ-eR7#(na3^XTR?@?QC=3OTE?&$D`QJC}I3 zdH7NFh-eAUSZa`Nr}T^6+i(Ck5A=mWj-W{}k@I}aJOXi_&arXI7!Ed0%c7qqjFu(ifoI@7M_zQvnXJh1= zUDcDP5-`!Ug3TJ%5$onj1?8Q!s{<}|_rr_^@A;_^G< z%{aCvL_X5MB0nB~oqs!^!Eq*pf8t!`Y_c7l+o)B)ExHRBTp)CSt_++o9uO>lxPbV(NVmtwPk(`byRSr8CZ5bh zc>z?ADg^CQ+w=^36`3?%yfm#~5_ySRz2Ti=47!*Uju3KQgqSq5ZC`N0cpYOm>lfR{765+DNtP~RW^Jr41pBWtNP*YoU z%bJ?sPLpYW4}XalkyTzY6i6cie_xm1%G>nnm1c`>qbrqNc^8a%N*FtEHdU zZ)J8ie+4kRI3!zo|5z5z@!<{eAJKexC=&c*QfiQIvDS;%dsMyA*>vj}IAsA`$22&< z_}=*ImiFc1tMPMx+XAu#XNOHhO{IV`8z_CCz0h(H8)-GyMsb9zFt&9FPuMK@fy3_h zn|Ro+iB@k?r84^O{FMZJW{hMc+XpKyC(rYtoIIwj^8iZQe|Eqd z=<`);)A)$E$h(2(`Mnym;)^euAApZ?w<`KJ4X$6hlQCo8Qs+g0`q2d@!l(Zkzvc4C zrEq!ea?G9O_4m~i9~p#^KO)nv?BDIAo(m?$%Ybo$G}=86(Kn25x5VLZ4;9VHV+Z)p zls6@&h&pAcVE!`veS76a9!%eomtRPMGndzVo!nubCQN;J+PCK0f=QF3Y$T-p8L9X0 z$)@*ky(aPIGmlRJ(dfX{#tZn~vu!1U8~wn%gx2el_w4)-=kqMEFRzZ=N}5fB&BoW5 z;a%w1bk>+D14fusaf4oNJni^=;Y6h z`z?yxzvP)l?aTr1M1Z~vT*WVV8bgDD{TNQtLpR}}pBG8PYGgeHAt~uAuGeQ~4|auT zy!ypdK9#?w;fxD;^wGCJH1MV2aQB}kas~ASA!7|RlE!|iNk-jhi}c~|zV@d^wl#?) zgN)VaE5FzY9rq6Std1Vrh<1wTMFQndeHj+pd#lX%JN`3%2eTHp@i%jW6@1Sw*z0q- zDkACSz44cDf+@L#hSrgnp@8D2G-MJI5@U>OH)psnWX_;C$nTFC7l-2^8TgMS##r>K zwJ~pr2uYvC;W`=eUtwJ`Z*^!>uNr%kS6?e3z*2^odf`J$A9~x3A&yxlHoX3YqxsB^ zO3_w*|FnSpGqC^rCuY+#7fK2Jg@FXjYp^my^4yDS#Uu_-6R&VTCm8s#eA|Wk71JVG z^6S~p29v1%C(4t!LNuzw@5j99s^6X7(x;1Kfo9C;#XcEEtdXL-fF^h4fI0PGbQS)~ zKnDSi7;4@IggW4pBQ8e8;u$U{}OvE zhuqu<@zpwt=Miod`tBKzl*aUnyfUX5iQaQux(8o*MNGRPMTvzr|DTa=R9v~~ zUIU!d^$Fv%CrV1!9;aI;U1#%KcI&=apS%_nB0Zr$Y2kPGu(I*y9HZ=G8s>$FX7>_9 zMN)Ub+e2WtRj#-QYliF(4z9almpw=N!|}nFpOwy~Z%EI%9di|@%FVr^`PPF6ojjEI z_|FjUbb&e&Nk6B*?M`PVCm_CUHog1L_t463h??fyd~IhCM#%3B^GdgP zwH;s)Fi9V}o%brjf?{s?I#^rA*gZZ8mu8YO)`gU9YeWYkwE;U@N(htxk@VGZO}^jz z-?yk3AOa%N-Q5jJH`2oB6k&ANM5Id^q@)C;q&7xMH%N{iFh+-r7z4(B^Yi<2d%d3L zpZnbBy3Tc-a~{_!d|OPXqqQNpIq2)?P8wYPWI%tqbxqK9sTYcN;;NZ%@zGi389Eli6{3!spGT}KXpa#$k7C9Z>eQ#Vw$u2;F${D898a|_nKz4?Hp zvMduRzerImA*KuJ7e_9~`9>YTtNSaijbnOOKojd0?tXt3c`lqI>6m$0yD|FMsi-xS zcSUL1kLofu#d|9ywg>n-<&{DzdW-EJb0@_ts2YpM%zl9XsZV|y3JnhgF@ zQ(EEv5bjPFcr^6JtzJMt2kEo_j&y$AkH$BEUsWKFB%~dITarA~5czp7)Ab}y+3QPf8Q0GHM*TbuAk&XIRfnX7cDfczmxA&A4_;?zTD`+z$H8Ln0uGj-C%`w# zrT>Zk!1_+iBa#qTJfKQ)wd=q#${Xk70~r)xx-Kj~_H&XiC~@Xz0%9Hq=vy}E;6p-G zbgu+`gayZ?(poQ8C&DK0Zmgfoq)AYMbib!8Gq1pg08iT3L9R;XDBSzMm@ zqxUl5_i0$~xs<$p-eaIVAP*aOaryg0c6)w8-Jubm@1z`h1u6S{rdMgCMDV*ym6sV% z&LZ8S%KL}*_W5t*E#i4sqRzv_1~V?niR%vgpEECBP@FL9&9gO6Ff#B-`6r7fD(1KF>jq&K9D zDCXoHa6vADsz^(uQNmf9Dz+)3{!qP@`I}Bw`(r9)`?>j$_7|8az<)US%@4)B_(meKXkUqps234x&aW(Nu zH*+BznF%=Af|qD-vpV=skP}P3_tt=rGcYu%e|fOLrAN|b;Y{u%TjcaeimOhToXMcD z^rZ+P+K11Tx%d49v&5!axXZ>}WlfkBlfno&H`b)^`Gn&ygP87!%x8AqEDDZ!UUauZ zgbHb}oXO!wR_Z6+kK??C(gnC$iBG$0h@{IRG`>8%at1K4CBIao89=y-Y`^g8OA{vL z3bEQqcmY$NxJv2{!(z)2RiFNyU9!kS7j%Nx+Z%!t1}go(hm6#w=1=vLyqFO$B8d}Q z*rdM0_C?B16axel_Bm2&1N?k_SBP3}@6dnB8N8~%0Y%sV1&q|cSdx4i>q|SE`8Fn( zb$%;*=^DPvwBZrrsEQ)S;}li*G$Z& z8_F8LP%<0c>~bkbMn5xkqYme4pby$gJ>M-&5r%fiNlLD}rip-6cnb*fx$6t2Hynd> z+jXw4-jjFlzcV0{ei|o7Efw=TQf*?`|M-$}XquTxYP65HUN(Sk)zoGBlyQ7W@5Rp3 z)$Fy&*rtJ-tb0ieFT>l1TW${Wr(*MULg5}i0QqX+at;sty`H0_2wm_?^;yH2g-CR$mm+ADZX!x5 z-WS>Q+7^-4^bK?l@SKr-=R^cY>)$Ia{l0NC@h(fksfLpaf6)0J?HdvU#>?OKK_?`* z&(G>QU*n;iPU7X!TqWQ1*nxRwU;k+r^K|j%X%~m?NZl)=u(c^q+C?F^T*Jz<#fH+t z$|UHQAvOz3y&3V1(zX>XDqpsMdsxHAAE0%kYQ|sfOsRXEf}&N#XSZIdAw!x9dugXA zSJk}!0ExX|)BPPA9TW=OfOB0nOzfs=L-Kdr%)aN{P5vl44eOC~8`g!x9)ZMCV1KrXnufOs?2RXyHU?XY=ZMjuy0-&N0Ust(NXbWFcXBDSqyTS+>KIOIa zE9_ZU)nbbp)^3W<2yz;Jm82&9_6hLSx+IX;LpYlo{R$=^UK`1+Jz|sYRn~O(~!9@*47ovstGNZ z=-mC#9o4JD&GC)vTV&91X>OrLyvz+s8wuSTInD=~bNv|W=CHrI6qyd)^+%#~V5q0JZLHXoT!BdQ}GBZSD%1R`G$e%uyexEph|Dr$0S1sHDlP#PE4K_p@ASKX15AS=gr z@2Qfvi3tClE2Y&l-u^&5ZEm~Af7vgJ*lMn0&+rx~dT3X@IF#X%CYR;~^ zjs-QGH5fV$;^3@MsaEx)NwMBP*$nOk;ck;}ZqS(Xa32Ia4v5GZ#np`OEIIEBnbv9f zEsdz1%iH7}jHk10m7F#wLC%STlrIE;ZljZfXqXQip=XB(u4l9t z+P_SsS-<#By7qo6M}Wq`bDY10)E0st5)>lwtEjq@X5_Am`CK<*3^XnrYA1)bhbYP} zYim?Ui`&>=dDq!OR~Ot5ytU>R6-tHVXSh}Lk+UKp+dUdfX%%FH^UxLhLPwkOP3$`P z*-AL1T^7IKZOu#?wjfA4Ci>oWnft|};Y4~+{m~Vu9wcExPBzRV%!Vm61NbzIZ zaQoU+;m==!7sG7i7`_~wC|=NJu;7Z-tJx12ACj{iXj&F3LW z>Zmx4===UT{(;)gx>mI85{Tgux2Y6!mn&DH`QTMv=6F_+)y@lmdVOwXn4%v9#lih^ zKPgRNc8}L=JeZ4ovbxTEp%FUjzmxWIzQSB<XFfICRm)hFxM=AmW!G%8XEsLN(PU;!D=Ql-FgXPz* zndCDTJ^6foKkkG`^gB!7P)WW+axeu)a9s&{%Kiuq59Y|~1f?R*yfaQfA^h{{{wusg zEbuamtkz{bJNib-1?9UB#wD9$8`0^1JFzHi`{$WZ^-k?JDVOK%<{@gH6{`$`aQA4w zCbi=W+I1sSx08L8H@#WyhOL7!8P#p#0OkAOXoS!D-^VY0D~yAcT!ZoVl)S1N7uw9h%;nxam9OqWM+4Cg+}yK#`MEXYAK_%&7&Q3Pm7e&ua){q; zYQwC-wV)1B+C771XQn)lU+poH5wBP3-_)JG9X0G%R*x-5ga3ySPSKZx7u7Qj)K0EW zU$Z3f4$POIlV5T;jTvfw@(E#eJ06b>swBKdZ zizH;VIPOI#?x<St z{iQk>m=&m}lAUV2Oh`zW0M|diO9*GNed~X|8VfqdRx}v;zl56BS`4#vcWg95w8(bs z0jq{=V3KFkNA`{!LLX7e|4m=a9-7bgE3!T_w`C`;d+j8u$6Ce#RdFfscn)w7xw}44 zk2dyn#Yt_w&O%SZQdK{}U$jgH{E}~XTTIgYp(5@=0jdl9$wXVUm@)mnZ(yf_So`J3 z>^8rPY~tJLUsX7-Z$@jyD7E_=X(U>PuY?^Z4L$RXO{iN7Xhc6v6Wk1-N%TY zlAP7~y#pCu@p{gu5N(E1(=*R-Tce03o$`V%_UAV0{ue#hg8S~uf*P7cAqyNs@q~vy ze=QWn9{!v_TtvEEqsOG#i5T4iU8|euLPZzA1pAn7$X26csA5+$HV~hnk_Nkv>dFD| zQ?QFV3%R}ZRj)$v|BoL(`~6t$WH;eLMy{@UU{CrB$z$}jVM0sq`RzV?Zcb&FrsC+& zgZC;%M*c!qPxO=h-(dKb(@BKBw~}JT^uYc1FS4Rp0uE2bUH-h$qF2L;RCpN&3MGF_ zn%;$$Ga9zua-4z@n+ZDHgSYQHk0ye%+S$?tYAUXwm0^7It_M3sj8>l%p44`PADNc_ zAf8U4E2FL78{!u{b?m~UKf?YohgK`WW1*{3L`n0qix4K?omtdVvx4LB3cc|(qD#ivhnnvbji+-D@A8eED5$_));PuI!+M`-~Yv9`T#Xq4~>p~k;|U2 zmGzH{ENKSywJX`?LyBux#5W=T+A&Reum%b>`WZc+QRDcWAI!1(_|efTvP9st44}Eb zI8crfrw4S^ep}>6-+U`pd^E}qyTtSbccN1Uv~sd; z?WlpdK9^k%(}fV+IIK%||JUA?_kn~Rhu=4vc?2i%CJf#-Zs;b^TxN8Roh%g#R~kz? zGe4^LP}rGvZ=U4y9))0P#HBS|8F=LgeO;SjJ{N5c1Sh+aE(@L9Z64~_zozV~!^+a_ zgN@BtbV}=!?@?V1{m{vTAxO|9JJ#YiPxH(x=N8ar9EUg>4#K@$8p^v{r=aWwxN^eZ)5u(@_dG+CU9N`0n%b(&y2dkcR82=O=GQ|9poJ00^zbSb)#lq-v z&=Z6~;1=&wS=-3LzJg-FYzc{bcHA=J2Cg#u7iIpIx&Wst-cn&|Y;CIZ8P#CitsdD) z&}7K&UPaL}tUP{5f4V{e>w*~Q7{197{^_{=O!s;o(y20-1jk|F71o$cYpOf> z^I{Szg<4A8<;chWwUiSxUWnC`a0xlgR{FU!=+c>kxeH%}9loXr_anEDZKWtLG=(ry zS@tYtt}J-$njkAF|LmGr+%85v$ zy94LFOy|P#gn;(Af7-0>6UkwclLUad%J-p;uFGppH;-7PN|0NWVMvOAp^j&hI*Er* zJkdmn>wZ|RLp<=|g?i^K-+)SIw4;Ko8sN;SH$iUbpmxe^HPS`+P2d+Z13G-~-itir z=qr8s=Q-J&)@0u)CI{a@pyyMaFQP1YDvVziJse2c!btK-^yRPeXv%0##-K6zja|)$ zKp)$Q2CPTzu`3iACJ-(n@L&!eQUJM}daPwDm{d7#uA~d81+e3hqX-bl85MicB)NbcvM-k ziFpW_%=KOBSe9=`hbC&g3-6cy^{l;o1!@UDpHh2@kb4<1@gH87nSUUPyglGdJUMi5 z5l1!vG5%Gjf7GQ{bdwz7G@P6&Jb0Irc4Wyuk47w~RYOHl@#kr66a4SJ!-X(fjh}-K zg6Wr1=SH5B`scf7281$bOJCat=MF~=f8!lK%hGMka=p1Jo# zo>4s$B+96CV{$Z@48NR2t?N6<2yo@{JuqHr_g*Iyblqy2c3ahwuK17L*RlVyc8dOy ztH1q9$Vmq~?@hsdXei6+iq9nR6WGe-e!C(--GjXcbb<~~2|wNmcV{e0p_x>`h5D4d z!Q&?8jRTS4YTL1M?ks)iH$5Iud7a@W>0Xy6SXqEmLn=bx?@5xMM93V`2R4>Xd2m}xjYg^8333d{Clm5At1$|X zqLcGGA;7TlIS-=%{m!WlHkRP;`WO^dGY;deeDR21*(jyl{7A=DG0}qMG~upBQh$LB zaAXc}=NT`xao64-c85Q^348@>(|A{8l`$}#Lv@lp0xFnmq+DiE~%$?b6{fo?CNUW?a1{ zcNgsta5ztiu1m#%y!y+}%%Rqa56H;)dqts=skUd19C;2^lHH9(D5;f1TW5B12g4%I z+`-|O%Kk4;Ua3;|M67Rjk3C%blb@HAT@xvV1VT#(|9kiJ!Y2V~b2S9gWg5JhG0^qQ zYc7d#~`&rxd?Vr@hb*@^{}uC?*MAq5jYcMK*~py{ ziCE+Cna`O(pQa8VV&1FVqzNzq%!nGo)kzZRE4P-rBX;jqRy2LX=I@hfMIN=BWcj)( zK+)1~x90K44;Ca{7F-G3qXB8)-$KWc#Aes8d#lGZOr!T?Eb06aQGL2An}G0$Dw?l^ zWjc&GjkSFI{meo%^8H+trS=>C)$3QXP_^Y}dcWH}nRIrXLJU$N+}ZY`9bMTcNBn_u zX7Q>Cm5|~LG5KJGV@QzJWx3=F$!P`54#a47+mcfTp>JH5ME!jhJBf9 zu``q<*=wu+og0aq`!C|$(S(GKg}YI4^QJ|V9UH&QPO;;p{1Zu_?g8t|cXSU>(hU<{ zp1-Kvv|G~5*I=6!JPpWI6-%~xm+2CDQHjUwDA(cboqm1)txHc_lt8HM=zYlZr65_; zP1%JK-RApn42b}CvGy{YHf`HfiC!jExRKv_a}dz0R~AU$JKD=x1#Kp2A~OidyqY3q z1J45)a$S3L{6xtau=8c)wZ-lr0I0FGt=x?V{6Fx8h+&~zo^zs$uPgy@U;#c z#QHmCN~w@5rf)_RrS9gzXx$4{1B|DRaQV0`9!-}g_+l=#A~(Woebl;INb_V!xYn%X z459&D^6jbaC>D1=X+E>buD>HjgcbkQiX10mf4Z^jpR^wEBL-~C5LqqNO}}W;`?Qa} zWsk?82*-w;6F45@pKVC-!k=#N+?U~bs)%afHA#H;aC_%<`Nd#R_S$+%7EDCuqe`d|!o_=y>DI+(^Tqo`_1K!CyN^_gme;8gQ=rR}yU+hi z8WfD zc)Ke>rXwp3_@e6Ct~a@-i=4D@P_(bmXiJ1jp6{c2sb&1@F1kZamsTf=0LDLq%2wBa zdwB-H5VHjJi^M}|{VOoGu3#d+=;{QJoFzBX#@C-$H3*ee@oRb^t_e8a*=lyE^U{Oa z;?9JHPEy^LMCx1yYWJ2i()?Ekl*7|AXgxw!sShwW7=O0AB$OzJ$FmyA8eiB}7?7Gz z87S7Owx?1Sc%HwHDl>#IH5Q};GpFpRSK=-FhhE(9E2(>2rvFM^HMs46M*YTZG(S7` zqpDPn__f9zvqb0i168*+ryJh3xSDKW)B6OcUjKI9&RenFu z6dShkmV>z2*(Ky9$n@43LXJKW+81cagzgG77`F@!YOrhPB*<_2(Wf#T_!tAyJ)p>* zrZ2gsuJADQDixS*@>Q0*x7+S)#7-6o(Z<_UgSuM_t76AV4a~UGif`u zC!Y(UQb4pE(TjmMPl${J6~tLyU$GB~eAyVL>SX(T`)un%GH0>OoOIHD?epKlrTEuo zy$vb_vRQ2zu*tFF=cxt?6|;7-I z>l|&pc$xp$`uHm9iq2V$cs+BH=n`>WLghZ)tzP)qH><_-q0@$t z?Ih0+jMa;W{yPdL(vti<{IZd$nNQZjW0*7_l5ZRM*K*X7=vT7>^{pfm1MF4eyD!+h zb3Qsl!+HGpNp_~{s!#B)l8pL~IT9B&rsx)_M{oEB)Du|<9<=XxMhWV%GgKB;?@1h> z`ocVcjAr81Hi4o8{&)!r*nYj%Rnc2@njVhtINJNW|MY*(^sV|<96(jeIrcpLt4+Pb zfBR;f9OIntNnJz+K3|OnDVEk{njPr4-S*2Oo^WME;lCk^tfcN#K}oaS#O%0;Frr8D#_)lX-c4>26Lc}_cW^t^_K2-x&&^wLl;_z zq}r2@OIyOnC{kZfKRZev$j8oCbg8bzg}~YELbTq5@1Q7B{R0^+Z_eBE)!onY zvZy~AMnCVgJ8=N;EgR$>B5T@$y2;^0F6NpBjn z&q@`pOO@W~lAH~!x8E++Va+Mjz*NqldbqbmSLu(K1<$Cm?NHPv3xDZtFcodqs#J;r z`!LI3s-@zh<-P{0*D(!M)c4`y5pr%cvoqrEXZCwZuQMRgzSQzjaVm#2`My+1)uUT? zu_=gg`bqzZrz|>Uc>aHuDcOxI=9q1 z=yEgqRG5p?$vF{(LfsSv)5o!WR_lLJu+HL zi|Q^ANbhbSqtP&fzEolS>c!rOxgzO3oQW89>st2c3TxT%j?=b&mc{er75N5j^kc{2 zr;%}?aU2*@g<+0tGq71UUr%|yJP@iTA$692#^^0+nT0qT^Ul4>I-CC2VL`8InX9_$ zdJQD`gu&epd-^Q?M=O6=^10By>2(#enzN7dOv*-G%krI26v2TBLv_%M@pdW`EJg(r zZiAOSye@z5xLLO&bTX;i!tO%;cL(xchm4WwGag?pGe2yn#^;a6WJInSUPRg2(uL>A zs2ABld(@Z>qN-*1C;J^Rm5;QWWkVm`7|ix2c-LgPvfc8*Buo`FmUr!3N$z?^z0w!0 zSSjJWWa9LKZLjH&YOUZ(;E4eEt9tZj3ORa&s%>d#Gl~i+_GEb^AR|T{oYJUA?@2_S zS!aB_yVh2m#QUT%V{kW|zjm@tkD;hprxb|mMaxq++P-5T>{SKr*B#|G(R7aU?B$Sr zHdju$3QB`Pbi6%^?32p9;GOSSSVkZ#kbTw@k5(<&zD6XqBWmF zdH3rGRd=^v7ab+-2HR56!d=4e0M{hA4Fw{wmQ^3isUuQM;K`=s?Vz{`dk`B@dhg-D z(@*anF29aC&lGHb9qWjz0$t!ASLfZKI|+=zdjv;Cgv%gI%2A`Y0%84wgaQ*VX?DNX z?O<6a?~>iGj$BGkFM3Q0u%qF5!f3x=FW5=f+GJ=n^&43XrP=WDca9_jmHOJKBW3~( z=UHQ;EDr{Qiz8(9-BiFwV0u8&&D|R(r+YW+>#wJgK46UW(F%UqR%boKg3yLh+>vF0 z6+fN%qCtMa_oLnz>^DMj11DnEM;s3)je0ixw|-esX8lRAbrH>R`cPXraIl-Z{X6V< zkz=Xu^kO4hy0Lw?)4Jj-&EEIleB`q(6x0VlIRzHE#IH8uyi51iV``G(uIo$KqFs$^ zGkgn&{5021QTfOt>gkMJi3{;^HtS(d<5mM2&957`U#ofgQSVgj+f2YEB^YP2W;WN1 zk77E{xno~hz0mT??qaiPF&CP17P!ODQ&>Cr6-0MSWS|jCmYn6pbe-?#}`v35(=7IeE++JdJPto~p>%1J;wM5ua!3;SFH{Q^f3Y zUZRS`oyr+_mRPUiU}GIc@YF+js-?dEnj9OGhG%c=UT_EhTpCyig^sIxCi}hacQ>leY7nuVvX!8~ zXcrS}g_pWQ(f&-JaLH&D%sclwg`E{JDF*iRz_RvK`@M&C55;+oTBvy7$r(lY;)nti zrHY8IOfGRIjXFd22rFOAYErJYw}Gst&d_@h#*@R9#w34*_hA4s!ZWfC1#vxa!C!K> zZH=;phX>0lUP=KVx$FV?J%Po&QX%IT56@^ZK|u@rH`3=9OPZh`yjrJWvPJGMYOlse zWi**~nvnZimTTFvoY{uZ7E<_-%u@;}4?S75Qah=KuxP-O;I>+WO4uZ(R_*ig>tFI% zbjL{;4SRh6_+mqe`sf(b6ZLfFS)&&GVEhx_X?;uo>-kJ|4>1pz(8NIfz@Sm(lt&`y z8#lQJU#-V9XADS-s4*T;rVUxrh^6UN4@|O6J1bR{{4iu5S^hUoH^b`CWZ#y5?Q3Y$ zejhhkWy?^<=idLuuM#;8o+lWHP&XTj2cb6-go{)i6>>us_qm2?2mmnvDrSWn^k)Z8 zrl3Z80C@+ew~HphXs=`L#BKfxkigk{){~_q`jatF4_A=NmzS9i0QaBIxw80dKDQ0d&H-pqHSr#dkumpmY<{4{b(3ph@o!^-uMNb(0h=l z>O4O1D-nyT-{Xi12Dr+PX?FTn{Tmly0WivP+8j?XajFE z&Z}A8-pokX;C-ud~X@9|B^!jJ{5jE5l+^X zxg&;E7|r&yU}rye^h$qzacAKHhHqjvwZAunWsi=Y2HDP}C1nGLwM)+SJ>`uLZ!v z2vZd9uE5HpflD@J{F?TO{ z`ArKulCIM9IO#}Qi<^f`VkG*Hp)xBG~VkdJgde!ET_5BJ4x^s@s@hO@(oRyrS`uf#5q#Jm=1lgN0rfJWYWA_^!kxlTDAa|a4{A$vCH) zsu<_lkPb(j&{@k*vfxAB_wYAzE7XVCNM-Min!(-*(#7h~7IlUc)a*#9p2$d5Hr?j`^Sebp)Xll+L`?sdSlM>}m(koCBNM8V%!3yh zOzcLd!O8bgeGt7;wvgm=OX^8mNw^b65Efb9`kwU4b?aI3x-pP`T-IwYzR>x=O{t3NM>o0 z3fZ4q_6#!BwYophCz`&|uC$XTm;Kl;xwlMmG~H)Rk6?K5>s!kDjs0Ndg7R}r@G%$$ zcw38B3PSO~90!%ED4X4k@xhK>Z>jQF^UpV>^iVaRL0E!HeI9!L?7OU;aA%Mi%y0nF zv!#e6eXcP){4Swx{e920kU%1?JpFsIYi6xME4m%z6DxGvXcc_P^(ecW4&=iU{zMrS^q`*^_kkkn?<33@2}C!Rux@1)59VD)2)7&&~Y zo1-Z_Vp6z8g5k)6yjlA5EyK6jr_}4Y(R~s%6*d5vnMFJ+1XSl4m%7H&rxoAcq6YKp zATf0~EA4X4*q;BkUi~o+@jri&eA)y&vz_e2m-E{R8HvygWp^d5uKsrW{(!=4gEz?T z!AIn#6o))fMHpT!HK{5!bFm4Si20l}bpG;lnUh@}T%xdG@V@wHMy_}DpIb>gI(pdZ zaYYlCDj*Mu+D2eoJPfE0&x|XGRPmOj=E!SWNew{Y$gC}*9?`mKlwx@&mvH;Cc55Y` zQokshYmuFfKFmK4W@0>|@{}9`KJ?dIT=}>10p78~VZ{tGP1A9krEMt{2%3;2w7fv- z%E~K(@kLx{VHhUN0tZXu>6$4^-fIKy5L>urXS|PleGb%SWl@~n4qo(DP>U~Q*AvYq zakCC9u$6~x!62)<(denI2z3)zBI_7B#VP%bBCT2L=IaXejOZ`$p$_4u-TQbSleo=oW#?%R*a8@J*FbnhafSD5?9;c2dFvTM!So~Q7c$p* z1!~hNNi?{Toafw7Z`ZpQtN79TbL@`bVYKZl+Gyt)ui$CSDEE8)=d3tB&(MjdwX-ib zzjnLWK{17pw$q@jR)nt^)y9z@D}w=yH)cjrN+0@;Y7^xN1ys%Ai(_}%U*jp)pY0Yn z=|5!5&W(~K6Q_`MRcA~kySCN%QRrWaRZEPR%k`mEmb&H!ENJ-Go{hi{ek+eqdIU%~ z#~$HXQE3iMA->Di*MjhmIyac0PU+EX;pQODujM7xh97wmAs$^yUF()(`DdBmeK2rn zd2;q?IpDfMU6Qq3sIx^xgD;qafKqL^OncQ_YH~N>;^o+-w4QJbVlSeVM zdZ6Itocw5&QvZez#tHK=o|5#{^&bVg)2?_cp?4RRk#D6w9Kb2{tw}LK5V6Vf3;Aoo z&J`l?gR@TzV84ddoB$Feuq3y|$>3{1n*)IJAL8%= z(GsJn+tlIUrMVSjpZ^CiNu$o?#MA`0vP{J&_?>RTQMHfwvo}0NZaY~~y7?6h*eM3O zi8&_#Kiub46Y`1F1Sp@fv&&U2v5`0zA;dc2vheZZ6`5CkFwyc4hn=-~NS~zSf;N~7 zB&vm#%kXWN#nogtA&zc@s=w^$$z2$28ZVC(pl*7~#M{D76RcO_xJDkPue5*7bN6PI zRteo{6F8++wWT8G_R7gj{LEMUsg5|$Kj(vNnN8*o(=2z> z$DUyRN%fKV_%xhNMHM%(n{tVyVX26PTUAgsTmJKT`zHiconpe8?`jBu7Pr5@KVQ$& z(a?a%&oyYssVlLEQwms>jY6z{Iz2r}@xS$>^Qz8ICZqO-4Grs*zgsB;Z7d1R;r&^> zE^qdKXg~ZYRW83}Q=^7H`sWSkh+{NMvr?~eZ7}jvZ!g~~4!<_aR0w|6g-Jtk5v4kE`e_6-U5)kfIpF~_AdDJaeES-9WHtgr_oGqoXb|KY92AmA!* z2j$lQB6vIumExwbwhA*YyE75*q*~P4C^_Hm%*|NZvk!-b2DqZyjbJsQv=45+H?vkC z2V?gKVH>+zK-&6m#)X^p^JEb`?quM(X97`eYoP*A447h7Q2VLkM-}_k*hlUd$kI;O z+3fy7t$bGzaS)%>>b^&g;C8>bwqmJ*K!a_`3dk?-n6` z{mKSCVg<_LPDPtSdAT06)J_4t8ogXDx>?zYmaT8&O}3M|$6k#gLH^x$vgqq`fK-2R z^3J1l!pQoV^TtpzLS_%dJrJTcNz0rYOp_<%-b z8qo8L$ZIe#HShJ1n}ioz*S>Kc0e)}rK|oNgE;^=)FAD#{*52~EJQ@khkl@h+(jd`2QHpL=Ni69Ae7i^d>W^3b#&=8= z1+IX&-EU;pzcK|&iBc~h0y8#x_1AUdK1QmuAS3crJVe2#Thss(Fu&w^lq;Mey zD_tHEAO9NlXn~z2VU;`m@F`%e)i&y==;C4l*S>5a7nCbsQ#q!;Af*hn+2TNxW~om> z{l%FJ%)PQ41cn1xO)}BY`aS($MgpYfVJ6DE+MT;k%p|i=G=3)5{Gjf67?z0)mx*O!<2?^qCyQp|O-Azl^(bivlIaROh zz5d0>JhJj|m@?OGVPj*Il1!H6v1|Vy=I(>lEC*gDu^#7=_!ey*lv>2HL3l&D7-i=~ z?_W8crG(H>RPo~9echSC>_PlWiNs&6!3Lpjy{0^JY&FF`3@4hw+*-%=V`(^6*q0q9 z*&&9W9CL#-OOrf0`Ye~`l|rH?n^~{-Vl(r^3gBNoQyX&g?OZYqYwWA_6x7rI>Pt^y z(?0#1A)WHFvb~_(vo4$LzB6#@*yMdDRJ~xlsQyt)p+w}p3T3w>5tWgRReU>Cp8L4W zXt3-z4I%fiPl3?Pnq~DaCy#3=IEzFg#G%e|hW*CVD*Sx;YX<9I;I4&&U`*KlTm>Jj zGvD?4F;!$p$>iw!Ir}QBooOoom~-N*bA$^dIVQtX`^8f;x+qe7?hFqLV+>^TJD|(F z5!+KnC(es+ywg*E4{-?egzC}|5`u98?yZqF1s6v{IJe)m#^=P*yD~)e5t*)4Gl2z9 zyMVX-9?%Q9*Bu`JwpkF5w)!6}tzY($>$w#M@Bauzj%3Q}@~_|!@{tRFe%MvsTKMfN zcT>;0_#M3tCLxL2($3BQlEYIhbeQv1qoUbdhGB|Nsw)g0Lpy}JAM~Ur7H7ec;k0SM zQe)Ecu9K72a6$#cxYxp(pEiU#CEoDn>RnLTSlU2!r`4_-I1X?trq#;tD2oDZxf`ah zvR(Ysl+up+|1;ZiHXJDSPanJD3vZ9t9+7()B=IU$_KV@j!NW%~u0#@!51t%dq^L8* zWhkeZ$Sp}X+uk;lK+3N0UL)RZv@V-sjD5&^*LyT@5UzLu)gPoGekz@l^zhC6uI-JB z*C22-8)ezH@v-}IoR6S?m+TVBStnL`fDgXBK)gTc7bx}H-9Rtz zK3LF-T_Hvej*7` z8sE`q7n|@f^W7Mipe_^hDOdV_ywR-HS@+cI40aa;{)kN6*Q#X+3MZmK@*LUX5=Ou& zSdU|>rfJ;>?5~U4_995swV-~;&a!kON%2tnkCwEB(fDOH;>aU3S=Q3N*s0^EFLX~` zaY6y`5$7t8Q^zxyRV~Yc)6HYO1zU#SDW%4yQ-PrjSFNYVeAQHgH`h@48_-SMo3E<~U%}4j*4m-~p(rqHboC&jymcx1L9Q`Pv1H&TTbi)^L`RIP* z)wYB4zr7^R+lnOqRPrmSCMO~A8?fTfl#O}0E0JVFc5w5wYL8(n0k^0+gGkV)nNzwE| zqL-?ar3Lq&gsEvSm%iRRfU6Jl}OrAA-8ygX0ChQXlXlXNiV)VD4$V=W@!r$ z#~f9%JfJAFk=YU}NZkgmcFabi(FDZf9=tPn5FZrO^1|aPzQ73&RQe(@q0aF8 z8thJLbv+b3>Zxb4-2EVJK6WF&hc|e5<@e~C7K6tss-(DVNE2UGjRgkXypsR-tgKZq zN`MDq+J!mM|HnPetHn0?Q~&Ri6w8&ci*3@Oa*gqXPqb%V;gTwQ$m)9;QjEH{ddvOj z1#|iV@?}!p*y;=3%r`U4Pc4v^o2Nf{c?on!wz`PlX-Kv2X1}UvAaJZtWorNne>Ixc zHX-D@tlVVrugMpaO$vJH^G!b4?XJn{T*4b2t_Ab1dn&!z)!bn2?s|K4;{po1D-l*k zPkB_`&1VD@Nt*{-U74UrP=EJ9_ZaLr8-bF3;)z6!{)!O{IFpvU+6 zCFN60?f}mO(pU4wxeU8G5)JV(!FQk91pk4QLAmz(u*d)@1scbUKqD~Yc)1w`ySE`W{+ zoH@35?De=|zDXBiQ2nRR*3XnnY`qSwHH5&`!4p63+XDTIt-A|C`tK!6Om!nW?b`6u zA4zQXBGG5*8?&{>2Mo=?Z{j5(N*}C#sVIYEI18=AlryLixcjiqzW>M5RfjeCzF!pu zQ5q5HE-C2_k(3fqkdT3Ncf(L=q-!+NATYXP(lJ81b98SsW9&CR-|PDA?_KXd@B2LW zeV=omb8zi&|MZ3b_!9Qsu_BhqN?@Db3LC9HRm=}?Dd2g7ot23Oc$(! zH3tS2(EV8(uv!GuWx306(r2)N_0^lW7P_J#%uXp-EIp&&NIOIarD&eUnMWvtL#@kk z-Etc(@15a0%BZ*VQU?8axA4tMc`dY}{<8~U-KT|rc(Cwqbh-PAgSLNG9{2E!aX8nx z!*W0g-QU|m-gq-uea|H23T^QBZfT`@qn95)m=`LDsqQvB{UigP)z^GSOg5S#UyiF&sxC^Y1($u7k)ADbLZtaQ2y}!Zo=Vf>#>9@spRtBsw}uf zrzoTLBL8f?q&2t6<2xi7y5+cC;;`QiHzjqp{kR<|oVRdCcRar{bt4-*gft5fkA72(f;hq*73Yfs&ziXMEF+vF$}jKp#-&n-MR zEYezZO8?W^<1+RJ-_*)jI6U`<>7?F}(8-?^6X`vqWS;EJ$=#gEY_cTYFZUmJTKe~e zj%J&5k^Gm*hY_fb%prQP0`D8#?tmoZcSCb`CsNQNhwRc%JjMb81(GHg3`) z(R91`k;^CV(jbcD=M&S_W{j2-#8N(fXYw#+^|?QOPf0gKe6Vd^;Iw?IUxQP4r+)}a z+!K}l8W3eY+N6RSDxlfyD%$N*Fp=CEJlq$qPO4i*7PtFJt(`{f5$!+g8bRIMDp@P; z=C%pOZ^MS$e3$W0`7fin8U84_f!w&N_i2vn<~Ui)vyXt zy*7tnOltyKT1G+@OfcH}>#9Cls(QwirtsF9Yx;}s67Z}>-cQzsu88Rl5*an|kcwnYQ6t!W|sx)xzw_qLwJxtHpgwz3!M?x+Q5=8Xl>PJO3 z*p=MnKfhY&pPosroOsb>{eE2VrMAB8B5RsaM0KWyl|^y2i6%6xhifZPaaQ+TFPec`&nCb2J3E|G*5XNf4vr6KiXf~eC>9L^-Ey> z-nhWcjT)=6Vl9bVboW=Wbh`4*CtO&A{~0zzNEE2+N703~%`1oV)4G<-5?cIm{V!BN zhswEoApNA1?$%kztoiWkasK^`@YL1xR>!M1V{HNYnTAz(*_Wc2RN*FJ-Uef-6SAk6 z2IgIt6+OmdD8pJ7&2wKq1xguRr@zw&)uW?gDQBRo_LGo?6cFY?36HWXpaCEr`<>1o zc5G_Q65-$~f1W6uZM)7_fO$)|bS4g_aY4pjf4>F7ZtrX=nTA`l0^tz7`cQ2FNS0y7 zJI>64cCV;N|IQ=rWg&PnqNbvp=^0%QJpVF7gJiR*z%zr@j4`qxbd z%iE&yEb)>KIyw_v3HE+j1_&WqW`DkE*yLh9ONMMm9;voerjE|vt0(x5cO_#NirUG% zX~{pt@b=1n(o7O}%6iup^SF-hlg6l3OOk!Rl1&Edx-VWSvu8L~a#$=o>vsKC(>!@* zC)t#@f?uxpdQ(BES#@u6`(B8c2lIRPbVu$>k#lLG+3iF=k=cj!f!NhYlOh{x z4sqH#VGBPJS9GeU2(Q}*_i(K}jHf6oVc!||U?4m!%>87E#Vd2l<⩔7{smITr}MG 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 z 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%0A?=RMVZFR)NX9W#4$roT_N5ddr_~OZ%~tZ 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/03-clients/01-go-client.md b/docs/versioned_docs/version-v0.27.2/03-clients/01-go-client.md new file mode 100644 index 0000000000..6f01677c41 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/03-clients/01-go-client.md @@ -0,0 +1,300 @@ +--- +description: Blockchain client in Go +title: Go client +--- + +# A client in the Go programming language + +In this tutorial, we will show you how to create a standalone Go program that +serves as a client for a blockchain. We will use the Ignite CLI to set up a +standard blockchain. To communicate with the blockchain, we will utilize the +`cosmosclient` package, which provides an easy-to-use interface for interacting +with the blockchain. You will learn how to use the `cosmosclient` package to +send transactions and query the blockchain. By the end of this tutorial, you +will have a good understanding of how to build a client for a blockchain using +Go and the `cosmosclient` package. + +## Create a blockchain + +To create a blockchain using the Ignite CLI, use the following command: + +``` +ignite scaffold chain blog +``` + +This will create a new Cosmos SDK blockchain called "blog". + +Once the blockchain has been created, you can generate code for a "blog" model +that will enable you to perform create, read, update, and delete (CRUD) +operations on blog posts. To do this, you can use the following command: + +``` +cd blog +ignite scaffold list post title body +``` + +This will generate the necessary code for the "blog" model, including functions +for creating, reading, updating, and deleting blog posts. With this code in +place, you can now use your blockchain to perform CRUD operations on blog posts. +You can use the generated code to create new blog posts, retrieve existing ones, +update their content, and delete them as needed. This will give you a fully +functional Cosmos SDK blockchain with the ability to manage blog posts. + +Start your blockchain node with the following command: + +``` +ignite chain serve +``` + +## Creating a blockchain client + +Create a new directory called `blogclient` on the same level as `blog` +directory. As the name suggests, `blogclient` will contain a standalone Go +program that acts as a client to your `blog` blockchain. + +```bash +mkdir blogclient +``` + +This command will create a new directory called `blogclient` in your current +location. If you type `ls` in your terminal window, you should see both the +`blog` and `blogclient` directories listed. + +To initialize a new Go package inside the `blogclient` directory, you can use +the following command: + +``` +cd blogclient +go mod init blogclient +``` + +This will create a `go.mod` file in the `blogclient` directory, which contains +information about the package and the Go version being used. + +To import dependencies for your package, you can add the following code to the +`go.mod` file: + +```text title="blogclient/go.mod" +module blogclient + +go 1.19 + +require ( + blog v0.0.0-00010101000000-000000000000 + github.com/ignite/cli v0.25.2 +) + +replace blog => ../blog +replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 +``` + +Your package will import two dependencies: + +* `blog`, which contains `types` of messages and a query client +* `ignite` for the `cosmosclient` package + +The `replace` directive uses the package from the local `blog` directory and is +specified as a relative path to the `blogclient` directory. + +Cosmos SDK uses a custom version of the `protobuf` package, so use the `replace` +directive to specify the correct dependency. + +Finally, install dependencies for your `blogclient`: + +```bash +go mod tidy +``` + +### Main logic of the client in `main.go` + +Create a `main.go` file inside the `blogclient` directory and add the following +code: + +```go title="blogclient/main.go" +package main + +import ( + "context" + "fmt" + "log" + + // Importing the general purpose Cosmos blockchain client + "github.com/ignite/cli/ignite/pkg/cosmosclient" + + // Importing the types package of your blog blockchain + "blog/x/blog/types" +) + +func main() { + ctx := context.Background() + addressPrefix := "cosmos" + + // Create a Cosmos client instance + client, err := cosmosclient.New(ctx, cosmosclient.WithAddressPrefix(addressPrefix)) + if err != nil { + log.Fatal(err) + } + + // Account `alice` was initialized during `ignite chain serve` + accountName := "alice" + + // Get account from the keyring + account, err := client.Account(accountName) + if err != nil { + log.Fatal(err) + } + + addr, err := account.Address(addressPrefix) + if err != nil { + log.Fatal(err) + } + + // Define a message to create a post + msg := &types.MsgCreatePost{ + Creator: addr, + Title: "Hello!", + Body: "This is the first post", + } + + // Broadcast a transaction from account `alice` with the message + // to create a post store response in txResp + txResp, err := client.BroadcastTx(ctx, account, msg) + if err != nil { + log.Fatal(err) + } + + // Print response from broadcasting a transaction + fmt.Print("MsgCreatePost:\n\n") + fmt.Println(txResp) + + // Instantiate a query client for your `blog` blockchain + queryClient := types.NewQueryClient(client.Context()) + + // Query the blockchain using the client's `PostAll` method + // to get all posts store all posts in queryResp + queryResp, err := queryClient.PostAll(ctx, &types.QueryAllPostRequest{}) + if err != nil { + log.Fatal(err) + } + + // Print response from querying all the posts + fmt.Print("\n\nAll posts:\n\n") + fmt.Println(queryResp) +} +``` + +The code above creates a standalone Go program that acts as a client to the +`blog` blockchain. It begins by importing the required packages, including the +general purpose Cosmos blockchain client and the `types` package of the `blog` +blockchain. + +In the `main` function, the code creates a Cosmos client instance and sets the +address prefix to "cosmos". It then retrieves an account named `"alice"` from +the keyring and gets the address of the account using the address prefix. + +Next, the code defines a message to create a blog post with the title "Hello!" +and body "This is the first post". It then broadcasts a transaction from the +account "alice" with the message to create the post, and stores the response in +the variable `txResp`. + +The code then instantiates a query client for the blog blockchain and uses it to +query the blockchain to retrieve all the posts. It stores the response in the +variable `queryResp` and prints it to the console. + +Finally, the code prints the response from broadcasting the transaction to the +console. This allows the user to see the results of creating and querying a blog +post on the `blog` blockchain using the client. + +To find out more about the `cosmosclient` package, you can refer to the Go +package documentation for +[`cosmosclient`](https://pkg.go.dev/github.com/ignite/cli/ignite/pkg/cosmosclient). +This documentation provides information on how to use the `Client` type with +`Options` and `KeyringBackend`. + +## Run the blockchain and the client + +Make sure your blog blockchain is still running with `ignite chain serve`. + +Run the blockchain client: + +```bash +go run main.go +``` + +If the command is successful, the results of running the command will be printed +to the terminal. The output may include some warnings, which can be ignored. + +```yml +MsgCreatePost: + +code: 0 +codespace: "" +data: 12220A202F626C6F672E626C6F672E4D7367437265617465506F7374526573706F6E7365 +events: +- attributes: + - index: true + key: ZmVl + value: null + - index: true + key: ZmVlX3BheWVy + value: Y29zbW9zMWR6ZW13NzZ3enQ3cDBnajd3MzQyN2E0eHg3MjRkejAzd3hnOGhk + type: tx +- attributes: + - index: true + key: YWNjX3NlcQ== + value: Y29zbW9zMWR6ZW13NzZ3enQ3cDBnajd3MzQyN2E0eHg3MjRkejAzd3hnOGhkLzE= + type: tx +- attributes: + - index: true + key: c2lnbmF0dXJl + value: UWZncUJCUFQvaWxWVzJwNUJNTngzcDlvRzVpSXp0elhXdE9yMHcwVE00OEtlSkRqR0FEdU9VNjJiY1ZRNVkxTHdEbXNuYUlsTmc3VE9uMnJ2ZWRHSlE9PQ== + type: tx +- attributes: + - index: true + key: YWN0aW9u + value: L2Jsb2cuYmxvZy5Nc2dDcmVhdGVQb3N0 + type: message +gas_used: "52085" +gas_wanted: "300000" +height: "20" +info: "" +logs: +- events: + - attributes: + - key: action + value: /blog.blog.MsgCreatePost + type: message + log: "" + msg_index: 0 +raw_log: '[{"msg_index":0,"events":[{"type":"message","attributes":[{"key":"action","value":"/blog.blog.MsgCreatePost"}]}]}]' +timestamp: "" +tx: null +txhash: 4F53B75C18254F96EF159821DDD665E965DBB576A5AC2B94CE863EB62E33156A + +All posts: + +Post: pagination: +``` + +As you can see the client has successfully broadcasted a transaction and queried +the chain for blog posts. + +Please note, that some values in the output on your terminal (like transaction +hash and block height) might be different from the output above. + +You can confirm the new post with using the `blogd q blog list-post` command: + +```yaml +Post: +- body: This is the first post + creator: cosmos1dzemw76wzt7p0gj7w3427a4xx724dz03wxg8hd + id: "0" + title: Hello! +pagination: + next_key: null + total: "0" +``` + +Great job! You have successfully completed the process of creating a Go client +for your Cosmos SDK blockchain, submitting a transaction, and querying the +chain. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/03-clients/02-typescript.md b/docs/versioned_docs/version-v0.27.2/03-clients/02-typescript.md new file mode 100644 index 0000000000..3c8d29e81d --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/03-clients/02-typescript.md @@ -0,0 +1,431 @@ +--- +description: Information about the generated TypeScript client code. +--- + +# TypeScript frontend + +Ignite offers powerful functionality for generating client-side code for your +blockchain. Think of this as a one-click client SDK generation tailored +specifically for your blockchain. + +See [`ignite generate ts-client --help`](../references/cli#ignite-generate-ts-client) learn +more on how to use TypeScript code generation. + +## Starting a node + +Create a new blockchain with `ignite scaffold chain`. You can use an existing +blockchain project if you have one, instead. + +``` +ignite scaffold chain example +``` + +For testing purposes add a new account to `config.yml` with a mnemonic: + +```yml title="config.yml" +accounts: + - name: frank + coins: ["1000token", "100000000stake"] + mnemonic: play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint +``` + +Run a command to generate TypeScript clients for both standard and custom Cosmos +SDK modules: + +``` +ignite generate ts-client --clear-cache +``` + +Run a command to start your blockchain node: + +``` +ignite chain serve -r +``` + +## Setting up a TypeScript frontend client + +The best way to get started building with the TypeScript client is by using +[Vite](https://vitejs.dev). Vite provides boilerplate code for +vanilla TS projects as well as React, Vue, Lit, Svelte and Preact frameworks. +You can find additional information at the [Vite Getting Started +guide](https://vitejs.dev/guide). + +You will also need to [polyfill](https://developer.mozilla.org/en-US/docs/Glossary/Polyfill) the client's dependencies. The following is an +example of setting up a vanilla TS project with the necessary polyfills: + +```bash +npm create vite@latest my-frontend-app -- --template vanilla-ts +cd my-frontend-app +npm install --save-dev @esbuild-plugins/node-globals-polyfill @rollup/plugin-node-resolve +``` + +You must then create the necessary `vite.config.ts` file. + +```typescript title="my-frontend-app/vite.config.ts" +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import { NodeGlobalsPolyfillPlugin } from "@esbuild-plugins/node-globals-polyfill"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [nodeResolve()], + + optimizeDeps: { + esbuildOptions: { + define: { + global: "globalThis", + }, + plugins: [ + NodeGlobalsPolyfillPlugin({ + buffer: true, + }), + ], + }, + }, +}); +``` + +You are then ready to use the generated client code inside this project directly +or by publishing the client and installing it like any other `npm` package. + +After the chain starts, you will see Frank's address is +`cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7`. We'll be using Frank's account +for querying data and broadcasting transactions in the next section. + +## Querying + +The code generated in `ts-client` comes with a `package.json` file ready to +publish which you can modify to suit your needs. To use`ts-client` install the +required dependencies: + +``` +cd ts-client +npm install +``` + +The client is based on a modular architecture where you can configure a client +class to support the modules you need and instantiate it. + +By default, the generated client exports a client class that includes all the +Cosmos SDK, custom and 3rd party modules in use in your project. + +To instantiate the client you need to provide environment information (endpoints +and chain prefix). For querying that's all you need: + +```typescript title="my-frontend-app/src/main.ts" +import { Client } from "../../ts-client"; + +const client = new Client( + { + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos", + } +); +``` + +The example above uses `ts-client` from a local directory. If you have published +your `ts-client` on `npm` replace `../../ts-client` with a package name. + +The resulting client instance contains namespaces for each module, each with a +`query` and `tx` namespace containing the module's relevant querying and +transacting methods with full type and auto-completion support. + +To query for a balance of an address: + +```typescript +const balances = await client.CosmosBankV1Beta1.query.queryAllBalances( + 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7' +); +``` + +## Broadcasting a transaction + +Add signing capabilities to the client by creating a wallet from a mnemonic +(we're using the Frank's mnemonic added to `config.yml` earlier) and passing it +as an optional argument to `Client()`. The wallet implements the CosmJS +OfflineSigner` interface. + +```typescript title="my-frontend-app/src/main.ts" +import { Client } from "../../ts-client"; +// highlight-start +import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; + +const mnemonic = + "play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint"; +const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic); +// highlight-end + +const client = new Client( + { + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos", + }, + // highlight-next-line + wallet +); +``` + +Broadcasting a transaction: + +```typescript title="my-frontend-app/src/main.ts" +const tx_result = await client.CosmosBankV1Beta1.tx.sendMsgSend({ + value: { + amount: [ + { + amount: '200', + denom: 'token', + }, + ], + fromAddress: 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7', + toAddress: 'cosmos15uw6qpxqs6zqh0zp3ty2ac29cvnnzd3qwjntnc', + }, + fee: { + amount: [{ amount: '0', denom: 'stake' }], + gas: '200000', + }, + memo: '', +}) +``` + +## Broadcasting a transaction with a custom message + +If your chain already has custom messages defined, you can use those. If not, +we'll be using Ignite's scaffolded code as an example. Create a post with CRUD +messages: + +``` +ignite scaffold list post title body +``` + +After adding messages to your chain you may need to re-generate the TypeScript +client: + +``` +ignite generate ts-client --clear-cache +``` + +Broadcast a transaction containing the custom `MsgCreatePost`: + +```typescript title="my-frontend-app/src/main.ts" +import { Client } from "../../ts-client"; +import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; + +const mnemonic = + "play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint"; +const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic); + +const client = new Client( + { + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos", + }, + wallet +); +// highlight-start +const tx_result = await client.ExampleExample.tx.sendMsgCreatePost({ + value: { + title: 'foo', + body: 'bar', + creator: 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7', + }, + fee: { + amount: [{ amount: '0', denom: 'stake' }], + gas: '200000', + }, + memo: '', +}) +// highlight-end +``` + +## Lightweight client + +If you prefer, you can construct a lighter client using only the modules you are +interested in by importing the generic client class and expanding it with the +modules you need: + +```typescript title="my-frontend-app/src/main.ts" +// highlight-start +import { IgniteClient } from '../../ts-client/client' +import { Module as CosmosBankV1Beta1 } from '../../ts-client/cosmos.bank.v1beta1' +import { Module as CosmosStakingV1Beta1 } from '../../ts-client/cosmos.staking.v1beta1' +// highlight-end +import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing' + +const mnemonic = + 'play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint' +const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic) +// highlight-next-line +const Client = IgniteClient.plugin([CosmosBankV1Beta1, CosmosStakingV1Beta1]) + +const client = new Client( + { + apiURL: 'http://localhost:1317', + rpcURL: 'http://localhost:26657', + prefix: 'cosmos', + }, + wallet, +) +``` + +## Broadcasting a multi-message transaction + +You can also construct TX messages separately and send them in a single TX using +a global signing client like so: + +```typescript title="my-frontend-app/src/main.ts" +const msg1 = await client.CosmosBankV1Beta1.tx.msgSend({ + value: { + amount: [ + { + amount: '200', + denom: 'token', + }, + ], + fromAddress: 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7', + toAddress: 'cosmos15uw6qpxqs6zqh0zp3ty2ac29cvnnzd3qwjntnc', + }, +}) + +const msg2 = await client.CosmosBankV1Beta1.tx.msgSend({ + value: { + amount: [ + { + amount: '200', + denom: 'token', + }, + ], + fromAddress: 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7', + toAddress: 'cosmos15uw6qpxqs6zqh0zp3ty2ac29cvnnzd3qwjntnc', + }, +}) + +const tx_result = await client.signAndBroadcast( + [msg1, msg2], + { + amount: [{ amount: '0', denom: 'stake' }], + gas: '200000', + }, + '', +) +``` + +Finally, for additional ease-of-use, apart from the modular client mentioned +above, each generated module is usable on its own in a stripped-down way by +exposing a separate txClient and queryClient. + +```typescript title="my-frontend-app/src/main.ts" +import { txClient } from '../../ts-client/cosmos.bank.v1beta1' +import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing' + +const mnemonic = + 'play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint' +const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic) + +const client = txClient({ + signer: wallet, + prefix: 'cosmos', + addr: 'http://localhost:26657', +}) + +const tx_result = await client.sendMsgSend({ + value: { + amount: [ + { + amount: '200', + denom: 'token', + }, + ], + fromAddress: 'cosmos13xkhcx2dquhqdml0k37sr7yndquwteuvt2cml7', + toAddress: 'cosmos15uw6qpxqs6zqh0zp3ty2ac29cvnnzd3qwjntnc', + }, + fee: { + amount: [{ amount: '0', denom: 'stake' }], + gas: '200000', + }, + memo: '', +}) +``` + +## Usage with Keplr + +Normally, Keplr provides a wallet object implementing the `OfflineSigner` +interface, so you can simply replace the `wallet` argument in client +instantiation with `window.keplr.getOfflineSigner(chainId)`. However, Keplr +requires information about your chain, like chain ID, denoms, fees, etc. +[`experimentalSuggestChain()`](https://docs.keplr.app/api/suggest-chain.html) is +a method Keplr provides to pass this information to the Keplr extension. + +The generated client makes this easier by offering a `useKeplr()` method that +automatically discovers the chain information and sets it up for you. Thus, you +can instantiate the client without a wallet and then call `useKeplr()` to enable +transacting via Keplr like so: + +```typescript title="my-frontend-app/src/main.ts" +import { Client } from '../../ts-client'; + +const client = new Client({ + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos" + } +); +await client.useKeplr(); +``` + +`useKeplr()` optionally accepts an object argument that contains one or more of +the same keys as the `ChainInfo` type argument of `experimentalSuggestChain()` +allowing you to override the auto-discovered values. + +For example, the default chain name and token precision (which are not recorded +on-chain) are set to ` Network` and `0` while the ticker for the denom +is set to the denom name in uppercase. If you want to override these, you can do +something like: + +```typescript title="my-frontend-app/src/main.ts" +import { Client } from '../../ts-client'; + +const client = new Client({ + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos" + } +); +await client.useKeplr({ + chainName: 'My Great Chain', + stakeCurrency: { + coinDenom: 'TOKEN', + coinMinimalDenom: 'utoken', + coinDecimals: '6', + }, +}) +``` + +## Wallet switching + +The client also allows you to switch out the wallet for a different one on an +already instantiated client like so: + +```typescript +import { Client } from '../../ts-client'; +import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; + +const mnemonic = + 'play butter frown city voyage pupil rabbit wheat thrive mind skate turkey helmet thrive door either differ gate exhibit impose city swallow goat faint' +const wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic); + +const client = new Client({ + apiURL: "http://localhost:1317", + rpcURL: "http://localhost:26657", + prefix: "cosmos" + } +); +await client.useKeplr(); + +// broadcast transactions using the Keplr wallet + +client.useSigner(wallet); + +// broadcast transactions using the CosmJS wallet +``` diff --git a/docs/versioned_docs/version-v0.27.2/03-clients/03-vue.md b/docs/versioned_docs/version-v0.27.2/03-clients/03-vue.md new file mode 100644 index 0000000000..f6684f023a --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/03-clients/03-vue.md @@ -0,0 +1,174 @@ +# Vue frontend + +Welcome to this tutorial on using Ignite to develop a web application for your +blockchain with Vue 3. Ignite is a tool that simplifies the process of building +a blockchain application by providing a set of templates and generators that can +be used to get up and running quickly. + +One of the features of Ignite is its support for [Vue 3](https://vuejs.org/), a +popular JavaScript framework for building user interfaces. In this tutorial, you +will learn how to use Ignite to create a new blockchain and scaffold a Vue +frontend template. This will give you a basic foundation for your web +application and make it easier to get started building out the rest of your +application. + +Once you have your blockchain and Vue template set up, the next step is to +generate an API client. This will allow you to easily interact with your +blockchain from your web application, enabling you to retrieve data and make +transactions. By the end of this tutorial, you will have a fully functional web +application that is connected to your own blockchain. + +Prerequisites: + +* [Node.js](https://nodejs.org/en/) +* [Keplr](https://www.keplr.app/) Chrome extension + +## Create a blockchain and a Vue app + +Create a new blockchain project: + +``` +ignite scaffold chain example +``` + +To create a Vue frontend template, go to the `example` directory and run the +following command: + +``` +ignite scaffold vue +``` + +This will create a new Vue project in the `vue` directory. This project can be +used with any blockchain, but it depends on an API client to interact with the +blockchain. To generate an API client, run the following command in the +`example` directory: + +``` +ignite generate composables +``` + +This command generates two directories: + +* `ts-client`: a framework-agnostic TypeScript client that can be used to + interact with your blockchain. You can learn more about how to use this client + in the [TypeScript client tutorial](/clients/typescript). +* `vue/src/composables`: a collection of Vue 3 + [composables](https://vuejs.org/guide/reusability/composables.html) that wrap + the TypeScript client and make it easier to interact with your blockchain from + your Vue application. + +## Set up Keplr and an account + +Open your browser with the Keplr wallet extension installed. Follow [the +instructions](https://keplr.crunch.help/en/getting-started/creating-a-new-keplr-account) +to create a new account or use an existing one. Make sure to save the mnemonic +phrase as you will need it in the next step. + +Do not use a mnemonic phrase that is associated with an account that holds +assets you care about. If you do, you risk losing those assets. It's a good +practice to create a new account for development purposes. + +Add the account you're using in Keplr to your blockchain's `config.yml` file: + +```yml +accounts: + - name: alice + coins: [20000token, 200000000stake] + - name: bob + coins: [10000token, 100000000stake] + # highlight-start + - name: frank + coins: [10000token, 100000000stake] + mnemonic: struggle since inmate safe logic kite tag web win stay security wonder + # highlight-end +``` + +Replace the `struggle since...` mnemonic with the one you saved in the previous +step. + +Adding an account with a mnemonic to the config file will tell Ignite CLI to add +the account to the blockchain when you start it. This is useful for development +purposes, but you should not do this in production. + +## Start a blockchain and a Vue app + +In the `example` directory run the following command to start your blockchain: + +``` +ignite chain serve +``` + +To start your Vue application, go to the `vue` directory and run the following +command in a separate terminal window: + +``` +npm install && npm run dev +``` + +It is recommended to run `npm install` before starting your app with `npm run +dev` to ensure that all dependencies are installed (including the ones that the +API client has, see `vue/postinstall.js`). + +Open your browser and navigate to +[http://localhost:5173/](http://localhost:5173/). + +![Web app](/img/web-1.png) + +Press "Connect wallet", enter your password into Keplr and press "Approve" to +add your blockchain to Keplr. + + + +Make sure to select the account you're using for development purposes and the +"Example Network" in Keplr's blockchain dropdown. You should see a list of +assets in your Vue app. + +![Web app](/img/web-5.png) + +Congratulations! You have successfully created a client-side Vue application and +connected it to your blockchain. You can modify the source code of your Vue +application to build out the rest of your project. + +## Setting the address prefix + +It is necessary to set the correct address prefix in order for the Vue app to +properly interact with a Cosmos chain. The address prefix is used to identify +the chain that the app is connected to, and must match the prefix used by the +chain. + +By default, Ignite creates a chain with the the `cosmos` prefix. If you have +created your chain with `ignite scaffold chain ... --adddress-prefix foo` or +manually changed the prefix in the source code of the chain, you need to set the +prefix in the Vue app. + +There are two ways to set the address prefix in a Vue app. + +### Using an environment variable + +You can set the `VITE_ADDRESS_PREFIX` environment variable to the correct +address prefix for your chain. This will override the default prefix used by the +app. + +To set the `VITE_ADDRESS_PREFIX` environment variable, you can use the following +command: + +```bash +export VITE_ADDRESS_PREFIX=your-prefix +``` + +Replace `your-prefix` with the actual address prefix for your chain. + +### Setting address prefix in the code + +Alternatively, you can manually set the correct address prefix by replacing the +fallback value of the `prefix` variable in the file `./vue/src/env.ts`. + +To do this, open the file `./vue/src/env.ts` and find the following line: + +```ts title="./vue/src/env.ts" +const prefix = process.env.VITE_ADDRESS_PREFIX || 'your-prefix'; +``` + +Replace `your-prefix` with the actual address prefix for your chain. + +Save the file and restart the Vue app to apply the changes. diff --git a/docs/versioned_docs/version-v0.27.2/03-clients/04-react.md b/docs/versioned_docs/version-v0.27.2/03-clients/04-react.md new file mode 100644 index 0000000000..b9e7cff6f7 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/03-clients/04-react.md @@ -0,0 +1,130 @@ +# React frontend + +Welcome to this tutorial on using Ignite to develop a web application for your +blockchain with React. Ignite is a tool that simplifies the process of building +a blockchain application by providing a set of templates and generators that can +be used to get up and running quickly. + +One of the features of Ignite is its support for [React](https://reactjs.org/), a +popular JavaScript framework for building user interfaces. In this tutorial, you +will learn how to use Ignite to create a new blockchain and scaffold a React +frontend template. This will give you a basic foundation for your web +application and make it easier to get started building out the rest of your +application. + +Once you have your blockchain and React template set up, the next step is to +generate an API client. This will allow you to easily interact with your +blockchain from your web application, enabling you to retrieve data and make +transactions. By the end of this tutorial, you will have a fully functional web +application that is connected to your own blockchain. + +Prerequisites: + +* [Node.js](https://nodejs.org/en/) +* [Keplr](https://www.keplr.app/) Chrome extension + +## Create a blockchain and a React app + +Create a new blockchain project: + +``` +ignite scaffold chain example +``` + +To create a React frontend template, go to the `example` directory and run the +following command: + +``` +ignite scaffold react +``` + +This will create a new React project in the `react` directory. This project can be +used with any blockchain, but it depends on an API client to interact with the +blockchain. To generate an API client, run the following command in the +`example` directory: + +``` +ignite generate hooks +``` + +This command generates two directories: + +* `ts-client`: a framework-agnostic TypeScript client that can be used to + interact with your blockchain. You can learn more about how to use this client + in the [TypeScript client tutorial](/clients/typescript). +* `react/src/hooks`: a collection of + [React Hooks](https://reactjs.org/docs/hooks-intro.html) that wrap + the TypeScript client and make it easier to interact with your blockchain from + your React application. + +## Set up Keplr and an account + +Open your browser with the Keplr wallet extension installed. Follow [the +instructions](https://keplr.crunch.help/en/getting-started/creating-a-new-keplr-account) +to create a new account or use an existing one. Make sure to save the mnemonic +phrase as you will need it in the next step. + +Do not use a mnemonic phrase that is associated with an account that holds +assets you care about. If you do, you risk losing those assets. It's a good +practice to create a new account for development purposes. + +Add the account you're using in Keplr to your blockchain's `config.yml` file: + +```yml +accounts: + - name: alice + coins: [20000token, 200000000stake] + - name: bob + coins: [10000token, 100000000stake] + # highlight-start + - name: frank + coins: [10000token, 100000000stake] + mnemonic: struggle since inmate safe logic kite tag web win stay security wonder + # highlight-end +``` + +Replace the `struggle since...` mnemonic with the one you saved in the previous +step. + +Adding an account with a mnemonic to the config file will tell Ignite CLI to add +the account to the blockchain when you start it. This is useful for development +purposes, but you should not do this in production. + +## Start a blockchain and a React app + +In the `example` directory run the following command to start your blockchain: + +``` +ignite chain serve +``` + +To start your React application, go to the `react` directory and run the following +command in a separate terminal window: + +``` +npm install && npm run dev +``` + +It is recommended to run `npm install` before starting your app with `npm run +dev` to ensure that all dependencies are installed (including the ones that the +API client has, see `react/postinstall.js`). + +Open your browser and navigate to +[http://localhost:5173/](http://localhost:5173/). + +![Web app](/img/web-1.png) + +Press "Connect wallet", enter your password into Keplr and press "Approve" to +add your blockchain to Keplr. + + + +Make sure to select the account you're using for development purposes and the +"Example Network" in Keplr's blockchain dropdown. You should see a list of +assets in your React app. + +![Web app](/img/web-5.png) + +Congratulations! You have successfully created a client-side React application and +connected it to your blockchain. You can modify the source code of your React +application to build out the rest of your project. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/03-clients/_category_.json b/docs/versioned_docs/version-v0.27.2/03-clients/_category_.json new file mode 100644 index 0000000000..7cb006e423 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/03-clients/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Develop a client app", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/04-network/01-chain.md b/docs/versioned_docs/version-v0.27.2/04-network/01-chain.md new file mode 100644 index 0000000000..4edf0a91cb --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/01-chain.md @@ -0,0 +1,237 @@ +--- +sidebar_position: 1 +description: Ignite Chain. +--- + +# Ignite Chain + +## Introduction + +_Ignite is a blockchain to help launch Cosmos SDK-based blockchains._ + +Using Cosmos SDK and Ignite CLI, developers can quickly create a crypto application that is decentralized, economical for usage, and scalable. The Cosmos SDK framework allows developers to create sovereign application-specific blockchains that become part of the wider [Cosmos ecosystem](https://v1.cosmos.network/ecosystem/apps). Blockchains created with Cosmos SDK use a Proof-of-Stake (PoS) consensus protocol that requires validators to secure the chain. + +Even though tools like Ignite CLI simplify the development of a Cosmos SDK blockchain, launching a new chain is a highly complex process. One of the major challenges of developing and launching your own sovereign blockchain is ensuring the security of the underlying consensus. Since Cosmos SDK chains are based on the PoS consensus, each blockchain requires initial coin allocations and validators before they can be launched, which presents developers with significant challenges, such as determining their chain's tokenomics or coordinating a robust validator set. + +The initial coin allocations and validators are described in a JSON-formatted genesis file that is shared among all initial nodes in the network. This genesis file defines the initial state of the application. Based on PoS, secure chains require the initial allocation of coins to be well distributed so that no single validator holds more than 1/3 of all tokens and receives a disproportionate amount of voting power. + +Along with ensuring the security of the underlying consensus, another highly difficult task in launching a new blockchain is attracting a diverse set of validators for the genesis file. Many promising projects fail to capture the attention of a sufficient number of trustworthy validators to secure their chains due to a lack of resources or experience. + +The Ignite Chain has, therefore, been conceived to facilitate the launch of Cosmos SDK blockchains by helping developers to navigate the complexities of launching a blockchain and coordinate the genesis of a new chain. Using the decentralized nature of blockchain, Ignite's coordination features help blockchain builders connect with validators and investors, speeding up the time to market of their projects and chances of success. + +Commands to interact with Ignite Chain are integrated into Ignite CLI and allow launching chains from it. Integration with Ignite Chain allows the CLI to support the developer in the entire lifecycle of realizing a Cosmos project, from the development and experimentation of the blockchain to the launch of its mainnet. + +## What is Ignite Chain + +Ignite Chain is a secure platform that simplifies the launch of Cosmos SDK-based chains, lending vital resources and support at the coordination, preparation, and launch stages. Ignite provides the tools that blockchain projects need to overcome the complexities of launching their chain, from validator coordination and token issuance to fundraising and community building. + +Ignite facilitates the launch of new chains with an overall launch process during three phases: + +- Coordination +- Preparation +- Launch + +To reduce friction at each phase, Ignite provides an immutable and universal database for validator coordination. + +In the future, Ignite will also offer: + +- Token issuance: Ignite allows the issuance of tokens (called vouchers) that represent a share + allocation of a future mainnet network +- A fundraising platform for selling vouchers +- A permissionless framework to reward validator activities on a launched testnet network + +## Validator coordination + +To launch a chain in the Cosmos ecosystem, the validators must start nodes that connect to each other to create the new blockchain network. A node must be started from a file called the genesis file. The genesis file must be identical on all validator nodes before the new chain can be started. + +![genesis](./assets/genesis.png) + +The JSON-formatted genesis file contains information on the initial state of the chain, including coin allocations, the list of validators, various parameters for the chain like the maximum number of validators actively signing blocks, and the specific launch time. Because each validator has the same genesis file, the blockchain network starts automatically when the genesis time is reached. + +![launch](./assets/launch.png) + +### Ignite as a coordination source of truth + +Ignite Chain acts as a source of truth for new chains to coordinate a validator set and for validators to generate the genesis for a chain launch. The blockchain doesn’t directly store the final genesis file in its own ledger but rather stores information that allows generating the genesis file in a deterministic manner. + +The information stored on Ignite that supports deterministic generation of the genesis file for a specific chain launch is referred to as the _launch information_. When creating a new chain on Ignite, the coordinator provides the initial launch information. Then, through on-chain coordination, this launch information is updated by interacting with the blockchain by sending messages. When the chain is ready to be launched, the genesis file is generated by calling a genesis generation algorithm that uses the launch information. + +**GenesisGenerate(LaunchInformation) => genesis.json** + +The genesis generation algorithm is officially and formally specified. The official implementation of the genesis generation algorithm is developed in Go using Ignite CLI. However, any project is free to develop its own implementation of the algorithm as long as it complies with the specification of the algorithm. + +The genesis generation algorithm is not part of the on-chain protocol. In order to successfully launch a new chain, all validators must use the algorithm to generate their genesis using the launch information. The algorithm deterministically generates the genesis from the launch information that is stored on the Ignite chain. + +If any element of the launch information is censored, for example, removing an account balance, the launched chain reputation is negatively impacted and implies that the majority of validators agree on not using: + +- The tamper-proof launch information +- The official genesis generation algorithm + +Outside of the genesis generation, the genesis generation algorithm specification gives guidance on how to set up your network configuration. For example, the launch information can contain the addresses of the persistent peers of the blockchain network. + +![generation](./assets/generation.png) + +## Launch information + +Launch information can be created or updated in three different ways: + +1. Defined during chain creation but updatable by the coordinator after creation +2. Determined through coordination +3. Determined through specific on-chain logic not related to coordination + +### 1 - Launch information determined during chain creation: + +- `GenesisChainID`: The identifier for the network +- `SourceURL`: The URL of the git repository of the source code for building the blockchain + node binary +- `SourceHash`: The specific hash that identifies the release of the source code +- `InitialGenesis`: A multiformat structure that specifies the initial genesis for the chain + launch before running the genesis generation algorithm + +### 2 - Launch information determined through coordination: + +- `GenesisAccounts`: A list of genesis accounts for the chain, comprised of addresses with associated balances +- `VestingAccounts`: A list of genesis accounts with vesting options +- `GenesisValidators`: A list of the initial validators at chain launch +- `ParamChanges`: A list of module param changes in the genesis state + +### 3 - Launch information determined through on-chain logic: + +- `GenesisTime`: The timestamp for the network start, also referred to as LaunchTime + +### Initial genesis + +The launch information contains the initial genesis structure. This structure provides the information for generating the initial genesis before running the genesis generation algorithm and finalizing the genesis file. + +The initial genesis structure can be: + +- `DefaultGenesis`: the default genesis file is generated by the chain binary init command +- `GenesisURL`: the initial genesis for a chain launch is an existing genesis file that is + fetched from a URL and then modified with the required algorithm - this initial genesis type should be used when the initial genesis state is extensive, + containing a lot of accounts for token distribution, containing records for an + airdrop +- `GenesisConfig`: the initial genesis for a chain launch is generated from an Ignite CLI + config that contains genesis accounts and module parameters - this initial genesis type should be used when the coordinator doesn’t have extensive state for the initial genesis but some module parameters must be customized. For example, the staking bond denom for the staking token + +## Coordination process + +The coordination process starts immediately after the chain is created and ends when the coordinator triggers the launch of the chain. + +The launch information is updated during the coordination process. + +During the coordination process, any entity can send requests to the network. A request is an object whose content specifies updates to the launch information. + +The chain coordinator approves or rejects the requests: + +- If a request is approved, the content is applied to the launch information +- If the request is rejected, no change is made to the launch information + +The request creator can also directly reject or cancel the request. + +Each chain contains a request pool that contains all requests. Each request has a status: + +- _PENDING_: Waiting for the approval of the coordinator +- _APPROVED_: Approved by the coordinator, its content has been applied to the launch + information +- _REJECTED_: Rejected by the coordinator or the request creator + +Approving or rejecting a request is irreversible. The only possible status transitions are: + +- _PENDING_ to _APPROVED_ +- _PENDING_ to _REJECTED_ + +To revert the effect on launch information from a request, a user must send the eventual opposite request (example: AddAccount → RemoveAccount). + +Since the coordinator is the sole approver for requests, each request created by the coordinator is immediately set to APPROVED and its content is applied to the launch information. + +![requests](./assets/requests.png) + +## Available requests + +Six types of requests can be sent to the Ignite chain: + +- `AddGenesisAccount` +- `AddVestingAccount` +- `AddGenesisValidator` +- `RemoveAccount` +- `RemoveValidator` +- `ChangeParam` + +**`AddGenesisAccount`** requests a new account for the chain genesis with a coin balance. This request content is composed of two fields: + +- Account address, must be unique in launch information +- Account balance + +The request automatically fails to be applied if a genesis account or a vesting account with an identical address is already specified in the launch information. + +**`AddVestingAccount`** requests a new account for the chain genesis with a coin balance and vesting options. This request content is composed of two fields: + +- Address of the account +- Vesting options of the account + +The currently supported vesting option is delayed vesting where the total balance of the account is specified and a number of tokens of the total balance of the account are vested only after an end time is reached. + +The request automatically fails to be applied if a genesis account or a vesting account with an identical address is already specified in the launch information. + +**`AddGenesisValidator`** requests a new genesis validator for the chain. A genesis validator in a Cosmos SDK blockchain represents an account with an existing balance in the genesis that self-delegates part of its balance during genesis initialization to become a bonded validator when the network starts. In most cases, the validator must first request an account with `AddGenesisAccount` before requesting to be a validator, unless they already have an account with a balance in the initial genesis of the chain. + +Self-delegation during genesis initialization is performed with a [Cosmos SDK module named genutils](https://pkg.go.dev/github.com/cosmos/cosmos-sdk/x/genutil). In the genesis, the _genutils_ module contains objects called gentx that represent transactions that were executed before the network launch. To be a validator when the network starts, a future validator must provide a gentx that contains the transaction for the self-delegation from their account. + +The request content is composed of five fields: + +- The gentx for the validator self-delegation +- The address of the validator +- The consensus public key of the validator node +- The self-delegation +- The peer information for the validator node + +The request automatically fails to be applied if a validator with the same address already exists in the launch information. + +**`RemoveAccount`** requests the removal of a genesis or vesting account from the launch information. The request content contains the address of the account to be removed. The request automatically fails to be applied if no genesis or vesting account with the specified address exists in the launch information. + +**`RemoveValidator`** requests the removal of a genesis validator from the launch information. The request content contains the address of the validator to be removed. The request automatically fails to be applied if no validator account with the specified address exists in the launch information. + +**`ChangeParam`** requests the modification of a module parameter in the genesis. Modules in a Cosmos SDK blockchain can have parameters that will configure the logic of the blockchain. The parameters can be changed through governance once the blockchain network is live. During the launch process, the initial parameters of the chain are set in the genesis. + +This request content is composed of three fields: + +- The name of the module +- The name of the parameter +- The value of the parameter represented as generic data + +### Request validity + +Some checks are verified on-chain when applying a request. For example, a genesis account can’t be added twice. However, some other validity properties can’t be checked on-chain. For example, because a gentx is represented through a generic byte array in the blockchain, an on-chain check is not possible to verify that the gentx is correctly signed or that the provided consensus public key that is stored on-chain corresponds to the consensus public key in the gentx. This gentx verification is the responsibility of the client interacting with the blockchain to ensure the requests have a valid format and allow for the start of the chain. Some validity checks are specified in the genesis generation algorithm. + +## Launch process + +The overall launch process of a chain through Ignite is composed of three phases: + +- Coordination phase +- Preparation phase +- Launch phase + +After the coordinator creates the chain on Ignite and provides the initial launch information, the launch process enters the coordination phase where users can send requests for the chain genesis. After the coordinator deems the chain as ready to be launched, they trigger the launch of the chain. During this operation, the coordinator provides the launch time, or genesis, time for the chain. + +Once the launch is triggered and before the launch time is reached, the chain launch process enters the preparation phase. During the preparation phase, requests can no longer be sent and the launch information of the chain is finalized. The validators run the genesis generation algorithm to get the final genesis of the chain and prepare their node. The remaining time must provide enough time for the validators to prepare their nodes. This launch time is set by the coordinator, although a specific range for the remaining time is imposed. + +Once the launch time is reached, the chain network is started and the chain launch process enters the launch phase. At this point, since the chain is live, no further action is required from the coordinator. However, under some circumstances, the chain might have failed to start. For example, a chain does not start if every validator in the genesis does not start their node. + +The coordinator has the ability to revert the chain launch. Reverting the chain launch sets the launch process back to the coordination phase where requests can be sent again to allow addressing the issue related to the launch failure. Reverting the launch has an effect only on Ignite. If the new chain is effectively launched, reverting the launch on Ignite has no effect on the chain liveness. Reverting the launch of the chain can be performed only by the coordinator after the launch time plus a delay called the revert delay. + +![process](./assets/process.png) + +## Genesis generation + +To ensure determinism, genesis generation rules must be rigorously specified depending on the launch information of the chain. + +The general steps for the genesis generation are: + +- Building the blockchain node binary from source +- Generating the initial genesis +- Setting the chain ID +- Setting the genesis time +- Adding genesis accounts +- Adding genesis accounts with vesting options +- Adding gentxs for genesis validators +- Changing module params from param changes diff --git a/docs/versioned_docs/version-v0.27.2/04-network/02-introduction.md b/docs/versioned_docs/version-v0.27.2/04-network/02-introduction.md new file mode 100644 index 0000000000..dc4209c086 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/02-introduction.md @@ -0,0 +1,75 @@ +--- +sidebar_position: 2 +description: Introduction to Ignite Network commands. +--- + +# Ignite Network commands + +The `ignite network` commands allow to coordinate the launch of sovereign Cosmos blockchains by interacting with the +Ignite Chain. + +To launch a Cosmos blockchain you need someone to be a coordinator and others to be validators. These are just roles, +anyone can be a coordinator or a validator. + +- A coordinator publishes information about a chain to be launched on the Ignite blockchain, approves validator requests + and coordinates the launch. +- Validators send requests to join a chain and start their nodes when a blockchain is ready for launch. + +## Launching a chain on Ignite + +Launching with the CLI can be as simple as a few short commands with the the CLI using `ignite network` command +namespace. + +> **NOTE:** `ignite n` can also be used as a shortcut for `ignite network`. + +To publish the information about your chain as a coordinator, run the following command (the URL should point to a +repository with a Cosmos SDK chain): + +``` +ignite network chain publish github.com/ignite/example +``` + +This command will return the launch identifier you will be using in the following +commands. Let's say this identifier is 42. +Next, ask validators to initialize their nodes and request to join the network. +For a testnet you can use the default values suggested by the +CLI. + +``` +ignite network chain init 42 +ignite network chain join 42 --amount 95000000stake +``` + +As a coordinator, list all validator requests: + +``` +ignite network request list 42 +``` + +Approve validator requests: + +``` +ignite network request approve 42 1,2 +``` + +Once you've approved all validators you need in the validator set, announce that +the chain is ready for launch: + +``` +ignite network chain launch 42 +``` + +Validators can now prepare their nodes for launch: + +``` +ignite network chain prepare 42 +``` + +The output of this command will show a command that a validator would use to +launch their node, for example `exampled --home ~/.example`. After enough +validators launch their nodes, a blockchain will be live. + +--- + +The next two sections provide more information on the process of coordinating a chain launch from a coordinator and +participating in a chain launch as a validator. diff --git a/docs/versioned_docs/version-v0.27.2/04-network/03-coordinator.md b/docs/versioned_docs/version-v0.27.2/04-network/03-coordinator.md new file mode 100644 index 0000000000..5001c35348 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/03-coordinator.md @@ -0,0 +1,146 @@ +--- +sidebar_position: 3 +description: Ignite Network commands for coordinators. +--- + +# Coordinator Guide + +Coordinators organize and launch new chains on Ignite Chain. + +--- + +## Publish a chain + +The first step in the process of a chain launch is for the coordinator to publish the intention of launching a chain. +The `publish` command publishes the intention of launching a chain on Ignite from a project git repository. + +```shell +ignite n chain publish https://github.com/ignite/example +``` + +**Output** + +``` +✔ Source code fetched +✔ Blockchain set up +✔ Chain's binary built +✔ Blockchain initialized +✔ Genesis initialized +✔ Network published +⋆ Launch ID: 3 +``` + +`LaunchID` identifies the published blockchain on Ignite blockchain. + +### Specify a initial genesis + +During coordination, new genesis accounts and genesis validators are added into the chain genesis. +The initial genesis where these accounts are added is by default the default genesis generated by the chain binary. + +The coordinator can specify a custom initial genesis for the chain launch with the `--genesis` flag. This custom initial +genesis can contain additional default genesis accounts and custom params for the chain modules. + +A URL must be provided for the `--genesis-url` flag. This can either directly point to a JSON genesis file or a tarball +containing a genesis file. + +```shell +ignite n chain publish https://github.com/ignite/example --genesis-url https://raw.githubusercontent.com/ignite/example/master/genesis/gen.json +``` + +## Approve validator requests + +When coordinating for a chain launch, validators send requests. These represent requests to be part of the genesis as a +validator for the chain. + +The coordinator can list these requests: + +``` +ignite n request list 3 +``` + +> **NOTE:** here "3" is specifying the `LaunchID`. + +**Output** + +``` +Id Status Type Content +1 APPROVED Add Genesis Account spn1daefnhnupn85e8vv0yc5epmnkcr5epkqncn2le, 100000000stake +2 APPROVED Add Genesis Validator e3d3ca59d8214206839985712282967aaeddfb01@84.118.211.157:26656, spn1daefnhnupn85e8vv0yc5epmnkcr5epkqncn2le, 95000000stake +3 PENDING Add Genesis Account spn1daefnhnupn85e8vv0yc5epmnkcr5epkqncn2le, 95000000stake +4 PENDING Add Genesis Validator b10f3857133907a14dca5541a14df9e8e3389875@84.118.211.157:26656, spn1daefnhnupn85e8vv0yc5epmnkcr5epkqncn2le, 95000000stake +``` + +The coordinator can either approve or reject these requests. + +To approve the requests: + +``` +ignite n request approve 3 3,4 +``` + +> **NOTE:** when selecting a list of requests, both syntaxes can be used: `1,2,3,4` and `1-3,4`. + +**Output** + +``` +✔ Source code fetched +✔ Blockchain set up +✔ Requests format verified +✔ Blockchain initialized +✔ Genesis initialized +✔ Genesis built +✔ The network can be started +✔ Request(s) #3, #4 verified +✔ Request(s) #3, #4 approved +``` + +Ignite CLI automatically verifies that the requests can be applied for the genesis, the approved requests don't generate +an invalid genesis. + +To reject the requests: + +``` +ignite n request reject 3 3,4 +``` + +**Output** + +``` +✔ Request(s) #3, #4 rejected +``` + +--- + +## Initiate the launch of a chain + +When enough validators are approved for the genesis and the coordinator deems the chain ready to be launched, the +coordinator can initiate the launch of the chain. + +This action will finalize the genesis of chain, meaning that no new requests can be approved for the chain. + +This action also sets the launch time (or genesis time) for the chain, the time when the blockchain network will go +live. + +``` +ignite n chain launch 3 +``` + +**Output** + +``` +✔ Chain 3 will be launched on 2022-10-01 09:00:00.000000 +0200 CEST +``` + +This example output shows the launch time of the chain on the network. + +### Set a custom launch time + +By default, the launch time will be set to the earliest date possible. In practice, the validators should have time to +prepare their node for the network launch. If a validator fails to be online, they can get jailed for inactivity in the +validator set. + +The coordinator can specify a custom time with the `--launch-time` flag. + +``` +ignite n chain launch --launch-time 2022-01-01T00:00:00Z +``` diff --git a/docs/versioned_docs/version-v0.27.2/04-network/04-validator.md b/docs/versioned_docs/version-v0.27.2/04-network/04-validator.md new file mode 100644 index 0000000000..738dfb2777 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/04-validator.md @@ -0,0 +1,161 @@ +--- +sidebar_position: 4 +description: Ignite Network commands for validators. +--- + +# Validator Guide + +Validators join as genesis validators for chain launches on Ignite Chain. + +--- + +## List all published chains + +Validators can list and explore published chains to be launched on Ignite. + +``` +ignite n chain list +``` + +**Output** + +``` +Launch Id Chain Id Source Phase + +3 example-1 https://github.com/ignite/example coordinating +2 spn-10 https://github.com/tendermint/spn launched +1 example-20 https://github.com/tendermint/spn launching +``` + +- `Launch ID` is the unique identifier of the chain on Ignite. This is the ID used to interact with the chain launch. +- `Chain ID` represents the identifer of the chain network once it will be launched. It should be a unique identifier in + practice but doesn't need to be unique on Ignite. +- `Source` is the repository URL of the project. +- `Phase` is the current phase of the chain launch. A chain can have 3 different phases: + - `coordinating`: means the chain is open to receive requests from validators + - `launching`: means the chain no longer receives requests but it hasn't been launched yet + - `launched`: means the chain network has been launched + +--- + +## Request network participation + +When the chain is in the coordination phase, validators can request to be a genesis validator for the chain. +Ignite CLI supports an automatic workflow that can setup a node for the validator and a workflow for advanced users with +a specific setup for their node. + +### Simple Flow + +`ignite` can handle validator setup automatically. Initialize the node and generate a gentx file with default values: + +``` +ignite n chain init 3 +``` + +**Output** + +``` +✔ Source code fetched +✔ Blockchain set up +✔ Blockchain initialized +✔ Genesis initialized +? Staking amount 95000000stake +? Commission rate 0.10 +? Commission max rate 0.20 +? Commission max change rate 0.01 +⋆ Gentx generated: /Users/lucas/spn/3/config/gentx/gentx.json +``` + +Now, create and broadcast a request to join a chain as a validator: + +``` +ignite n chain join 3 --amount 100000000stake +``` + +The join command accepts a `--amount` flag with a comma-separated list of tokens. If the flag is provided, the +command will broadcast a request to add the validator’s address as an account to the genesis with the specific amount. + +**Output** + +``` +? Peer's address 192.168.0.1:26656 +✔ Source code fetched +✔ Blockchain set up +✔ Account added to the network by the coordinator! +✔ Validator added to the network by the coordinator! +``` + +--- + +### Advanced Flow + +Using a more advanced setup (e.g. custom `gentx`), validators must provide an additional flag to their command +to point to the custom file: + +``` +ignite n chain join 3 --amount 100000000stake --gentx ~/chain/config/gentx/gentx.json +``` + +--- + +## Launch the network + +### Simple Flow + +Generate the final genesis and config of the node: + +``` +ignite n chain prepare 3 +``` + +**Output** + +``` +✔ Source code fetched +✔ Blockchain set up +✔ Chain's binary built +✔ Genesis initialized +✔ Genesis built +✔ Chain is prepared for launch +``` + +Next, start the node: + +``` +exampled start --home ~/spn/3 +``` + +--- + +### Advanced Flow + +Fetch the final genesis for the chain: + +``` +ignite n chain show genesis 3 +``` + +**Output** + +``` +✔ Source code fetched +✔ Blockchain set up +✔ Blockchain initialized +✔ Genesis initialized +✔ Genesis built +⋆ Genesis generated: ./genesis.json +``` + +Next, fetch the persistent peer list: + +``` +ignite n chain show peers 3 +``` + +**Output** + +``` +⋆ Peer list generated: ./peers.txt +``` + +The fetched genesis file and peer list can be used for a manual node setup. diff --git a/docs/versioned_docs/version-v0.27.2/04-network/05-coordination.md b/docs/versioned_docs/version-v0.27.2/04-network/05-coordination.md new file mode 100644 index 0000000000..8f8dd34f80 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/05-coordination.md @@ -0,0 +1,72 @@ +--- +sidebar_position: 5 +description: Other commands for coordination. +--- + +# Other commands for coordination + +Ignite CLI offers various other commands to coordinate chain launches that can be used by coordinators, validators, or other participants. + +The requests follow the same logic as the request for validator participation; they must be approved by the chain coordinator to be effective in the genesis. + +--- + +## Request a genesis account + +Any participant can request a genesis account with an associated balance for the chain. +The participant must provide an address with a comma-separated list of token balances. + +Any prefix can be used for the Bech32 address, it is automatically converted into `spn` on the Ignite Chain. + +``` +ignite n request add-account 3 spn1pe5h2gelhu8aukmrnj0clmec56aspxzuxcy99y 1000stake +``` + +**Output** + +``` +Source code fetched +Blockchain set up +⋆ Request 10 to add account to the network has been submitted! +``` +--- + +## Request to remove a genesis account + +Any participant can request to remove a genesis account from the chain genesis. +It might be the case if, for example, a user suggests an account balance that is so high it could harm the network. +The participant must provide the address of the account. + +Any prefix can be used for the Bech32 address, it is automatically converted into `spn` on the Ignite Chain. + +``` +ignite n request remove-account 3 spn1pe5h2gelhu8aukmrnj0clmec56aspxzuxcy99y +``` + +**Output** + +``` +Request 11 to remove account from the network has been submitted! +``` +--- + +## Request to remove a genesis validator + +Any participant can request to remove a genesis validator (gentx) from the chain genesis. +It might be the case if, for example, a chain failed to launch because of some validators, and they must be removed from genesis. +The participant must provide the address of the validator account (same format as genesis account). + +Any prefix can be used for the Bech32 address, it is automatically converted into `spn` on the Ignite Chain. + +The request removes only the gentx from the genesis but not the associated account balance. + +``` +ignite n request remove-validator 429 spn1pe5h2gelhu8aukmrnj0clmec56aspxzuxcy99y +``` + +**Output** + +``` +Request 12 to remove validator from the network has been submitted! +``` +--- \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/04-network/_category_.json b/docs/versioned_docs/version-v0.27.2/04-network/_category_.json new file mode 100644 index 0000000000..9764095e85 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/04-network/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Launch a chain", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/04-network/assets/generation.png b/docs/versioned_docs/version-v0.27.2/04-network/assets/generation.png new file mode 100644 index 0000000000000000000000000000000000000000..cb978e2dbfcd3acf7e76eecc3190e652b2c95a02 GIT binary patch literal 93425 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/04-network/assets/genesis.png b/docs/versioned_docs/version-v0.27.2/04-network/assets/genesis.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ecad4c44420fb3f29bf891608de8486d0cca84 GIT binary patch literal 135189 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

=iQVpV+dLv^ZnL3ej!dh{zu{5|AWBf^?9&L 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

lKex23-J5j)ZYfM^tkolukTl+O#{gfZugX&;Hp z8t(8Y?I7_)15`!fgiOM(4DyV1spr3B3YR(I#mn)F%lXeNe~-_X^Vr%rtM}+bfPEb7 z9)Az_uA;{Q!l``s-L(C`S*5e-ztVC;`ca(Yz^{Sk&(cH!kbv1@MjEp-A|r#5!n2;9 z6^#e}2P$lxGEV^HOHke64AR_q5Cq;%V&B7MUwvN~tv33E76TC8@Wiz0m2AOc7mLVT z-ORG8y|4Y(a+g*2iRa6B^jnSmuL7nL;3P1yduqW+R2^OBINI+d_Qw`ld|d0?!e*ud z=q*G51K60sp-`b&DF~97qN}KafF~Z~K5B*)I||!Q6(gIC7(gupCET`s%EvOC{?YL!uyNwDNlgN=PXYNPvx!=iAveWjhnO>}IpNs&Y{S}6t&qdnc&V@~F z_zJ#$pEvBlCz0JGVjJ_<`8)&CpVAH&Pu0W2{Ml~-a|67I7s}&lx}-^P0Ki0I*hLhJ z;tR&NO?^Lsx!{jpo)uGut_zzt@`|Myv&Vr(?0Fh|wC9Se zL~yzn^ffd+ag;Sa*6ChvTZ1^lXrBlnh3}Pz6=B6^-VVEKpV*YbXEk|T15A`>@SHlBLgFCWqF?OM$;qAIJcE$7i%g0`-ZV5<+5iXphg|})jMte#w zYy4}xAa#x2dVxbLS8@x@YcPol$AKm%{6Qb==kq>T$c;e7N=xBdl&w(*39w0r(W7wT z5N*CQCHO{BGU1+JQ3cq#(+vC9&o)tjiD9YJF6fN7=jLAN^!D)t^|nus`o3GybOn#B z`qxWv0m?uCZ5e~p<}-24Br)5Z$6Fx+R$u}@52INlxnc>3nusa%tzn(g@|#*j%q!rBV2{*L^`m9BZml=jRY^njOsgO) zxG;KFqxBiNx?)y0(*b_q!JxI$hryVF$B6axUq$N{^RBZ&4T9gU&dbu&W^e(76&V6} z`ZUYFG~DwC)!OMqCl>n*7L8fw2Mz9&^5YiVlBAadbMK1Z3@&T{!&X?N04?LY*Cp_& zz;{02QLc8PUi~A52`uhmRif6({<7g4X~}mlcbhSg%xp-Y1<>^Vq_o0lg}vp1A$ZR; zS@s$Gj|}S3vXyU%gF`05X0VWp2LN!Z1X3T1i!QeAq!RieC;VXuIDxM+nLb$|q8Pfa zms43bmsG$hJp>Dg>@^t3TPd7YLSJ5#gXDNY*8JmG#gBe#e5I#9XKMT(HHc&20)z&& z_^kSw=f0){% zc`v*D+FZ!MGCK5v`6?{99`NwPg#-Lfp1BouVndGTJgX(mdOQ>XjG^e{>m~KgkjO9z zUYYCGgS3fzuNhx%&Wqs!ekcF~Ov^#+HHHJeNnWx(Y_orrFwEN!ZO10ATBTTlV%0+G zzb;NQ;6u;VJa-()QA38YB?NqCQt=lKYF-Z4c!Ca&4xH9@4M5{Ugy; zZ1UbZ{uJX85!bX-f8qvJxkjEpq?Q*0>sK~UNX}pDJp=vVu}&6+wDdcd#^QY02gl#@ zx6dXfT;|NXt(uD0V@i$aLz9*jV;sDjUuMeFYr_E=H6#!e)UKdt7193qXF#*t>_tiO zLh-r*8L|G?yp)Q~`s;;-UH7diPQXJK3l~AWy=wc^G|Aq8%ie@?ncMls)6n<)_tD($ z_iLaaQ7r zS|JQ9ID-^J5k2PcE{DDJ> ze~!IVJW>F7YK{R4;Z3j!&{B&9nmva>L;*<8e{~ruNB{s<$-z2AJODZ$yEy*UG5>2E ztMRW+`d?$(6aaGZ^uY2tX=E5J0H#R7IwCVux+)=M9b~K^AAL+CGmQg;fV>Gn{^j`B z%B`Fl>@h|-8~ocemiONskd-7eu>VRid+<^glG^+2e`TqT|H@Lm{wv#pRMia0*9bA&5JVf z6+HSq#Zy7vVEm=O5m-v{7_ATYCSKNX_cjv&o%`bR%1{9KHj&u#uY0=cUAs*XFoX~I zricMR$4P@YL;>Ily}hT#eFx?>k~90O0l;$Xh4-S7TGT zE7b;0k+YT^noJ;B!#(1r7~ZsSTJ z46M6$y~q5|LsnYzJ;j)B=3kL_TnbBw{viFoKJK5Br*n6|!v%+s>5EFU(NOr_Shbr4 j&e8wFvH$j&M8{*l2~HXBWgyc4Yzn9;X(<-VKMngoHHvc> literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/04-network/assets/launch.png b/docs/versioned_docs/version-v0.27.2/04-network/assets/launch.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa5398b220bbe3eba91593ac6f9d569374acb3a GIT binary patch literal 198418 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

$BCSonmtQs@JqiG!^b?c+ljp2uk;ABe1yBmF!vx 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

`$EnFT!164ms@f)illp%7) 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/04-network/assets/process.png b/docs/versioned_docs/version-v0.27.2/04-network/assets/process.png new file mode 100644 index 0000000000000000000000000000000000000000..6449114340f3d12fa1c2430275c2bc824777d19a GIT binary patch literal 56924 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

4VrWlzeq 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 bC-QRfi>8;_1h|jEcm&1_zmK)o`RxAyimiyF literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/04-network/assets/requests.png b/docs/versioned_docs/version-v0.27.2/04-network/assets/requests.png new file mode 100644 index 0000000000000000000000000000000000000000..38a62ea98537763f0004e4580babde477b163be0 GIT binary patch literal 109980 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 literal 0 HcmV?d00001 diff --git a/docs/versioned_docs/version-v0.27.2/05-contributing/01-docs.md b/docs/versioned_docs/version-v0.27.2/05-contributing/01-docs.md new file mode 100644 index 0000000000..de8ff3e12a --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/05-contributing/01-docs.md @@ -0,0 +1,105 @@ +--- +sidebar_position: 1 +slug: /contributing +--- + +# Improving documentation + +Thank you for visiting our repository and considering making contributions. We +appreciate your interest in helping us to create and maintain awesome tutorials +and documentation. + +## Using this repo + +Review existing [Ignite CLI issues](https://github.com/ignite/cli/issues) to see +if your question has already been asked and answered. + +- To provide feedback, file an issue and provide generous details to help us + understand how we can make it better. +- To provide a fix, make a direct contribution. If you're not a member or + maintainer, fork the repo and then submit a pull request (PR) from your forked + repo to the `main` branch. +- Start by creating a draft pull request. Create your draft PR early, even if + your work is just beginning or incomplete. Your draft PR indicates to the + community that you're working on something and provides a space for + conversations early in the development process. Merging is blocked for `Draft` + PRs, so they provide a safe place to experiment and invite comments. + +## Reviewing technical content PRs + +Some of the best content contributions come during the PR review cycles. Follow +best practices for technical content PR reviews just like you do for code +reviews. + +- For in-line suggestions, use the [GitHub suggesting + feature](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request) + . +- The PR owner can merge in your suggested commits one at a time or in batch + (preferred). +- When you are providing a more granular extensive review that results in more + than 20 in-line suggestions, go ahead and check out the branch and make the + changes yourself. + +## Writing and contributing + +We welcome contributions to the docs and tutorials. + +Our technical content follows the [Google developer documentation style +guide](https://developers.google.com/style). Highlights to help you get started: + +- [Highlights](https://developers.google.com/style/highlights) +- [Word list](https://developers.google.com/style/word-list) +- [Style and tone](https://developers.google.com/style/tone) +- [Writing for a global + audience](https://developers.google.com/style/translation) +- [Cross-references](https://developers.google.com/style/cross-references) +- [Present tense](https://developers.google.com/style/tense) + +The Google guidelines include more material than is listed here and are used as +a guide that enables easy decision-making about proposed content changes. + +Other useful resources: + +- [Google Technical Writing Courses](https://developers.google.com/tech-writing) +- [GitHub Guides Mastering + Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) + +## Where can I find the tutorials and docs? + +Technical content includes knowledge base articles and interactive tutorials. + +- The Ignite CLI Developer Tutorials content is in the `docs/guide` folder. +- The Knowledge Base content is in the `docs/kb` folder. +- Upgrade information is in the `docs/migration` folder. + +Note: The CLI docs are auto-generated and do not support doc updates. + +Locations and folders for other content can vary. Explore the self-describing +folders for the content that you are interested in. Some articles and tutorials +reside in a single Markdown file while sub-folders might be present for other +tutorials. + +As always, work-in-progress content might be happening in other locations and +repos. + +## Who works on the tutorials? + +The Ignite product team developers are focused on building Ignite CLI and +improving the developer experience. The Ignite Ecosystem Development team owns +the technical content and tutorials and manages developer onboarding. + +Meet the [people behind Ignite CLI and our +contributors](https://github.com/ignite/cli/graphs/contributors). + +## Viewing docs builds + +Use a preview to see what your changes will look like in production before the +updated pages are published. + +- While a PR is in draft mode, you can rely on using the preview feature in + Markdown. +- After the PR moves from **Draft** to **Ready for review**, the CI status + checks generate a deployment preview. This preview stays up to date as you + continue to work and commit new changes to the same branch. A `Docs Deploy + Preview / build_and_deploy (pull_request)` preview on a GitHub actions URL is + unique for that PR. diff --git a/docs/versioned_docs/version-v0.27.2/05-contributing/_category_.json b/docs/versioned_docs/version-v0.27.2/05-contributing/_category_.json new file mode 100644 index 0000000000..e88b1ff8fe --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/05-contributing/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Contribute to Ignite", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/_category_.json b/docs/versioned_docs/version-v0.27.2/06-migration/_category_.json new file mode 100644 index 0000000000..9243d2011d --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Migration", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/readme.md b/docs/versioned_docs/version-v0.27.2/06-migration/readme.md new file mode 100644 index 0000000000..08dd1101d3 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/readme.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 0 +--- + +# Migration Guides + +Welcome to the section on upgrading to a newer version of Ignite CLI! If you're +looking to update to the latest version, you'll want to start by checking the +documentation to see if there are any special considerations or instructions you +need to follow. + +If there is no documentation for the latest version of Ignite CLI, it's +generally safe to assume that there were no breaking changes, and you can +proceed with using the latest version with your project. \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.18.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.18.md new file mode 100644 index 0000000000..d7ce7ef20e --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.18.md @@ -0,0 +1,458 @@ +--- +sidebar_position: 999 +title: v0.18.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.18, changes are required to use Ignite CLI v0.18. +--- + +# Upgrading a Blockchain to use Ignite CLI v0.18 + +Ignite CLI v0.18 comes with Cosmos SDK v0.44. This version of Cosmos SDK introduced changes that are not compatible with +chains that were scaffolded with Ignite CLI versions lower than v0.18. + +**Important:** After upgrading from Ignite CLI v0.17.3 to Ignite CLI v0.18, you must update the default blockchain +template to use blockchains that were scaffolded with earlier versions. + +These instructions are written for a blockchain that was scaffolded with the following command: + +``` +ignite scaffold chain github.com/username/mars +``` + +If you used a different module path, replace `username` and `mars` with the correct values for your blockchain. + +## Blockchain + +For each file listed, make the required changes to the source code of the blockchain template. + +### go.mod + +``` +module github.com/username/mars + +go 1.16 + +require ( + github.com/cosmos/cosmos-sdk v0.44.0 + github.com/cosmos/ibc-go v1.2.0 + github.com/gogo/protobuf v1.3.3 + github.com/google/go-cmp v0.5.6 // indirect + github.com/gorilla/mux v1.8.0 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cast v1.3.1 + github.com/spf13/cobra v1.1.3 + github.com/stretchr/testify v1.7.0 + github.com/tendermint/spm v0.1.6 + github.com/tendermint/tendermint v0.34.13 + github.com/tendermint/tm-db v0.6.4 + google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83 + google.golang.org/grpc v1.40.0 +) + +replace ( + github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + google.golang.org/grpc => google.golang.org/grpc v1.33.2 +) +``` + +### app/app.go + +```go +package app + +import ( + //... + // Add the following packages: + "github.com/cosmos/cosmos-sdk/x/feegrant" + feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" + + "github.com/cosmos/ibc-go/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/modules/core" + ibcclient "github.com/cosmos/ibc-go/modules/core/02-client" + ibcporttypes "github.com/cosmos/ibc-go/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/modules/core/keeper" + // Remove the following packages: + // transfer "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer" + // ibctransferkeeper "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/keeper" + // ibctransfertypes "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" + // ibc "github.com/cosmos/cosmos-sdk/x/ibc/core" + // ibcclient "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client" + // porttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/05-port/types" + // ibchost "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" + // ibckeeper "github.com/cosmos/cosmos-sdk/x/ibc/core/keeper" +) + +var ( + //... + ModuleBasics = module.NewBasicManager( + //... + slashing.AppModuleBasic{}, + // Add feegrantmodule.AppModuleBasic{}, + feegrantmodule.AppModuleBasic{}, // <-- + ibc.AppModuleBasic{}, + //... + ) + //... +) + +type App struct { + //... + // Replace codec.Marshaler with codec.Codec + appCodec codec.Codec // <-- + // Add FeeGrantKeeper + FeeGrantKeeper feegrantkeeper.Keeper // <-- +} + +func New( /*...*/ ) { + //bApp.SetAppVersion(version.Version) + bApp.SetVersion(version.Version) // <-- + + keys := sdk.NewKVStoreKeys( + //... + upgradetypes.StoreKey, + // Add feegrant.StoreKey + feegrant.StoreKey, // <-- + evidencetypes.StoreKey, + //... + ) + + app.FeeGrantKeeper = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper) // <-- + // Add app.BaseApp as the last argument to upgradekeeper.NewKeeper + app.UpgradeKeeper = upgradekeeper.NewKeeper(skipUpgradeHeights, keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp) + + app.IBCKeeper = ibckeeper.NewKeeper( + // Add app.UpgradeKeeper + appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, + ) + + govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler). + //... + // Replace NewClientUpdateProposalHandler with NewClientProposalHandler + AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) + + // Replace porttypes with ibcporttypes + ibcRouter := ibcporttypes.NewRouter() + + app.mm.SetOrderBeginBlockers( + upgradetypes.ModuleName, + // Add capabilitytypes.ModuleName, + capabilitytypes.ModuleName, + minttypes.ModuleName, + //... + // Add feegrant.ModuleName, + feegrant.ModuleName, + ) + + // Add app.appCodec as an argument to module.NewConfigurator: + app.mm.RegisterServices(module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter())) + + // Replace: + // app.SetAnteHandler( + // ante.NewAnteHandler( + // app.AccountKeeper, app.BankKeeper, ante.DefaultSigVerificationGasConsumer, + // encodingConfig.TxConfig.SignModeHandler(), + // ), + // ) + + // With the following: + anteHandler, err := ante.NewAnteHandler( + ante.HandlerOptions{ + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), + FeegrantKeeper: app.FeeGrantKeeper, + SigGasConsumer: ante.DefaultSigVerificationGasConsumer, + }, + ) + if err != nil { + panic(err) + } + app.SetAnteHandler(anteHandler) + + // Remove the following: + // ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) + // app.CapabilityKeeper.InitializeAndSeal(ctx) +} + +func (app *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { + var genesisState GenesisState + if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { + panic(err) + } + // Add the following: + app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) + return app.mm.InitGenesis(ctx, app.appCodec, genesisState) +} + +// Replace Marshaler with Codec +func (app *App) AppCodec() codec.Codec { + return app.appCodec +} + +// Replace BinaryMarshaler with BinaryCodec +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) paramskeeper.Keeper { + //... +} +``` + +### app/genesis.go + +```go +// Replace codec.JSONMarshaler with codec.JSONCodec +func NewDefaultGenesisState(cdc codec.JSONCodec) GenesisState { + // ... +} +``` + +### testutil/keeper/mars.go + +Add the following code: + +```go +package keeper + +import ( + "testing" + + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/store" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmdb "github.com/tendermint/tm-db" + "github.com/username/mars/x/mars/keeper" + "github.com/username/mars/x/mars/types" +) + +func MarsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { + storeKey := sdk.NewKVStoreKey(types.StoreKey) + memStoreKey := storetypes.NewMemoryStoreKey(types.MemStoreKey) + + db := tmdb.NewMemDB() + stateStore := store.NewCommitMultiStore(db) + stateStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, db) + stateStore.MountStoreWithDB(memStoreKey, sdk.StoreTypeMemory, nil) + require.NoError(t, stateStore.LoadLatestVersion()) + + registry := codectypes.NewInterfaceRegistry() + k := keeper.NewKeeper( + codec.NewProtoCodec(registry), + storeKey, + memStoreKey, + ) + + ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) + return k, ctx +} +``` + +If `mars` is an IBC-enabled module, add the following code, instead: + +```go +package keeper + +import ( + "testing" + + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/store" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" + typesparams "github.com/cosmos/cosmos-sdk/x/params/types" + ibckeeper "github.com/cosmos/ibc-go/modules/core/keeper" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmdb "github.com/tendermint/tm-db" + "github.com/username/test/x/mars/keeper" + "github.com/username/test/x/mars/types" +) + +func MarsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { + logger := log.NewNopLogger() + + storeKey := sdk.NewKVStoreKey(types.StoreKey) + memStoreKey := storetypes.NewMemoryStoreKey(types.MemStoreKey) + + db := tmdb.NewMemDB() + stateStore := store.NewCommitMultiStore(db) + stateStore.MountStoreWithDB(storeKey, sdk.StoreTypeIAVL, db) + stateStore.MountStoreWithDB(memStoreKey, sdk.StoreTypeMemory, nil) + require.NoError(t, stateStore.LoadLatestVersion()) + + registry := codectypes.NewInterfaceRegistry() + appCodec := codec.NewProtoCodec(registry) + capabilityKeeper := capabilitykeeper.NewKeeper(appCodec, storeKey, memStoreKey) + + amino := codec.NewLegacyAmino() + ss := typesparams.NewSubspace(appCodec, + amino, + storeKey, + memStoreKey, + "MarsSubSpace", + ) + IBCKeeper := ibckeeper.NewKeeper( + appCodec, + storeKey, + ss, + nil, + nil, + capabilityKeeper.ScopeToModule("MarsIBCKeeper"), + ) + + k := keeper.NewKeeper( + codec.NewProtoCodec(registry), + storeKey, + memStoreKey, + IBCKeeper.ChannelKeeper, + &IBCKeeper.PortKeeper, + capabilityKeeper.ScopeToModule("MarsScopedKeeper"), + ) + + ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, logger) + return k, ctx +} +``` + +### testutil/network/network.go + +```go +func DefaultConfig() network.Config { + // ... + return network.Config{ + // ... + // Add sdk.DefaultPowerReduction + AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), + StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), + BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), + // ... + } +} +``` + +### testutil/sample/sample.go + +Add the following code: + +```go +package sample + +import ( + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// AccAddress returns a sample account address +func AccAddress() string { + pk := ed25519.GenPrivKey().PubKey() + addr := pk.Address() + return sdk.AccAddress(addr).String() +} +``` + +### BandChain Support + +If your module includes integration with BandChain, added manually or scaffolded with `ignite scaffold band`, upgrade +the `github.com/bandprotocol/bandchain-packet` package to `v0.0.2` in `go.mod`. + +## Module + +### x/mars/keeper/keeper.go + +```go +package keeper + +// ... + +type ( + Keeper struct { + // Replace Marshaler with BinaryCodec + cdc codec.BinaryCodec + //... + } +) + +func NewKeeper( + // Replace Marshaler with BinaryCodec + cdc codec.BinaryCodec, + // ... +) *Keeper { + // ... +} +``` + +### x/mars/keeper/msg_server_test.go + +```go +package keeper_test + +import ( + //... + // Add the following: + keepertest "github.com/username/mars/testutil/keeper" + "github.com/username/mars/x/mars/keeper" +) + +func setupMsgServer(t testing.TB) (types.MsgServer, context.Context) { + // Replace + // keeper, ctx := setupKeeper(t) + // return NewMsgServerImpl(*keeper), sdk.WrapSDKContext(ctx) + + // With the following: + k, ctx := keepertest.MarsKeeper(t) + return keeper.NewMsgServerImpl(*k), sdk.WrapSDKContext(ctx) +} +``` + +### x/mars/module.go + +```go +package mars + +type AppModuleBasic struct { + // Replace Marshaler with BinaryCodec + cdc codec.BinaryCodec +} + +// Replace Marshaler with BinaryCodec +func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { + return AppModuleBasic{cdc: cdc} +} + +// Replace JSONMarshaler with JSONCodec +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// Replace JSONMarshaler with JSONCodec +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { + //... +} + +// Replace codec.Marshaller with codec.Codec +func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule { + //... +} + +// Replace JSONMarshaler with JSONCodec +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { + //... +} + +// Replace JSONMarshaler with JSONCodec +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + //... +} + +// Add the following +func (AppModule) ConsensusVersion() uint64 { return 2 } +``` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.19.2.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.19.2.md new file mode 100644 index 0000000000..5bd63a73c1 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.19.2.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 998 +title: v0.19.2 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.19.2, changes are required to use Ignite CLI v0.19.2. +--- + +# Upgrading a blockchain to use Ignite CLI v0.19.2 + +Ignite CLI v0.19.2 comes with IBC v2.0.2. + +With Ignite CLI v0.19.2, the contents of the deprecated Ignite CLI Modules `tendermint/spm` repo are moved to the +official Ignite CLI repo which introduces breaking changes. + +To migrate your chain that was scaffolded with Ignite CLI versions lower than v0.19.2: + +1. IBC upgrade: Use + the [IBC migration documents](https://github.com/cosmos/ibc-go/blob/main/docs/migrations/v1-to-v2.md) + +2. In your chain's `go.mod` file, remove `tendermint/spm` and add the v0.19.2 version of `tendermint/starport`. If your + chain uses these packages, change the import paths as shown: + + - `github.com/tendermint/spm/ibckeeper` moved to `github.com/tendermint/starport/starport/pkg/cosmosibckeeper` + - `github.com/tendermint/spm/cosmoscmd` moved to `github.com/tendermint/starport/starport/pkg/cosmoscmd` + - `github.com/tendermint/spm/openapiconsole` moved to `github.com/tendermint/starport/starport/pkg/openapiconsole` + - `github.com/tendermint/spm/testutil/sample` moved + to `github.com/tendermint/starport/starport/pkg/cosmostestutil/sample` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.20.0.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.20.0.md new file mode 100644 index 0000000000..df23fa9bf8 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.20.0.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 997 +title: v0.20.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0. +--- + +# Upgrading a blockchain to use Ignite CLI v0.20.2 + +1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3). + +2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all + the modules you use in your chain. diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.22.0.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.22.0.md new file mode 100644 index 0000000000..54ea27ebde --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.22.0.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 996 +title: v0.22.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.22.0, changes are required to use Ignite CLI v0.22.0. +--- + +# Upgrading a blockchain to use Ignite CLI v0.22.0 + +Ignite CLI v0.22.2 changed the GitHub username from "ignite-hq" to "ignite", which means the imports must be fixed to +reflect this change. + +1. In your `go.mod` file find the require line for Ignite CLI that starts with `github.com/ignite-hq/cli` and is + followed by a version. + It looks something like `github.com/ignite-hq/cli v0.22.0`, and replace it by `github.com/ignite/cli v0.22.2`. + +2. Make a bulk find and replace in the import statements for `github.com/ignite-hq/cli` to be replaced + by `github.com/ignite/cli`. + +3. Finally, run `go mod tidy` and ensure there's no mention if `ignite-hq/cli` in your `go.sum` file. + +This update includes an upgrade to the `ibc-go` packages. Please make the according changes: + +1. Upgrade your IBC version to [v3](https://github.com/cosmos/ibc-go/releases/tag/v3.0.0). + + 1. Search for `github.com/cosmos/ibc-go/v2` in the import statements of your `.go` files and replace `v2` in the end + with `v3` + + 1. Open your `app.go`, + + - Update your transfer keeper by adding another `app.IBCKeeper.ChannelKeeper` as an argument + after `app.IBCKeeper.ChannelKeeper` + + - Define `var transferIBCModule = transfer.NewIBCModule(app.TransferKeeper)` in your `New()` func, and update + your existent IBC router to use it: `ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferIBCModule)` + + 3. Open your `go.mod` and change the IBC line with `github.com/cosmos/ibc-go/v3 v3.0.0` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.24.0.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.24.0.md new file mode 100644 index 0000000000..bcf1b85185 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.24.0.md @@ -0,0 +1,330 @@ +--- +sidebar_position: 995 +title: v0.24.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.24, changes are required to use Ignite CLI v0.24.0. +--- + +## Cosmos SDK v0.46 upgrade notes + +### Update dependencies + +Cosmos SDK v0.46 is compatible with the latest version of IBC Go v5. If you have a chain that is using an older version, +update the dependencies in your project. + +Throughout the code you might see the following dependencies: + +```go +package pkg_name + +import ( + "github.com/cosmos/ibc-go/v3/..." +) +``` + +Where `v3` is the version of IBC Go and `...` are different IBC Go packages. + +To upgrade the version to `v5`, a global find-and-replace should work. Replace `cosmos/ibc-go/v3` (or whicherver version +you're using) with `cosmos/ibc-go/v5` only in `*.go` files (to exclude unwated changes to files like `go,sum`). + +### Module keeper + +Add an import: + +```go +// x/{moduleName}/keeper/keeper.go + +package keeper + +// ... + +import ( + //... + storetypes "github.com/cosmos/cosmos-sdk/store/types" +) +``` + +In the `Keeper` struct replace `sdk.StoreKey` with `storetypes.StoreKey`: + +```go +// x/{moduleName}/keeper/keeper.go + +package keeper + +// ... + +type ( + Keeper struct { + cdc codec.BinaryCodec + storeKey storetypes.StoreKey + memKey storetypes.StoreKey + paramstore paramtypes.Subspace + } +) +``` + +In the argument list of the `NewKeeper` function definition: + +```go +package keeper + +// ... + +// x/{moduleName}/keeper/keeper.go + +func NewKeeper( + //... + memKey storetypes.StoreKey, +) +``` + +Store type aliases have been removed from the Cosmos SDK `types` package and now have to be imported from `store/types`, +instead. + +In the `testutil/keeper/{moduleName}.go` replace `types.StoreKey` with `storetypes.StoreKey` and `types.MemStoreKey` +with `storetypes.MemStoreKey`. + +```go +// testutil/keeper/{moduleName}.go + +package keeper + +// ... + +func {moduleName}Keeper(t testing.TB) (*keeper.Keeper, sdk.Context) { + storeKey := sdk.NewKVStoreKey(storetypes.StoreKey) + memStoreKey := storetypes.NewMemoryStoreKey(storetypes.MemStoreKey) + //... +} +``` + +### Testutil network package + +Add the `require` package for testing and `pruningtypes` and remove `storetypes`: + +```go +// testutil/network/network.go + +package network + +// ... + +import ( + pruningtypes "github.com/cosmos/cosmos-sdk/pruning/types" + "github.com/stretchr/testify/require" + // storetypes "github.com/cosmos/cosmos-sdk/store/types" <-- remove this line +) +``` + +In the `DefaultConfig` function replace `storetypes.NewPruningOptionsFromString` +with `pruningtypes.NewPruningOptionsFromString` + +```go +// testutil/network/network.go + +package network + +// ... + +func DefaultConfig() network.Config { + //... + return network.Config{ + AppConstructor: func(val network.Validator) servertypes.Application { + return app.New( + baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), + //... + ) + }, + //... + } +} +``` + +The `New` function in the Cosmos SDK `testutil/network` package now +accepts [three arguments](https://github.com/cosmos/cosmos-sdk/blob/v0.46.0/testutil/network/network.go#L206) instead of +two. + +In the `New` function add `t.TempDir()` as the second argument to `network.New()` and test that no error is thrown +with `require.NoError(t, err)`: + +```go +// testutil/network/network.go + +package network + +// ... + +func New(t *testing.T, configs ...network.Config) *network.Network { + //... + net, err := network.New(t, t.TempDir(), cfg) + require.NoError(t, err) + //... +} +``` + +### Testutil keeper package + +In the `{moduleName}Keeper` function make the following replacements: + +- `storetypes.StoreKey` → `types.StoreKey` +- `storetypes.MemStoreKey` → `types.MemStoreKey` +- `sdk.StoreTypeIAVL` → `storetypes.StoreTypeIAVL` +- `sdk.StoreTypeMemory` → `storetypes.StoreTypeMemory` + +```go +// testutil/keeper/{moduleName}.go + +package keeper + +// ... + +func {moduleName}Keeper(t testing.TB) (*keeper.Keeper, sdk.Context) { + storeKey := sdk.NewKVStoreKey(types.StoreKey) + memStoreKey := storetypes.NewMemoryStoreKey(types.MemStoreKey) + //... + stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) + stateStore.MountStoreWithDB(memStoreKey, storetypes.StoreTypeMemory, nil) + //... +} +``` + +### IBC modules + +If you have IBC-enabled modules (for example, added with `ignite scaffold module ... --ibc` or created manually), make +the following changes to the source code. + +Cosmos SDK expects IBC modules +to [implement the `IBCModule` interface](https://ibc.cosmos.network/main/ibc/apps/ibcmodule.html). Create a `IBCModule` +type that embeds the module's keeper and a method that returns a new `IBCModule`. Methods in this file will be defined +on this type. + +```go +// x/{moduleName}/module_ibc.go + +package module_name + +// ... + +type IBCModule struct { + keeper keeper.Keeper +} + +func NewIBCModule(k keeper.Keeper) IBCModule { + return IBCModule{ + keeper: k, + } +} +``` + +Replace receivers for all methods in this file from `(am AppModule)` to `(im IBCModule)`. Replace all instances of `am.` +with `im.` to fix the errors. + +`OnChanOpenInit` now returns to values: a `string` and an `error`: + +```go +// x/{moduleName}/module_ibc.go + +package module_name + +// ... + +func (im IBCModule) OnChanOpenInit( /*...*/ ) (string, error) +``` + +Ensure that all return statements (five, in the default template) in `OnChanOpenInit` return two values. For example: + +```go +// x/{moduleName}/module_ibc.go + +package module_name + +// ... + +func (im IBCModule) OnChanOpenInit( /*...*/ ) (string, error) { + //... + return "", sdkerrors.Wrapf(porttypes.ErrInvalidPort, "invalid port: %s, expected %s", portID, boundPort) + //... +} +``` + +Error acknowledgments returned from Transfer `OnRecvPacket` now include a deterministic ABCI code and error message. +Remove the `.Error()` call: + +```go +// x/{moduleName}/module_ibc.go + +package module_name + +// ... + +func (im IBCModule) OnRecvPacket( /*...*/ ) { + //... + if err := modulePacketData.Unmarshal(modulePacket.GetData()); err != nil { + // return channeltypes.NewErrorAcknowledgement(sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal packet data: %s", err.Error()).Error()) + return channeltypes.NewErrorAcknowledgement(sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal packet data: %s", err.Error())) + } + + // ... + + // Dispatch packet + switch packet := modulePacketData.Packet.(type) { + // ... + default: + // errMsg := fmt.Sprintf("unrecognized %s packet type: %T", types.ModuleName, packet) + // return channeltypes.NewErrorAcknowledgement(errMsg) + err := fmt.Errorf("unrecognized %s packet type: %T", types.ModuleName, packet) + return channeltypes.NewErrorAcknowledgement(err) + } +} +``` + +After switching to using both `AppModule` and `IBCModule`, modifying the following line: + +```go +// x/{moduleName}/module.go + +package module_name + +// ... + +var ( + //... + _ porttypes.IBCModule = IBCModule{} // instead of "= AppModule{}" +) +``` + +### Main + +The `Execute` function in Cosmos SDK `server/cmd` package now +accepts [three arguments](https://github.com/cosmos/cosmos-sdk/blob/v0.46.0/server/cmd/execute.go#L20) instead of two. + +```go +// cmd/{{projectName}}d/main.go + +package projectNamed + +// ... + +func main() { + //... + if err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome); err != nil { + os.Exit(1) + } +} +``` + +### Handler + +Cosmos SDK v0.46 no longer needs a `NewHandler` function that was used to handle messages and call appropriate keeper +methods based on message types. Feel free to remove `x/{moduleName}/handler.go` file. + +Since there is no `NewHandler` now, modify the deprecated `Route` function to return `sdk.Route{}`: + +```go +// x/{moduleName}/module.go + +package module_name + +// ... + +func (am AppModule) Route() sdk.Route { return sdk.Route{} } +``` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.0.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.0.md new file mode 100644 index 0000000000..35db7963f2 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.0.md @@ -0,0 +1,1187 @@ +--- +sidebar_position: 994 +title: v0.25.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.25.0. changes are required to use Ignite CLI v0.25.0. +--- + +## Protobuf directory migration + +`v0.25.0` changes the location of scaffolded `.proto` files. Previously, `.proto` files were located in `./proto/{moduleName}/`, +where `moduleName` is the same name of the Cosmos SDK module found in `./x/{moduleName}/`. This new version of `ignite` +modifies the scaffolded protobuf files so that they are now generated in `./proto/{appName}/{moduleName}`. + +The only change that is needed to be made is to create an `{appName}` folder in the `proto` directory, and then place the +sub-directories within it. An example below demonstrates this change: + +### Previous Directory Structure + +This example shows a chain that was generated using `ignite` with `v0.24.0` using the following command: + +```bash +ignite s chain github.com/cosmos/planet --no-module +ignite s module mars +``` + +```bash +├── app +├── cmd +├── docs +├── proto +│ ├── mars +├── x +│ ├── mars +├── README.md +├── config.yml +├── go.mod +├── go.sum +└── .gitignore +``` + +### `v0.25.0` Directory Structure + +This example shows a chain that was generated using `ignite` with `v0.25.0` using the following command: + +```bash +ignite s chain github.com/cosmos/planet --no-module +ignite s module mars +``` + +```bash +├── app +├── cmd +├── docs +├── proto +│ ├── planet +│ │ ├── mars +├── x +│ ├── mars +├── README.md +├── config.yml +├── go.mod +├── go.sum +└── .gitignore +``` + +The only difference is the additional directory `planet` which is the name of the application. The name of the app can +be verified by checking the package in the `go.mod` file. In this example, the package is `github.com/cosmos/planet` +where `planet` is the app name. + + --- + +## Removing `cosmoscmd` + +`v0.25.0` removes the `cosmoscmd` package from scaffolded chains. This package provided utility for creating +commands and starting up their application. The `cosmoscmd` package is now deprecated, and it is suggested that chains +implement this functionality in their codebase so they can be more easily upgraded and customized. + +The main functionality of `cosmoscmd` will be moved to the `app` package of your chain. Some imports in these +examples contain the sample string, `{ModulePath}`. Replace this string with the Go module path of your blockchain. +For example, if your blockchain module path is `github.com/planet/mars`, `{ModulePath}/app/params` would be become +`github.com/planet/mars/app/params`. + +#### Migration in `app` package + +To begin, create a new file, `./app/params/encoding.go`, containing the following code: + +```go +package params + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" +) + +// EncodingConfig specifies the concrete encoding types to use for a given app. +// This is provided for compatibility between protobuf and amino implementations. +type EncodingConfig struct { + InterfaceRegistry types.InterfaceRegistry + Marshaler codec.Codec + TxConfig client.TxConfig + Amino *codec.LegacyAmino +} +``` + +Next, create a new file, `./app/encoding.go`, containing the following code: + +```go +package app + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/std" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + + "{ModulePath}/app/params" +) + +// makeEncodingConfig creates an EncodingConfig for an amino based test configuration. +func makeEncodingConfig() params.EncodingConfig { + amino := codec.NewLegacyAmino() + interfaceRegistry := types.NewInterfaceRegistry() + marshaler := codec.NewProtoCodec(interfaceRegistry) + txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) + + return params.EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: marshaler, + TxConfig: txCfg, + Amino: amino, + } +} + +// MakeEncodingConfig creates an EncodingConfig for testing +func MakeEncodingConfig() params.EncodingConfig { + encodingConfig := makeEncodingConfig() + std.RegisterLegacyAminoCodec(encodingConfig.Amino) + std.RegisterInterfaces(encodingConfig.InterfaceRegistry) + ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) + ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) + return encodingConfig +} +``` + +Next, modify `./app/simulation_test.go` so that it looks like the following: + +```go +package app_test + +import ( + "os" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/simapp" + simulationtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/simulation" + "github.com/stretchr/testify/require" + abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + tmtypes "github.com/tendermint/tendermint/types" + // remove-next-line + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + + // highlight-next-line + "{ModulePath}/app" +) + +// remove-start +type SimApp interface { + cosmoscmd.App + GetBaseApp() *baseapp.BaseApp + AppCodec() codec.Codec + SimulationManager() *module.SimulationManager + ModuleAccountAddrs() map[string]bool + Name() string + LegacyAmino() *codec.LegacyAmino + BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) + abci.ResponseBeginBlock + EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) + abci.ResponseEndBlock + InitChainer(ctx sdk.Context, req abci.RequestInitChain) + abci.ResponseInitChain +} + +// remove-end + +// ... + +// BenchmarkSimulation run the chain simulation +// Running using starport command: +// `starport chain simulate -v --numBlocks 200 --blockSize 50` +// Running as go benchmark test: +// `go test -benchmem -run=^$ -bench ^BenchmarkSimulation ./app -NumBlocks=200 -BlockSize 50 -Commit=true -Verbose=true -Enabled=true` +func BenchmarkSimulation(b *testing.B) { + + // ... + + // remove-next-line + encoding := cosmoscmd.MakeEncodingConfig(app.ModuleBasics) + // highlight-next-line + encoding := app.MakeEncodingConfig() + + app := app.New( + logger, + db, + nil, + true, + map[int64]bool{}, + app.DefaultNodeHome, + 0, + encoding, + simapp.EmptyAppOptions{}, + ) + + // remove-start + simApp, ok := app.(SimApp) + require.True(b, ok, "can't use simapp") + // remove-end + + // Run randomized simulations + _, simParams, simErr := simulation.SimulateFromSeed( + b, + os.Stdout, + // highlight-next-line + app.BaseApp, + // highlight-next-line + simapp.AppStateFn(app.AppCodec(), app.SimulationManager()), + simulationtypes.RandomAccounts, + // highlight-next-line + simapp.SimulationOperations(app, app.AppCodec(), config), + // highlight-next-line + app.ModuleAccountAddrs(), + config, + // highlight-next-line + app.AppCodec(), + ) + + // export state and simParams before the simulation error is checked + // highlight-next-line + err = simapp.CheckExportSimulation(app, config, simParams) + require.NoError(b, err) + require.NoError(b, simErr) + + // ... +} +``` + +The main changes here are that the `SimApp` interface has been removed and is being replaced with `app`. + +The final modification in the `app` package is in `app/app.go`: + +```go +package app + +import ( + // ... + + // this line is used by starport scaffolding # stargate/app/moduleImport + + // remove-next-line + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + + // highlight-start + appparams "{ModulePath}/app/params" + "{ModulePath}/docs" + // highlight-end +) + +// ... + +var ( + // remove-next-line + _ cosmoscmd.App = (*App)(nil) + _ servertypes.Application = (*App)(nil) + _ simapp.App = (*App)(nil) +) + +// ... + +// New returns a reference to an initialized blockchain app +func New( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + skipUpgradeHeights map[int64]bool, + homePath string, + invCheckPeriod uint, + // highlight-next-line + encodingConfig appparams.EncodingConfig, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), + // highlight-next-line +) *App { + appCodec := encodingConfig.Marshaler + cdc := encodingConfig.Amino + interfaceRegistry := encodingConfig.InterfaceRegistry + + bApp := baseapp.NewBaseApp( + Name, + logger, + db, + encodingConfig.TxConfig.TxDecoder(), + baseAppOptions..., + ) + + // ... + +} + +// ... + +// Name returns the name of the App +func (app *App) Name() string { return app.BaseApp.Name() } + +// remove-start +// GetBaseApp returns the base app of the application +func (app App) GetBaseApp() *baseapp.BaseApp { return app.BaseApp } + +// remove-end + +// BeginBlocker application updates every begin block +func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { + return app.mm.BeginBlock(ctx, req) +} + +// ... +``` + +Again, here we are removing the use of `cosmoscmd` and replacing it with `app`. + +#### Migration in `cmd` package + +Some imports in these +examples contain the sample string, `{binaryNamePrefix}d`. Replace this string with the binary name of your blockchain. +For example, if your blockchain module path is `github.com/planet/mars`, `./cmd/{binaryNamePrefix}d/cmd/` would be +become `./cmd/marsd/cmd/`. + +First, create the new file `./cmd/{binaryNamePrefix}d/cmd/config.go` with the following code: + +```go +package cmd + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "{ModulePath}/app" +) + +func initSDKConfig() { + // Set prefixes + accountPubKeyPrefix := app.AccountAddressPrefix + "pub" + validatorAddressPrefix := app.AccountAddressPrefix + "valoper" + validatorPubKeyPrefix := app.AccountAddressPrefix + "valoperpub" + consNodeAddressPrefix := app.AccountAddressPrefix + "valcons" + consNodePubKeyPrefix := app.AccountAddressPrefix + "valconspub" + + // Set and seal config + config := sdk.GetConfig() + config.SetBech32PrefixForAccount(app.AccountAddressPrefix, accountPubKeyPrefix) + config.SetBech32PrefixForValidator(validatorAddressPrefix, validatorPubKeyPrefix) + config.SetBech32PrefixForConsensusNode(consNodeAddressPrefix, consNodePubKeyPrefix) + config.Seal() +} +``` + +Next, create the new file `./cmd/{binaryNamePrefix}d/cmd/genaccounts.go` with the following code: + +```go +package cmd + +import ( + "bufio" + "encoding/json" + "errors" + "fmt" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/server" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/spf13/cobra" +) + +const ( + flagVestingStart = "vesting-start-time" + flagVestingEnd = "vesting-end-time" + flagVestingAmt = "vesting-amount" +) + +// AddGenesisAccountCmd returns add-genesis-account cobra Command. +func AddGenesisAccountCmd(defaultNodeHome string) *cobra.Command { + cmd := &cobra.Command{ + Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]", + Short: "Add a genesis account to genesis.json", + Long: `Add a genesis account to genesis.json. The provided account must specify +the account address or key name and a list of initial coins. If a key name is given, +the address will be looked up in the local Keybase. The list of initial tokens must +contain valid denominations. Accounts may optionally be supplied with vesting parameters. +`, + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + cdc := clientCtx.Codec + + serverCtx := server.GetServerContextFromCmd(cmd) + config := serverCtx.Config + + config.SetRoot(clientCtx.HomeDir) + + coins, err := sdk.ParseCoinsNormalized(args[1]) + if err != nil { + return fmt.Errorf("failed to parse coins: %w", err) + } + + addr, err := sdk.AccAddressFromBech32(args[0]) + if err != nil { + inBuf := bufio.NewReader(cmd.InOrStdin()) + keyringBackend, err := cmd.Flags().GetString(flags.FlagKeyringBackend) + if err != nil { + return err + } + + // attempt to lookup address from Keybase if no address was provided + kb, err := keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf, cdc) + if err != nil { + return err + } + + info, err := kb.Key(args[0]) + if err != nil { + return fmt.Errorf("failed to get address from Keybase: %w", err) + } + + addr, err = info.GetAddress() + if err != nil { + return fmt.Errorf("failed to get address from Keybase: %w", err) + } + } + + vestingStart, err := cmd.Flags().GetInt64(flagVestingStart) + if err != nil { + return err + } + vestingEnd, err := cmd.Flags().GetInt64(flagVestingEnd) + if err != nil { + return err + } + vestingAmtStr, err := cmd.Flags().GetString(flagVestingAmt) + if err != nil { + return err + } + + vestingAmt, err := sdk.ParseCoinsNormalized(vestingAmtStr) + if err != nil { + return fmt.Errorf("failed to parse vesting amount: %w", err) + } + + // create concrete account type based on input parameters + var genAccount authtypes.GenesisAccount + + balances := banktypes.Balance{Address: addr.String(), Coins: coins.Sort()} + baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0) + + if !vestingAmt.IsZero() { + baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) + + if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) || + baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) { + return errors.New("vesting amount cannot be greater than total amount") + } + + switch { + case vestingStart != 0 && vestingEnd != 0: + genAccount = authvesting.NewContinuousVestingAccountRaw(baseVestingAccount, vestingStart) + + case vestingEnd != 0: + genAccount = authvesting.NewDelayedVestingAccountRaw(baseVestingAccount) + + default: + return errors.New("invalid vesting parameters; must supply start and end time or end time") + } + } else { + genAccount = baseAccount + } + + if err := genAccount.Validate(); err != nil { + return fmt.Errorf("failed to validate new genesis account: %w", err) + } + + genFile := config.GenesisFile() + appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile) + if err != nil { + return fmt.Errorf("failed to unmarshal genesis state: %w", err) + } + + authGenState := authtypes.GetGenesisStateFromAppState(cdc, appState) + + accs, err := authtypes.UnpackAccounts(authGenState.Accounts) + if err != nil { + return fmt.Errorf("failed to get accounts from any: %w", err) + } + + if accs.Contains(addr) { + return fmt.Errorf("cannot add account at existing address %s", addr) + } + + // Add the new account to the set of genesis accounts and sanitize the + // accounts afterwards. + accs = append(accs, genAccount) + accs = authtypes.SanitizeGenesisAccounts(accs) + + genAccs, err := authtypes.PackAccounts(accs) + if err != nil { + return fmt.Errorf("failed to convert accounts into any's: %w", err) + } + authGenState.Accounts = genAccs + + authGenStateBz, err := cdc.MarshalJSON(&authGenState) + if err != nil { + return fmt.Errorf("failed to marshal auth genesis state: %w", err) + } + + appState[authtypes.ModuleName] = authGenStateBz + + bankGenState := banktypes.GetGenesisStateFromAppState(cdc, appState) + bankGenState.Balances = append(bankGenState.Balances, balances) + bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) + + bankGenStateBz, err := cdc.MarshalJSON(bankGenState) + if err != nil { + return fmt.Errorf("failed to marshal bank genesis state: %w", err) + } + + appState[banktypes.ModuleName] = bankGenStateBz + + appStateJSON, err := json.Marshal(appState) + if err != nil { + return fmt.Errorf("failed to marshal application genesis state: %w", err) + } + + genDoc.AppState = appStateJSON + return genutil.ExportGenesisFile(genDoc, genFile) + }, + } + + cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test)") + cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") + cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts") + cmd.Flags().Int64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts") + cmd.Flags().Int64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts") + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} +``` + +This command allows one to generate new accounts: `appd add-genesis-account`. + +Next, create the new file `./cmd/{binaryNamePrefix}d/cmd/root.go` with the following code: + +```go +package cmd + +import ( + "errors" + "io" + "os" + "path/filepath" + "strings" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/config" + "github.com/cosmos/cosmos-sdk/client/debug" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/server" + serverconfig "github.com/cosmos/cosmos-sdk/server/config" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/snapshots" + snapshottypes "github.com/cosmos/cosmos-sdk/snapshots/types" + "github.com/cosmos/cosmos-sdk/store" + sdk "github.com/cosmos/cosmos-sdk/types" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + "github.com/ignite/cli/ignite/services/network" + "github.com/spf13/cast" + "github.com/spf13/cobra" + "github.com/spf13/pflag" + tmcfg "github.com/tendermint/tendermint/config" + tmcli "github.com/tendermint/tendermint/libs/cli" + "github.com/tendermint/tendermint/libs/log" + dbm "github.com/tendermint/tm-db" + // this line is used by starport scaffolding # root/moduleImport + + "{ModulePath}/app" + appparams "{ModulePath}/app/params" +) + +// NewRootCmd creates a new root command for a Cosmos SDK application +func NewRootCmd() (*cobra.Command, appparams.EncodingConfig) { + encodingConfig := app.MakeEncodingConfig() + initClientCtx := client.Context{}. + WithCodec(encodingConfig.Marshaler). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). + WithTxConfig(encodingConfig.TxConfig). + WithLegacyAmino(encodingConfig.Amino). + WithInput(os.Stdin). + WithAccountRetriever(types.AccountRetriever{}). + WithHomeDir(app.DefaultNodeHome). + WithViper("") + + rootCmd := &cobra.Command{ + Use: app.Name + "d", + Short: "Stargate CosmosHub App", + PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + // set the default command outputs + cmd.SetOut(cmd.OutOrStdout()) + cmd.SetErr(cmd.ErrOrStderr()) + initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) + if err != nil { + return err + } + initClientCtx, err = config.ReadFromClientConfig(initClientCtx) + if err != nil { + return err + } + + if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { + return err + } + + customAppTemplate, customAppConfig := initAppConfig() + customTMConfig := initTendermintConfig() + return server.InterceptConfigsPreRunHandler( + cmd, customAppTemplate, customAppConfig, customTMConfig, + ) + }, + } + + initRootCmd(rootCmd, encodingConfig) + overwriteFlagDefaults(rootCmd, map[string]string{ + flags.FlagChainID: strings.ReplaceAll(app.Name, "-", ""), + flags.FlagKeyringBackend: "test", + }) + + return rootCmd, encodingConfig +} + +// initTendermintConfig helps to override default Tendermint Config values. +// return tmcfg.DefaultConfig if no custom configuration is required for the application. +func initTendermintConfig() *tmcfg.Config { + cfg := tmcfg.DefaultConfig() + return cfg +} + +func initRootCmd( + rootCmd *cobra.Command, + encodingConfig appparams.EncodingConfig, +) { + // Set config + initSDKConfig() + + rootCmd.AddCommand( + genutilcli.InitCmd(app.ModuleBasics, app.DefaultNodeHome), + genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), + genutilcli.MigrateGenesisCmd(), + genutilcli.GenTxCmd( + app.ModuleBasics, + encodingConfig.TxConfig, + banktypes.GenesisBalancesIterator{}, + app.DefaultNodeHome, + ), + genutilcli.ValidateGenesisCmd(app.ModuleBasics), + AddGenesisAccountCmd(app.DefaultNodeHome), + tmcli.NewCompletionCmd(rootCmd, true), + debug.Cmd(), + config.Cmd(), + // this line is used by starport scaffolding # root/commands + ) + + a := appCreator{ + encodingConfig, + } + + // add server commands + server.AddCommands( + rootCmd, + app.DefaultNodeHome, + a.newApp, + a.appExport, + addModuleInitFlags, + ) + + // add keybase, auxiliary RPC, query, and tx child commands + rootCmd.AddCommand( + rpc.StatusCommand(), + queryCommand(), + txCommand(), + keys.Commands(app.DefaultNodeHome), + ) +} + +// queryCommand returns the sub-command to send queries to the app +func queryCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "query", + Aliases: []string{"q"}, + Short: "Querying subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + authcmd.GetAccountCmd(), + rpc.ValidatorCommand(), + rpc.BlockCommand(), + authcmd.QueryTxsByEventsCmd(), + authcmd.QueryTxCmd(), + ) + + app.ModuleBasics.AddQueryCommands(cmd) + cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") + + return cmd +} + +// txCommand returns the sub-command to send transactions to the app +func txCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "tx", + Short: "Transactions subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + authcmd.GetSignCommand(), + authcmd.GetSignBatchCommand(), + authcmd.GetMultiSignCommand(), + authcmd.GetValidateSignaturesCommand(), + flags.LineBreak, + authcmd.GetBroadcastCommand(), + authcmd.GetEncodeCommand(), + authcmd.GetDecodeCommand(), + ) + + app.ModuleBasics.AddTxCommands(cmd) + cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") + + return cmd +} + +func addModuleInitFlags(startCmd *cobra.Command) { + crisis.AddModuleInitFlags(startCmd) + // this line is used by starport scaffolding # root/arguments +} + +func overwriteFlagDefaults(c *cobra.Command, defaults map[string]string) { + set := func(s *pflag.FlagSet, key, val string) { + if f := s.Lookup(key); f != nil { + f.DefValue = val + f.Value.Set(val) + } + } + for key, val := range defaults { + set(c.Flags(), key, val) + set(c.PersistentFlags(), key, val) + } + for _, c := range c.Commands() { + overwriteFlagDefaults(c, defaults) + } +} + +type appCreator struct { + encodingConfig appparams.EncodingConfig +} + +// newApp creates a new Cosmos SDK app +func (a appCreator) newApp( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + appOpts servertypes.AppOptions, +) servertypes.Application { + var cache sdk.MultiStorePersistentCache + + if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { + cache = store.NewCommitKVStoreCacheManager() + } + + skipUpgradeHeights := make(map[int64]bool) + for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { + skipUpgradeHeights[int64(h)] = true + } + + pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) + if err != nil { + panic(err) + } + + snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") + snapshotDB, err := dbm.NewDB("metadata", dbm.GoLevelDBBackend, snapshotDir) + if err != nil { + panic(err) + } + snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) + if err != nil { + panic(err) + } + + snapshotOptions := snapshottypes.NewSnapshotOptions( + cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval)), + cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent)), + ) + + return app.New( + logger, + db, + traceStore, + true, + skipUpgradeHeights, + cast.ToString(appOpts.Get(flags.FlagHome)), + cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), + a.encodingConfig, + appOpts, + baseapp.SetPruning(pruningOpts), + baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), + baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), + baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), + baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), + baseapp.SetInterBlockCache(cache), + baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), + baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), + baseapp.SetSnapshot(snapshotStore, snapshotOptions), + ) +} + +// appExport creates a new simapp (optionally at a given height) +func (a appCreator) appExport( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + height int64, + forZeroHeight bool, + jailAllowedAddrs []string, + appOpts servertypes.AppOptions, +) (servertypes.ExportedApp, error) { + homePath, ok := appOpts.Get(flags.FlagHome).(string) + if !ok || homePath == "" { + return servertypes.ExportedApp{}, errors.New("application home not set") + } + + app := app.New( + logger, + db, + traceStore, + height == -1, // -1: no height provided + map[int64]bool{}, + homePath, + uint(1), + a.encodingConfig, + appOpts, + ) + + if height != -1 { + if err := app.LoadHeight(height); err != nil { + return servertypes.ExportedApp{}, err + } + } + + return app.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) +} + +// initAppConfig helps to override default appConfig template and configs. +// return "", nil if no custom configuration is required for the application. +func initAppConfig() (string, interface{}) { + // The following code snippet is just for reference. + + // WASMConfig defines configuration for the wasm module. + type WASMConfig struct { + // This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries + QueryGasLimit uint64 `mapstructure:"query_gas_limit"` + + // Address defines the gRPC-web server to listen on + LruSize uint64 `mapstructure:"lru_size"` + } + + type CustomAppConfig struct { + serverconfig.Config + + WASM WASMConfig `mapstructure:"wasm"` + } + + // Optionally allow the chain developer to overwrite the SDK's default + // server config. + srvCfg := serverconfig.DefaultConfig() + // The SDK's default minimum gas price is set to "" (empty value) inside + // app.toml. If left empty by validators, the node will halt on startup. + // However, the chain developer can set a default app.toml value for their + // validators here. + // + // In summary: + // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their + // own app.toml config, + // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their + // own app.toml to override, or use this default value. + // + // In simapp, we set the min gas prices to 0. + srvCfg.MinGasPrices = "0stake" + + customAppConfig := CustomAppConfig{ + Config: *srvCfg, + WASM: WASMConfig{ + LruSize: 1, + QueryGasLimit: 300000, + }, + } + + customAppTemplate := serverconfig.DefaultConfigTemplate + ` +[wasm] +# This is the maximum sdk gas (wasm and storage) that we allow for any x/wasm "smart" queries +query_gas_limit = 300000 +# This is the number of wasm vm instances we keep cached in memory for speed-up +# Warning: this is currently unstable and may lead to crashes, best to keep for 0 unless testing locally +lru_size = 0` + + return customAppTemplate, customAppConfig +} +``` + +Finally, modify `./cmd/{binaryNamePrefix}d/main.go` to include the new changes: + +```go +package main + +import ( + "os" + + "github.com/cosmos/cosmos-sdk/server" + svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" + // remove-next-line + "github.com/ignite/cli/ignite/pkg/cosmoscmd" + + "{ModulePath}/app" + "{ModulePath}/cmd/{BinaryNamePrefix}d/cmd" +) + +func main() { + // highlight-start + rootCmd, _ := cmd.NewRootCmd() + if err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome); err != nil { + switch e := err.(type) { + case server.ErrorCode: + os.Exit(e.Code) + + default: + os.Exit(1) + } + } + // highlight-end +} +``` + +#### Migration in `testutil` package + +Modify `./testutil/network/network.go` to include the new changes: + + +```go +package network + +import ( + "fmt" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + pruningtypes "github.com/cosmos/cosmos-sdk/pruning/types" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/testutil/network" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/stretchr/testify/require" + tmrand "github.com/tendermint/tendermint/libs/rand" + tmdb "github.com/tendermint/tm-db" + + // highlight-next-line + "{ModulePath}/app" + + // remove-next-line + "github.com/ignite/cli/ignite/pkg/cosmoscmd" +) + +// ... + +// DefaultConfig will initialize config for the network with custom application, +// genesis and single validator. All other parameters are inherited from cosmos-sdk/testutil/network.DefaultConfig +func DefaultConfig() network.Config { + // highlight-next-line + encoding := app.MakeEncodingConfig() + // remove-next-line + encoding := cosmoscmd.MakeEncodingConfig(app.ModuleBasics) + return network.Config{ + Codec: encoding.Marshaler, + TxConfig: encoding.TxConfig, + LegacyAmino: encoding.Amino, + InterfaceRegistry: encoding.InterfaceRegistry, + AccountRetriever: authtypes.AccountRetriever{}, + AppConstructor: func(val network.Validator) servertypes.Application { + return app.New( + val.Ctx.Logger, tmdb.NewMemDB(), nil, true, map[int64]bool{}, val.Ctx.Config.RootDir, 0, + encoding, + simapp.EmptyAppOptions{}, + baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), + baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), + ) + }, + GenesisState: app.ModuleBasics.DefaultGenesis(encoding.Marshaler), + TimeoutCommit: 2 * time.Second, + ChainID: "chain-" + tmrand.NewRand().Str(6), + NumValidators: 1, + BondDenom: sdk.DefaultBondDenom, + MinGasPrices: fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), + AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), + StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), + BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), + PruningStrategy: pruningtypes.PruningOptionNothing, + CleanupDir: true, + SigningAlgo: string(hd.Secp256k1Type), + KeyringOptions: []keyring.Option{}, + } +} +``` + + --- + +## Fix ICA controller keeper wiring + +Related issue: https://github.com/ignite/cli/issues/2867 + +Apply the following changes to `app/app.go` file : + +```go +package app + +import ( + + // highlight-start + icacontrollerkeeper "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/controller/keeper" + icacontrollertypes "github.com/cosmos/ibc-go/v5/modules/apps/27-interchain-accounts/controller/types" + // highlight-end + // ... +) + +// New returns a reference to an initialized blockchain app +func New( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + skipUpgradeHeights map[int64]bool, + homePath string, + invCheckPeriod uint, + encodingConfig appparams.EncodingConfig, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), +) *App { + + // ... + + keys := sdk.NewKVStoreKeys( + authtypes.StoreKey, authz.ModuleName, banktypes.StoreKey, + stakingtypes.StoreKey, + minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, + govtypes.StoreKey, + paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, + feegrant.StoreKey, evidencetypes.StoreKey, + ibctransfertypes.StoreKey, icahosttypes.StoreKey, + capabilitytypes.StoreKey, group.StoreKey, + // highlight-next-line + icacontrollertypes.StoreKey, + yourchainmoduletypes.StoreKey, + // this line is used by starport scaffolding # stargate/app/storeKey + ) + + // ... + + // remove-next-line + icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper) + // highlight-start + icaControllerKeeper := icacontrollerkeeper.NewKeeper( + appCodec, keys[icacontrollertypes.StoreKey], + app.GetSubspace(icacontrollertypes.SubModuleName), + app.IBCKeeper.ChannelKeeper, // may be replaced with middleware such as ics29 fee + app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper, + scopedICAControllerKeeper, app.MsgServiceRouter(), + ) + icaModule := ica.NewAppModule(&icaControllerKeeper, &app.ICAHostKeeper) + // highlight-end + icaHostIBCModule := icahost.NewIBCModule(app.ICAHostKeeper) + + // ... +} + +// ... + +// initParamsKeeper init params keeper and its subspaces +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper { + paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) + + paramsKeeper.Subspace(authtypes.ModuleName) + paramsKeeper.Subspace(banktypes.ModuleName) + paramsKeeper.Subspace(stakingtypes.ModuleName) + paramsKeeper.Subspace(minttypes.ModuleName) + paramsKeeper.Subspace(distrtypes.ModuleName) + paramsKeeper.Subspace(slashingtypes.ModuleName) + paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govv1.ParamKeyTable()) + paramsKeeper.Subspace(crisistypes.ModuleName) + paramsKeeper.Subspace(ibctransfertypes.ModuleName) + paramsKeeper.Subspace(ibchost.ModuleName) + // highlight-next-line + paramsKeeper.Subspace(icacontrollertypes.SubModuleName) + paramsKeeper.Subspace(icahosttypes.SubModuleName) + paramsKeeper.Subspace(mychainmoduletypes.ModuleName) + // this line is used by starport scaffolding # stargate/app/paramSubspace + + return paramsKeeper +} +``` + + --- + +## Fix capability keeper not sealed + +Related issue: https://github.com/ignite/cli/issues/1921 + +Apply the following change to `app/app.go` file : + +```go +package app + +// New returns a reference to an initialized blockchain app +func New( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + skipUpgradeHeights map[int64]bool, + homePath string, + invCheckPeriod uint, + encodingConfig appparams.EncodingConfig, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), +) *App { + + // ... + + // this line is used by starport scaffolding # stargate/app/keeperDefinition + + // highlight-start + // Sealing prevents other modules from creating scoped sub-keepers + app.CapabilityKeeper.Seal() + // highlight-end + + // Create static IBC router, add transfer route, then set and seal it + + // ... +} +``` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.1.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.1.md new file mode 100644 index 0000000000..42fe7f783c --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.25.1.md @@ -0,0 +1,67 @@ +--- +sidebar_position: 993 +title: v0.25.1 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.25.1. changes are required to use Ignite CLI v0.25.1. +--- + +## Drabonberry fix + +`v0.25.1` contains the Dragonberry fix, update your `go.mod` as : + +```sh +require ( + // remove-next-line + github.com/ignite/cli v0.24.0 + // highlight-next-line + github.com/ignite/cli v0.25.1 +) + +// highlight-next-line +replace github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 +``` + +Then run: + +``` +$ go mod tidy +``` + +As a result, you should see `cosmos-sdk` and `ibc-go` upgraded as well. + +Finally, apply the following change to `app/app.go`: + +```go +package app + +// New returns a reference to an initialized blockchain app +func New( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + skipUpgradeHeights map[int64]bool, + homePath string, + invCheckPeriod uint, + encodingConfig appparams.EncodingConfig, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), +) *App { + + // ... + + app.ICAHostKeeper = icahostkeeper.NewKeeper( + appCodec, keys[icahosttypes.StoreKey], + app.GetSubspace(icahosttypes.SubModuleName), + app.IBCKeeper.ChannelKeeper, + // highlight-next-line + app.IBCKeeper.ChannelKeeper, + &app.IBCKeeper.PortKeeper, + app.AccountKeeper, + scopedICAHostKeeper, + app.MsgServiceRouter(), + ) + + // ... + +} +``` diff --git a/docs/versioned_docs/version-v0.27.2/06-migration/v0.26.0.md b/docs/versioned_docs/version-v0.27.2/06-migration/v0.26.0.md new file mode 100644 index 0000000000..f8895aabf1 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/06-migration/v0.26.0.md @@ -0,0 +1,263 @@ +--- +sidebar_position: 992 +title: v0.26.0 +description: For chains that were scaffolded with Ignite CLI versions lower than v0.26.0. changes are required to use Ignite CLI v0.26.0. +--- + +Ignite CLI `v0.26.0` is fully compatible with chains that are compatible with `v0.25.1`. Please follow the existing +migration guides if your chain is not upgraded to `v0.25.1` support. + +## Go Version + +Chains that are newly scaffolded with Ignite CLI `v0.26.0` now require `go 1.19` in their `go.mod` files. It is +recommended that chains scaffolded with an older version of Ignite CLI also bump their required `go` version and update +their tooling to the latest version. + +## ibc-go v6 + +Chains that are newly scaffolded with Ignite CLI `v0.26.0` now use `ibc-go/v6` for ibc functionality. It is not +necessary, but recommended to upgrade to the newest version of `ibc-go`. Most migrations can be done by following the +`ibc-go` [migration guide](https://github.com/cosmos/ibc-go/blob/main/docs/migrations/v5-to-v6.md), but there are some +specific changes that will need to be followed for Ignite scaffolded chains. + +### Removing `cosmosibckeeper` + +Ignite CLI `v0.26.0` has deprecated [pkg/cosmosibckeeper](https://github.com/ignite/cli/tree/main/ignite/pkg/cosmosibckeeper). +This package contained interfaces for ibc-related keepers. Newly scaffolded chains now include the interface files in their +`./x/{moduleName}/types` directory in a new `expected_ibc_keeper.go` file. To migrate, create the following file for +each module: + +```go title="x/{moduleName}/types/expected_ibc_keeper.go" +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + clienttypes "github.com/cosmos/ibc-go/v6/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types" +) + +// ChannelKeeper defines the expected IBC channel keeper. +type ChannelKeeper interface { + GetChannel(ctx sdk.Context, portID, channelID string) (channeltypes.Channel, bool) + GetNextSequenceSend(ctx sdk.Context, portID, channelID string) (uint64, bool) + SendPacket( + ctx sdk.Context, + channelCap *capabilitytypes.Capability, + sourcePort string, + sourceChannel string, + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, + ) (uint64, error) + ChanCloseInit(ctx sdk.Context, portID, channelID string, chanCap *capabilitytypes.Capability) error +} + +// PortKeeper defines the expected IBC port keeper. +type PortKeeper interface { + BindPort(ctx sdk.Context, portID string) *capabilitytypes.Capability +} + +// ScopedKeeper defines the expected IBC scoped keeper. +type ScopedKeeper interface { + GetCapability(ctx sdk.Context, name string) (*capabilitytypes.Capability, bool) + AuthenticateCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) bool + ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) error +} +``` + +Next, make the following updates to each `x/{moduleName}/keeper/keeper.go` file for each ibc-enabled +module in your project: + +```go title="x/{moduleName}/keeper/keeper.go" +package keeper + +import ( + "fmt" + + // remove-start + "blogibc/x/testibc/types" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/ignite/cli/ignite/pkg/cosmosibckeeper" + "github.com/tendermint/tendermint/libs/log" + // remove-end + // highlight-start + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types" + host "github.com/cosmos/ibc-go/v6/modules/core/24-host" + "github.com/cosmos/ibc-go/v6/modules/core/exported" + "github.com/tendermint/tendermint/libs/log" + + "{appName}/x/{moduleName}/types" + // highlight-end +) + +type ( + Keeper struct { + // remove-line-next + *cosmosibckeeper.Keeper + cdc codec.BinaryCodec + storeKey storetypes.StoreKey + memKey storetypes.StoreKey + paramstore paramtypes.Subspace + + // highlight-start + channelKeeper types.ChannelKeeper + portKeeper types.PortKeeper + scopedKeeper exported.ScopedKeeper + // highlight-end + } +) + +func NewKeeper( + cdc codec.BinaryCodec, + storeKey, + memKey storetypes.StoreKey, + ps paramtypes.Subspace, + // highlight-start + channelKeeper types.ChannelKeeper, + portKeeper types.PortKeeper, + scopedKeeper types.ScopedKeeper, + // highlight-end +) *Keeper { + // set KeyTable if it has not already been set + if !ps.HasKeyTable() { + ps = ps.WithKeyTable(types.ParamKeyTable()) + } + + return &Keeper{ + // remove-start + Keeper: cosmosibckeeper.NewKeeper( + types.PortKey, + storeKey, + channelKeeper, + portKeeper, + scopedKeeper, + ), + // remove-end + cdc: cdc, + storeKey: storeKey, + memKey: memKey, + paramstore: ps, + // highlight-start + channelKeeper: channelKeeper, + portKeeper: portKeeper, + scopedKeeper: scopedKeeper, + // highlight-end + } +} + +// highlight-start +// ---------------------------------------------------------------------------- +// IBC Keeper Logic +// ---------------------------------------------------------------------------- + +// ChanCloseInit defines a wrapper function for the channel Keeper's function. +func (k Keeper) ChanCloseInit(ctx sdk.Context, portID, channelID string) error { + capName := host.ChannelCapabilityPath(portID, channelID) + chanCap, ok := k.scopedKeeper.GetCapability(ctx, capName) + if !ok { + return sdkerrors.Wrapf(channeltypes.ErrChannelCapabilityNotFound, "could not retrieve channel capability at: %s", capName) + } + return k.channelKeeper.ChanCloseInit(ctx, portID, channelID, chanCap) +} + +// IsBound checks if the IBC app module is already bound to the desired port +func (k Keeper) IsBound(ctx sdk.Context, portID string) bool { + _, ok := k.scopedKeeper.GetCapability(ctx, host.PortPath(portID)) + return ok +} + +// BindPort defines a wrapper function for the port Keeper's function in +// order to expose it to module's InitGenesis function +func (k Keeper) BindPort(ctx sdk.Context, portID string) error { + cap := k.portKeeper.BindPort(ctx, portID) + return k.ClaimCapability(ctx, cap, host.PortPath(portID)) +} + +// GetPort returns the portID for the IBC app module. Used in ExportGenesis +func (k Keeper) GetPort(ctx sdk.Context) string { + store := ctx.KVStore(k.storeKey) + return string(store.Get(types.PortKey)) +} + +// SetPort sets the portID for the IBC app module. Used in InitGenesis +func (k Keeper) SetPort(ctx sdk.Context, portID string) { + store := ctx.KVStore(k.storeKey) + store.Set(types.PortKey, []byte(portID)) +} + +// AuthenticateCapability wraps the scopedKeeper's AuthenticateCapability function +func (k Keeper) AuthenticateCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) bool { + return k.scopedKeeper.AuthenticateCapability(ctx, cap, name) +} + +// ClaimCapability allows the IBC app module to claim a capability that core IBC +// passes to it +func (k Keeper) ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) error { + return k.scopedKeeper.ClaimCapability(ctx, cap, name) +} + +//highlight-end + +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} +``` + +### Remaining migration + +After all uses of `cosmosibckeeper` have been removed, you can follow any remaining steps in the`ibc-go`[migration guide](https://github.com/cosmos/ibc-go/blob/main/docs/migrations/v5-to-v6.md). + +## Scaffolded Release Workflow + +The develop branch of the CLI has been deprecated. To continue using the release workflow that uses the CLI to +automatically build and release your chain's binaries, replace develop with main in the following lines: + +```yaml title=".github/workflows/release.yml" +... + +jobs: + might_release: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Prepare Release Variables + id: vars + // highlight-next-line + uses: ignite/cli/actions/release/vars@main + - name: Issue Release Assets + // highlight-next-line + uses: ignite/cli/actions/cli@main + if: ${{ steps.vars.outputs.should_release == 'true' }} + with: + args: chain build --release --release.prefix ${{ steps.vars.outputs.tarball_prefix }} -t linux:amd64 -t darwin:amd64 -t darwin:arm64 + - name: Delete the "latest" Release + uses: dev-drprasad/delete-tag-and-release@v0.2.0 + if: ${{ steps.vars.outputs.is_release_type_latest == 'true' }} + with: + tag_name: ${{ steps.vars.outputs.tag_name }} + delete_release: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Publish the Release + uses: softprops/action-gh-release@v1 + if: ${{ steps.vars.outputs.should_release == 'true' }} + with: + tag_name: ${{ steps.vars.outputs.tag_name }} + files: release/* + prerelease: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +``` diff --git a/docs/versioned_docs/version-v0.27.2/07-packages/_category_.json b/docs/versioned_docs/version-v0.27.2/07-packages/_category_.json new file mode 100644 index 0000000000..28c5e6b357 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/07-packages/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Packages", + "link": null +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/07-packages/cosmostxcollector.md b/docs/versioned_docs/version-v0.27.2/07-packages/cosmostxcollector.md new file mode 100644 index 0000000000..c38fc2d3d5 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/07-packages/cosmostxcollector.md @@ -0,0 +1,200 @@ +--- +sidebar_position: 0 +title: cosmostxcollector +slug: /packages/cosmostxcollector +--- + +# cosmostxcollector + +The package implements support for collecting transactions and events from Cosmos blockchains +into a data backend and it also adds support for querying the collected data. + +## Transaction and event data collecting + +Transactions and events can be collected using the `cosmostxcollector.Collector` type. This +type uses a `cosmosclient.Client` instance to fetch the data from each block and a data backend +adapter to save the data. + +### Data backend adapters + +Data backend adapters are used to query and save the collected data into different types of data +backends and must implement the `cosmostxcollector.adapter.Adapter` interface. + +An adapter for PostgreSQL is already implemented in `cosmostxcollector.adapter.postgres.Adapter`. +This is the one used in the examples. + +### Example: Data collection + +The data collection example assumes that there is a PostgreSQL database running in the local +environment containing an empty database named "cosmos". + +The required database tables will be created automatically by the collector the first time it is run. + +When the application is run it will fetch all the transactions and events starting from one of the +recent blocks until the current block height and populate the database: + +```go +package main + +import ( + "context" + "log" + + "github.com/ignite/cli/ignite/pkg/clictx" + "github.com/ignite/cli/ignite/pkg/cosmosclient" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector/adapter/postgres" +) + +const ( + // Name of a local PostgreSQL database + dbName = "cosmos" + + // Cosmos RPC address + rpcAddr = "https://rpc.cosmos.network:443" +) + +func collect(ctx context.Context, db postgres.Adapter) error { + // Make sure that the data backend schema is up to date + if err := db.Init(ctx); err != nil { + return err + } + + // Init the Cosmos client + client, err := cosmosclient.New(ctx, cosmosclient.WithNodeAddress(rpcAddr)) + if err != nil { + return err + } + + // Get the latest block height + latestHeight, err := client.LatestBlockHeight(ctx) + if err != nil { + return err + } + + // Collect transactions and events starting from a block height. + // The collector stops at the latest height available at the time of the call. + collector := cosmostxcollector.New(db, client) + if err := collector.Collect(ctx, latestHeight-50); err != nil { + return err + } + + return nil +} + +func main() { + ctx := clictx.From(context.Background()) + + // Init an adapter for a local PostgreSQL database running with the default values + params := map[string]string{"sslmode": "disable"} + db, err := postgres.NewAdapter(dbName, postgres.WithParams(params)) + if err != nil { + log.Fatal(err) + } + + if err := collect(ctx, db); err != nil { + log.Fatal(err) + } +} +``` + +## Queries + +Collected data can be queried through the data backend adapters using event queries or +cursor-based queries. + +Queries support sorting, paging and filtering by using different options during creation. +The cursor-based ones also support the selection of specific fields or properties and also +passing arguments in cases where the query is a function. + +By default no sorting, filtering nor paging is applied to the queries. + +### Event queries + +The event queries return events and their attributes as `[]cosmostxcollector.query.Event`. + +### Example: Query events + +The example reads transfer events from Cosmos' bank module and paginates the results. + +```go +import ( + "context" + + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector/adapter/postgres" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector/query" +) + +func queryBankTransferEvents(ctx context.Context, db postgres.Adapter) ([]query.Event, error) { + // Create an event query that returns events of type "transfer" + qry := query.NewEventQuery( + query.WithFilters( + // Filter transfer events from Cosmos' bank module + postgres.FilterByEventType(banktypes.EventTypeTransfer), + ), + query.WithPageSize(10), + query.AtPage(1), + ) + + // Execute the query + return db.QueryEvents(ctx, qry) +} +``` + +### Cursor-based queries + +This type of queries is meant to be used in contexts where the Event queries are not +useful. + +Cursor-based queries can query a single "entity" which can be a table, view or function +in relational databases or a collection or function in non relational data backends. + +The result of these types of queries is a cursor that implements the `cosmostxcollector.query.Cursor` +interface. + +### Example: Query events using cursors + +```go +import ( + "context" + + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector/adapter/postgres" + "github.com/ignite/cli/ignite/pkg/cosmostxcollector/query" +) + +func queryBankTransferEventIDs(ctx context.Context, db postgres.Adapter) (ids []int64, err error) { + // Create a query that returns the IDs for events of type "transfer" + qry := query.New( + "event", + query.Fields("id"), + query.WithFilters( + // Filter transfer events from Cosmos' bank module + postgres.NewFilter("type", banktypes.EventTypeTransfer), + ), + query.WithPageSize(10), + query.AtPage(1), + query.SortByFields(query.SortOrderAsc, "id"), + ) + + // Execute the query + cr, err := db.Query(ctx, qry) + if err != nil { + return nil, err + } + + // Read the results + for cr.Next() { + var eventID int64 + + if err := cr.Scan(&eventID); err != nil { + return nil, err + } + + ids = append(ids, eventID) + } + + return ids, nil +} +``` diff --git a/docs/versioned_docs/version-v0.27.2/08-references/01-cli.md b/docs/versioned_docs/version-v0.27.2/08-references/01-cli.md new file mode 100644 index 0000000000..0865265c21 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/08-references/01-cli.md @@ -0,0 +1,4146 @@ +--- +description: Ignite CLI docs. +--- + +# CLI commands + +Documentation for Ignite CLI. +## ignite + +Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain + +**Synopsis** + +Ignite CLI is a tool for creating sovereign blockchains built with Cosmos SDK, the world’s +most popular modular blockchain framework. Ignite CLI offers everything you need to scaffold, +test, build, and launch your blockchain. + +To get started, create a blockchain: + + ignite scaffold chain example + + +**Options** + +``` + -h, --help help for ignite +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node +* [ignite completion](#ignite-completion) - Generate the autocompletion script for the specified shell +* [ignite docs](#ignite-docs) - Show Ignite CLI docs +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite node](#ignite-node) - Make requests to a live blockchain node +* [ignite plugin](#ignite-plugin) - Handle plugins +* [ignite relayer](#ignite-relayer) - Connect blockchains with an IBC relayer +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more +* [ignite tools](#ignite-tools) - Tools for advanced users +* [ignite version](#ignite-version) - Print the current build information + + +## ignite account + +Create, delete, and show Ignite accounts + +**Synopsis** + +Commands for managing Ignite accounts. An Ignite account is a private/public +keypair stored in a keyring. Currently Ignite accounts are used when interacting +with Ignite relayer commands and when using "ignite network" commands. + +Note: Ignite account commands are not for managing your chain's keys and accounts. Use +you chain's binary to manage accounts from "config.yml". For example, if your +blockchain is called "mychain", use "mychaind keys" to manage keys for the +chain. + + +**Options** + +``` + -h, --help help for account + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite account create](#ignite-account-create) - Create a new account +* [ignite account delete](#ignite-account-delete) - Delete an account by name +* [ignite account export](#ignite-account-export) - Export an account as a private key +* [ignite account import](#ignite-account-import) - Import an account by using a mnemonic or a private key +* [ignite account list](#ignite-account-list) - Show a list of all accounts +* [ignite account show](#ignite-account-show) - Show detailed information about a particular account + + +## ignite account create + +Create a new account + +``` +ignite account create [name] [flags] +``` + +**Options** + +``` + -h, --help help for create +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite account delete + +Delete an account by name + +``` +ignite account delete [name] [flags] +``` + +**Options** + +``` + -h, --help help for delete +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite account export + +Export an account as a private key + +``` +ignite account export [name] [flags] +``` + +**Options** + +``` + -h, --help help for export + --non-interactive do not enter into interactive mode + --passphrase string passphrase to encrypt the exported key + --path string path to export private key. default: ./key_[name] +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite account import + +Import an account by using a mnemonic or a private key + +``` +ignite account import [name] [flags] +``` + +**Options** + +``` + -h, --help help for import + --non-interactive do not enter into interactive mode + --passphrase string passphrase to decrypt the imported key (ignored when secret is a mnemonic) + --secret string Your mnemonic or path to your private key (use interactive mode instead to securely pass your mnemonic) +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite account list + +Show a list of all accounts + +``` +ignite account list [flags] +``` + +**Options** + +``` + --address-prefix string account address prefix (default "cosmos") + -h, --help help for list +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite account show + +Show detailed information about a particular account + +``` +ignite account show [name] [flags] +``` + +**Options** + +``` + --address-prefix string account address prefix (default "cosmos") + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite account](#ignite-account) - Create, delete, and show Ignite accounts + + +## ignite chain + +Build, init and start a blockchain node + +**Synopsis** + +Commands in this namespace let you to build, initialize, and start your +blockchain node locally for development purposes. + +To run these commands you should be inside the project's directory so that +Ignite can find the source code. To ensure that you are, run "ls", you should +see the following files in the output: "go.mod", "x", "proto", "app", etc. + +By default the "build" command will identify the "main" package of the project, +install dependencies if necessary, set build flags, compile the project into a +binary and install the binary. The "build" command is useful if you just want +the compiled binary, for example, to initialize and start the chain manually. It +can also be used to release your chain's binaries automatically as part of +continuous integration workflow. + +The "init" command will build the chain's binary and use it to initialize a +local validator node. By default the validator node will be initialized in your +$HOME directory in a hidden directory that matches the name of your project. +This directory is called a data directory and contains a chain's genesis file +and a validator key. This command is useful if you want to quickly build and +initialize the data directory and use the chain's binary to manually start the +blockchain. The "init" command is meant only for development purposes, not +production. + +The "serve" command builds, initializes, and starts your blockchain locally with +a single validator node for development purposes. "serve" also watches the +source code directory for file changes and intelligently +re-builds/initializes/starts the chain, essentially providing "code-reloading". +The "serve" command is meant only for development purposes, not production. + +To distinguish between production and development consider the following. + +In production, blockchains often run the same software on many validator nodes +that are run by different people and entities. To launch a blockchain in +production, the validator entities coordinate the launch process to start their +nodes simultaneously. + +During development, a blockchain can be started locally on a single validator +node. This convenient process lets you restart a chain quickly and iterate +faster. Starting a chain on a single node in development is similar to starting +a traditional web application on a local server. + +The "faucet" command lets you send tokens to an address from the "faucet" +account defined in "config.yml". Alternatively, you can use the chain's binary +to send token from any other account that exists on chain. + +The "simulate" command helps you start a simulation testing process for your +chain. + + +**Options** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -h, --help help for chain + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite chain build](#ignite-chain-build) - Build a node binary +* [ignite chain debug](#ignite-chain-debug) - Launch a debugger for a blockchain app +* [ignite chain faucet](#ignite-chain-faucet) - Send coins to an account +* [ignite chain init](#ignite-chain-init) - Initialize your chain +* [ignite chain serve](#ignite-chain-serve) - Start a blockchain node in development +* [ignite chain simulate](#ignite-chain-simulate) - Run simulation testing for the blockchain + + +## ignite chain build + +Build a node binary + +**Synopsis** + + +The build command compiles the source code of the project into a binary and +installs the binary in the $(go env GOPATH)/bin directory. + +You can customize the output directory for the binary using a flag: + + ignite chain build --output dist + +To compile the binary Ignite first compiles protocol buffer (proto) files into +Go source code. Proto files contain required type and services definitions. If +you're using another program to compile proto files, you can use a flag to tell +Ignite to skip the proto compilation step: + + ignite chain build --skip-proto + +Afterwards, Ignite install dependencies specified in the go.mod file. By default +Ignite doesn't check that dependencies of the main module stored in the module +cache have not been modified since they were downloaded. To enforce dependency +checking (essentially, running "go mod verify") use a flag: + + ignite chain build --check-dependencies + +Next, Ignite identifies the "main" package of the project. By default the "main" +package is located in "cmd/{app}d" directory, where "{app}" is the name of the +scaffolded project and "d" stands for daemon. If your project contains more +than one "main" package, specify the path to the one that Ignite should compile +in config.yml: + + build: + main: custom/path/to/main + +By default the binary name will match the top-level module name (specified in +go.mod) with a suffix "d". This can be customized in config.yml: + + build: + binary: mychaind + +You can also specify custom linker flags: + + build: + ldflags: + - "-X main.Version=development" + - "-X main.Date=01/05/2022T19:54" + +To build binaries for a release, use the --release flag. The binaries for one or +more specified release targets are built in a "release/" directory in the +project's source directory. Specify the release targets with GOOS:GOARCH build +tags. If the optional --release.targets is not specified, a binary is created +for your current environment. + + ignite chain build --release -t linux:amd64 -t darwin:amd64 -t darwin:arm64 + + +``` +ignite chain build [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + --debug build a debug binary + -h, --help help for build + -o, --output string binary output path + -p, --path string path of the app (default ".") + --release build for a release + --release.prefix string tarball prefix for each release target. Available only with --release flag + -t, --release.targets strings release targets. Available only with --release flag + --skip-proto skip file generation from proto + -v, --verbose verbose output +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite chain debug + +Launch a debugger for a blockchain app + +**Synopsis** + +The debug command starts a debug server and launches a debugger. + +Ignite uses the Delve debugger by default. Delve enables you to interact with +your program by controlling the execution of the process, evaluating variables, +and providing information of thread / goroutine state, CPU register state and +more. + +A debug server can optionally be started in cases where default terminal client +is not desirable. When the server starts it first runs the blockchain app, +attaches to it and finally waits for a client connection. It accepts both +JSON-RPC or DAP client connections. + +To start a debug server use the following flag: + + ignite chain debug --server + +To start a debug server with a custom address use the following flags: + + ignite chain debug --server --server-address 127.0.0.1:30500 + +The debug server stops automatically when the client connection is closed. + + +``` +ignite chain debug [flags] +``` + +**Options** + +``` + -h, --help help for debug + -p, --path string path of the app (default ".") + --server start a debug server + --server-address string debug server address (default "127.0.0.1:30500") +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite chain faucet + +Send coins to an account + +``` +ignite chain faucet [address] [coin<,...>] [flags] +``` + +**Options** + +``` + -h, --help help for faucet + --home string directory where the blockchain node is initialized + -p, --path string path of the app (default ".") + -v, --verbose verbose output +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite chain init + +Initialize your chain + +**Synopsis** + +The init command compiles and installs the binary (like "ignite chain build") +and uses that binary to initialize the blockchain's data directory for one +validator. To learn how the build process works, refer to "ignite chain build +--help". + +By default, the data directory will be initialized in $HOME/.mychain, where +"mychain" is the name of the project. To set a custom data directory use the +--home flag or set the value in config.yml: + + validators: + - name: alice + bonded: '100000000stake' + home: "~/.customdir" + +The data directory contains three files in the "config" directory: app.toml, +config.toml, client.toml. These files let you customize the behavior of your +blockchain node and the client executable. When a chain is re-initialized the +data directory can be reset. To make some values in these files persistent, set +them in config.yml: + + validators: + - name: alice + bonded: '100000000stake' + app: + minimum-gas-prices: "0.025stake" + config: + consensus: + timeout_commit: "5s" + timeout_propose: "5s" + client: + output: "json" + +The configuration above changes the minimum gas price of the validator (by +default the gas price is set to 0 to allow "free" transactions), sets the block +time to 5s, and changes the output format to JSON. To see what kind of values +this configuration accepts see the generated TOML files in the data directory. + +As part of the initialization process Ignite creates on-chain accounts with +token balances. By default, config.yml has two accounts in the top-level +"accounts" property. You can add more accounts and change their token balances. +Refer to config.yml guide to see which values you can set. + +One of these accounts is a validator account and the amount of self-delegated +tokens can be set in the top-level "validator" property. + +One of the most important components of an initialized chain is the genesis +file, the 0th block of the chain. The genesis file is stored in the data +directory "config" subdirectory and contains the initial state of the chain, +including consensus and module parameters. You can customize the values of the +genesis in config.yml: + + genesis: + app_state: + staking: + params: + bond_denom: "foo" + +The example above changes the staking token to "foo". If you change the staking +denom, make sure the validator account has the right tokens. + +The init command is meant to be used ONLY FOR DEVELOPMENT PURPOSES. Under the +hood it runs commands like "appd init", "appd add-genesis-account", "appd +gentx", and "appd collect-gentx". For production, you may want to run these +commands manually to ensure a production-level node initialization. + + +``` +ignite chain init [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + --debug build a debug binary + -h, --help help for init + --home string directory where the blockchain node is initialized + -p, --path string path of the app (default ".") + --skip-proto skip file generation from proto +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite chain serve + +Start a blockchain node in development + +**Synopsis** + +The serve command compiles and installs the binary (like "ignite chain build"), +uses that binary to initialize the blockchain's data directory for one validator +(like "ignite chain init"), and starts the node locally for development purposes +with automatic code reloading. + +Automatic code reloading means Ignite starts watching the project directory. +Whenever a file change is detected, Ignite automatically rebuilds, reinitializes +and restarts the node. + +Whenever possible Ignite will try to keep the current state of the chain by +exporting and importing the genesis file. + +To force Ignite to start from a clean slate even if a genesis file exists, use +the following flag: + + ignite chain serve --reset-once + +To force Ignite to reset the state every time the source code is modified, use +the following flag: + + ignite chain serve --force-reset + +With Ignite it's possible to start more than one blockchain from the same source +code using different config files. This is handy if you're building +inter-blockchain functionality and, for example, want to try sending packets +from one blockchain to another. To start a node using a specific config file: + + ignite chain serve --config mars.yml + +The serve command is meant to be used ONLY FOR DEVELOPMENT PURPOSES. Under the +hood, it runs "appd start", where "appd" is the name of your chain's binary. For +production, you may want to run "appd start" manually. + + +``` +ignite chain serve [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + -f, --force-reset force reset of the app state on start and every source change + --generate-clients generate code for the configured clients on reset or source code change + -h, --help help for serve + --home string directory where the blockchain node is initialized + -p, --path string path of the app (default ".") + --quit-on-fail quit program if the app fails to start + -r, --reset-once reset the app state once on init + --skip-proto skip file generation from proto + -v, --verbose verbose output +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite chain simulate + +Run simulation testing for the blockchain + +**Synopsis** + +Run simulation testing for the blockchain. It sends many randomized-input messages of each module to a simulated node and checks if invariants break + +``` +ignite chain simulate [flags] +``` + +**Options** + +``` + --blockSize int operations per block (default 30) + --exportParamsHeight int height to which export the randomly generated params + --exportParamsPath string custom file path to save the exported params JSON + --exportStatePath string custom file path to save the exported app state JSON + --exportStatsPath string custom file path to save the exported simulation statistics JSON + --genesis string custom simulation genesis file; cannot be used with params file + --genesisTime int override genesis UNIX time instead of using a random UNIX time + -h, --help help for simulate + --initialBlockHeight int initial block to start the simulation (default 1) + --lean lean simulation log output + --numBlocks int number of new blocks to simulate from the initial block height (default 200) + --params string custom simulation params file which overrides any random params; cannot be used with genesis + --period uint run slow invariants only once every period assertions + --printAllInvariants print all invariants if a broken invariant is found + --seed int simulation random seed (default 42) + --simulateEveryOperation run slow invariants every operation + -v, --verbose verbose log output +``` + +**Options inherited from parent commands** + +``` + -c, --config string path to Ignite config file (default: ./config.yml) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite chain](#ignite-chain) - Build, init and start a blockchain node + + +## ignite completion + +Generate the autocompletion script for the specified shell + +**Synopsis** + +Generate the autocompletion script for ignite for the specified shell. +See each sub-command's help for details on how to use the generated script. + + +**Options** + +``` + -h, --help help for completion +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite completion bash](#ignite-completion-bash) - Generate the autocompletion script for bash +* [ignite completion fish](#ignite-completion-fish) - Generate the autocompletion script for fish +* [ignite completion powershell](#ignite-completion-powershell) - Generate the autocompletion script for powershell +* [ignite completion zsh](#ignite-completion-zsh) - Generate the autocompletion script for zsh + + +## ignite completion bash + +Generate the autocompletion script for bash + +**Synopsis** + +Generate the autocompletion script for the bash shell. + +This script depends on the 'bash-completion' package. +If it is not installed already, you can install it via your OS's package manager. + +To load completions in your current shell session: + + source <(ignite completion bash) + +To load completions for every new session, execute once: + +**#### Linux:** + + ignite completion bash > /etc/bash_completion.d/ignite + +**#### macOS:** + + ignite completion bash > $(brew --prefix)/etc/bash_completion.d/ignite + +You will need to start a new shell for this setup to take effect. + + +``` +ignite completion bash +``` + +**Options** + +``` + -h, --help help for bash + --no-descriptions disable completion descriptions +``` + +**SEE ALSO** + +* [ignite completion](#ignite-completion) - Generate the autocompletion script for the specified shell + + +## ignite completion fish + +Generate the autocompletion script for fish + +**Synopsis** + +Generate the autocompletion script for the fish shell. + +To load completions in your current shell session: + + ignite completion fish | source + +To load completions for every new session, execute once: + + ignite completion fish > ~/.config/fish/completions/ignite.fish + +You will need to start a new shell for this setup to take effect. + + +``` +ignite completion fish [flags] +``` + +**Options** + +``` + -h, --help help for fish + --no-descriptions disable completion descriptions +``` + +**SEE ALSO** + +* [ignite completion](#ignite-completion) - Generate the autocompletion script for the specified shell + + +## ignite completion powershell + +Generate the autocompletion script for powershell + +**Synopsis** + +Generate the autocompletion script for powershell. + +To load completions in your current shell session: + + ignite completion powershell | Out-String | Invoke-Expression + +To load completions for every new session, add the output of the above command +to your powershell profile. + + +``` +ignite completion powershell [flags] +``` + +**Options** + +``` + -h, --help help for powershell + --no-descriptions disable completion descriptions +``` + +**SEE ALSO** + +* [ignite completion](#ignite-completion) - Generate the autocompletion script for the specified shell + + +## ignite completion zsh + +Generate the autocompletion script for zsh + +**Synopsis** + +Generate the autocompletion script for the zsh shell. + +If shell completion is not already enabled in your environment you will need +to enable it. You can execute the following once: + + echo "autoload -U compinit; compinit" >> ~/.zshrc + +To load completions in your current shell session: + + source <(ignite completion zsh); compdef _ignite ignite + +To load completions for every new session, execute once: + +**#### Linux:** + + ignite completion zsh > "${fpath[1]}/_ignite" + +**#### macOS:** + + ignite completion zsh > $(brew --prefix)/share/zsh/site-functions/_ignite + +You will need to start a new shell for this setup to take effect. + + +``` +ignite completion zsh [flags] +``` + +**Options** + +``` + -h, --help help for zsh + --no-descriptions disable completion descriptions +``` + +**SEE ALSO** + +* [ignite completion](#ignite-completion) - Generate the autocompletion script for the specified shell + + +## ignite docs + +Show Ignite CLI docs + +``` +ignite docs [flags] +``` + +**Options** + +``` + -h, --help help for docs +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain + + +## ignite generate + +Generate clients, API docs from source code + +**Synopsis** + +Generate clients, API docs from source code. + +Such as compiling protocol buffer files into Go or implement particular +functionality, for example, generating an OpenAPI spec. + +Produced source code can be regenerated by running a command again and is not +meant to be edited by hand. + + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for generate + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite generate composables](#ignite-generate-composables) - TypeScript frontend client and Vue 3 composables +* [ignite generate hooks](#ignite-generate-hooks) - TypeScript frontend client and React hooks +* [ignite generate openapi](#ignite-generate-openapi) - OpenAPI spec for your chain +* [ignite generate proto-go](#ignite-generate-proto-go) - Compile protocol buffer files to Go source code required by Cosmos SDK +* [ignite generate ts-client](#ignite-generate-ts-client) - TypeScript frontend client +* [ignite generate vuex](#ignite-generate-vuex) - *DEPRECATED* TypeScript frontend client and Vuex stores + + +## ignite generate composables + +TypeScript frontend client and Vue 3 composables + +``` +ignite generate composables [flags] +``` + +**Options** + +``` + -h, --help help for composables + -o, --output string Vue 3 composables output path + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite generate hooks + +TypeScript frontend client and React hooks + +``` +ignite generate hooks [flags] +``` + +**Options** + +``` + -h, --help help for hooks + -o, --output string React hooks output path + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite generate openapi + +OpenAPI spec for your chain + +``` +ignite generate openapi [flags] +``` + +**Options** + +``` + -h, --help help for openapi + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite generate proto-go + +Compile protocol buffer files to Go source code required by Cosmos SDK + +``` +ignite generate proto-go [flags] +``` + +**Options** + +``` + -h, --help help for proto-go + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite generate ts-client + +TypeScript frontend client + +**Synopsis** + +Generate a framework agnostic TypeScript client for your blockchain project. + +By default the TypeScript client is generated in the "ts-client/" directory. You +can customize the output directory in config.yml: + + client: + typescript: + path: new-path + +Output can also be customized by using a flag: + + ignite generate ts-client --output new-path + +TypeScript client code can be automatically regenerated on reset or source code +changes when the blockchain is started with a flag: + + ignite chain serve --generate-clients + + +``` +ignite generate ts-client [flags] +``` + +**Options** + +``` + -h, --help help for ts-client + -o, --output string TypeScript client output path + --use-cache use build cache to speed-up generation + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite generate vuex + +*DEPRECATED* TypeScript frontend client and Vuex stores + +``` +ignite generate vuex [flags] +``` + +**Options** + +``` + -h, --help help for vuex + -o, --output string Vuex store output path + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --clear-cache clear the build cache (advanced) + -p, --path string path of the app (default ".") +``` + +**SEE ALSO** + +* [ignite generate](#ignite-generate) - Generate clients, API docs from source code + + +## ignite network + +Launch a blockchain in production + +**Synopsis** + + +Ignite Network commands allow to coordinate the launch of sovereign Cosmos blockchains. + +To launch a Cosmos blockchain you need someone to be a coordinator and others to +be validators. These are just roles, anyone can be a coordinator or a validator. +A coordinator publishes information about a chain to be launched on the Ignite +blockchain, approves validator requests and coordinates the launch. Validators +send requests to join a chain and start their nodes when a blockchain is ready +for launch. + +To publish the information about your chain as a coordinator run the following +command (the URL should point to a repository with a Cosmos SDK chain): + + ignite network chain publish github.com/ignite/example + +This command will return a launch identifier you will be using in the following +commands. Let's say this identifier is 42. + +Next, ask validators to initialize their nodes and request to join the network +as validators. For a testnet you can use the default values suggested by the +CLI. + + ignite network chain init 42 + + ignite network chain join 42 --amount 95000000stake + +As a coordinator list all validator requests: + + ignite network request list 42 + +Approve validator requests: + + ignite network request approve 42 1,2 + +Once you've approved all validators you need in the validator set, announce that +the chain is ready for launch: + + ignite network chain launch 42 + +Validators can now prepare their nodes for launch: + + ignite network chain prepare 42 + +The output of this command will show a command that a validator would use to +launch their node, for example “exampled --home ~/.example”. After enough +validators launch their nodes, a blockchain will be live. + + +**Options** + +``` + -h, --help help for network + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch +* [ignite network coordinator](#ignite-network-coordinator) - Show and update a coordinator profile +* [ignite network profile](#ignite-network-profile) - Show the address profile info +* [ignite network project](#ignite-network-project) - Handle projects +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests +* [ignite network reward](#ignite-network-reward) - Manage network rewards +* [ignite network tool](#ignite-network-tool) - Commands to run subsidiary tools +* [ignite network validator](#ignite-network-validator) - Show and update a validator profile +* [ignite network version](#ignite-network-version) - Version of the plugin + + +## ignite network chain + +Publish a chain, join as a validator and prepare node for launch + +**Synopsis** + +The "chain" namespace features the most commonly used commands for launching +blockchains with Ignite. + +As a coordinator you "publish" your blockchain to Ignite. When enough validators +are approved for the genesis and no changes are excepted to be made to the +genesis, a coordinator announces that the chain is ready for launch with the +"launch" command. In the case of an unsuccessful launch, the coordinator can revert it +using the "revert-launch" command. + +As a validator, you "init" your node and apply to become a validator for a +blockchain with the "join" command. After the launch of the chain is announced, +validators can generate the finalized genesis and download the list of peers with the +"prepare" command. + +The "install" command can be used to download, compile the source code and +install the chain's binary locally. The binary can be used, for example, to +initialize a validator node or to interact with the chain after it has been +launched. + +All chains published to Ignite can be listed by using the "list" command. + + +**Options** + +``` + -h, --help help for chain +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network chain init](#ignite-network-chain-init) - Initialize a chain from a published chain ID +* [ignite network chain install](#ignite-network-chain-install) - Install chain binary for a launch +* [ignite network chain join](#ignite-network-chain-join) - Request to join a network as a validator +* [ignite network chain launch](#ignite-network-chain-launch) - Trigger the launch of a chain +* [ignite network chain list](#ignite-network-chain-list) - List published chains +* [ignite network chain prepare](#ignite-network-chain-prepare) - Prepare the chain for launch +* [ignite network chain publish](#ignite-network-chain-publish) - Publish a new chain to start a new network +* [ignite network chain revert-launch](#ignite-network-chain-revert-launch) - Revert launch of a network as a coordinator +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network chain init + +Initialize a chain from a published chain ID + +**Synopsis** + +Ignite network chain init is a command used by validators to initialize a +validator node for a blockchain from the information stored on the Ignite chain. + + ignite network chain init 42 + +This command fetches the information about a chain with launch ID 42. The source +code of the chain is cloned in a temporary directory, and the node's binary is +compiled from the source. The binary is then used to initialize the node. By +default, Ignite uses "~/spn/[launch-id]/" as the home directory for the blockchain. + +An important part of initializing a validator node is creation of the gentx (a +transaction that adds a validator at the genesis of the chain). + +The "init" command will prompt for values like self-delegation and commission. +These values will be used in the validator's gentx. You can use flags to provide +the values in non-interactive mode. + +Use the "--home" flag to choose a different path for the home directory of the +blockchain: + + ignite network chain init 42 --home ~/mychain + +The end result of the "init" command is a validator home directory with a +genesis validator transaction (gentx) file. + +``` +ignite network chain init [launch-id] [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for init + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --validator-account string account for the chain validator (default "default") + --validator-details string details about the validator + --validator-gas-price string validator gas price + --validator-identity string validator identity signature (ex. UPort or Keybase) + --validator-moniker string custom validator moniker + --validator-security-contact string validator security contact email + --validator-self-delegation string validator minimum self delegation + --validator-website string associate a website with the validator + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain install + +Install chain binary for a launch + +``` +ignite network chain install [launch-id] [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for install +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain join + +Request to join a network as a validator + +**Synopsis** + +The "join" command is used by validators to send a request to join a blockchain. +The required argument is a launch ID of a blockchain. The "join" command expects +that the validator has already setup a home directory for the blockchain and has +a gentx either by running "ignite network chain init" or initializing the data +directory manually with the chain's binary. + +By default the "join" command just sends the request to join as a validator. +However, often a validator also needs to request an genesis account with a token +balance to afford self-delegation. + +The following command will send a request to join blockchain with launch ID 42 +as a validator and request to be added as an account with a token balance of +95000000 STAKE. + + ignite network chain join 42 --amount 95000000stake + +A request to join as a validator contains a gentx file. Ignite looks for gentx +in a home directory used by "ignite network chain init" by default. To use a +different directory, use the "--home" flag or pass a gentx file directly with +the "--gentx" flag. + +To join a chain as a validator, you must provide the IP address of your node so +that other validators can connect to it. The join command will ask you for the +IP address and will attempt to automatically detect and fill in the value. If +you want to manually specify the IP address, you can use the "--peer-address" +flag: + + ignite network chain join 42 --peer-address 0.0.0.0 + +Since "join" broadcasts a transaction to the Ignite blockchain, you will need an +account on the Ignite blockchain. During the testnet phase, however, Ignite +automatically requests tokens from a faucet. + + +``` +ignite network chain join [launch-id] [flags] +``` + +**Options** + +``` + --amount string amount of coins for account request (ignored if coordinator has fixed the account balances or if --no-acount flag is set) + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --from string account name to use for sending transactions to SPN (default "default") + --gentx string path to a gentx json file + -h, --help help for join + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --no-account prevent sending a request for a genesis account + --peer-address string peer's address + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain launch + +Trigger the launch of a chain + +**Synopsis** + +The launch command communicates to the world that the chain is ready to be +launched. + +Only the coordinator of the chain can execute the launch command. + + ignite network chain launch 42 + +After the launch command is executed no changes to the genesis are accepted. For +example, validators will no longer be able to successfully execute the "ignite +network chain join" command to apply as a validator. + +The launch command sets the date and time after which the chain will start. By +default, the current time is set. To give validators more time to prepare for +the launch, set the time with the "--launch-time" flag: + + ignite network chain launch 42 --launch-time 2023-01-01T00:00:00Z + +After the launch command is executed, validators can generate the finalized +genesis and prepare their nodes for the launch. For example, validators can run +"ignite network chain prepare" to generate the genesis and populate the peer +list. + +If you want to change the launch time or open up the genesis file for changes +you can use "ignite network chain revert-launch" to make it possible, for +example, to accept new validators and add accounts. + + +``` +ignite network chain launch [launch-id] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for launch + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --launch-time string timestamp the chain is effectively launched (example "2022-01-01T00:00:00Z") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain list + +List published chains + +``` +ignite network chain list [flags] +``` + +**Options** + +``` + --advanced show advanced information about the chains + -h, --help help for list + --limit uint limit of results per page (default 100) + --page uint page for chain list result (default 1) +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain prepare + +Prepare the chain for launch + +**Synopsis** + +The prepare command prepares a validator node for the chain launch by generating +the final genesis and adding IP addresses of peers to the validator's +configuration file. + + ignite network chain prepare 42 + +By default, Ignite uses "$HOME/spn/LAUNCH_ID" as the data directory. If you used +a different data directory when initializing the node, use the "--home" flag and +set the correct path to the data directory. + +Ignite generates the genesis file in "config/genesis.json" and adds peer IPs by +modifying "config/config.toml". + +The prepare command should be executed after the coordinator has triggered the +chain launch and finalized the genesis with "ignite network chain launch". You +can force Ignite to run the prepare command without checking if the launch has +been triggered with the "--force" flag (this is not recommended). + +After the prepare command is executed the node is ready to be started. + + +``` +ignite network chain prepare [launch-id] [flags] +``` + +**Options** + +``` + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + -f, --force force the prepare command to run even if the chain is not launched + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for prepare + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain publish + +Publish a new chain to start a new network + +**Synopsis** + +To begin the process of launching a blockchain with Ignite, a coordinator needs +to publish the information about a blockchain. The only required bit of +information is the URL of the source code of the blockchain. + +The following command publishes the information about an example blockchain: + + ignite network chain publish github.com/ignite/example + +This command fetches the source code of the blockchain, compiles the binary, +verifies that a blockchain can be started with the binary, and publishes the +information about the blockchain to Ignite. Currently, only public repositories +are supported. The command returns an integer number that acts as an identifier +of the chain on Ignite. + +By publishing a blockchain on Ignite you become the "coordinator" of this +blockchain. A coordinator is an account that has the authority to approve and +reject validator requests, set parameters of the blockchain and trigger the +launch of the chain. + +The default Git branch is used when publishing a chain. If you want to use a +specific branch, tag or a commit hash, use "--branch", "--tag", or "--hash" +flags respectively. + +The repository name is used as the default chain ID. Ignite does not ensure that +chain IDs are unique, but they have to have a valid format: [string]-[integer]. +To set a custom chain ID use the "--chain-id" flag. + + ignite network chain publish github.com/ignite/example --chain-id foo-1 + +Once the chain is published users can request accounts with coin balances to be +added to the chain's genesis. By default, users are free to request any number +of tokens. If you want all users requesting tokens to get the same amount, use +the "--account-balance" flag with a list of coins. + + ignite network chain publish github.com/ignite/example --account-balance 2000foocoin + + +``` +ignite network chain publish [source-url] [flags] +``` + +**Options** + +``` + --account-balance string balance for each approved genesis account for the chain + --amount string amount of coins for account request + --branch string Git branch to use for the repo + --chain-id string chain ID to use for this network + --check-dependencies verify that cached dependencies have not been modified since they were downloaded + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + --genesis-config string name of an Ignite config file in the repo for custom Genesis + --genesis-url string URL to a custom Genesis + --hash string Git hash to use for the repo + -h, --help help for publish + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --mainnet initialize a mainnet project + --metadata string add chain metadata + --no-check skip verifying chain's integrity + --project uint project ID to use for this network + --reward.coins string reward coins + --reward.height int last reward height + --shares string add shares for the project + --tag string Git tag to use for the repo + --total-supply string add a total of the mainnet of a project + -y, --yes answers interactive yes/no questions with yes +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain revert-launch + +Revert launch of a network as a coordinator + +**Synopsis** + +The revert launch command reverts the previously scheduled launch of a chain. + +Only the coordinator of the chain can execute the launch command. + + ignite network chain revert-launch 42 + +After the revert launch command is executed, changes to the genesis of the chain +are allowed again. For example, validators will be able to request to join the +chain. Revert launch also resets the launch time. + + +``` +ignite network chain revert-launch [launch-id] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for revert-launch + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch + + +## ignite network chain show + +Show details of a chain + +**Options** + +``` + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain](#ignite-network-chain) - Publish a chain, join as a validator and prepare node for launch +* [ignite network chain show accounts](#ignite-network-chain-show-accounts) - Show all vesting and genesis accounts of the chain +* [ignite network chain show genesis](#ignite-network-chain-show-genesis) - Show the chain genesis file +* [ignite network chain show info](#ignite-network-chain-show-info) - Show info details of the chain +* [ignite network chain show peers](#ignite-network-chain-show-peers) - Show peers list of the chain +* [ignite network chain show validators](#ignite-network-chain-show-validators) - Show all validators of the chain + + +## ignite network chain show accounts + +Show all vesting and genesis accounts of the chain + +``` +ignite network chain show accounts [launch-id] [flags] +``` + +**Options** + +``` + -h, --help help for accounts + --prefix string account address prefix (default "spn") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network chain show genesis + +Show the chain genesis file + +``` +ignite network chain show genesis [launch-id] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for genesis + --out string path to output Genesis file (default "./genesis.json") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network chain show info + +Show info details of the chain + +``` +ignite network chain show info [launch-id] [flags] +``` + +**Options** + +``` + -h, --help help for info +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network chain show peers + +Show peers list of the chain + +``` +ignite network chain show peers [launch-id] [flags] +``` + +**Options** + +``` + -h, --help help for peers + --out string path to output peers list (default "./peers.txt") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network chain show validators + +Show all validators of the chain + +``` +ignite network chain show validators [launch-id] [flags] +``` + +**Options** + +``` + -h, --help help for validators + --prefix string account address prefix (default "spn") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network chain show](#ignite-network-chain-show) - Show details of a chain + + +## ignite network coordinator + +Show and update a coordinator profile + +**Options** + +``` + -h, --help help for coordinator +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network coordinator set](#ignite-network-coordinator-set) - Set an information in a coordinator profile +* [ignite network coordinator show](#ignite-network-coordinator-show) - Show a coordinator profile + + +## ignite network coordinator set + +Set an information in a coordinator profile + +**Synopsis** + +Coordinators on Ignite can set a profile containing a description for the coordinator. +The coordinator set command allows to set information for the coordinator. +The following information can be set: +- details: general information about the coordinator. +- identity: a piece of information to verify the identity of the coordinator with a system like Keybase or Veramo. +- website: website of the coordinator. + + +``` +ignite network coordinator set details|identity|website [value] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for set + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network coordinator](#ignite-network-coordinator) - Show and update a coordinator profile + + +## ignite network coordinator show + +Show a coordinator profile + +``` +ignite network coordinator show [address] [flags] +``` + +**Options** + +``` + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network coordinator](#ignite-network-coordinator) - Show and update a coordinator profile + + +## ignite network profile + +Show the address profile info + +``` +ignite network profile [project-id] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for profile + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production + + +## ignite network project + +Handle projects + +**Options** + +``` + -h, --help help for project +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network project account](#ignite-network-project-account) - Handle project accounts +* [ignite network project create](#ignite-network-project-create) - Create a project +* [ignite network project list](#ignite-network-project-list) - List published projects +* [ignite network project show](#ignite-network-project-show) - Show published project +* [ignite network project update](#ignite-network-project-update) - Update details fo the project of the project + + +## ignite network project account + +Handle project accounts + +**Options** + +``` + -h, --help help for account +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project](#ignite-network-project) - Handle projects +* [ignite network project account list](#ignite-network-project-account-list) - Show all mainnet and mainnet vesting of the project + + +## ignite network project account list + +Show all mainnet and mainnet vesting of the project + +``` +ignite network project account list [project-id] [flags] +``` + +**Options** + +``` + -h, --help help for list +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project account](#ignite-network-project-account) - Handle project accounts + + +## ignite network project create + +Create a project + +``` +ignite network project create [name] [total-supply] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for create + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --metadata string Add a metadata to the chain +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project](#ignite-network-project) - Handle projects + + +## ignite network project list + +List published projects + +``` +ignite network project list [flags] +``` + +**Options** + +``` + -h, --help help for list +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project](#ignite-network-project) - Handle projects + + +## ignite network project show + +Show published project + +``` +ignite network project show [project-id] [flags] +``` + +**Options** + +``` + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project](#ignite-network-project) - Handle projects + + +## ignite network project update + +Update details fo the project of the project + +``` +ignite network project update [project-id] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for update + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --metadata string update the project metadata + --name string update the project name + --total-supply string update the total of the mainnet of a project +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network project](#ignite-network-project) - Handle projects + + +## ignite network request + +Create, show, reject and approve requests + +**Synopsis** + +The "request" namespace contains commands for creating, showing, approving, and +rejecting requests. + +A request is mechanism in Ignite that allows changes to be made to the genesis +file like adding accounts with token balances and validators. Anyone can submit +a request, but only the coordinator of a chain can approve or reject a request. + +Each request has a status: + +* Pending: waiting for the approval of the coordinator +* Approved: approved by the coordinator, its content has been applied to the + launch information +* Rejected: rejected by the coordinator or the request creator + + +**Options** + +``` + -h, --help help for request +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network request add-account](#ignite-network-request-add-account) - Send request to add account +* [ignite network request approve](#ignite-network-request-approve) - Approve requests +* [ignite network request change-param](#ignite-network-request-change-param) - Send request to change a module param +* [ignite network request list](#ignite-network-request-list) - List all requests for a chain +* [ignite network request reject](#ignite-network-request-reject) - Reject requests +* [ignite network request remove-account](#ignite-network-request-remove-account) - Send request to remove a genesis account +* [ignite network request remove-validator](#ignite-network-request-remove-validator) - Send request to remove a validator +* [ignite network request show](#ignite-network-request-show) - Show detailed information about a request +* [ignite network request verify](#ignite-network-request-verify) - Verify the request and simulate the chain genesis from them + + +## ignite network request add-account + +Send request to add account + +**Synopsis** + +The "add account" command creates a new request to add an account with a given +address and a specified coin balance to the genesis of the chain. + +The request automatically fails to be applied if a genesis account or a vesting +account with an identical address is already specified in the launch +information. + +If a coordinator has specified that all genesis accounts on a chain should have +the same balance (useful for testnets, for example), the "add account" expects +only an address as an argument. Attempt to provide a token balance will result +in an error. + + +``` +ignite network request add-account [launch-id] [address] [coins] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for add-account + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request approve + +Approve requests + +**Synopsis** + +The "approve" command is used by a chain's coordinator to approve requests. +Multiple requests can be approved using a comma-separated list and/or using a +dash syntax. + + ignite network request approve 42 1,2,3-6,7,8 + +The command above approves requests with IDs from 1 to 8 included on a chain +with a launch ID 42. + +When requests are approved Ignite applies the requested changes and simulates +initializing and launching the chain locally. If the chain starts successfully, +requests are considered to be "verified" and are approved. If one or more +requested changes stop the chain from launching locally, the verification +process fails and the approval of all requests is canceled. To skip the +verification process use the "--no-verification" flag. + +Note that Ignite will try to approve requests in the same order as request IDs +are submitted to the "approve" command. + +``` +ignite network request approve [launch-id] [number<,...>] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for approve + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --no-verification approve the requests without verifying them +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request change-param + +Send request to change a module param + +``` +ignite network request change-param [launch-id] [module-name] [param-name] [value (json, string, number)] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for change-param + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request list + +List all requests for a chain + +``` +ignite network request list [launch-id] [flags] +``` + +**Options** + +``` + -h, --help help for list + --prefix string account address prefix (default "spn") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request reject + +Reject requests + +**Synopsis** + +The "reject" command is used by a chain's coordinator to reject requests. + + ignite network request reject 42 1,2,3-6,7,8 + +The syntax of the "reject" command is similar to that of the "approve" command. + + +``` +ignite network request reject [launch-id] [number<,...>] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for reject + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request remove-account + +Send request to remove a genesis account + +``` +ignite network request remove-account [launch-id] [address] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for remove-account + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request remove-validator + +Send request to remove a validator + +``` +ignite network request remove-validator [launch-id] [address] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for remove-validator + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request show + +Show detailed information about a request + +``` +ignite network request show [launch-id] [request-id] [flags] +``` + +**Options** + +``` + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network request verify + +Verify the request and simulate the chain genesis from them + +**Synopsis** + +The "verify" command applies selected requests to the genesis of a chain locally +to verify that approving these requests will result in a valid genesis that +allows a chain to launch without issues. This command does not approve requests, +only checks them. + + +``` +ignite network request verify [launch-id] [number<,...>] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for verify + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network request](#ignite-network-request) - Create, show, reject and approve requests + + +## ignite network reward + +Manage network rewards + +**Options** + +``` + -h, --help help for reward +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network reward release](#ignite-network-reward-release) - Connect the monitoring modules of launched chains with SPN +* [ignite network reward set](#ignite-network-reward-set) - set a network chain reward + + +## ignite network reward release + +Connect the monitoring modules of launched chains with SPN + +``` +ignite network reward release [launch-id] [chain-rpc] [flags] +``` + +**Options** + +``` + --create-client-only only create the network client id + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for release + --keyring-backend string keyring backend to store your account keys (default "test") + --spn-gaslimit int gas limit used for transactions on SPN (default 400000) + --spn-gasprice string gas price used for transactions on SPN (default "0.0000025uspn") + --testnet-account string testnet chain account (default "default") + --testnet-faucet string faucet address of the testnet chain + --testnet-gaslimit int gas limit used for transactions on testnet chain (default 400000) + --testnet-gasprice string gas price used for transactions on testnet chain (default "0.0000025stake") + --testnet-prefix string address prefix of the testnet chain (default "cosmos") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network reward](#ignite-network-reward) - Manage network rewards + + +## ignite network reward set + +set a network chain reward + +``` +ignite network reward set [launch-id] [last-reward-height] [coins] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for set + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network reward](#ignite-network-reward) - Manage network rewards + + +## ignite network tool + +Commands to run subsidiary tools + +**Options** + +``` + -h, --help help for tool +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network tool proxy-tunnel](#ignite-network-tool-proxy-tunnel) - Setup a proxy tunnel via HTTP + + +## ignite network tool proxy-tunnel + +Setup a proxy tunnel via HTTP + +**Synopsis** + +Starts an HTTP proxy server and HTTP proxy clients for each node that +needs HTTP tunneling. + +HTTP tunneling is activated **ONLY** if SPN_CONFIG_FILE has "tunneled_peers" +field inside with a list of tunneled peers/nodes. + +If you're using SPN as coordinator and do not want to allow HTTP tunneling +feature at all, you can prevent "spn.yml" file to being generated by not +approving validator requests that has HTTP tunneling enabled instead of plain +TCP connections. + +``` +ignite network tool proxy-tunnel SPN_CONFIG_FILE [flags] +``` + +**Options** + +``` + -h, --help help for proxy-tunnel +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network tool](#ignite-network-tool) - Commands to run subsidiary tools + + +## ignite network validator + +Show and update a validator profile + +**Options** + +``` + -h, --help help for validator +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production +* [ignite network validator set](#ignite-network-validator-set) - Set an information in a validator profile +* [ignite network validator show](#ignite-network-validator-show) - Show a validator profile + + +## ignite network validator set + +Set an information in a validator profile + +**Synopsis** + +Validators on Ignite can set a profile containing a description for the validator. +The validator set command allows to set information for the validator. +The following information can be set: +- details: general information about the validator. +- identity: piece of information to verify identity of the validator with a system like Keybase of Veramo. +- website: website of the validator. +- security: security contact for the validator. + + +``` +ignite network validator set details|identity|website|security [value] [flags] +``` + +**Options** + +``` + --from string account name to use for sending transactions to SPN (default "default") + -h, --help help for set + --home string home directory used for blockchains + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network validator](#ignite-network-validator) - Show and update a validator profile + + +## ignite network validator show + +Show a validator profile + +``` +ignite network validator show [address] [flags] +``` + +**Options** + +``` + -h, --help help for show +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network validator](#ignite-network-validator) - Show and update a validator profile + + +## ignite network version + +Version of the plugin + +**Synopsis** + +The version of the plugin to use to interact with a chain might be specified by the coordinator. + + +``` +ignite network version [flags] +``` + +**Options** + +``` + -h, --help help for version +``` + +**Options inherited from parent commands** + +``` + --local Use local SPN network + --nightly Use nightly SPN network + --spn-faucet-address string SPN faucet address (default "https://faucet.devnet.ignite.com:443") + --spn-node-address string SPN node address (default "https://rpc.devnet.ignite.com:443") +``` + +**SEE ALSO** + +* [ignite network](#ignite-network) - Launch a blockchain in production + + +## ignite node + +Make requests to a live blockchain node + +**Options** + +``` + -h, --help help for node + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite node query](#ignite-node-query) - Querying subcommands +* [ignite node tx](#ignite-node-tx) - Transactions subcommands + + +## ignite node query + +Querying subcommands + +**Options** + +``` + -h, --help help for query +``` + +**Options inherited from parent commands** + +``` + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node](#ignite-node) - Make requests to a live blockchain node +* [ignite node query bank](#ignite-node-query-bank) - Querying commands for the bank module +* [ignite node query tx](#ignite-node-query-tx) - Query for transaction by hash + + +## ignite node query bank + +Querying commands for the bank module + +**Options** + +``` + -h, --help help for bank +``` + +**Options inherited from parent commands** + +``` + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node query](#ignite-node-query) - Querying subcommands +* [ignite node query bank balances](#ignite-node-query-bank-balances) - Query for account balances by account name or address + + +## ignite node query bank balances + +Query for account balances by account name or address + +``` +ignite node query bank balances [from_account_or_address] [flags] +``` + +**Options** + +``` + --address-prefix string account address prefix (default "cosmos") + --count-total count total number of records in all balances to query for + -h, --help help for balances + --home string directory where the blockchain node is initialized + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --limit uint pagination limit of all balances to query for (default 100) + --offset uint pagination offset of all balances to query for + --page uint pagination page of all balances to query for. This sets offset to a multiple of limit (default 1) + --page-key string pagination page-key of all balances to query for + --reverse results are sorted in descending order +``` + +**Options inherited from parent commands** + +``` + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node query bank](#ignite-node-query-bank) - Querying commands for the bank module + + +## ignite node query tx + +Query for transaction by hash + +``` +ignite node query tx [hash] [flags] +``` + +**Options** + +``` + -h, --help help for tx +``` + +**Options inherited from parent commands** + +``` + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node query](#ignite-node-query) - Querying subcommands + + +## ignite node tx + +Transactions subcommands + +**Options** + +``` + --address-prefix string account address prefix (default "cosmos") + --fees string fees to pay along with transaction; eg: 10uatom + --gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default "auto") + --gas-prices string gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) + --generate-only build an unsigned transaction and write it to STDOUT + -h, --help help for tx + --home string directory where the blockchain node is initialized + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**Options inherited from parent commands** + +``` + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node](#ignite-node) - Make requests to a live blockchain node +* [ignite node tx bank](#ignite-node-tx-bank) - Bank transaction subcommands + + +## ignite node tx bank + +Bank transaction subcommands + +**Options** + +``` + -h, --help help for bank +``` + +**Options inherited from parent commands** + +``` + --address-prefix string account address prefix (default "cosmos") + --fees string fees to pay along with transaction; eg: 10uatom + --gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default "auto") + --gas-prices string gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) + --generate-only build an unsigned transaction and write it to STDOUT + --home string directory where the blockchain node is initialized + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node tx](#ignite-node-tx) - Transactions subcommands +* [ignite node tx bank send](#ignite-node-tx-bank-send) - Send funds from one account to another. + + +## ignite node tx bank send + +Send funds from one account to another. + +``` +ignite node tx bank send [from_account_or_address] [to_account_or_address] [amount] [flags] +``` + +**Options** + +``` + -h, --help help for send +``` + +**Options inherited from parent commands** + +``` + --address-prefix string account address prefix (default "cosmos") + --fees string fees to pay along with transaction; eg: 10uatom + --gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically (default "auto") + --gas-prices string gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) + --generate-only build an unsigned transaction and write it to STDOUT + --home string directory where the blockchain node is initialized + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --node string : to tendermint rpc interface for this chain (default "https://rpc.cosmos.network:443") +``` + +**SEE ALSO** + +* [ignite node tx bank](#ignite-node-tx-bank) - Bank transaction subcommands + + +## ignite plugin + +Handle plugins + +**Options** + +``` + -h, --help help for plugin +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite plugin add](#ignite-plugin-add) - Adds a plugin declaration to a plugin configuration +* [ignite plugin describe](#ignite-plugin-describe) - Output information about the a registered plugin +* [ignite plugin list](#ignite-plugin-list) - List declared plugins and status +* [ignite plugin remove](#ignite-plugin-remove) - Removes a plugin declaration from a chain's plugin configuration +* [ignite plugin scaffold](#ignite-plugin-scaffold) - Scaffold a new plugin +* [ignite plugin update](#ignite-plugin-update) - Update plugins + + +## ignite plugin add + +Adds a plugin declaration to a plugin configuration + +**Synopsis** + +Adds a plugin declaration to a plugin configuration. +Respects key value pairs declared after the plugin path to be added to the +generated configuration definition. +Example: + ignite plugin add github.com/org/my-plugin/ foo=bar baz=qux + +``` +ignite plugin add [path] [key=value]... [flags] +``` + +**Options** + +``` + -g, --global use global plugins configuration ($HOME/.ignite/plugins/plugins.yml) + -h, --help help for add +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite plugin describe + +Output information about the a registered plugin + +**Synopsis** + +Output information about a registered plugins commands and hooks. + +``` +ignite plugin describe [path] [flags] +``` + +**Options** + +``` + -h, --help help for describe +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite plugin list + +List declared plugins and status + +**Synopsis** + +Prints status and information of declared plugins + +``` +ignite plugin list [flags] +``` + +**Options** + +``` + -h, --help help for list +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite plugin remove + +Removes a plugin declaration from a chain's plugin configuration + +``` +ignite plugin remove [path] [flags] +``` + +**Options** + +``` + -g, --global use global plugins configuration ($HOME/.ignite/plugins/plugins.yml) + -h, --help help for remove +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite plugin scaffold + +Scaffold a new plugin + +**Synopsis** + +Scaffolds a new plugin in the current directory with the given repository path configured. A git repository will be created with the given module name, unless the current directory is already a git repository. + +``` +ignite plugin scaffold [github.com/org/repo] [flags] +``` + +**Options** + +``` + -h, --help help for scaffold +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite plugin update + +Update plugins + +**Synopsis** + +Updates a plugin specified by path. If no path is specified all declared plugins are updated + +``` +ignite plugin update [path] [flags] +``` + +**Options** + +``` + -h, --help help for update +``` + +**SEE ALSO** + +* [ignite plugin](#ignite-plugin) - Handle plugins + + +## ignite relayer + +Connect blockchains with an IBC relayer + +**Options** + +``` + -h, --help help for relayer +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite relayer configure](#ignite-relayer-configure) - Configure source and target chains for relaying +* [ignite relayer connect](#ignite-relayer-connect) - Link chains associated with paths and start relaying tx packets in between + + +## ignite relayer configure + +Configure source and target chains for relaying + +``` +ignite relayer configure [flags] +``` + +**Options** + +``` + -a, --advanced advanced configuration options for custom IBC modules + -h, --help help for configure + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") + --ordered set the channel as ordered + -r, --reset reset the relayer config + --source-account string source Account + --source-client-id string use a custom client id for source + --source-faucet string faucet address of the source chain + --source-gaslimit int gas limit used for transactions on source chain + --source-gasprice string gas price used for transactions on source chain + --source-port string IBC port ID on the source chain + --source-prefix string address prefix of the source chain + --source-rpc string RPC address of the source chain + --source-version string module version on the source chain + --target-account string target Account + --target-client-id string use a custom client id for target + --target-faucet string faucet address of the target chain + --target-gaslimit int gas limit used for transactions on target chain + --target-gasprice string gas price used for transactions on target chain + --target-port string IBC port ID on the target chain + --target-prefix string address prefix of the target chain + --target-rpc string RPC address of the target chain + --target-version string module version on the target chain +``` + +**SEE ALSO** + +* [ignite relayer](#ignite-relayer) - Connect blockchains with an IBC relayer + + +## ignite relayer connect + +Link chains associated with paths and start relaying tx packets in between + +``` +ignite relayer connect [,...] [flags] +``` + +**Options** + +``` + -h, --help help for connect + --keyring-backend string keyring backend to store your account keys (default "test") + --keyring-dir string accounts keyring directory (default "/home/runner/.ignite/accounts") +``` + +**SEE ALSO** + +* [ignite relayer](#ignite-relayer) - Connect blockchains with an IBC relayer + + +## ignite scaffold + +Create a new blockchain, module, message, query, and more + +**Synopsis** + +Scaffolding is a quick way to generate code for major pieces of your +application. + +For details on each scaffolding target (chain, module, message, etc.) run the +corresponding command with a "--help" flag, for example, "ignite scaffold chain +--help". + +The Ignite team strongly recommends committing the code to a version control +system before running scaffolding commands. This will make it easier to see the +changes to the source code as well as undo the command if you've decided to roll +back the changes. + +This blockchain you create with the chain scaffolding command uses the modular +Cosmos SDK framework and imports many standard modules for functionality like +proof of stake, token transfer, inter-blockchain connectivity, governance, and +more. Custom functionality is implemented in modules located by convention in +the "x/" directory. By default, your blockchain comes with an empty custom +module. Use the module scaffolding command to create an additional module. + +An empty custom module doesn't do much, it's basically a container for logic +that is responsible for processing transactions and changing the application +state. Cosmos SDK blockchains work by processing user-submitted signed +transactions, which contain one or more messages. A message contains data that +describes a state transition. A module can be responsible for handling any +number of messages. + +A message scaffolding command will generate the code for handling a new type of +Cosmos SDK message. Message fields describe the state transition that the +message is intended to produce if processed without errors. + +Scaffolding messages is useful to create individual "actions" that your module +can perform. Sometimes, however, you want your blockchain to have the +functionality to create, read, update and delete (CRUD) instances of a +particular type. Depending on how you want to store the data there are three +commands that scaffold CRUD functionality for a type: list, map, and single. +These commands create four messages (one for each CRUD action), and the logic to +add, delete, and fetch the data from the store. If you want to scaffold only the +logic, for example, you've decided to scaffold messages separately, you can do +that as well with the "--no-message" flag. + +Reading data from a blockchain happens with a help of queries. Similar to how +you can scaffold messages to write data, you can scaffold queries to read the +data back from your blockchain application. + +You can also scaffold a type, which just produces a new protocol buffer file +with a proto message description. Note that proto messages produce (and +correspond with) Go types whereas Cosmos SDK messages correspond to proto "rpc" +in the "Msg" service. + +If you're building an application with custom IBC logic, you might need to +scaffold IBC packets. An IBC packet represents the data sent from one blockchain +to another. You can only scaffold IBC packets in IBC-enabled modules scaffolded +with an "--ibc" flag. Note that the default module is not IBC-enabled. + + +**Options** + +``` + -h, --help help for scaffold +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite scaffold chain](#ignite-scaffold-chain) - New Cosmos SDK blockchain +* [ignite scaffold list](#ignite-scaffold-list) - CRUD for data stored as an array +* [ignite scaffold map](#ignite-scaffold-map) - CRUD for data stored as key-value pairs +* [ignite scaffold message](#ignite-scaffold-message) - Message to perform state transition on the blockchain +* [ignite scaffold module](#ignite-scaffold-module) - Custom Cosmos SDK module +* [ignite scaffold packet](#ignite-scaffold-packet) - Message for sending an IBC packet +* [ignite scaffold query](#ignite-scaffold-query) - Query for fetching data from a blockchain +* [ignite scaffold react](#ignite-scaffold-react) - React web app template +* [ignite scaffold single](#ignite-scaffold-single) - CRUD for data stored in a single location +* [ignite scaffold type](#ignite-scaffold-type) - Type definition +* [ignite scaffold vue](#ignite-scaffold-vue) - Vue 3 web app template + + +## ignite scaffold chain + +New Cosmos SDK blockchain + +**Synopsis** + +Create a new application-specific Cosmos SDK blockchain. + +For example, the following command will create a blockchain called "hello" in +the "hello/" directory: + + ignite scaffold chain hello + +A project name can be a simple name or a URL. The name will be used as the Go +module path for the project. Examples of project names: + + ignite scaffold chain foo + ignite scaffold chain foo/bar + ignite scaffold chain example.org/foo + ignite scaffold chain github.com/username/foo + +A new directory with source code files will be created in the current directory. +To use a different path use the "--path" flag. + +Most of the logic of your blockchain is written in custom modules. Each module +effectively encapsulates an independent piece of functionality. Following the +Cosmos SDK convention, custom modules are stored inside the "x/" directory. By +default, Ignite creates a module with a name that matches the name of the +project. To create a blockchain without a default module use the "--no-module" +flag. Additional modules can be added after a project is created with "ignite +scaffold module" command. + +Account addresses on Cosmos SDK-based blockchains have string prefixes. For +example, the Cosmos Hub blockchain uses the default "cosmos" prefix, so that +addresses look like this: "cosmos12fjzdtqfrrve7zyg9sv8j25azw2ua6tvu07ypf". To +use a custom address prefix use the "--address-prefix" flag. For example: + + ignite scaffold chain foo --address-prefix bar + +By default when compiling a blockchain's source code Ignite creates a cache to +speed up the build process. To clear the cache when building a blockchain use +the "--clear-cache" flag. It is very unlikely you will ever need to use this +flag. + +The blockchain is using the Cosmos SDK modular blockchain framework. Learn more +about Cosmos SDK on https://docs.cosmos.network + + +``` +ignite scaffold chain [name] [flags] +``` + +**Options** + +``` + --address-prefix string account address prefix (default "cosmos") + --clear-cache clear the build cache (advanced) + -h, --help help for chain + --no-module create a project without a default module + -p, --path string create a project in a specific path + --skip-git skip Git repository initialization +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold list + +CRUD for data stored as an array + +**Synopsis** + +The "list" scaffolding command is used to generate files that implement the +logic for storing and interacting with data stored as a list in the blockchain +state. + +The command accepts a NAME argument that will be used as the name of a new type +of data. It also accepts a list of FIELDs that describe the type. + +The interaction with the data follows the create, read, updated, and delete +(CRUD) pattern. For each type three Cosmos SDK messages are defined for writing +data to the blockchain: MsgCreate{Name}, MsgUpdate{Name}, MsgDelete{Name}. For +reading data two queries are defined: {Name} and {Name}All. The type, messages, +and queries are defined in the "proto/" directory as protocol buffer messages. +Messages and queries are mounted in the "Msg" and "Query" services respectively. + +When messages are handled, the appropriate keeper methods are called. By +convention, the methods are defined in +"x/{moduleName}/keeper/msg_server_{name}.go". Helpful methods for getting, +setting, removing, and appending are defined in the same "keeper" package in +"{name}.go". + +The "list" command essentially allows you to define a new type of data and +provides the logic to create, read, update, and delete instances of the type. +For example, let's review a command that generates the code to handle a list of +posts and each post has "title" and "body" fields: + + ignite scaffold list post title body + +This provides you with a "Post" type, MsgCreatePost, MsgUpdatePost, +MsgDeletePost and two queries: Post and PostAll. The compiled CLI, let's say the +binary is "blogd" and the module is "blog", has commands to query the chain (see +"blogd q blog") and broadcast transactions with the messages above (see "blogd +tx blog"). + +The code generated with the list command is meant to be edited and tailored to +your application needs. Consider the code to be a "skeleton" for the actual +business logic you will implement next. + +By default, all fields are assumed to be strings. If you want a field of a +different type, you can specify it after a colon ":". The following types are +supported: string, bool, int, uint, coin, array.string, array.int, array.uint, +array.coin. An example of using field types: + + ignite scaffold list pool amount:coin tags:array.string height:int + +Supported types: + +| Type | Alias | Index | Code Type | Description | +|--------------|---------|-------|-----------|---------------------------------| +| string | - | yes | string | Text type | +| array.string | strings | no | []string | List of text type | +| bool | - | yes | bool | Boolean type | +| int | - | yes | int32 | Integer type | +| array.int | ints | no | []int32 | List of integers types | +| uint | - | yes | uint64 | Unsigned integer type | +| array.uint | uints | no | []uint64 | List of unsigned integers types | +| coin | - | no | sdk.Coin | Cosmos SDK coin type | +| array.coin | coins | no | sdk.Coins | List of Cosmos SDK coin types | + +"Index" indicates whether the type can be used as an index in +"ignite scaffold map". + +Ignite also supports custom types: + + ignite scaffold list product-details name desc + ignite scaffold list product price:coin details:ProductDetails + +In the example above the "ProductDetails" type was defined first, and then used +as a custom type for the "details" field. Ignite doesn't support arrays of +custom types yet. + +Your chain will accept custom types in JSON-notation: + + exampled tx example create-product 100coin '{"name": "x", "desc": "y"}' --from alice + +By default the code will be scaffolded in the module that matches your project's +name. If you have several modules in your project, you might want to specify a +different module: + + ignite scaffold list post title body --module blog + +By default, each message comes with a "creator" field that represents the +address of the transaction signer. You can customize the name of this field with +a flag: + + ignite scaffold list post title body --signer author + +It's possible to scaffold just the getter/setter logic without the CRUD +messages. This is useful when you want the methods to handle a type, but would +like to scaffold messages manually. Use a flag to skip message scaffolding: + + ignite scaffold list post title body --no-message + +The "creator" field is not generated if a list is scaffolded with the +"--no-message" flag. + + +``` +ignite scaffold list NAME [field]... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for list + --module string specify which module to generate code in + --no-message skip generating message handling logic + --no-simulation skip simulation logic + -p, --path string path of the app (default ".") + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold map + +CRUD for data stored as key-value pairs + +**Synopsis** + +The "map" scaffolding command is used to generate files that implement the logic +for storing and interacting with data stored as key-value pairs (or a +dictionary) in the blockchain state. + +The "map" command is very similar to "ignite scaffold list" with the main +difference in how values are indexed. With "list" values are indexed by an +incrementing integer, whereas "list" values are indexed by a user-provided value +(or multiple values). + +Let's use the same blog post example: + + ignite scaffold map post title body + +This command scaffolds a "Post" type and CRUD functionality to create, read, +updated, and delete posts. However, when creating a new post with your chain's +binary (or by submitting a transaction through the chain's API) you will be +required to provide an "index": + + blogd tx blog create-post [index] [title] [body] + blogd tx blog create-post hello "My first post" "This is the body" + +This command will create a post and store it in the blockchain's state under the +"hello" index. You will be able to fetch back the value of the post by querying +for the "hello" key. + + blogd q blog show-post hello + +To customize the index, use the "--index" flag. Multiple indices can be +provided, which simplifies querying values. For example: + + ignite scaffold map product price desc --index category,guid + +With this command, you would get a "Product" value indexed by both a category +and a GUID (globally unique ID). This will let you programmatically fetch +product values that have the same category but are using different GUIDs. + +Since the behavior of "list" and "map" scaffolding is very similar, you can use +the "--no-message", "--module", "--signer" flags as well as the colon syntax for +custom types. + + +``` +ignite scaffold map NAME [field]... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for map + --index strings fields that index the value (default [index]) + --module string specify which module to generate code in + --no-message skip generating message handling logic + --no-simulation skip simulation logic + -p, --path string path of the app (default ".") + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold message + +Message to perform state transition on the blockchain + +**Synopsis** + +Message scaffolding is useful for quickly adding functionality to your +blockchain to handle specific Cosmos SDK messages. + +Messages are objects whose end goal is to trigger state transitions on the +blockchain. A message is a container for fields of data that affect how the +blockchain's state will change. You can think of messages as "actions" that a +user can perform. + +For example, the bank module has a "Send" message for token transfers between +accounts. The send message has three fields: from address (sender), to address +(recipient), and a token amount. When this message is successfully processed, +the token amount will be deducted from the sender's account and added to the +recipient's account. + +Ignite's message scaffolding lets you create new types of messages and add them +to your chain. For example: + + ignite scaffold message add-pool amount:coins denom active:bool --module dex + +The command above will create a new message MsgAddPool with three fields: amount +(in tokens), denom (a string), and active (a boolean). The message will be added +to the "dex" module. + +By default, the message is defined as a proto message in the +"proto/{app}/{module}/tx.proto" and registered in the "Msg" service. A CLI command to +create and broadcast a transaction with MsgAddPool is created in the module's +"cli" package. Additionally, Ignite scaffolds a message constructor and the code +to satisfy the sdk.Msg interface and register the message in the module. + +Most importantly in the "keeper" package Ignite scaffolds an "AddPool" function. +Inside this function, you can implement message handling logic. + +When successfully processed a message can return data. Use the —response flag to +specify response fields and their types. For example + + ignite scaffold message create-post title body --response id:int,title + +The command above will scaffold MsgCreatePost which returns both an ID (an +integer) and a title (a string). + +Message scaffolding follows the rules as "ignite scaffold list/map/single" and +supports fields with standard and custom types. See "ignite scaffold list —help" +for details. + + +``` +ignite scaffold message [name] [field1] [field2] ... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -d, --desc string description of the command + -h, --help help for message + --module string module to add the message into. Default: app's main module + --no-simulation disable CRUD simulation scaffolding + -p, --path string path of the app (default ".") + -r, --response strings response fields + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold module + +Custom Cosmos SDK module + +**Synopsis** + +Scaffold a new Cosmos SDK module. + +Cosmos SDK is a modular framework and each independent piece of functionality is +implemented in a separate module. By default your blockchain imports a set of +standard Cosmos SDK modules. To implement custom functionality of your +blockchain, scaffold a module and implement the logic of your application. + +This command does the following: + +* Creates a directory with module's protocol buffer files in "proto/" +* Creates a directory with module's boilerplate Go code in "x/" +* Imports the newly created module by modifying "app/app.go" +* Creates a file in "testutil/keeper/" that contains logic to create a keeper + for testing purposes + +This command will proceed with module scaffolding even if "app/app.go" doesn't +have the required default placeholders. If the placeholders are missing, you +will need to modify "app/app.go" manually to import the module. If you want the +command to fail if it can't import the module, use the "--require-registration" +flag. + +To scaffold an IBC-enabled module use the "--ibc" flag. An IBC-enabled module is +like a regular module with the addition of IBC-specific logic and placeholders +to scaffold IBC packets with "ignite scaffold packet". + +A module can depend on one or more other modules and import their keeper +methods. To scaffold a module with a dependency use the "--dep" flag + +For example, your new custom module "foo" might have functionality that requires +sending tokens between accounts. The method for sending tokens is a defined in +the "bank"'s module keeper. You can scaffold a "foo" module with the dependency +on "bank" with the following command: + + ignite scaffold module foo --dep bank + +You can then define which methods you want to import from the "bank" keeper in +"expected_keepers.go". + +You can also scaffold a module with a list of dependencies that can include both +standard and custom modules (provided they exist): + + ignite scaffold module bar --dep foo,mint,account,FeeGrant + +Note: the "--dep" flag doesn't install third-party modules into your +application, it just generates extra code that specifies which existing modules +your new custom module depends on. + +A Cosmos SDK module can have parameters (or "params"). Params are values that +can be set at the genesis of the blockchain and can be modified while the +blockchain is running. An example of a param is "Inflation rate change" of the +"mint" module. A module can be scaffolded with params using the "--params" flag +that accepts a list of param names. By default params are of type "string", but +you can specify a type for each param. For example: + + ignite scaffold module foo --params baz:uint,bar:bool + +Refer to Cosmos SDK documentation to learn more about modules, dependencies and +params. + + +``` +ignite scaffold module [name] [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + --dep strings add a dependency on another module + -h, --help help for module + --ibc add IBC functionality + --ordering string channel ordering of the IBC module [none|ordered|unordered] (default "none") + --params strings add module parameters + -p, --path string path of the app (default ".") + --require-registration fail if module can't be registered + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold packet + +Message for sending an IBC packet + +**Synopsis** + +Scaffold an IBC packet in a specific IBC-enabled Cosmos SDK module + +``` +ignite scaffold packet [packetName] [field1] [field2] ... --module [moduleName] [flags] +``` + +**Options** + +``` + --ack strings custom acknowledgment type (field1,field2,...) + --clear-cache clear the build cache (advanced) + -h, --help help for packet + --module string IBC Module to add the packet into + --no-message disable send message scaffolding + -p, --path string path of the app (default ".") + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold query + +Query for fetching data from a blockchain + +``` +ignite scaffold query [name] [request_field1] [request_field2] ... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -d, --desc string description of the CLI to broadcast a tx with the message + -h, --help help for query + --module string module to add the query into. Default: app's main module + --paginated define if the request can be paginated + -p, --path string path of the app (default ".") + -r, --response strings response fields + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold react + +React web app template + +``` +ignite scaffold react [flags] +``` + +**Options** + +``` + -h, --help help for react + -p, --path string path to scaffold content of the React app (default "./react") + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold single + +CRUD for data stored in a single location + +``` +ignite scaffold single NAME [field]... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for single + --module string specify which module to generate code in + --no-message skip generating message handling logic + --no-simulation skip simulation logic + -p, --path string path of the app (default ".") + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold type + +Type definition + +``` +ignite scaffold type NAME [field]... [flags] +``` + +**Options** + +``` + --clear-cache clear the build cache (advanced) + -h, --help help for type + --module string specify which module to generate code in + --no-message skip generating message handling logic + --no-simulation skip simulation logic + -p, --path string path of the app (default ".") + --signer string label for the message signer (default: creator) + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite scaffold vue + +Vue 3 web app template + +``` +ignite scaffold vue [flags] +``` + +**Options** + +``` + -h, --help help for vue + -p, --path string path to scaffold content of the Vue.js app (default "./vue") + -y, --yes answers interactive yes/no questions with yes +``` + +**SEE ALSO** + +* [ignite scaffold](#ignite-scaffold) - Create a new blockchain, module, message, query, and more + + +## ignite tools + +Tools for advanced users + +**Options** + +``` + -h, --help help for tools +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain +* [ignite tools ibc-relayer](#ignite-tools-ibc-relayer) - TypeScript implementation of an IBC relayer +* [ignite tools ibc-setup](#ignite-tools-ibc-setup) - Collection of commands to quickly setup a relayer +* [ignite tools protoc](#ignite-tools-protoc) - Execute the protoc command + + +## ignite tools ibc-relayer + +TypeScript implementation of an IBC relayer + +``` +ignite tools ibc-relayer [--] [...] [flags] +``` + +**Examples** + +``` +ignite tools ibc-relayer -- -h +``` + +**Options** + +``` + -h, --help help for ibc-relayer +``` + +**SEE ALSO** + +* [ignite tools](#ignite-tools) - Tools for advanced users + + +## ignite tools ibc-setup + +Collection of commands to quickly setup a relayer + +``` +ignite tools ibc-setup [--] [...] [flags] +``` + +**Examples** + +``` +ignite tools ibc-setup -- -h +ignite tools ibc-setup -- init --src relayer_test_1 --dest relayer_test_2 +``` + +**Options** + +``` + -h, --help help for ibc-setup +``` + +**SEE ALSO** + +* [ignite tools](#ignite-tools) - Tools for advanced users + + +## ignite tools protoc + +Execute the protoc command + +**Synopsis** + +The protoc command. You don't need to setup the global protoc include folder with -I, it's automatically handled + +``` +ignite tools protoc [--] [...] [flags] +``` + +**Examples** + +``` +ignite tools protoc -- --version +``` + +**Options** + +``` + -h, --help help for protoc +``` + +**SEE ALSO** + +* [ignite tools](#ignite-tools) - Tools for advanced users + + +## ignite version + +Print the current build information + +``` +ignite version [flags] +``` + +**Options** + +``` + -h, --help help for version +``` + +**SEE ALSO** + +* [ignite](#ignite) - Ignite CLI offers everything you need to scaffold, test, build, and launch your blockchain + diff --git a/docs/versioned_docs/version-v0.27.2/08-references/02-config.md b/docs/versioned_docs/version-v0.27.2/08-references/02-config.md new file mode 100644 index 0000000000..1eb4aa7f8f --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/08-references/02-config.md @@ -0,0 +1,263 @@ +--- +sidebar_position: 3 +description: Primary configuration file to describe the development environment for your blockchain. +title: Configuration file +--- + +# Configuration file reference + +The `config.yml` file generated in your blockchain folder uses key-value pairs +to describe the development environment for your blockchain. + +Only a default set of parameters is provided. If more nuanced configuration is +required, you can add these parameters to the `config.yml` file. + +## Accounts + +A list of user accounts created during genesis of the blockchain. + +```yml +accounts: + - name: alice + coins: ['20000token', '200000000stake'] + - name: bob + coins: ['10000token', '100000000stake'] +``` + +Ignite uses information from `accounts` when initializing the chain with `ignite +chain init` and `ignite chain start`. In the example above Ignite will add two +accounts to the `genesis.json` file of the chain. + +`name` is a local name of a key pair associated with an account. Once the chain +is initialized and started, you will be able to use `name` when signing +transactions. With the configuration above, you'd be able to sign transactions +both with Alice's and Bob's accounts like so `exampled tx bank send ... --from +alice`. + +`coins` is a list of token balances for the account. If a token denomination is +in this list, it will exist in the genesis balance and will be a valid token. +When initialized with the config file above, a chain will only have two accounts +at genesis (Alice and Bob) and two native tokens (with denominations `token` and +`stake`). + +By default, every time a chain is re-initialized, Ignite will create a new key +pair for each account. So even though the account name can remain the same +(`bob`), every chain reinitialize it will have a different mnemonic and address. + +If you want an account to have a specific address, provide the `address` field +with a valid bech32 address. The prefix (by default, `cosmos`) should match the +one expected by your chain. When an account is provided with an `address` a key +pair will not be generated, because it's impossible to derive a key from an +address. An account with a given address will be added to the genesis file (with +an associated token balance), but because there is no key pair, you will not be +able to broadcast transactions from that address. This is useful when you have +generated a key pair outside of Ignite (for example, using your chain's CLI or +in an extension wallet) and want to have a token balance associated with the +address of this key pair. + +```yml +accounts: + - name: bob + coins: ['20000token', '200000000stake'] + address: cosmos1s39200s6v4c96ml2xzuh389yxpd0guk2mzn3mz +``` + +If you want an account to be initialized from a specific mnemonic, provide the +`mnemonic` field with a valid mnemonic. A private key, a public key and an +address will be derived from a mnemonic. + +```yml +accounts: + - name: bob + coins: ['20000token', '200000000stake'] + mnemonic: cargo ramp supreme review change various throw air figure humble soft steel slam pole betray inhale already dentist enough away office apple sample glue +``` + +You cannot have both `address` and `mnemonic` defined for a single account. + +Some accounts are used as validator accounts (see `validators` section). +Validator accounts cannot have an `address` field, because Ignite needs to be +able to derive a private key (either from a random mnemonic or from a specific +one provided in the `mnemonic` field). Validator accounts should have enough +tokens of the staking denomination for self-delegation. + +By default, the `alice` account is used as a validator account, its key is +derived from a mnemonic generated randomly at genesis, the staking denomination +is `stake`, and this account has enough `stake` for self-delegation. + +If your chain is using its own +[cointype](https://github.com/satoshilabs/slips/blob/master/slip-0044.md), you +can use the `cointype` field to provide the integer value + +```yml +accounts: + - name: bob + coins: ['20000token', '200000000stake'] + cointype: 7777777 +``` + +## Validators + +Commands like `ignite chain init` and `ignite chain serve` initialize and launch +a validator node for development purposes. + +```yml +validators: + - name: alice + bonded: '100000000stake' +``` + +`name` refers to key name in the `accounts` list. + +`bonded` is the self-delegation amount of a validator. The `bonded` amount +should not be lower than `1000000` nor higher than the account's +balance in the `account` list. + +Validators store their node configuration files in the data directory. By +default, Ignite uses the name of the project as the name of the data directory, +for example, `$HOME/.example/`. To use a different path for the data directory +you can customize the `home` property. + +Configuration in the data directory is reset frequently by Ignite. To persist +some changes to configuration files you can use `app`, `config` and `client` +properties that correspond to `$HOME/.example/config/app.toml`, +`$HOME/.example/config/config.toml` and `$HOME/.example/config/client.toml`. + +```yml +validators: + - name: alice + bonded: '100000000stake' + home: "~/.mychain" + app: + pruning: "nothing" + config: + moniker: "mychain" + client: + output: "json" +``` + +To see which properties are available for `config.toml`, `app.toml` and +`client.toml`, initialize a chain with `ignite chain init` and open the file you +want to know more about. + +Currently, Ignite starts only one validator node, so the first item in the +`validators` list is used (the rest is ignored). Support for multiple validators +is in progress. + +## Build + +The `build` property lets you customize how Ignite builds your chain's binary. + +By default, Ignite builds the `main` package from `cmd/PROJECT_NAME/main.go`. If +you more than one `main` package in your project, or you have renamed the +directory, use the `main` property to provide the path to the `main` Go package: + +```yml +build: + main: cmd/hello/cmd +``` + +Ignite compiles your project into a binary and uses the project's name with a +`d` suffix as name for the binary. To customize the binary name use the `binary` +property: + +```yml +build: + binary: "helloworldd" +``` + +To customize the linker flags used in the build process: + +```yml +build: + ldflags: [ "-X main.Version=development", "-X main.Date=01/05/2022T19:54" ] +``` + +By default, custom protocol buffer (proto) files are located in the `proto` +directory. If your project keeps proto files in a different directory, you +should tell Ignite about this: + +```yml +build: + proto: + path: "myproto" +``` + +Ignite comes with required third-party proto out of the box. Ignite also looks +into `third_party/proto` and `proto_vendor` directories for extra proto files. +If your project keeps third-party proto files in a different directory, you +should tell Ignite about this: + +```yml +build: + proto: + third_party_paths: ["my_third_party/proto"] +``` + +## Faucet + +The faucet service sends tokens to addresses. + +```yml +faucet: + name: bob + coins: ["5token", "100000stake"] +``` + +`name` refers to a key name in the `accounts` list. This is a required property. + +`coins` is the amount of tokens that will be sent to a user by the faucet. This +is a required property. + +`coins_max` is a maximum amount of tokens that can be sent to a single address. +To reset the token limit use the `rate_limit_window` property (in seconds). + +The default the faucet works on port `4500`. To use a different port number use +the `port` property. + +```yml +faucet: + name: faucet + coins: [ "100token", "5foo" ] + coins_max: [ "2000token", "1000foo" ] + port: 4500 + rate_limit_window: 3600 +``` + +## Genesis + +Genesis file is the initial block in the blockchain. It is required to launch a +blockchain, because it contains important information like token balances, and +modules' state. Genesis is stored in `$DATA_DIR/config/genesis.json`. + +Since the genesis file is reinitialized frequently during development, you can +set persistent options in the `genesis` property: + +```yml +genesis: + app_state: + staking: + params: + bond_denom: "denom" +``` + +To know which properties a genesis file supports, initialize a chain and look up +the genesis file in the data directory. + +## Client code generation + +Ignite can generate client-side code for interacting with your chain with the +`ignite generate` set of commands. Use the following properties to customize the +paths where the client-side code is generated. + +```yml +client: + openapi: + path: "docs/static/openapi.yml" + typescript: + path: "ts-client" + composables: + path: "vue/src/composables" + hooks: + path: "react/src/hooks" +``` diff --git a/docs/versioned_docs/version-v0.27.2/08-references/_category_.json b/docs/versioned_docs/version-v0.27.2/08-references/_category_.json new file mode 100644 index 0000000000..22c96cc0a0 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/08-references/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "References", + "link": null, + "collapsed": false +} \ No newline at end of file diff --git a/docs/versioned_docs/version-v0.27.2/plugins/01-using-plugins.md b/docs/versioned_docs/version-v0.27.2/plugins/01-using-plugins.md new file mode 100644 index 0000000000..9b830a2ef6 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/plugins/01-using-plugins.md @@ -0,0 +1,43 @@ +--- +description: Using and Developing plugins +--- + +# Using Plugins + +Ignite plugins offer a way to extend the functionality of the Ignite CLI. There +are two core concepts within plugins : `Commands` and `Hooks`. Where `Commands` +extend the cli's functionality, and `Hooks` extend existing command +functionality. + +Plugins are registered in an Ignite scaffolded Blockchain project through the +`plugins.yml`, or globally through `$HOME/.ignite/plugins/plugins.yml`. + +To use a plugin within your project, execute the following command inside the +project directory: + +```sh +ignite plugin add github.com/project/cli-plugin +``` + +The plugin will be available only when running `ignite` inside the project +directory. + +To use a plugin globally on the other hand, execute the following command: + +```sh +ignite plugin add -g github.com/project/cli-plugin +``` + +The command will compile the plugin and make it immediately available to the +`ignite` command lists. + +## Listing installed plugins + +When in an ignite scaffolded blockchain you can use the command `ignite plugin +list` to list all plugins and there statuses. + +## Updating plugins + +When a plugin in a remote repository releases updates, running `ignite plugin +update ` will update a specific plugin declared in your +project's `config.yml`. diff --git a/docs/versioned_docs/version-v0.27.2/plugins/02-dev-plugins.md b/docs/versioned_docs/version-v0.27.2/plugins/02-dev-plugins.md new file mode 100644 index 0000000000..6cbc1b6426 --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/plugins/02-dev-plugins.md @@ -0,0 +1,244 @@ +--- +description: Using and Developing plugins +--- + +# Developing Plugins + +It's easy to create a plugin and use it immediately in your project. First +choose a directory outside your project and run : + +```sh +$ ignite plugin scaffold my-plugin +``` + +This will create a new directory `my-plugin` that contains the plugin's code, +and will output some instructions about how to use your plugin with the +`ignite` command. Indeed, a plugin path can be a local directory, which has +several benefits: + +- you don't need to use a git repository during the development of your plugin. +- the plugin is recompiled each time you run the `ignite` binary in your +project, if the source files are older than the plugin binary. + +Thus, the plugin development workflow is as simple as : + +1. scaffold a plugin with `ignite plugin scaffold my-plugin` +2. add it to your config via `ignite plugin add -g /path/to/my-plugin` +3. update plugin code +4. run `ignite my-plugin` binary to compile and run the plugin. +5. go back to 3. + +Once your plugin is ready, you can publish it to a git repository, and the +community can use it by calling `ignite plugin add github.com/foo/my-plugin`. + +Now let's detail how to update your plugin's code. + +## The plugin interface + +The `ignite` plugin system uses `github.com/hashicorp/go-plugin` under the hood, +which implies to implement a predefined interface: + +```go title=ignite/services/plugin/interface.go +// An ignite plugin must implements the Plugin interface. +type Interface interface { + // Manifest declares the plugin's Command(s) and Hook(s). + Manifest() (Manifest, error) + + // Execute will be invoked by ignite when a plugin Command is executed. + // It is global for all commands declared in Manifest, if you have declared + // multiple commands, use cmd.Path to distinguish them. + Execute(cmd ExecutedCommand) error + + // ExecuteHookPre is invoked by ignite when a command specified by the Hook + // path is invoked. + // It is global for all hooks declared in Manifest, if you have declared + // multiple hooks, use hook.Name to distinguish them. + ExecuteHookPre(hook ExecutedHook) error + + // ExecuteHookPost is invoked by ignite when a command specified by the hook + // path is invoked. + // It is global for all hooks declared in Manifest, if you have declared + // multiple hooks, use hook.Name to distinguish them. + ExecuteHookPost(hook ExecutedHook) error + + // ExecuteHookCleanUp is invoked by ignite when a command specified by the + // hook path is invoked. Unlike ExecuteHookPost, it is invoked regardless of + // execution status of the command and hooks. + // It is global for all hooks declared in Manifest, if you have declared + // multiple hooks, use hook.Name to distinguish them. + ExecuteHookCleanUp(hook ExecutedHook) error +} +``` + +The code scaffolded already implements this interface, you just need to update +the methods' body. + + +## Defining plugin's manifest + +Here is the `Manifest` struct : + +```go title=ignite/services/plugin/interface.go +type Manifest struct { + Name string + // Commands contains the commands that will be added to the list of ignite + // commands. Each commands are independent, for nested commands use the + // inner Commands field. + Commands []Command + // Hooks contains the hooks that will be attached to the existing ignite + // commands. + Hooks []Hook + // SharedHost enables sharing a single plugin server across all running instances + // of a plugin. Useful if a plugin adds or extends long running commands + // + // Example: if a plugin defines a hook on `ignite chain serve`, a plugin server is instanciated + // when the command is run. Now if you want to interact with that instance from commands + // defined in that plugin, you need to enable `SharedHost`, or else the commands will just + // instantiate separate plugin servers. + // + // When enabled, all plugins of the same `Path` loaded from the same configuration will + // attach it's rpc client to a an existing rpc server. + // + // If a plugin instance has no other running plugin servers, it will create one and it will be the host. + SharedHost bool `yaml:"shared_host"` +} +``` + +In your plugin's code, the `Manifest` method already returns a predefined +`Manifest` struct as an example. Adapt it according to your need. + +If your plugin adds one or more new commands to `ignite`, feeds the `Commands` +field. + +If your plugin adds features to existing commands, feeds the `Hooks` field. + +Of course a plugin can declare `Commands` *and* `Hooks`. + +A plugin may also share a host process by setting `SharedHost` to `true`. +`SharedHost` is desirable if a plugin hooks into, or declares long running commands. +Commands executed from the same plugin context interact with the same plugin server. +Allowing all executing commands to share the same server instance, giving shared execution context. + +## Adding new command + +Plugin commands are custom commands added to the ignite cli by a registered +plugin. Commands can be of any path not defined already by ignite. All plugin +commands will extend of the command root `ignite`. + +For instance, let's say your plugin adds a new `oracle` command to `ignite +scaffold`, the `Manifest()` method will look like : + +```go +func (p) Manifest() (plugin.Manifest, error) { + return plugin.Manifest{ + Name: "oracle", + Commands: []plugin.Command{ + { + Use: "oracle [name]", + Short: "Scaffold an oracle module", + Long: "Long description goes here...", + // Optionnal flags is required + Flags: []plugin.Flag{ + {Name: "source", Type: plugin.FlagTypeString, Usage: "the oracle source"}, + }, + // Attach the command to `scaffold` + PlaceCommandUnder: "ignite scaffold", + }, + }, + }, nil +} +``` + +To update the plugin execution, you have to change the plugin `Execute` command, +for instance : + +```go +func (p) Execute(cmd plugin.ExecutedCommand) error { + if len(cmd.Args) == 0 { + return fmt.Errorf("oracle name missing") + } + var ( + name = cmd.Args[0] + source, _ = cmd.Flags().GetString("source") + ) + // Read chain information + c, err := getChain(cmd) + if err != nil { + return err + } + + //... +} +``` + +Then, run `ignite scaffold oracle` to execute the plugin. + +## Adding hooks + +Plugin `Hooks` allow existing ignite commands to be extended with new +functionality. Hooks are useful when you want to streamline functionality +without needing to run custom scripts after or before a command has been run. +this can streamline processes that where once error prone or forgotten all +together. + +The following are hooks defined which will run on a registered `ignite` commands + +| Name | Description | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| Pre | Runs before a commands main functionality is invoked in the `PreRun` scope | +| Post | Runs after a commands main functionality is invoked in the `PostRun` scope | +| Clean Up | Runs after a commands main functionality is invoked. if the command returns an error it will run before the error is returned to guarantee execution. | + +*Note*: If a hook causes an error in the pre step the command will not run +resulting in `post` and `clean up` not executing. + +The following is an example of a `hook` definition. + +```go +func (p) Manifest() (plugin.Manifest, error) { + return plugin.Manifest{ + Name: "oracle", + Hooks: []plugin.Hook{ + { + Name: "my-hook", + PlaceHookOn: "ignite chain build", + }, + }, + }, nil +} + +func (p) ExecuteHookPre(hook plugin.ExecutedHook) error { + switch hook.Name { + case "my-hook": + fmt.Println("I'm executed before ignite chain build") + default: + return fmt.Errorf("hook not defined") + } + return nil +} + +func (p) ExecuteHookPost(hook plugin.ExecutedHook) error { + switch hook.Name { + case "my-hook": + fmt.Println("I'm executed after ignite chain build (if no error)") + default: + return fmt.Errorf("hook not defined") + } + return nil +} + +func (p) ExecuteHookCleanUp(hook plugin.ExecutedHook) error { + switch hook.Name { + case "my-hook": + fmt.Println("I'm executed after ignite chain build (regardless errors)") + default: + return fmt.Errorf("hook not defined") + } + return nil +} +``` + +Above we can see a similar definition to `Command` where a hook has a `Name` and +a `PlaceHookOn`. You'll notice that the `Execute*` methods map directly to each +life cycle of the hook. All hooks defined within the plugin will invoke these +methods. diff --git a/docs/versioned_docs/version-v0.27.2/plugins/_category_.json b/docs/versioned_docs/version-v0.27.2/plugins/_category_.json new file mode 100644 index 0000000000..27114924ce --- /dev/null +++ b/docs/versioned_docs/version-v0.27.2/plugins/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Plugins", + "position": 7, + "link": null +} diff --git a/docs/versioned_sidebars/version-v0.27.2-sidebars.json b/docs/versioned_sidebars/version-v0.27.2-sidebars.json new file mode 100644 index 0000000000..f3e9bb7a5b --- /dev/null +++ b/docs/versioned_sidebars/version-v0.27.2-sidebars.json @@ -0,0 +1,25 @@ +{ + "tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "." + }, + { + "type": "category", + "label": "Resources", + "collapsed": true, + "items": [ + { + "type": "link", + "label": "Ignite CLI on Github", + "href": "https://github.com/ignite/cli" + }, + { + "type": "link", + "label": "Cosmos SDK Docs", + "href": "https://docs.cosmos.network/" + } + ] + } + ] +} diff --git a/docs/versions.json b/docs/versions.json index efb566a16c..997a7651ef 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,5 +1,5 @@ [ - "v0.27.1", + "v0.27.2", "v0.26.1", "v0.25.2" ]