Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
154 lines
7.9 KiB
Markdown
154 lines
7.9 KiB
Markdown
---
|
|
sidebar_position: 2
|
|
---
|
|
|
|
# Introduction
|
|
|
|
In this guide, 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 guide, 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.
|
|
|
|
If you are looking for more tutorials and hands-on experience, check out our tutorials website:
|
|
|
|
[IGNITE® Tutorials](https://tutorials.ignite.com)
|
|
|
|
## 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` 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` 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.
|