Start now →

Part 2 — Memahami Struktur Direktori Ignite (Cosmos SDK)

By kanieloutis · Published March 31, 2026 · 6 min read · Source: Blockchain Tag
Blockchain
Part 2 — Memahami Struktur Direktori Ignite (Cosmos SDK)

Part 2 — Memahami Struktur Direktori Ignite (Cosmos SDK)

kanieloutiskanieloutis6 min read·Just now

--

Press enter or click to view image in full size

Pada Part 1, kita telah mempelajari cara instalasi Ignite CLI di Linux hingga berhasil melakukan scaffold blockchain pertama. Di bagian ini, kita akan melangkah lebih dalam dengan memahami struktur direktori Ignite.

Memulai Project

Pertama, buat blockchain baru dengan perintah berikut:

ignite scaffold chain mychain
Press enter or click to view image in full size

Kemudian masuk ke direktori project:

cd mychain

Setelah itu, akan terlihat banyak folder dan file yang mungkin terasa membingungkan di awal. Namun semuanya memiliki peran yang jelas dan mengikuti arsitektur yang rapi.

Artikel ini akan membahas struktur direktori Ignite secara menyeluruh, sekaligus bagaimana setiap bagian saling terhubung dalam sebuah sistem blockchain.

Gambaran Besar

Ignite dibangun di atas Cosmos SDK, sehingga arsitekturnya mengikuti pola:

Blockchain = kumpulan modul + wiring + interface

Secara sederhana:

Memahami tiga bagian ini sudah cukup memberikan gambaran besar cara kerja blockchain di Ignite.

Struktur Direktori

Setelah scaffold, secara sederhana struktur project akan terlihat seperti ini:

mychain/
├── app/
├── cmd/
├── docs/
├── proto/
├── testutil/
├── x/
├── config.yml
└── readme.md
Press enter or click to view image in full size

Mari kita bahas satu per satu secara lebih dalam.

1. app/ — Pusat Konfigurasi Blockchain

File utama: app/app.go

Folder ini adalah tempat semua komponen blockchain disatukan.

Press enter or click to view image in full size

Fungsi utama:

Insight penting:

app.go bisa dianggap sebagai main function dari blockchain. Jika module baru ditambahkan di x/ tetapi tidak didaftarkan di sini, maka module tersebut tidak akan pernah digunakan oleh sistem.

2. cmd/ — Entry Point & CLI

Folder ini berisi command-line interface (CLI) untuk menjalankan blockchain.

Press enter or click to view image in full size

Contoh penggunaan:

mychaind start
mychaind tx ...
mychaind query ...

Isi utama:

Insight Penting:

Semua interaksi user melalui terminal terjadi lewat sini. Jika diperlukan command custom, maka bagian ini yang perlu diedit.

3. proto/ — Kontrak API Blockchain

Folder ini berisi file .proto yang menggunakan Protocol Buffers. Di sinilah semua transaksi (Msg), query, dan response didefinisikan.

Press enter or click to view image in full size

Contoh:

message MsgCreatePost {
string creator = 1;
string title = 2;
}

Insight Penting

Semua transaksi ke blockchain berasal dari definisi disini, dan secara otomatils di generate menjadi :

Folder ini adalah interface publik blockchain. Perubahan disini akan mempengaruhi cara client (ftontend, CLI, API) berinteraksi dengan blockchain.

4. x/ — Jantung Logika Bisnis

Folder ini berisi semua modul yang menjalankan logika bisnis blockchain.

Contoh stuktur :

x/mychain/ 
├── keeper/ ← Logic baca/tulis state blockchain
├── module/ ← Registrasi modul ke chain
├── types/ ← Definisi tipe data & pesan
└── README.md
Press enter or click to view image in full size

Setiap folder memiliki peran spesifik.

a. keeper/ — Akses State (Database Layer)

Keeper adalah layer yang bertugas membaca dan menulis data ke blockchain.

Contoh:

func (k Keeper) SetPost(ctx sdk.Context, post Post)

Insight Penting :

Keeper adalah gerbang resmi ke database blockchain.

b. module/ — Integrasi Modul ke Sistem

Bagian ini menghubungkan module ke sistem blockchain. Isi utamanya meliputiAppModule , MsgServer(handler transaksi), handler querydan genesis(init & export state).

Insight Penting :

Bagian ini adalah “lem” yang menghubungkan semua layer :

proto → module → keeper → state

Tanpa module, definisi di proto tidak akan pernah dieksekusi.

c. types/ — Definisi Data & Struktur

Contoh:

type Post struct {
Id uint64
Title string
}

Bagian ini bisa dianggap sebagai schema data dalam blockchain.

