Phase 7 — Community Validator Expansion¶
Ekspansi validator Garuda Chain dari 5 genesis → 11 early community → 21 full decentralization.
Ringkasan¶
| Parameter | Nilai |
|---|---|
| Genesis validators | 5 (core team) |
| Phase 2 target | 11 validators |
| Phase 3 target | 21 validators |
| Min stake | 100.000 GAT |
| Chain ID | 8846 (mainnet) |
Arsitektur Ekspansi¶
Phase 1 (Genesis) → 5 validators [completed]
Phase 2 (Early) → 11 validators [+6 community]
Phase 3 (Community) → 21 validators [+10 community]
On-Chain (GarudaValidatorRegistry)¶
Fungsi baru:
expandToPhase(1|2|3)— set max validators & buka pendaftaran komunitasgetOpenSlots()— slot tersediagetExpansionStatus()— phase, current, max, target, communityOpensetCommunityRegistrationOpen(bool)— toggle pendaftaranremoveValidator(address, reason)— hapus validator slashed/inactive
Quick Start¶
1. Cek status ekspansi¶
npm run community:status
2. Expand on-chain ke Phase 3 (21 validators)¶
npm run community:expand # default phase 3
npm run community:expand:phase2 # phase 2 (11 validators)
3. Generate keys komunitas (validator 6-21)¶
npm run community:keys
4. Onboard validator komunitas¶
bash scripts/community/onboard-validator.sh 6 "Garuda Jakarta" "https://validator.id" mainnet
5. Deploy node komunitas (overlay Docker)¶
docker compose -f docker-compose.mainnet.yml -f docker-compose.community-validators.yml up -d
6. IBFT Validator Vote¶
Setelah node berjalan, tambahkan validator ke set IBFT via Besu:
# Dari node genesis (validator 1)
besu validator propose --rpc-http-enabled \
--rpc-http-api=IBFT,ETH \
--rpc-http-port=8595 \
<COMMUNITY_VALIDATOR_ADDRESS>
API Endpoints¶
| Endpoint | Deskripsi |
|---|---|
GET /api/v1/validators/expansion |
Status ekspansi on-chain + config |
GET /api/v1/validators/program |
Program validator |
POST /api/v1/validators/applications |
Submit aplikasi |
Explorer¶
- Community Expansion: http://localhost:3000/validators/community
- Apply: http://localhost:3000/validators/apply
- Ranking: http://localhost:3000/validators
Distribusi Regional¶
| Region | Slots |
|---|---|
| Jakarta (ID-JK) | 4 |
| Jawa Barat (ID-JB) | 3 |
| Jawa Tengah (ID-JT) | 2 |
| Jawa Timur (ID-JI) | 3 |
| Sumatera (ID-SU) | 2 |
| Kalimantan (ID-KA) | 2 |
| Maluku & Papua (ID-ML) | 2 |
| International (GLOBAL) | 3 |
Alur Onboarding¶
- Submit aplikasi via
/validators/apply - Review teknis (7 hari)
- Stake 100.000 GAT on-chain
- Deploy Besu validator node
- IBFT validator vote proposal
- Go live di mainnet
Kontrak & Script¶
| File | Fungsi |
|---|---|
contracts/script/ExpandValidators.s.sol |
Expand phase on-chain |
chain/config/community-validators/expansion.json |
Jadwal & region |
chain/validator-program/community-registry.json |
Registry komunitas |
scripts/community/expand-validators.sh |
CLI expand |
scripts/community/onboard-validator.sh |
Full onboarding |
scripts/community/status.sh |
Status dashboard |
docker-compose.community-validators.yml |
Node 6-8 template |
Tests¶
cd contracts && forge test --match-contract CommunityValidators -vv
Checklist Go-Live¶
- [ ]
expandToPhase(3)dieksekusi on-chain - [ ]
communityRegistrationOpen = true - [ ] Keys validator 6-21 di-generate (tidak di-commit)
- [ ] Node Besu komunitas sync dengan mainnet
- [ ] IBFT vote untuk setiap validator baru
- [ ] Uptime monitoring aktif (
npm run validator:monitor) - [ ] Explorer
/validators/communitymenampilkan slot terbuka
Kontak¶
validators@garudachain.id