Logo
Published on

[Cosmos]Ignite CLI Introduction

Authors

Ignite CLI

Tendermint/CometBFT 및 Cosmos SDK를 기반으로 하는 애플리케이션별 블록체인을 위한 개발자 친화적인 명령줄 인터페이스(CLI) 도구입니다. Ignite CLI 도구는 개발자가 체인을 구축, 테스트 및 시작하는 데 필요한 모든 것을 제공합니다. 생산 준비가 된 블록체인에 필요한 모든 구성 요소를 스캐폴딩하고 조립하여 블록체인 개발을 가속화하는데 도움을 준다고 합니다.

기능 및 특징

  • Go로 작성된 모듈식 블록체인 생성
  • 스캐폴드 모듈, 메시지, CRUD 작업이 포함된 유형, IBC 패킷 등 사용 가능
  • 실시간 재로딩으로 개발 중인 블록체인 노드 시작 가능
  • 내장된 IBC를 이용하여 다른 블록체인에 연결
  • 생성된 TypeScript 클라이언트를 사용하여 블록체인과 상호 작용

Ignite CLI 설치

Prerequisites

Ignite CLI는 Golang으로 작성되어 있기 때문에 Golang version이 1.21.1이상이어야 하며 Go 환경 변수가 올바르게 설정되어 있는지 확인해야한다고 합니다

Golang 환경 변수가 올바르게 설정 되었는지도 확인이 필요하다고 합니다!

Install

최신 버전의 igniteBinary 설치 명령어

이 명령은 컬을 호출하여 설치 스크립트를 다운로드하고 출력을 bash로 파이프하여 설치를 수행합니다. ignite 바이너리는 /usr/local/bin에 설치됩니다.

curl https://get.ignite.com/cli! | bash

설치 후 버전 확인

ignite version

Tutorials Introduction

각 튜토리얼은 이전 튜토리얼을 기반으로 구축되어 점진적으로 이해도와 기술을 향상시킵니다. 튜토리얼을 통하여 블록체인 원리, Cosmos SDK에 대한 강력한 이해와 블록체인 프로젝트 개발 및 관리에 대한 가이드입니다 >

각 목차에 대한 설명 및 링크를 걸어 넣었으나, 공식문서에서는 순서대로 가는걸 추천했습니다.

What You Will Learn

  • Getting Started with Ignite CLI:개발 목적을 위해 로컬에서 노드를 시작하고 관리하는 방법을 이해하면서 자신만의 블록체인을 만들고 실행하는 방법에 대한 설명입니다.

  • Create and Run Your First Blockchain: 개발 목적을 위해 로컬에서 노드를 시작하고 관리하는 방법을 이해하면서 자신만의 블록체인을 만들고 실행하는 방법에 대한 설명입니다.

  • Hello World Tutorial: 블록체인의 시작으로 "Hello, World!"을 응답하도록 하여 블록체인 개발을 시작해 봅니다. 여기에는 Cosmos SDK 쿼리를 스캐폴드하고 키퍼 메서드를 수정하는 방법을 배우는 것이 포함됩니다.

  • Blog Tutorial: 블록체인에서 블로그 게시물을 작성하고 읽을 수 있는 기능을 갖춘 DApp에 관하여 배웁니다. 이 튜토리얼에서는 프로토콜 버퍼 파일에 새로운 유형을 정의하는 것부터 저장소에서 데이터를 쓰고 읽는 것까지 모든 것을 다룹니다.

  • DeFi Loan Tutorial: Decentralized Finance를 위한 블록체인을 구축하여 탈중앙화 금융(DeFi)에 대하여 배웁니다. CRUD 로직, 모듈 메소드 통합 및 토큰 트랜잭션 관리에 대한 것을 포함합니다.

  • Token Factory Tutorial: 토큰 팩토리 모듈 구축, 학습 모듈 개발, 삭제 기능이 없는 CRUD 작업, 기본 단위 통합을 통해 블록체인에서 디지털 자산 생성 및 관리에 대한 내용입니다.

  • Inter-blockchain Communication (IBC) Basics: IBC 프로토콜을 통해 상호 연결된 블록체인에 대하여 배웁니다. IBC 지원 모듈을 스캐폴드하고, IBC 패킷을 관리하고, 내장 IBC 중계기를 구성하는 방법을 포함하고 있습니다.

  • Interchange Module: 분산형 토큰 교환 및 주문서를 위한 모듈을 구축하여 IBC 지식에 대한 내용입니다.

  • Debugging a Blockchain: 효율적이고 효과적인 블록체인 개발을 유지하기 위해 디버깅에 필수적인 기술을 개발하는 내용을 포함합니다.

  • Running in a Docker Container: Docker를 사용하여 블록체인 환경을 컨테이너화하여 개발 단계 전반에 걸쳐 일관성과 이식성을 보장하는 방법에 대한 내용입니다.

  • Chain Simulation: 다양한 시나리오에서 기능을 테스트하고 검증하기 위해 블록체인 환경을 시뮬레이션하는 방법과 중요성에 대한 내용입니다.