5. config.yml — Konfigurasi Development

Digunakan saat menjalankan:

ignite chain serve
Press enter or click to view image in full size

⚠️ Peringatan: Saat menjalankan ignite chain serve, Ignite akan men-generate akun beserta mnemonic/phrase untuk keperluan development. Pastikan mnemonic tersebut tidak disebarkan atau di-commit ke repository publik seperti GitHub. mnemonic yang bocor dapat disalahgunakan oleh pihak yang tidak bertanggung jawab.

Isi :

Press enter or click to view image in full size

Insight Penting :

File ini hanya digunakan untuk keperluan development, mempermudah testing tanpa setup manual, dan tidak digunakan di production.

Contoh :

Edit config.yml — tambah akun baru dan ubah jumlah token:

Press enter or click to view image in full size

Save, kemudian chain akan otomatis restart karena ignite punya live reload.

Selanjutnya verifikasi akun charlie berhasil dibuat :

mychaind keys list
Press enter or click to view image in full size
Press enter or click to view image in full size

Verifikasi sukses, akun charlie berhasil di tambahkan.

6. testutil/ — Tools untuk Testing

Digunakan untuk unit testing, mock context, dan helper function. Bagian ini sangat penting untuk memastikan logika berjalan dengan benar sebelum di-deploy.

7. docs/ — Dokumentasi API

Berisi file OpenAPI (Swagger) yang digunakan untuk dokumentasi endpoint dan integrasi dengan frontend atau service lain.

Bagaimana Semuanya Terhubung?

Memahami alur berikut sangat penting untuk mengerti cara kerja blockchain secara keseluruhan.

Alur Transaksi (Tx)

┌─────────────────────────────┐
│ User (CLI / API) │
└──────────────┬──────────────┘
│ mengirim transaksi

┌─────────────────────────────┐
│ Proto (Msg) │
│ mendefinisikan struktur │
└──────────────┬──────────────┘
│ diteruskan ke

┌─────────────────────────────┐
│ Module (Msg Server) │
│ memproses logika bisnis │
└──────────────┬──────────────┘
│ menulis data via

┌─────────────────────────────┐
│ Keeper │
│ gerbang akses ke state │
└──────────────┬──────────────┘
│ menyimpan ke

┌─────────────────────────────┐
│ State (Store) │
│ penyimpanan data on-chain │
└─────────────────────────────┘

Alur Query

┌─────────────────────────────┐
│ User │
└──────────────┬──────────────┘
│ mengirim permintaan

┌─────────────────────────────┐
│ Proto (Query) │
│ mendefinisikan struktur │
└──────────────┬──────────────┘
│ diteruskan ke

┌─────────────────────────────┐
│ Keeper │
│ membaca data dari state │
└──────────────┬──────────────┘
│ mengambil dari

┌─────────────────────────────┐
│ State (Store) │
│ penyimpanan data on-chain │
└─────────────────────────────┘

Mental Model Sederhana

┌──────────────┬──────────────────────────────────────────┐
│ Komponen │ Peran │
├──────────────┼──────────────────────────────────────────┤
│ proto/ │ 📡 API / kontrak komunikasi │
├──────────────┼──────────────────────────────────────────┤
│ types/ │ 🗂️ Struktur data │
├──────────────┼──────────────────────────────────────────┤
│ keeper/ │ 🗄️ Akses state (database) │
├──────────────┼──────────────────────────────────────────┤
│ module/ │ ⚙️ Logic handler │
├──────────────┼──────────────────────────────────────────┤
│ app/ │ 🔗 Penggabung semua modul │
├──────────────┼──────────────────────────────────────────┤
│ cmd/ │ 💻 Interface CLI │
└──────────────┴──────────────────────────────────────────┘

Kesimpulan

Dengan memahami struktur direktori ini, tidak hanya diketahui “di mana harus menulis kode”, tetapi juga bagaimana data mengalir di dalam blockchain, bagaimana modul saling berinteraksi, dan bagaimana sistem bekerja secara keseluruhan.

Ini adalah fondasi penting sebelum mulai membangun fitur yang lebih kompleks di atas Ignite.

📌 Artikel ini adalah bagian dari seri “Building Blockchain with Ignite CLI”. Jika menemukan kendala atau ada pertanyaan, jangan ragu untuk meninggalkan komentar di bawah.

This article was originally published on Blockchain Tag and is republished here under RSS syndication for informational purposes. All rights and intellectual property remain with the original author. If you are the author and wish to have this article removed, please contact us at [email protected].

NexaPay — Accept Card Payments, Receive Crypto

No KYC · Instant Settlement · Visa, Mastercard, Apple Pay, Google Pay

Get Started →