Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 172 additions & 0 deletions README.id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
# Devnet Faucet

## Apa itu Project Ini?

**Devnet Faucet** adalah aplikasi web yang memungkinkan siapa saja untuk mendapatkan token SOL gratis di jaringan testnet Solana (devnet). Project ini dirancang untuk membantu developer blockchain yang sedang mengembangkan aplikasi atau smart contract di ekosistem Solana tanpa harus mengeluarkan biaya untuk token sungguhan.

## Tujuan Project

### 1. **Mempermudah Akses Token Testing**
Developer yang ingin mengembangkan aplikasi di Solana membutuhkan SOL token untuk membayar transaction fees. Di testnet (devnet), token ini tidak memiliki nilai ekonomi nyata, namun tetap diperlukan untuk testing. Faucet ini memberikan akses mudah dan cepat untuk mendapatkan token tersebut.

### 2. **Mendukung Ekosistem Solana**
Dengan menyediakan token devnet secara gratis, project ini membantu menurunkan barrier of entry bagi developer baru yang ingin belajar dan berkontribusi pada ekosistem Solana.

### 3. **Verifikasi Kontributor Aktif**
Menggunakan data dari Electric Capital Crypto Ecosystems, aplikasi ini memverifikasi bahwa pengguna yang meminta airdrop adalah kontributor aktif pada repository-repository dalam ekosistem Solana. Ini memastikan token testnet diberikan kepada developer yang benar-benar membutuhkannya.

### 4. **Mencegah Penyalahgunaan**
Implementasi rate limiting memastikan bahwa satu pengguna tidak dapat menyalahgunakan faucet dengan melakukan request berlebihan. Ini menjaga ketersediaan token untuk semua developer yang membutuhkan.

## Fitur Utama

- **🔐 Autentikasi GitHub**: Pengguna login menggunakan akun GitHub mereka
- **✅ Verifikasi Otomatis**: Sistem secara otomatis memverifikasi kontribusi GitHub terhadap ekosistem Solana
- **⏱️ Rate Limiting**: Pembatasan frekuensi request untuk mencegah spam dan abuse
- **🚀 Self-Hostable**: Dapat di-deploy sendiri dengan mudah di Vercel atau platform hosting lainnya
- **⚙️ Konfigurasi Fleksibel**: Pemilik faucet dapat mengatur jumlah airdrop dan wallet yang digunakan
- **📊 Admin Dashboard**: Panel admin untuk melihat statistik dan mengelola vouch system

## Cara Kerja

1. **Login**: Pengguna melakukan autentikasi menggunakan GitHub OAuth
2. **Verifikasi**: Sistem memeriksa apakah pengguna berkontribusi pada repository Solana
3. **Request Airdrop**: Pengguna memasukkan alamat wallet Solana mereka
4. **Validasi**: Sistem memeriksa rate limit dan validasi lainnya
5. **Transfer**: Jika semua validasi lolos, SOL token dikirim ke alamat yang diminta
6. **Konfirmasi**: Pengguna menerima konfirmasi beserta transaction signature

## Teknologi yang Digunakan

- **Next.js 14**: Framework React untuk aplikasi web modern
- **NextAuth.js**: Library autentikasi dengan support untuk GitHub OAuth
- **Solana Web3.js**: SDK untuk berinteraksi dengan blockchain Solana
- **Upstash KV & Rate Limit**: Database in-memory dan rate limiting
- **TypeScript**: Type-safe development
- **Tailwind CSS**: Utility-first CSS framework untuk styling
- **Vercel Analytics**: Tracking penggunaan aplikasi

## Memulai Project

### Prasyarat
- Node.js 18 atau lebih baru
- Akun GitHub (untuk OAuth)
- Solana CLI (untuk generate keypair)

### Langkah-langkah Setup

1. **Generate Faucet Key**
```bash
solana-keygen new --no-bip39-passphrase -o faucetkey.json
```

2. **Salin Private Key**
```bash
cat faucetkey.json
```
Paste hasil di atas ke environment variable `SENDER_SECRET_KEY`

