Membongkar fondasi blockchain: block, hashing, struktur data rantai, dan consensus PoW/PoS, plus simulasi transaksi sederhana untuk melihat bagaimana sebuah blockchain bekerja dari dalam

Setelah di episode 1 kita memahami peran blockchain developer dan arah Web3 2026, pada episode ini kita membongkar mesin yang sesungguhnya: bagaimana blockchain bekerja dari dalam. Ini fondasi yang tidak boleh kalian lewati — setiap keputusan arsitektur di episode-episode berikut (gas, storage, keamanan, scaling) berakar pada konsep-konsep di episode ini.
Anggap blockchain sebagai buku besar (ledger) bersama yang dimiliki semua orang, tidak ada satu entitas pun yang memegang kendali penuh, dan setiap halaman baru hanya bisa ditambahkan jika mayoritas jaringan sepakat bahwa isinya valid.
Setiap block membungkus tiga lapisan informasi:
| Bagian | Isi |
|---|---|
| Header | Hash block, hash block sebelumnya, timestamp, nonce, merkle root |
| Body | Daftar transaksi yang disahkan block ini |
| Metadata | Ukuran, jumlah transaksi, nilai total |
Kunci yang membuat rantai ini aman adalah hash block sebelumnya di dalam header. Karena setiap block mengunci hash pendahulunya, mengubah satu transaksi di block lama akan mengubah hash-nya, merusak seluruh block setelahnya — dan jaringan akan menolak. Inilah mengapa blockchain "immutable": bukan karena tidak bisa diubah secara teknis, melainkan karena mengubahnya membutuhkan menulis ulang seluruh sejarah, yang mustahil secara ekonomi.
Hash adalah fungsi satu arah: mudah dihitung, mustahil dibalik. Di blockchain, hash dipakai untuk tiga hal:
Mari kita coba hashing langsung dengan command-line:
echo -n "Belajar Blockchain" | sha256sum
echo -n "Belajar Blockchain." | sha256sumPerhatikan: hanya menambahkan satu titik di akhir mengubah hash total. Inilah properti avalanche effect — perubahan kecil menghasilkan output yang sama sekali berbeda, sehingga jaringan bisa mendeteksi manipulasi sekecil apa pun.
Karena tidak ada server pusat, blockchain butuh mekanisme agar semua node menyepakati urutan transaksi yang sama. Dua pendekatan utama:
Node (miner) bersaing memecahkan teka-teki kriptografi — mencari nonce yang membuat hash block di bawah target tertentu. Pemenang menyebarkan block, node lain memverifikasi, dan yang paling lama memakai energi menang. Aman tapi boros energi; dipakai Bitcoin, dan Ethereum sebelum The Merge.
Node (validator) mengunci (stake) token sebagai jaminan. Validator dipilih untuk membuat block berdasarkan jumlah stake, dan kehilangan sebagian stake jika bertindak curang (slashing). Jauh lebih hemat energi dan jadi mekanisme Ethereum sejak 2022.
Kalian tidak perlu jadi miner atau validator, tetapi harus memahami: finality (berapa lama sampai transaksi dianggap permanen), fork (dua versi chain yang bersaing), dan reorg (block ditolak karena ada chain yang lebih panjang). Konsep ini menentukan berapa lama aplikasi kalian harus menunggu sebelum menganggap transaksi sukses.
Desentralisasi punya spektrum, bukan dikotomi. Satu proyek bisa terdesentralisasi di satu lapisan dan terpusat di lapisan lain:
| Lapisan | Terpusat | Terdesentralisasi |
|---|---|---|
| Konsensus | Perusahaan tunggal memvalidasi | Ribuan validator independen |
| Data | Database server pribadi | Data on-chain yang bisa diverifikasi semua orang |
| Logic | Backend API tertutup | Smart contract yang kodenya publik |
| UI | dApp yang bisa diubah kapan saja | Frontend statis / IPFS |
Tugas blockchain developer adalah memilih level desentralisasi yang tepat untuk setiap lapisan — bukan memaksakan semua terdesentralisasi.
Mari kita simulasi alur transaksi dengan skrip Node sederhana yang menggabungkan konsep-konsep di atas:
mkdir -p ~/blockchain-lab && cat > ~/blockchain-lab/tx.js <<'EOF'
const crypto = require("crypto")
function hash(data) {
return crypto.createHash("sha256").update(data).digest("hex")
}
// Transaksi sederhana: pengirim, penerima, jumlah
const txs = [
{ from: "0xAlice", to: "0xBob", amount: 10 },
{ from: "0xCarol", to: "0xDave", amount: 5 },
]
// Block memuat hash dari gabungan transaksi + hash block sebelumnya
let prevHash = "0".repeat(64)
let nonce = 0
let blockHash = ""
while (!blockHash.startsWith("0000")) {
blockHash = hash(`${JSON.stringify(txs)}|${prevHash}|${nonce}`)
nonce++
}
console.log("Block hash:", blockHash)
console.log("Nonce ditemukan:", nonce - 1)
console.log("Hash valid:", blockHash.slice(0, 4) === "0000")
EOF
node ~/blockchain-lab/tx.jsSkrip ini mensimulasikan PoW dalam bentuk paling sederhana: kita mencari nonce sampai hash block diawali 0000. Jalankan beberapa kali dan perhatikan bagaimana nonce berubah — itulah inti konsensus, diotomasi secara massif di jaringan nyata.
Note
Simulasi ini sengaja disederhanakan. Blockchain nyata memakai merkle tree untuk mengompak transaksi, target kesulitan yang dinamis, dan consensus layer yang jauh lebih kompleks. Fungsinya sama: menunjukkan bahwa keamanan blockchain lahir dari hashing yang berantai dan proses menemukan block yang valid.
Inti yang harus dibawa pulang:
Di episode 3 selanjutnya kita masuk ke ekosistem yang paling penting bagi karir kalian — Ethereum & EVM: cara kerja Ethereum Virtual Machine, gas, tipe akun (EOA vs contract), dan praktik pertama men-deploy kontrak ke testnet. Persiapkan MetaMask kalian, karena episode 3 adalah deploy pertama!