Peran Dan Fungsi Penambang (Miner)



Pertambangan Bitcoin yang sebenarnya, adalah sebuah kegiatan menambang menggunakan perangkat tertentu. Prosesnya melalui memecahkan serangkaian persoalan matematis (puzzle) berdasarkan tingkat kesulitan tertentu. Nah kegiatan inilah yang disebut dengan “Menambang” atau istilah kerennya adalah “Bitcoin Mining”.

Jadi jelasnya, bahwa jika seseorang menambang Bitcoin, artinya orang tersebut menggunakan perangkat pertambangan. Bisa menggunakan CPU, GPU, FPGA, maupun ASIC. Penjelasan tentang perangkat ini akan dibahas di bagian selanjutnya.
Pelaku pertambangan, disebut dengan istilah “penambang”, atau bahasa kerennya adalah “Miner”. Nah, kadang kala, kita juga masih menyisakan pertanyaan, apa sebenarnya yang dilakukan oleh penambang Bitcoin ini?

Mari kita membahasnya. Proses pertambangan Bitcoin mirip seperti halnya dengan pertambangan logam mulia seperti emas. Hanya saja perbedaannya, kalau Bitcoin pertambangannya dilakukan secara digital untuk memecahkan puzzle, dan pertambangan emas melalui proses pertambangan emas.

Menjadi mirip, karena kadangkala penambang ada yang merasa rugi, karena tidak bisa dan sulit menemukan emas, dan ada juga yang berhasil. Namun, gambaran nyatanya adalah, akan ada banyak kesulitan saat melakukan proses pertambangan tersebut.

Begitupun halnya dengan pertambangan Bitcoin. Ada sederet kesulitan dan tantangan yang dihadapi. Sedangkan untuk menjadi seorang penambang, maka kita harus terhubung ke dalam jaringan Bitcoin. Setelah terhubung, maka kita akan menjadi “node”. Istilah node ini menjelaskan tentang semua perangkat yang terhubung ke dalam jaringan Bitcoin.

Lalu apa saja yang dilakukan oleh penambang? Ketika seseorang terhubung ke dalam jaringan Bitcoin menggunakan sebuah perangkat, maka node tersebut akan melakukan serangkaian tugas. Tugas-tugas yang dilakukan tersebut adalah:
  1. Mendengarkan transaksi
Semua node yang telah terhubung di dalam jaringan Bitcoin, harus mendengarkan semua transaksi yang terjadi. Dilanjutkan dengan memvalidasi transaksi yang didengar itu. Dengan melakukan pemeriksaan terhadap tanda tangan digitalnya (digital signature). Hal itu terkait kebenaran tanda tangan digital dan output yang di sertakan dalam transaksi itu harus benar-benar belum dihabiskan (belum dikeluarkan di transaksi lain-memastikan tidak ada double spending).
  1. Menjaga Blockchain dan mendengarkan blok baru yang tercipta.
Seorang penambang, sebenarnya berfungsi untuk menjaga blockchain. Terkait dalam penanganan semua transaksi yang terjadi. Penambang pun, akan mempertahankan Blockchain yang telah menyimpan semua transaksi. Penambang, bisa meminta semua sejarah blok kepada node lain yang telah masuk sebelum ia masuk kedalam jaringan. Mendengarkan blok baru yang di broadcast di dalam jaringan, lalu memvalidasi blok yang di terima. Karena di dalam blok ada serangkaian transaksi, maka setiap transaksi yang ada di dalam blok itupun juga harus divalidasi, dan valid.
  1. Membuat calon blok baru
Setelah kita memiliki salinan lengkap rantai blok (blockchain), maka kita bisa mulai membangun blok. Untuk melakukannya, dengan mengelompokkan semua transaksi yang kita dengar ke blok baru, yang nantinya bisa memperluas pada blok yang kita ketahui. Namun, kita pun harus bisa memastikan bahwa semua transaksi di dalam blok itu adalah valid.
  1. Mencari Nonce agar menjadi blok yang valid