3. **Salin Public Key**
```bash
solana-keygen pubkey faucetkey.json
```
Paste hasil di atas ke environment variable `NEXT_PUBLIC_FAUCET_ADDRESS`

4. **Set Jumlah Airdrop**
Set environment variable `NEXT_PUBLIC_AIRDROP_AMOUNT` (contoh: `0.5` untuk 0.5 SOL)

5. **Install Dependencies**
```bash
npm install
```

6. **Jalankan Development Server**
```bash
npm run dev
```

7. **Buka Browser**
Akses [http://localhost:3000](http://localhost:3000)

### Environment Variables

Buat file `.env.development.local` dengan isi:

```env
# Alamat public faucet wallet
NEXT_PUBLIC_FAUCET_ADDRESS=<your-faucet-public-key>

# Private key faucet wallet (format array JSON)
SENDER_SECRET_KEY=<your-faucet-secret-key>

# Jumlah SOL yang dikirim per airdrop
NEXT_PUBLIC_AIRDROP_AMOUNT=0.5

# GitHub OAuth (dapatkan di GitHub Developer Settings)
GITHUB_ID=<your-github-oauth-app-id>
GITHUB_SECRET=<your-github-oauth-app-secret>

# NextAuth secret (generate dengan: openssl rand -base64 32)
NEXTAUTH_SECRET=<your-nextauth-secret>
NEXTAUTH_URL=http://localhost:3000

# Upstash Redis (untuk rate limiting)
UPSTASH_REDIS_REST_URL=<your-upstash-redis-url>
UPSTASH_REDIS_REST_TOKEN=<your-upstash-redis-token>
```

## Deploy ke Production

Project ini dapat di-deploy dengan mudah ke Vercel:

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fstakeware%2Fdevnetfaucet&env=NEXT_PUBLIC_FAUCET_ADDRESS,SENDER_SECRET_KEY,NEXT_PUBLIC_AIRDROP_AMOUNT&envDescription=Faucet%20address%2C%20airdrop%20amount%2C%20and%20the%20faucet's%20private%20key%20are%20all%20that%20you%20need&project-name=sol-devnet-faucet&repository-name=sol-devnet-faucet)

Pastikan semua environment variables sudah di-set di dashboard Vercel.

## Update Data Ekosistem

Data repository Solana diambil dari Electric Capital Crypto Ecosystems. Untuk update data terbaru:

```bash
# Download file solana.jsonl terbaru, lalu:
npx tsx scripts/update_ecosystem_data.ts
```

## Use Cases

### Untuk Developer Blockchain
- Testing smart contract di Solana devnet
- Development dan debugging dApp
- Belajar Solana programming tanpa risiko finansial

### Untuk Educator
- Mengajar workshop Solana development
- Menyediakan token testnet untuk peserta kursus
- Demo aplikasi blockchain

### Untuk Open Source Contributors
- Testing kontribusi pada project Solana
- QA dan bug testing
- Integration testing

## Kontribusi

Project ini adalah open source. Kontribusi dalam bentuk bug report, feature request, atau pull request sangat diterima.

## Lisensi

Silakan cek file LICENSE di repository untuk informasi lisensi.

## Atribusi Data

Project ini menggunakan data dari [Electric Capital Crypto Ecosystems](https://github.com/electric-capital/crypto-ecosystems) untuk verifikasi repository Solana.

Jika Anda bekerja di open source crypto, silakan [submit repository Anda di sini](https://github.com/electric-capital/crypto-ecosystems) agar dapat terdata.

## Support

Untuk pertanyaan atau bantuan, silakan buka issue di GitHub repository atau hubungi maintainer project.

---

**Catatan Penting**: Token yang didistribusikan adalah SOL devnet yang tidak memiliki nilai ekonomi nyata. Hanya gunakan untuk keperluan testing dan development.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Devnet Faucet

*[Baca dalam Bahasa Indonesia](README.id.md)*

This app allows anyone to set up a Solana faucet.

Expand Down