an image on a post about cryptoeconomics

Post yang lalu, penulis bercerita tentang hash function dalam Siri Cryptoeconomics Part I. Dalam post ini, kita masih lagi di bawah tajuk yang sama. Struktur data dalam teknologi Blockchain boleh dikatakan sebagai elemen terpenting dalam teknologi itu, kerana ia adalah blok dalam blockchain. Dan proses hashing atau mining adalah aktiviti yang dijalankan untuk membentuk blok-blok dalam blockchain. Jom baca post ini untuk belajar dengan lebih mendalam.

Struktur Data

Sumber: Bitcoin whitepaper

Gambar di atas menunjukkan transaksi Bitcoin yang mempunyai nilai hash. Terdapat dua elemen penting dalam gambar di atas untuk memahami bagaimana teknologi blockchain beroperasi:

  1. Pointers (penunjuk arah)
  2. Linked lists (struktur data yang berhubung)

Pointers

Dalam setiap programming language, terdapat beberapa pembolehubah (variables) yang boleh menyimpan data. Contohnya, int a = 2, bermakna pembolehubah a menyimpan nilai  angka (integer), iaitu 2Dalam kes pointers pula, ianya adalah pembolehubah yang menyimpan suatu alamat bagi pemboleh ubah lain. Jika anda lihat gambar di atas, anak panah yang menghala ke hash transaksi seterusnya adalah hash pointers, dan ianya bukan sahaja menyimpan alamat, tetapi juga nilai hash yang terdapat dalam transaksi sebelumnya.

Ini adalah faktor utama teknologi blockchain mempunyai ciri-ciri immutability. Seperti yang penulis terangkan dalam point 4, sedikit perubahan dalam input menyebabkan perubahan besar kepada nilai hash. Disebabkan hash pointers, jika data dalam transaksi ke-3 diubah, akan mengubah nilai hash dalam transaksi ke-2, yang juga akan mengubah nilai hash dalam transaksi pertama. Ia akan mengubah keseluruhan rantai blockchain, menyebabkan sistem blockchain gagal.

Linked lists

Sumber: blockgeeks.com

Linked lists adalah struktur data yang berhubung dengan yang sebelumnya melalui hash pointer. Struktur data yang dimaksudkan adalah urutan blok yang mengandungi data seperti gambar diatas. Dalam erti kata lain, linked lists adalah blockchain, atau rantaian blok-blok yang berhubung dengan blok sebelumnya.

Dalam setiap blok akan terdapat data seperti dibawah:

  • Nombor blok
  • Masa
  • Kadar kesukaran pada waktu itu (dalam proses mining)
  • Nilai hash daripada blok sebelumnya
  • Nonce
  • Nilai hash daripada Merkle Root

Merkle Root

Sumber: wikipedia

Dalam gambar di atas, kita boleh melihat blok-blok data atau input yang dilabel L1 hingga L4. Blok-blok data ini dinamakan leaf node, dan dalam suatu Merkle Tree, setiap leaf node akan melalui proses hashing berulang kali sehingga akhirnya mendapat root node (Top Hash), dan ianya adalah nilai hash bagi keseleruhan nod di bawahnya. Dalam barisan ketiga dari atas pula, setiap hash dipanggil child nodes. Cotohnya, hash 0-0 dan hash 0-1 adalah child node kepada nod dengan label hash 0.

Kegunaan Merkle Tree dalam Blockchain

Dalam mana-mana sistem yang menggunakan rangkaian peer-to-peer, pengesahan data sangat penting kerana ia wujud dalam banyak lokasi. Jadi, jika data dalam satu tempat diubah, kesemua data yang disimpan dalam lokasi berlainan juga perlu diubah. Setiap blok juga mengandungi beribu-ribu transaksi dan ia akan mengambil masa yang sangat lama untuk menyimpan setiap data dalam blok secara bersiri. Merkle Tree sangat berguna untuk membuat pengesahan data tanpa perlu memeriksa keseluruhan data satu-persatu setiap kali suatu data perlu disahkan.

Proses Hashing atau Mining

Proses Hashing atau Mining adalah proses mencari blok baru untuk dimasukkan dalam rantaian blok (blockchain). Pada awalnya, sesiapa yang mempunyai komputer boleh menjalankan aktiviti mining, tetapi lama-kelamaan miners mula menubuhkan mining pool untuk menggabungkan kuasa komputer mereka supaya dapat mining dengan lebih cepat dan efisien.

Namun begitu, tidaklah mudah untuk membentuk satu blok begitu sahaja. Proses untuk membentuk satu blok baru adalah seperti berikut:

  1. Nilai hash dalam satu blok baru diambil
  2. Nonce (rentetan angka/huruf yang rambang) di sambungkan ke hash tersebut
  3. Gabungan hash/nonce tadi melalui proses hashing
  4. Nilai hash tersebut dibanding dengan kadar kesukaran dan diperiksa sama ada ia kurang atau tidak
  5. Jika ia lebih dari kadar kesukaran, nonce akan diubah dan proses di atas diulang semula
  6. JIka ia kurang dari kadar kesukaran, blok itu akan dimasukkan dalam rantai dan lejar akan dikemaskini
  7. Miners yang membentuk blok mendapat ganjaran

Kadar kesukaran diselenggara untuk mengekalkan ekosistem

Pernah dengar istilah “Tragedy of the Commons”? Ia selalu dikaitkan dengan aktiviti perikanan di mana nelayan menangkap ikan lebih cepat daripada ikan membiak, dan akhirnya menghabiskan sumber ikan. Dalam kes matawang kripto seperti Bitcoin, terdapat hanya 21 juta Bitcoin dan jika mining dilakukan tanpa had, kesemua Bitcoin akan habis dengan cepat. Di samping itu, had masa 10 minit antara pembentukan blok mengelakkan daripada berlakunya collision (baca tentang collision resistance) dan orphaned blocks, atau blok-blok yang dipisahkan kerana dibentuk pada masa yang sama.

Untuk menyelesaikan isu-isu di atas, Bitcoin menjalankan penyelenggaraan kadar kesukaran mining. Kadar kesukaran mining Bitcoin diselenggara setiap 2016 blok. Melalui kadar kesukaran itu, sasaran kesukaran adalah rentetan sepanjang 64-bit yang bermula dengan beberapa angka ‘0’. Jumlah angka ‘0’ bertambah apabila kadar kesukaran bertambah. Kadar kesukaran ini menyebabkan mining menjadi lebih sukar dan mengambil masa yang lama. Di bawah adalah illustrasi bagaimana kitaran mining berjalan:

Penulis akan berhenti setakat ini dahulu. Dan dalam post akan datang, penulis akan bercerita tentang konsep kriptografi yang lain pula.

Selamat membaca!

 

 

LEAVE A REPLY

Please enter your comment!
Please enter your name here