Getting Started with Ignite CLI

이 튜토리얼에서는 Ignite CLI를 사용하여 새로운 블록체인을 생성합니다. Ignite CLI를 사용하면 필요한 모든 구성 요소를 수동으로 설정하지 않고도 새 블록체인을 빠르게 생성할 수 있습니다.

Ignite CLI를 사용하여 블록체인을 생성한 후에는 생성된 디렉터리 구조와 파일을 살펴보겠습니다. 이를 통해 우리는 블록체인이 어떻게 구성되어 있는지, 그리고 블록체인의 다양한 구성 요소가 어떻게 서로 상호 작용하는지 이해할 수 있습니다.

Create Blockchain

먼저 블록체인을 생성할 폴더를 생성 후 해당 폴더로 이동후 실행해줍니다.

cd /<your_path>

ignite scaffold chain example

🚨 GOPROXY가 비어있거나 유효한 프록시 서버 주소를 포함하지 않고 있을 경우 오류가 발생할 수 있습니다.

echo $GOPROXY

만약 GOPROXY가 비어 있을 경우 다음 명령어로 추가합니다.

go env -w GOPROXY=https://proxy.golang.org,direct

만들어진 블록체인은 Cosmos SDK Framework를 기반으로 구축되었으며, 여러 표준 모듈을 가져온다고 합니다. 여러 모듈에는 DPoS 합의 알고리즘을 위한 모듈, 계정 간 토큰 전송을 위한 모듈, OnChain 거버넌스 등이 포함됩니다. 만들어진 프로젝트에는 Cosmos SDK BlockChain의 구조를 구성하는 파일과 디렉토리가 포함되어 있습니다. 이 디렉토리는 체인 구성, 애플리케이션 로직, 테스트 등을 위한 파일들이 포함되어 있다고 합니다. 이로 인해 개발자가 Cosmos SDK를 이용한 블록체인 구성을 더욱 쉽게 도와줍니다.

기본적으로 Ignite는 x/디렉터리에 생성한 이름과 동일한 이름을 가진 빈 사용자 정의 모듈을 생성합니다. 이 모듈에는 자체적으로 기능이 없지만 애플리케이션 기능을 구축하기 위한 시작점 역할을 할 수 있다고 합니다 해당 모듈을 생성하지 않으려면 --no-module을 사용하여 건너뛸 수 있다고 합니다.

Directory Structure