Setelah kita memvalidasi semua transaksi pada calon blok tadi, selanjutnya adalah mencari nonce agar bisa membuat blok tersebut menjadi valid. Langkah disini adalah langkah yang paling sulit yang dihadapi oleh para penambang.
  1. Berharap Blok diterima
Ini adalah kesulitan kedua yang dihadapi. Jadi, jika kita menemukan sebuah blok baru, tidak ada jaminan bahwa blok itu akan bisa menjadi bagian dari konsensus blockchain. Penambang membutuhkan keberuntungan disini. Berharap agar penambang lain menerima usulan blok tersebut. Sehingga kita bisa mulai menambang diatas blok tersebut. Jadi bukan pada blok penambang lain.
  1. Menerima Keuntungan
Jika ternyata penambang lain menerima blok kita sebagai blok yang valid, maka inilah saat yang membuat penambang tersenyum puas setelah melakukan pekerjaan beratnya. Karena jika blok kita diterima, maka akan memperoleh reward sebesar 25 Bitcoin (yang masih berlaku di saat ini). Selain itu, jika beberapa transaksi di dalam blok itu dicantumkan biaya transaksi, penambang pun bisa mengumpulkan semua biaya transaksi tersebut.

Nah, keenam hal tersebut adalah hal yang harus dikerjakan oleh para penambang. Jadi jelas ya, bahwa menambang itu bukan dimaknai seperti pada mencari Bitcoin di faucet, giveaway atau yang lain. Namun, menambang disini ya artinya menggunakan alat tertentu, yang dalam prosesnya mengerjakan keenam hal tersebut diatas.

Mari kita lanjutkan kembali. Dari keenam hal itu, kita bisa mengklasifikasikan dalam dua hal.

1. Beberapa tugas itu untuk memvalidasi transaksi
Berfungsi untuk membantu jaringan Bitcoin sebagai sebuah fungsi yang paling penting agar sistem Bitcoin dan Blockchain bisa terus berjalan dan ada. Sehingga penambang, adalah hal utama yang akan menjalankan semua protokol Bitcoin.

2. Tugas lainnya untuk saling berlomba mencari blok baru dan memperoleh keuntungan
Mengapa saling berlomba? karena pada dasarnya, hal ini yang paling sulit. Selain itu, terkait juga dengan insentif reward blok yang akan diterima. Bagi yang berhasil menemukan blok baru. Makanya diibaratkan sebagai sebuah perlombaan untuk mencari dan menemukan blok baru. Dan insentif yang diberikan itu, digunakan sebagai stimulus para penambang dalam melakukan pekerjaannya.

Lalu bagaimana bisa menemukan blok yang valid? untuk menjawab pertanyaan ini, akan berkaitan dengan Nonce yang harus di temukan agar bisa menjadi blok yang valid. Yang perlu kita pahami, bahwa di setiap blok header, akan menunjuk ke header blok sebelumnya. Dan di dalam setiap blok, akan terdapat merkle tree dari semua transaksi yang ada di dalam blok itu.

Penambang, terlebih dahulu mengkompilasi satu set transaksi yang valid, yang dimiliki dari pool pending transaction (pool transaksi tertunda atau yang biasa disebut dengan mempool), kemudian di masukkan kedalam merkle tree.

Nah, dalam hal ini, seorang penambang bisa memasukkan banyak transaksi, hingga keseluruhannya mencapai total kurang dari 1megabyte (batas ukuran blok yang masih berlaku saat ini). Kemudian, membuat header blok yang menunjukkan blok sebelumnya.

Pada header blok ini, ada ruang nonce berukuran 32 bit. Sehingga penambang bisa mencoba nonce ini berkali-kali. Tujuannya untuk mencari satu yang bisa menyebabkan hash blok itu bisa berada di bawah target. Biasanya untuk memulai mencoba nonce tersebut, bisa diawali dengan nilai nonce 0. Lalu penambang pun bisa mencoba secara berturut-turut dengan kenaikan angka tersebut sampai berhasil mencari nonce yang akan bisa membuat blok menjadi valid.

