flowchart RL
A["User membuka Static Web"] --> B["Login Form"]
B --> C["User memasukkan email + password"]
C --> D["HTTPS / TLS"]
D --> E["Auth Server"]
E --> F{"User valid?"}
F -- "Tidak" --> G["401 Unauthorized"]
G --> B
F -- "Ya" --> H["Password diverifikasi<br/>terhadap password hash"]
H --> I["Generate Session / Access Token"]
I --> J["Token dikirim melalui HTTPS"]
J --> K["Browser menyimpan session<br/>dengan Secure + HttpOnly Cookie"]
K --> L["User mengakses resource"]
L --> M["Browser mengirim Cookie"]
M --> N["Auth Server memverifikasi Session"]
N --> O{"Session valid?"}
O -- "Tidak" --> P["403 Forbidden"]
O -- "Ya" --> Q["Resource / API Response"]
Q --> R["Static Web menampilkan data"]
Cara Kerja API (Sederhana)
Bayangin API itu kayak pelayan restoran. Kamu (client) gak masuk ke dapur (server) buat masak sendiri — kamu cukup kasih pesanan ke pelayan, pelayan yang urus ke dapur, terus bawa makanannya balik ke kamu.
sequenceDiagram participant Client as Client (Browser/App) participant API as API Server participant DB as Database Client->>API: Request (misal: GET /users/1) API->>DB: Query data user DB-->>API: Kembalikan data API-->>Client: Response (JSON)
Langkah-langkahnya:
- Request — Client kirim permintaan ke API, biasanya lewat URL + method (
GET,POST,PUT,DELETE). - Processing — API menerima request, cek validitas (misal: perlu login/token), lalu ambil/olah data yang dibutuhkan, biasanya dari database.
- Response — API kirim balik hasilnya ke client, umumnya dalam format JSON, disertai status code (
200 OK,404 Not Found,500 Server Error, dst).
Contoh nyata
flowchart LR A[Client] -- "GET /posts/5" --> B[API Server] B -- "SELECT * FROM posts WHERE id=5" --> C[(Database)] C -- "data post" --> B B -- "200 OK + JSON" --> A
Intinya: API adalah jembatan yang mengatur bagaimana dua sistem (client dan server) saling “ngobrol” — tanpa client perlu tahu detail internal server, dan sebaliknya.
Smart contract adalah program yang berjalan pada blockchain dan dapat mengeksekusi aturan tertentu secara otomatis tanpa membutuhkan pihak ketiga.
Tujuan Proyek
Proyek ini bertujuan untuk memahami bagaimana smart contract dibuat, dideploy, dan berinteraksi dengan blockchain.
Tujuan Utama
- Memahami konsep smart contract
- Membuat smart contract sederhana
- Melakukan deployment ke testnet
- Berinteraksi dengan contract melalui Web3
Hasil yang Diharapkan
Pada akhir proyek, tersedia sebuah smart contract sederhana yang dapat menerima transaksi dan menyimpan data pada blockchain.
Teknologi yang Digunakan
Beberapa teknologi yang digunakan dalam proyek ini adalah:
- Solidity
- Ethereum
- Hardhat
- Node.js
- Ethers.js
Arsitektur Sistem
Sistem terdiri dari beberapa komponen utama yang saling berinteraksi.
Smart Contract
Smart contract menjadi komponen utama yang menjalankan logic aplikasi pada blockchain.
Blockchain
Blockchain digunakan sebagai tempat penyimpanan state dan eksekusi smart contract.
Web3 Client
Web3 client digunakan untuk berkomunikasi dengan smart contract dari aplikasi eksternal.
Persiapan Environment
Sebelum membuat smart contract, environment pengembangan perlu dipersiapkan.
Instalasi Node.js
Node.js digunakan untuk menjalankan tooling dan dependency proyek.
Inisialisasi Project
Buat project baru dan install dependency yang diperlukan.
Membuat Smart Contract
Smart contract pertama akan dibuat menggunakan Solidity.
Struktur Contract
Contract memiliki beberapa state variable dan function untuk mengelola data.
State Variable
State variable digunakan untuk menyimpan data secara permanen pada blockchain.
Function
Function digunakan untuk membaca atau mengubah state dari smart contract.
Testing Smart Contract
Contract perlu diuji sebelum dilakukan deployment.
Unit Test
Unit test digunakan untuk memastikan setiap function bekerja sesuai dengan yang diharapkan.
Edge Case
Pengujian juga dilakukan terhadap kondisi yang tidak biasa atau input yang tidak valid.
Deployment
Setelah seluruh pengujian berhasil, smart contract dapat dideploy ke blockchain.
Deployment ke Local Network
Tahap pertama dilakukan pada blockchain lokal untuk mempercepat proses pengembangan.
Deployment ke Testnet
Setelah berhasil pada local network, contract dapat dideploy ke testnet.
Interaksi dengan Smart Contract
Setelah deployment, aplikasi dapat berinteraksi dengan contract.
Read Operation
Data yang tersimpan pada blockchain dapat dibaca tanpa melakukan transaksi.
Write Operation
Perubahan state membutuhkan transaksi yang dikirim ke blockchain.
Security Considerations
Smart contract harus memperhatikan aspek keamanan karena kesalahan pada contract dapat menyebabkan kehilangan aset atau manipulasi state.
Access Control
Function tertentu harus dibatasi agar hanya pihak yang memiliki izin yang dapat menjalankannya.
Reentrancy
Contract harus dirancang untuk mencegah serangan reentrancy.
Integer Overflow
Operasi aritmatika harus diperhatikan agar tidak menghasilkan nilai yang tidak diharapkan.
Deployment Architecture
Arsitektur deployment dapat dibagi menjadi beberapa lingkungan.
Development
Digunakan selama proses pengembangan dan debugging.
Testnet
Digunakan untuk menguji contract pada lingkungan yang menyerupai blockchain sebenarnya.
Mainnet
Digunakan ketika contract telah siap digunakan secara nyata.
Kesimpulan
Membangun smart contract membutuhkan pemahaman terhadap Solidity, blockchain, deployment, testing, dan keamanan.
Proyek ini dapat dikembangkan lebih lanjut dengan menambahkan frontend, wallet integration, event listener, dan mekanisme governance.