생성된 프로젝트 내부 디렉토리에 대한 설명입니다.

  • app/ : 블록체인의 여러 부분을 함쎄 연결하는 파일이 포함되어 있으며, 해당 디렉토리에서 가장 중요한 파일은 app.go입니다. app.go에는 블록체인의 유형 정의 및 블록체인 생성 및 초기화 기능을 포함하고 있습니다.

  • cmd/ : 컴파일된 바이너리의 CLI를 담당하는 기본 패키지가 포함되어 있습니다. 해당 디렉토리에는 CLI에서 실행할 수 있는 명령과 실행 방법을 정의하며 개발자와 사용자가 블록체인과 상호 작용 하는 등 다양한 작업을 수행할 수 있는 방법을 제공합니다.

  • docs/ : 프로젝트의 문서를 저장하는데 사용하며 기본적으로 이 디렉토리는 소프트웨어 프로젝트의 API를 정의하기 위한 Open API 사양 파일이 포함되어 있습니다. OpenAPI 사양을 사용하면 프로젝트에 대해 사람이 읽을 수 있는 문서를 자동으로 생성할 수 있을 뿐만 아니라 다른 도구 및 서비스가 API와 상호 작용할 수 있는 방법을 제공 할 수 있다고 합니다.

  • proto/ : 블록체인의 데이터 구조를 설명하는데 사용되는 Protocol Buffer파일이 포함되어 있으며 , 블록체인에서 사용되는 데이터 구조와 메시지를 정의하고 블록체인과 상호 작용하는데 사용할 수 있는 다양한 프로그래밍 언어에 대한 코드를 생성하는데 사용됩니다.Protocol Buffer는 Cosmos SDK의 맥락에서 블록체인에서 보내고 받을 수 잇는 특정 유형의 데이터뿐만 아니라 블록체인 기능에 엑세스하는 데 사용할 수 있는 특정 RPC 엔드포인트를 정의하는데 사용된다고 합니다.

  • testutil/ : 테스트에 사용되는 utility 함수들이 포함되어 있습니다. 테스트 계정 생성, 트랜잭션 생성, 블록체인 상태 확인 등 블록체인에 대한 테스트를 작성할 때 필요한 일반적인 작업을 수행하는 utility를 제공한다고 합니다. testutil/ 디렉터리의 utility 함수들을 사용하면 개발자는 테스트를 더 빠르고 효율적으로 작성할 수 있으며 테스트가 포괄적이고 효과적인지 확인할 수 있다고 합니다.

  • x/ : 블록체인에 추가된 사용자 지정 Cosmos SDK Module이 포함되어 있으며 표준 Cosmos SDK 모듈은 Staking, Governece 지원 등 블록체인에 대한 공통 기능을 제공하는 사전 구축된 구성요소들입니다.

  • config.yml : 개발 중에 블록체인을 사용자 정의하는 데 사용할 수 있는 구성 파일이며, 네트워크 ID, 계정 잔액, 노드 매개변수 등 블록체인의 다양한 측면을 제어하는 ​​설정이 포함되어 있습니다.

  • .github : GitHub Actions Work Flow가 포함되어 있습니다.

Starting a blockchain node

ignite chain serve 명령은 개발 모드에서 시작하는데 사용이 됩니다. ignite chain build 명령을 사용하여 바이너리를 컴파일하고 설치한 다음 ignite chain init 명령을 사용하여 단일 유효성 검사기에 대한 블록체인의 데이터 디렉터리를 초기화합니다. 그 후, 로컬에서 노드를 시작하고 자동 코드 재로드를 활성화하여 노드를 다시 시작하지 않고도 코드 변경 사항이 실행 중인 블록체인에 반영될 수 있습니다.

cd example

ignite chain serve

터미널에서 실행 이후에는 다음과 같은 화면이 나오며 API는 Swagger로 되어 있습니다.

Terminal
BlockChain API
Node API
Faucet API

Outro

여기까지 Ignite CLI에 대한 Introduction을 포함한 Getting Started with Ignite CLICreate and Run Your First Blockchain에 대하여 알아보았습니다.

이후 Hello World Tutorial을 시작으로 하나씩 튜토리얼을 진행해보면서 전체적인 블록체인 개발에 대한 이해도 상승과 Cosmos SDK를 이용한 네트워크 구성까지 달려보도록 하겠습니다! 😀


References