GoRa Chain adalah prototipe blockchain Proof-of-Work (PoW) yang ringkas dan ditulis dengan Go. Proyek ini dibuat untuk eksperimen dan pembelajaran — bukan untuk penggunaan produksi secara langsung.
- Mulai Cepat
- Struktur Repository
- Dompet & File Kunci
- Penyimpanan Data (LevelDB)
- API HTTP (Ringkasan)
- Pengembangan
- Catatan Keamanan
- Kontribusi
- Lisensi
Persyaratan: Go 1.20 atau lebih baru.
- Menginisialisasi modul
go mod init gora-blockchain- Ambil dependensi:
go mod tidy- Jalankan node (port default
8080, dapat diubah):
go run cmd/node/main.go --port=8080Atau build binary terlebih dahulu:
go build -o gora-node ./cmd/node
./gora-node --port=8080Saat pertama kali dijalankan, node akan:
- Membuat seed dompet dan menyimpannya sebagai hex di
node_gora.key(working directory). - Membuat genesis block jika belum ada.
- Menginisialisasi likuiditas DEX (jika fitur aktif).
- Memulai loop penambangan.
cmd/node/— entrypoint aplikasi (main.go)core/— logika blockchain, penambangan, dan DEXapi/— handler HTTP dan routerwallet/— pembuatan & pemuatan pasangan kunci (keypair)utils/— helper (crypto, logger, address generation)chaindata_*— direktori LevelDB per instance
- Dompet menggunakan seed Ed25519 (32 bytes). Seed disimpan sebagai hex di file
node_gora.keysecara default. - Saat ini implementasi menggunakan nama file tetap
node_gora.keydi working directory node.
Node menyimpan data chain menggunakan LevelDB ke folder seperti chaindata_<port> atau chaindata_gora. Direktori ini bisa bertumbuh besar; gunakan disk dengan I/O dan ruang yang memadai.
Node menyediakan API HTTP pada http://localhost:<port> (default 8080). Endpoint utama (lihat implementasi di api/):
GET /rpc/stats— statistik jaringan (height, total tx, supply)GET /rpc/chain— daftar blok terbaruGET /rpc/txs— transaksi terbaru (melewati blok kosong)GET /rpc/balance?address=<addr>— cek saldoGET /rpc/history?address=<addr>— riwayat transaksi untuk alamatPOST /rpc/send— menyiarkan transaksi (JSON body)POST /rpc/validate— validasi format private key / derivasi alamat
Contoh permintaan:
curl "http://localhost:8080/rpc/balance?address=rA..."- Kompilasi seluruh repo:
go build ./... - Tidak ada unit test bawaan saat ini — pertimbangkan menambahkan test untuk
walletdancore.
node_gora.keymenyimpan seed yang menghasilkan private key node. Simpan dengan aman dan jangan bagikan.
Kontribusi diterima. Silakan buka issue atau kirim pull request dengan deskripsi perubahan dan test bila memungkinkan.
Proyek ini dilisensikan di bawah Lisensi MIT.