Umumnya penambang akan mencoba setiap kemungkinan nilai dari bit 32 untuk nonce tersebut. Namun mungkin juga tidak ada satupun yang bisa menghasilkan hash yang valid. Nah, pada kasuistis seperti ini, biasanya penambang akan membuat sebuah perubahan. Perubahan itu adalah perubahan pada transaksi Coinbase, yang memungkinkan penambang untuk merubah nilai dari 32 bit. Karena ada sebuah nonce tambahan dalam transaksi coinbase. Setelah mengubah nonce tambahan di transaksi coinbase tadi, penambang bisa mulai mencari lagi nonce di header blok.

Jika telah melakukan perubahan nonce dalam transaksi coinbase, maka seluruh merkle tree juga harus berubah. Mengapa demikian? Karena perubahan nonce tersebut akan menyebar ke semua jalur di merkle tree. Sehingga, bisa dikatakan pengubahan nonce tambahan tersebut, sifatnya seolah-olah lebih sulit daripada mengubah nonce di header bloknya.Mengapa lebih sulit? karena penambang jadi banyak menghabiskan waktunya untuk mengubah nonce di header blok. Bisa jadi juga, ketika sudah selesai mengubah nonce di header blok, mereka pun belum bisa menemukan blok yang valid. Itulah mengapa justru pengubahan nonce tambahan ini justru lebih sulit. Meskipun bisa dilakukan sebagai jalan alternatif, jika belum bisa menemukan kemungkinan nilai di 32 bit tadi.

Walaupun sulit dan sebagian besar mungkin tidak akan berhasil, namun jika penambang berusaha untuk terus mencoba, mungkin akan bisa menemukan sebuah kombinasi yang tepat dari nonce tambahan di transaksi coinbase itu. Sehingga nonce di header blok bisa menghasilkan hash yang tepat dibawah target. Kalau penambang berhasil menemukan, penambang itu bisa secepatnya untuk mengumumkan, dan berharap bisa diterima untuk mendapat reward.

Lalu ada pertanyaan yang muncul:
  1.      Target apa sebenarnya yang menjelaskan target hash itu harus berada di bawah target?
  2.      Apakah semua penambang memecahkan puzzle yang sama?
  3.     Jika satu penambang berhasil memecahkan, apakah penambang yang tercepat itu akan selalu menang untuk menemukan blok berikutnya?
Jawaban nomor 2 dan 3 adalah “Tidak”. Tidak mungkin penambang akan bekerja pada blok yang sama persis. Karena blok satu dengan yang lain, tentu di dalamnya akan terdapat urutan transaksi yang berbeda. Jadi tentu saja puzzle nya juga tidak sama. Dan yang paling utama, jika ada dua penambang yang bekerja pada blok yang transaksinya identik sekalipun, bloknya akan tetap berbeda.

Dalam transaksi coinbase, penambang akan menentukan alamat mereka sendiri di dalam transaksi coinbase. Alamat ini yang akan membuat perubahan hingga sampai ke akar merkle tree. Sehingga bisa dipastikan bahwa tidak ada dua penambang yang sedang mengerjakan puzzle yang sama. Kecuali jika mereka berbagi (sharing) public key. Berbagi atau sharing public key ini, dalam pertambangan bisa dilakukan jika kedua penambang tersebut adalah bagian dari pool mining yang sama. Sehingga antara keduanya akan bisa berkomunikasi satu sama lain, terkait apakah mereka termasuk nonce yang berbeda di transaksi coinbase tersebut. Tujuannya juga untuk menghindari duplikasi pengerjaan.

Nah pada jawaban nomer 1 tentang target, ini akan berkaitan dengan tingkat kesulitan. Mari kita membahasnya.

Tingkat Kesulitan
Bagaimana tingkat kesulitan untuk menemukan blok yang valid? Yang harus kita ingat adalah bahwa penambang akan berusaha untuk mendapatkan yang diiginkan. Yakni nilai hash harus lebih rendah dari target. Katakanlah, penambang berusaha untuk menemukan hash bloknya + angka acak di base16, yang nilainya lebih rendah dari target.

