Skip to content

Commit

Permalink
Merge branch 'main' into feat/sdk-v0.50
Browse files Browse the repository at this point in the history
  • Loading branch information
Pantani authored Oct 18, 2023
2 parents 1c10b12 + 1b188d9 commit 98bc8d6
Show file tree
Hide file tree
Showing 85 changed files with 17,080 additions and 1 deletion.
63 changes: 63 additions & 0 deletions docs/versioned_docs/version-v0.27.2/01-welcome/01-index.md
Original file line number Diff line number Diff line change
@@ -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

<ProjectsTable data={[
{ name: "Stride Labs", logo: "img/logo/stride.svg"},
{ name: "KYVE Network", logo: "img/logo/kyve.svg"},
{ name: "Umee", logo: "img/logo/umee.svg"},
{ name: "MediBloc Core", logo: "img/logo/medibloc.svg"},
{ name: "Cudos", logo: "img/logo/cudos.svg"},
{ name: "Firma Chain", logo: "img/logo/firmachain.svg"},
{ name: "BitCanna", logo: "img/logo/bitcanna.svg"},
{ name: "Source Protocol", logo: "img/logo/source.svg"},
{ name: "Sonr", logo: "img/logo/sonr.svg"},
{ name: "Neutron", logo: "img/logo/neutron.svg"},
{ name: "OKP4 Blockchain", logo: "img/logo/okp4.svg"},
{ name: "Dymension Hub", logo: "img/logo/dymension.svg"},
{ name: "Electra Blockchain", logo: "img/logo/electra.svg"},
{ name: "OLLO Station", logo: "img/logo/ollostation.svg"},
{ name: "Mun", logo: "img/logo/mun.svg"},
{ name: "Aura Network", logo: "img/logo/aura.svg"},
]}/>
114 changes: 114 additions & 0 deletions docs/versioned_docs/version-v0.27.2/01-welcome/02-install.md
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Welcome",
"link": null
}
36 changes: 36 additions & 0 deletions docs/versioned_docs/version-v0.27.2/02-guide/00-introduction.md
Original file line number Diff line number Diff line change
@@ -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
151 changes: 151 additions & 0 deletions docs/versioned_docs/version-v0.27.2/02-guide/02-getting-started.md
Original file line number Diff line number Diff line change
@@ -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.
Loading

0 comments on commit 98bc8d6

Please sign in to comment.