Skip to main content
simplified northern lights aurora visualizationNur Arif

Back to all projects

Membangun Smart Contract

-
Visit project
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:

  1. Request — Client kirim permintaan ke API, biasanya lewat URL + method (GET, POST, PUT, DELETE).
  2. Processing — API menerima request, cek validitas (misal: perlu login/token), lalu ambil/olah data yang dibutuhkan, biasanya dari database.
  3. 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.