Target –> seperti yang dijelaskan di awal, berkaitan dengan tingkat kesulitan. Sementara target ini adalah bit 256 pada base16. Jadi target ini akan semakin rendah nilainya, sehingga tingkat kesulitannya juga akan bertambah. Maka artinya, tingkat kesulitan tersebut adalah makin rendahnya nilai dari target. Sampai di sini jelas ya? Mari kita lanjutkan kembali secara lebih detail.

Kita ambil contoh, misalkan pada satu waktu tingkat kesulitan dalam hexadesimal adalah:

0000000000000000172EC0000000000000000000000000000000000000000000 (base16)

atau jika dalam dikonvert jadi base10 adalah:

568436119447114618883887501211268589217582000336195813376

Jika penambang mendapatkan hashnya di dalam base10:

568436119447114618883887501211268589217582000336195813376+ 1,

maka artinya penambang itu tidak berhasil, dan harus mencoba lagi, coba lagi, dan lagi, hingga berhasil menemukan nilai yang lebih rendah dari targetnya.

Penentuan Tingkat Kesulitan
Tingkat kesulitan akan berubah setiap mencapai 2016 blok. Kisaran waktunya kurang lebih selama 2 minggu. Perubahan tingkat kesulitan, disesuaikan dari seberapa efisien para penambang selama periode 2016 blok sebelumnya. Jadi seperti ini perhitungan tingkat kesulitan dalam menambang Bitcoin:
x = (y * 2016 * 10 menit) / (z)
            x = Tingkat Kesulitan Berikutnya
            y = Tingkat Kesulitan Sebelumnya
            z = Waktu yang dibutuhkan untuk menambang 2016 blok terakhir
                  10 menit = waktu rata-rata penciptaan 1 blok

Pada perhitungan di atas, 2016 * 10 menit akan menghasilkan waktu tepat 2 minggu. Sehingga 2016 blok yang akan diciptakan nantinya akan membutuhkan waktu kurang lebih 2 minggu. Efek dari perhitungan perubahan tingkat kesulitan diatas, menentukan skala tingkat kesulitan yang bisa memperhitungkan sebuah blok bisa ditemukan di dalam jaringan. Yaitu dalam rata-rata waktu 10 menit.

Setiap penambang Bitcoin akan menghitung tingkat kesulitan tersebut. Dan hanya akan menerima blok yang memenuhi kriteria di tingkat kesulitan yang bisa mereka hitung. Penambang yang berada di cabang berbeda, mungkin tidak menghitung nilai kesulitan yang sama. Namun pada dasarnya setiap penambang di penambangan diatas blok yang sama akan menyetujui tingkat kesulitannya. Sehingga memungkinkan pencapaian konsensus di dalam jaringan.

Tingkat kesulitan pertambangan Bitcoin akan terus meningkat. Namun kenaikan itu tidak akan selalu stabil dan linier, tapi bergantung pada aktifitas para penambangnya, juga pada situasi di pasar. Ada beberapa faktor misalnya berapa banyak penambang baru yang bergabung. Sehingga bisa mempengaruhi nilai tukar Bitcoin pada saat itu.

Karena penambang yang baru bergabung banyak, dan tingkat pertambangan semakin ditunjang dengan munculnya perangkat-perangkat yang lebih efisien, maka blok akan bisa ditemukan dengan lebih cepat. Sehingga tingkat kesulitan pun jadi meningkat. Maka waktu yang dibutuhkan akan selalu berkisar rata-rata dalam 10 menit untuk menemukan dan menciptakan blok baru.

Bagaimana jika dalam menemukan blok, ternyata membutuhkan waktu rata-rata lebih dari 10 menit? 

Jika hal ini terjadi, maka tingkat kesulitan akan turun. Jadi, berbagai kondisi rata-rata penciptaan blok baru dalam tempo 10 menit tersebut, akan mempengaruhi apakah nanti tingkat kesulitan akan naik atau turun. Misalnya, jika rata-rata penciptaan blok dalam 2 minggu lebih cepat atau lebih kecil dari 10 menit, maka tingkat kesulitan akan bertambah dan menyesuaikan. Namun jika rata-rata lebih besar dari 10 menit, maka tingkat kesulitan akan turun.

Ayo bergabung di Furabit... disini,


Postingan Populer