teruskan judul asli '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?’
Salah satu konsep yang paling dikenal terkait dengan blockchain untuk semua orang mungkin adalah penambangan. Banyak orang mungkin pernah mendengar tentang penambangan berkali-kali tetapi tidak begitu yakin dengan apa sebenarnya yang terlibat. Di bagian ini, kami akan menginterupsi program reguler kami untuk pertama kali memperkenalkan "penambangan".
ringkasan cepat konten dari "plain blockchain 1: pengantar bitcoin (pelopor revolusi blockchain dan penantang mata uang kedaulatan)," di mana satoshi nakamoto merancang sistem moneter bitcoin untuk menghubungkan imbalan untuk pencatatan dengan penerbitan mata uang. Pendekatan ini memungkinkan penerbitan mata uang diotomatisasi melalui proses pencatatan, memecahkan masalah penerbitan mata uang sambil mendorong pencatat untuk aktif berpartisipasi.
di dunia nyata, penambangan melibatkan para penambang yang menggunakan berbagai alat untuk menggali logam mulia yang tersembunyi di batuan dari tambang. para penambang mengekstrak nilai dari logam langka yang tersembunyi di alam melalui kerja fisik.
untuk proyek blockchain dengan imbalan untuk pencatatan (biasanya proyek mata uang digital), node jaringan menggunakan sumber daya komputasi untuk menyelesaikan masalah. begitu mereka menemukan solusinya, mereka memasukkan blok dan menerima imbalan berupa mata uang yang baru diterbitkan. proses ini analog dengan mengekstraksi logam mulia seperti emas dari bijih, oleh karena itu sering disebut sebagai "penambangan." di sini, para pencatat adalah para penambang, yang bersaing untuk memasukkan blok menggunakan perangkat keras dan listrik, yang menghasilkan penciptaan mata uang baru.
penambangan memiliki dua tujuan utama: memvalidasi transaksi terbaru dengan mengemasnya ke dalam blok dan mengaitkannya ke blockchain, dan mengeluarkan mata uang baru dengan memberi imbalan kepada para penjaga buku. berikut adalah fungsi-fungsi detail dari penambangan:
Penambang didorong untuk berpartisipasi dalam penambangan karena mereka menerima imbalan substansial untuk berhasil memasang blok ke dalam blockchain. Imbalan ini berasal dari dua sumber utama:
Seiring berjalannya waktu, imbalan blok akan berkurang (misalnya, karena mekanisme pembelahan bitcoin, di mana imbalannya dikurangi sekitar setiap empat tahun). akhirnya, setelah semua 21 juta bitcoin ditambang, diperkirakan sekitar tahun 2141, imbalan blok otomatis akan berhenti ada, dan biaya transaksi akan menjadi sumber pendapatan utama bagi para penambang.
bitcoin menghasilkan blok baru sekitar setiap 10 menit. Awalnya, setiap blok baru menghasilkan 50 bitcoin. Hadiah ini mengalami pengurangan separuh setiap empat tahun, dan hingga saat ini, telah terjadi empat kali peristiwa pengurangan separuh. Saat ini, setiap blok menghasilkan 3,125 bitcoin, dengan peristiwa pengurangan separuh terbaru terjadi pada April 2024. Pengurangan separuh berikutnya diperkirakan akan terjadi sekitar tahun 2028. Pada sekitar tahun 2141, bitcoin akan mencapai batas penerbitannya.
biaya transaksi tidak hanya dipengaruhi oleh penawaran dan permintaan tetapi juga oleh ukuran transaksi, karena biaya tersebut sebanding dengan ruang yang digunakan transaksi dalam blok.
untuk para penambang, berpartisipasi dalam penambangan sangatlah mudah. unduh klien dompet mata uang digital, dan di dalam klien, klik tombol penambangan untuk memulai penambangan.
untuk proyek blockchain dengan hadiah blok, algoritma penambangan biasanya ditulis ke dalam skrip yang terintegrasi ke dalam dompet. penambang hanya perlu mengklik tombol untuk memulai skrip.
algoritma penambangan bersifat deterministik, artinya selama penambang terus menjalankan algoritma, mereka akhirnya akan mendapatkan hasil. namun, karena sumber daya komputasi yang bervariasi, waktu yang diperlukan untuk menghitung hasil ini bisa berbeda di antara penambang. begitu sebuah node menghitung nilai target, usaha penambang lain selama periode tersebut menjadi sia-sia, mengakibatkan pengembalian negatif karena sumber daya fisik yang dikeluarkan.
Untuk menghindari upaya yang sia-sia, penambang seringkali menggabungkan sumber daya komputasi mereka dengan bergabung ke dalam sebuah node penambangan yang tergabung dalam sebuah pool. Node ini beroperasi seperti node lainnya, tetapi memiliki kekuatan komputasi yang jauh lebih besar. Ketika pool berhasil menambang blok, hadiah dibagikan di antara para penambang yang berpartisipasi berdasarkan sumber daya komputasi yang mereka sumbangkan. Penting untuk dicatat bahwa dalam blockchain, penambang yang tercatat sebagai pengemas blok adalah node pool penambangan, sedangkan penambang individu menerima bagian mereka dari hadiah yang dialokasikan oleh pool, bukan langsung dari sistem mata uang.
Bitmain, sebuah perusahaan yang memproduksi chip penambangan khusus berdaya tinggi, telah mengukuhkan peran kolam penambangan, yang berkontribusi pada sentralisasi kekuasaan pencatatan buku.
proyek blockchain yang berbeda mungkin memiliki teka-teki penambangan yang berbeda dan tingkat kesulitan yang berbeda. di sini, kami mengambil contoh bitcoin. algoritma penambangan yang digunakan oleh bitcoin disebut proof of work (pow). inti dari algoritma ini adalah bahwa untuk mendapatkan hasil, sejumlah kerja harus dikeluarkan untuk membuktikannya.
teka-teki penambangan bukanlah masalah matematika tradisional tetapi melibatkan menemukan nomor acak, yang dikenal sebagai nonce. nonce ini, saat digabungkan dengan data dalam blok dan diproses melalui sebuah fungsi hash, harus menghasilkan nilai hash yang memenuhi kondisi tertentu. Biasanya, kondisi ini memerlukan nilai hash agar lebih kecil dari nilai target (atau, ekuivalen, bahwa n bit pertama nilai hash adalah nol). Persamaannya adalah sebagai berikut: hash(nonce+block_data)≤target\text{hash}(\text{nonce} + \text{block_data}) \leq \text{target}hash(nonce+block_data)≤target
Bitcoin menggunakan fungsi hash sha-256, yang mengonversi panjang input apa pun menjadi output berukuran tetap sebesar 256 bit (setara dengan 64 digit heksadesimal atau 32 byte). Outputnya hampir acak tapi dijamin akan sama untuk input yang sama. Penambangan melibatkan terus-menerus mengubah nonce dan menghash data header blok menggunakan sha-256 sampai nilai hash yang memenuhi kondisi target ditemukan.
sebagai contoh, sebuah nilai hash sha-256 dengan 30 bit pertama adalah nol: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110
mengonversi ini menjadi heksadesimal menghasilkan nilai yang dimulai dengan tujuh nol: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90
untuk menyederhanakan, probabilitas menemukan hash dengan n bit pertama yang nol adalah 12n\frac{1}{2^n}2n1. semakin besar n, semakin banyak bit yang nol, dan semakin rendah probabilitasnya:
dengan n hingga 256, menemukan nilai hash seperti itu dengan kekuatan komputasi manusia saat ini, kecuali komputer kuantum, hampir tidak mungkin sebelum bumi berhenti ada.
karena sifat sha-256, satu-satunya metode adalah kekerasan, yang melibatkan terus-menerus mencoba nonce yang berbeda sampai kondisi terpenuhi. kebutuhan akan peralatan komputasi berkinerja tinggi itulah mengapa penambangan memerlukan perangkat tersebut.
karena Anda tidak dapat memprediksi nilai hash yang dihasilkan dengan menambahkan nonce ke data blok dan melewatinya melalui sha-256, prosesnya sepenuhnya acak. misalnya, jika nilai hash target adalah 10.000, Anda tidak memiliki cara untuk mengetahui nonce mana yang dikombinasikan dengan data blok akan menghasilkan nilai hash kurang dari 10.000. sifat yang tidak dapat diprediksi dan acak ini berarti para penambang harus terus menghitung kemungkinan sampai kondisinya terpenuhi. jika beberapa nilai memenuhi kondisi, nilai hash terkecil dipilih karena nilai hash yang lebih kecil menunjukkan kesulitan yang lebih tinggi dan kemungkinan terjadinya yang lebih rendah.
memverifikasi apakah nilai hash yang dihasilkan memenuhi persyaratan adalah mudah, hanya memerlukan satu operasi perbandingan. Namun, menemukan nilai hash yang kurang dari atau sama dengan nilai target hanya dapat dicapai melalui enumerasi kekerasan. Karakteristik ini, di mana memverifikasi hasilnya mudah tetapi menemukan hasilnya sulit, dikenal sebagai asimetri komputasi.
kode berikut mensimulasikan proses penambangan. dimulai dengan string data header blok “geekbang” dan mencari secara bertahap dari nilai nonce 10.000 sampai menemukan nonce yang memenuhi kondisi yang ditentukan.
berikut adalah skrip python yang menggambarkan proses penambangan:
impor hashlibdef utama (): base_string = "geekbang" nonce = 10000 hitung = 0 saat benar: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string.encode ()). hexdigest () hitung + = 1 if pow_hash.startswith ("0000"): # 4 digit heksa pertama adalah 0, setara dengan 16 bit pertama yang merupakan 0 print ("hash:", pow_hash) print ("nonce:", nonce, "jumlah pemindaian:", hitung) break nonce + = 1if __name__ == '__main__': utama ()
saat persyaratannya adalah bahwa 4 digit heksadesimal pertama dari hasil hash adalah nol (setara dengan 16 bit pertama yang nol), jumlah perhitungan sekitar 58.000. jika persyaratannya ditingkatkan menjadi 5 digit pertama yang nol, jumlah perhitungan meningkat menjadi 1,23 juta. saat persyaratannya adalah 7 digit pertama yang nol, jumlah perhitungan mencapai 160 juta. ini mengilustrasikan bahwa setiap nol tambahan dalam awalan hash meningkatkan komputasi sekitar 16 kali.
ini adalah hasil untuk kondisi target yang berbeda:
empat digit hex pertama adalah nol (16 bit):
import hashlib
def utama():
base_string = "geekbang"nonce = 10000count = 0while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string).hexdigest() count = count + 1 if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0 print pow_hash print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png" scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count) break nonce = nonce + 1
jika nama == ‘utama‘:
main()
seperti yang terlihat, peningkatan jumlah nol terdepan yang diperlukan dalam hash secara signifikan meningkatkan jumlah percobaan yang diperlukan, mengikuti pola pertumbuhan eksponensial. ini menunjukkan kesulitan komputasi dan sumber daya yang diperlukan untuk penambangan, yang menekankan perlunya perangkat komputasi berkinerja tinggi dalam proses penambangan.
untuk memastikan bahwa blok dihasilkan kira-kira setiap 10 menit, sistem bitcoin menyesuaikan kesulitan penambangan dengan mengubah jumlah nol terkemuka yang diperlukan dalam nilai hash. mekanisme penyesuaian kesulitan ini merupakan bagian penting dari sistem bitcoin. mekanisme ini mengevaluasi waktu yang diperlukan untuk menghasilkan 2016 blok terakhir, yang seharusnya idealnya sekitar dua minggu. jika blok-blok ini ditambang dalam waktu kurang dari dua minggu, kesulitan meningkat dengan menambahkan lebih banyak nol terkemuka (menurunkan nilai target). sebaliknya, jika membutuhkan waktu lebih dari dua minggu, kesulitan berkurang dengan mengurangi jumlah nol terkemuka (menaikkan nilai target). mekanisme ini memastikan bahwa waktu untuk menghasilkan blok tetap sekitar 10 menit, bahkan ketika hash rate total jaringan bergejolak.
mekanisme penyesuaian kesulitan ini, dirancang oleh pencipta bitcoin satoshi nakamoto, direncanakan dari awal untuk secara otomatis beradaptasi dengan total daya komputasi jaringan. Ini menjaga kecepatan penambangan yang stabil dan mencegah mata uang diterbitkan terlalu cepat, yang dapat mengganggu ekonomi pasar.
berbagai proyek blockchain mungkin memiliki algoritma penambangan yang berbeda. di sini, kami mendeskripsikan yang paling terkenal: algoritma penambangan bitcoin.
proses eksekusi algoritma penambangan yang mendasari bitcoin adalah sebagai berikut:
ukuran setiap kolom dalam header blok adalah sebagai berikut:
https://time.geekbang.org/column/article/5963
alt="">struktur pohon merkle adalah sebagai berikut:
大后端私房菜]. alt="">
kontroversi utama yang melibatkan penambangan adalah algoritma proof of work (pow) yang digunakan oleh bitcoin dan derivatifnya. algoritma-algoritma ini memerlukan para penambang untuk mengalokasikan sumber daya komputasi yang substansial untuk menyelesaikan masalah yang disepakati oleh jaringan. Banyak orang bekerja pada komputasi-komputasi ini secara bersamaan, tetapi hanya yang pertama menyelesaikan masalah yang mendapatkan imbalan. Sumber daya komputasi dan listrik para peserta lainnya pada dasarnya terbuang percuma, tidak menghasilkan nilai tambah.
ada dua jalur utama untuk mengoptimalkan pemborosan sumber daya ini:
apa nilai dari penambangan? sepertinya pemborosan sumber daya dan tidak berarti bagi masyarakat.
ketika mengunjungi bagian 'mengapa penambangan diperlukan?' dari artikel ini, signifikansi langsung dari penambangan adalah bahwa itu mendukung penerbitan mata uang digital. Hadiah penambangan mendorong lebih banyak orang untuk berpartisipasi dalam mempertahankan mata uang digital, membuatnya lebih stabil. Selain itu, algoritma penambangan menopang konsistensi transaksi dalam sistem mata uang digital, membuatnya lebih kuat dan kurang rentan terhadap serangan internal dan eksternal.
signifikansi tidak langsung dari penambangan berasal dari mata uang digital itu sendiri. mata uang digital menciptakan sistem moneter global yang tidak memerlukan kepercayaan di mana transaksi aman dapat terjadi tanpa perlu institusi terpusat, menghindari kelemahan sentralisasi. sifat global mereka juga memungkinkan transaksi lintas batas yang efisien dan murah.
Apakah pengembalian penambangan akan berkurang hingga di bawah biaya, menyebabkan para penambang berhenti menambang dan transaksi berhenti?
Ini adalah kekhawatiran umum bahwa hasil penambangan semata-mata bergantung pada imbalan sistem, yang menurun seiring waktu. Namun, penambangan juga menghasilkan pendapatan yang signifikan dari biaya transaksi. Saat mata uang digital semakin diterima, pasar untuk transaksi mata uang digital akan berkembang. Volume transaksi yang meningkat ini akan memperkuat persaingan untuk inklusi blok, menyebabkan biaya yang lebih tinggi yang pengguna bersedia bayar untuk memprioritaskan transaksi mereka. Akibatnya, penambang dapat terus menghasilkan biaya transaksi yang substansial, memastikan kelangsungan proses transaksi.
apakah biaya transaksi akan mengkompensasi biaya penambangan?
Ya, biaya transaksi dapat membantu mengkompensasi biaya penambangan. Seiring berkurangnya hadiah blok dari waktu ke waktu, biaya transaksi menjadi sumber pendapatan yang penting bagi para penambang. Hal ini memastikan bahwa meskipun biaya listrik tinggi, para penambang masih dapat menjalankan operasi mereka melalui biaya yang dibayarkan oleh pengguna untuk pemrosesan transaksi.
Apakah beberapa penambang membagi hadiah penambangan jika mereka secara bersamaan menyiarkan blok baru mereka?
tidak, jika beberapa penambang menyelesaikan teka-teki dan menyiarkan blok baru mereka pada saat yang bersamaan, itu menciptakan garpu sementara dalam blockchain. Berikut cara kerjanya:
contoh:
apa itu serangan 51% dan mengapa tidak ada penambang super yang curang?
serangan 51% terjadi ketika satu entitas atau kelompok mengendalikan lebih dari 50% dari daya komputasi jaringan. inilah mengapa supernode biasanya tidak curang:
bagaimana blockchain mencegah gangguan yang disengaja dan transaksi penipuan?
mencegah distribusi blok yang tidak konsisten oleh penambang
definisi dan fungsi: dalam jaringan blockchain, semua transaksi yang disiarkan yang belum termasuk dalam blok disimpan sementara di memori pool (mempool) dari node jaringan. para penambang memantau mempool mereka untuk memilih transaksi untuk membangun blok baru.
strategi pemilihan transaksi: penambang dapat memilih transaksi dari mempool berdasarkan strategi mereka. Umumnya, mereka memprioritaskan transaksi dengan biaya yang lebih tinggi, tetapi beberapa mungkin juga mempertimbangkan faktor lain, seperti usia transaksi (waktu yang dihabiskannya di mempool).
siapa yang berpartisipasi dan bagaimana mereka mendapatkan: selain pengguna, tiga peserta utama dalam sistem bitcoin adalah penambang, pengembang, dan operator node.
kenaikan harga gpu: permintaan tinggi dari para penambang untuk keperluan penambangan telah menyebabkan kelangkaan pasokan, sehingga menyebabkan harga naik.
penambangan gpu: penambangan gpu adalah gpu yang sebelumnya digunakan untuk penambangan cryptocurrency. gpu ini menjalani komputasi intensif, yang mengakibatkan kerusakan yang signifikan. karena performanya yang menurun, sebagian besar orang lebih memilih untuk tidak membeli gpu penambangan bekas.
Persyaratan penyimpanan redundan penuh: Ya, penambang perlu menyimpan seluruh buku besar blockchain untuk memverifikasi apakah token sebelumnya telah dihabiskan dan untuk memastikan keamanan dan integritas buku besar. Namun, untuk blok yang sangat awal, penambang hanya perlu menyimpan header blok, bukan isi blok penuh. Ini membantu menjaga efisiensi blockchain sambil menjaga keamanannya.
tidak ada hadiah otomatis di luar 21 juta bitcoin: begitu pasokan total bitcoin mencapai batasnya sebesar 21 juta, sistem tidak akan lagi mengeluarkan bitcoin baru sebagai hadiah untuk penambang. jika pengguna juga tidak bersedia membayar biaya transaksi, secara teoritis, sistem transaksi dapat menghadapi tantangan operasional. Namun, kemungkinan besar pengguna akan bersedia membayar biaya transaksi untuk memproses transaksi mereka, memastikan kelangsungan sistem.
tinggi blok akan terus meningkat: bahkan setelah mencapai pasokan maksimum 21 juta bitcoin, tinggi blok (jumlah total blok) akan terus meningkat selama penambang bersedia menambang dan memasukkan transaksi ke dalam blok baru. tinggi blok tidak terbatas oleh batas pasokan bitcoin.
potensi perubahan konsensus: komunitas dapat mengusulkan perubahan pada aturan konsensus, seperti meningkatkan pasokan total bitcoin, untuk memungkinkan pembuatan koin baru jika diperlukan.
transaksi coinbase: dalam blockchain bitcoin, hadiah penambang didistribusikan melalui transaksi khusus yang dikenal sebagai “transaksi coinbase” atau “hadiah blok.” transaksi ini memiliki karakteristik unik:
perhitungan pendapatan per blok: pendapatan penambang dihitung setiap kali blok berhasil ditambang dan dikonfirmasi oleh mekanisme konsensus jaringan. penambang (atau kolam penambangan) yang menambang blok menerima imbalan blok dan biaya transaksi kumulatif dari semua transaksi yang disertakan dalam blok.
proses penerimaan imbalan: setelah penambang atau kolam penambangan berhasil menambang blok dan blok tersebut dikonfirmasi oleh jaringan, mereka menerima imbalan blok dan biaya transaksi. ini dilakukan melalui transaksi coinbase, yang mengkonversi biaya dan imbalan menjadi output transaksi yang belum dihabiskan (utxo) yang dikreditkan ke akun penambang.
penciptaan berurutan: blok-blok dibuat secara berurutan dalam blockchain. blok baru hanya dapat dibuat setelah blok sebelumnya berhasil ditambang dan ditambahkan ke dalam rantai.
beberapa transaksi per blok: blok biasanya berisi beberapa transaksi. penambang menyertakan sebanyak mungkin transaksi untuk memaksimalkan penghasilan biaya transaksi mereka, bukan memaketkan transaksi secara individu.
Blok yang terisi sebagian: Sebagian besar blok tidak sepenuhnya digunakan. Penambang mulai bekerja pada blok berikutnya segera setelah mereka menemukan hash yang valid yang memenuhi persyaratan kesulitan, terlepas dari apakah blok tersebut benar-benar penuh.
blok kosong: blok dapat ditambang bahkan jika tidak ada transaksi yang akan dimasukkan. blok-blok ini, disebut blok kosong, masih memberikan imbalan sistem kepada penambang.
Aturan rantai terpanjang: ketika terjadi fork, jaringan mengikuti rantai dengan bukti kerja yang paling banyak terakumulasi, yang biasanya merupakan rantai terpanjang. node beralih ke rantai yang lebih panjang begitu menjadi jelas mana yang memiliki lebih banyak pekerjaan yang dimasukkan ke dalamnya.
Resolusi pengeluaran ganda:
proses validasi:
perhitungan biaya transaksi: pengguna dapat mengontrol biaya transaksi untuk mempercepat konfirmasi transaksi mereka. biaya ditentukan oleh rumus berikut:
Biaya transaksi = total input − total output − perubahan
pengguna menetapkan biaya transaksi dengan menyesuaikan jumlah masukan, jumlah keluaran, dan jumlah kembalian.
pembagian penghasilan: saat penambangan dalam sebuah pool, node pool menerima hadiah blok. pool kemudian membagikan penghasilan kepada anggotanya berdasarkan daya komputasi yang mereka sumbangkan. pembagian ini dilakukan melalui transfer ke dompet para penambang.
penambangan egois: penambangan egois adalah strategi di mana seorang penambang (atau kolam penambangan) menemukan blok baru tetapi tidak segera menyiarkannya. sebaliknya, mereka terus menambang secara pribadi pada rantai mereka (rantai tersembunyi). begitu mereka menemukan blok tambahan, mereka menyiarkannya semua sekaligus. ini dapat membatalkan pekerjaan penambang lain dan memiringkan kekuatan komputasi serta imbalan ke arah penambang egois. bitcoin dapat mengurangi dampak penambangan egois dengan memperbaiki protokol penyiaran.
validasi transaksi: ketika suatu transaksi disiarkan ke sebuah node, ia akan mengalami beberapa pemeriksaan untuk menentukan apakah harus ditambahkan ke mempool:
validasi blok: ketika node penambang menerima blok baru, ia melakukan pemeriksaan yang ekstensif terhadap blok dan transaksinya:
[1] kuliah 12 | teknologi blockchain mendalam (4): konsensus pow-penjelasan mendalam tentang blockchain-geek time:sanggahan:
teruskan judul asli '白话区块链三:揭开挖矿神秘的面纱——挖矿是什么?为什么要挖矿?谁是我们买不起显卡的罪魁祸首?’
Salah satu konsep yang paling dikenal terkait dengan blockchain untuk semua orang mungkin adalah penambangan. Banyak orang mungkin pernah mendengar tentang penambangan berkali-kali tetapi tidak begitu yakin dengan apa sebenarnya yang terlibat. Di bagian ini, kami akan menginterupsi program reguler kami untuk pertama kali memperkenalkan "penambangan".
ringkasan cepat konten dari "plain blockchain 1: pengantar bitcoin (pelopor revolusi blockchain dan penantang mata uang kedaulatan)," di mana satoshi nakamoto merancang sistem moneter bitcoin untuk menghubungkan imbalan untuk pencatatan dengan penerbitan mata uang. Pendekatan ini memungkinkan penerbitan mata uang diotomatisasi melalui proses pencatatan, memecahkan masalah penerbitan mata uang sambil mendorong pencatat untuk aktif berpartisipasi.
di dunia nyata, penambangan melibatkan para penambang yang menggunakan berbagai alat untuk menggali logam mulia yang tersembunyi di batuan dari tambang. para penambang mengekstrak nilai dari logam langka yang tersembunyi di alam melalui kerja fisik.
untuk proyek blockchain dengan imbalan untuk pencatatan (biasanya proyek mata uang digital), node jaringan menggunakan sumber daya komputasi untuk menyelesaikan masalah. begitu mereka menemukan solusinya, mereka memasukkan blok dan menerima imbalan berupa mata uang yang baru diterbitkan. proses ini analog dengan mengekstraksi logam mulia seperti emas dari bijih, oleh karena itu sering disebut sebagai "penambangan." di sini, para pencatat adalah para penambang, yang bersaing untuk memasukkan blok menggunakan perangkat keras dan listrik, yang menghasilkan penciptaan mata uang baru.
penambangan memiliki dua tujuan utama: memvalidasi transaksi terbaru dengan mengemasnya ke dalam blok dan mengaitkannya ke blockchain, dan mengeluarkan mata uang baru dengan memberi imbalan kepada para penjaga buku. berikut adalah fungsi-fungsi detail dari penambangan:
Penambang didorong untuk berpartisipasi dalam penambangan karena mereka menerima imbalan substansial untuk berhasil memasang blok ke dalam blockchain. Imbalan ini berasal dari dua sumber utama:
Seiring berjalannya waktu, imbalan blok akan berkurang (misalnya, karena mekanisme pembelahan bitcoin, di mana imbalannya dikurangi sekitar setiap empat tahun). akhirnya, setelah semua 21 juta bitcoin ditambang, diperkirakan sekitar tahun 2141, imbalan blok otomatis akan berhenti ada, dan biaya transaksi akan menjadi sumber pendapatan utama bagi para penambang.
bitcoin menghasilkan blok baru sekitar setiap 10 menit. Awalnya, setiap blok baru menghasilkan 50 bitcoin. Hadiah ini mengalami pengurangan separuh setiap empat tahun, dan hingga saat ini, telah terjadi empat kali peristiwa pengurangan separuh. Saat ini, setiap blok menghasilkan 3,125 bitcoin, dengan peristiwa pengurangan separuh terbaru terjadi pada April 2024. Pengurangan separuh berikutnya diperkirakan akan terjadi sekitar tahun 2028. Pada sekitar tahun 2141, bitcoin akan mencapai batas penerbitannya.
biaya transaksi tidak hanya dipengaruhi oleh penawaran dan permintaan tetapi juga oleh ukuran transaksi, karena biaya tersebut sebanding dengan ruang yang digunakan transaksi dalam blok.
untuk para penambang, berpartisipasi dalam penambangan sangatlah mudah. unduh klien dompet mata uang digital, dan di dalam klien, klik tombol penambangan untuk memulai penambangan.
untuk proyek blockchain dengan hadiah blok, algoritma penambangan biasanya ditulis ke dalam skrip yang terintegrasi ke dalam dompet. penambang hanya perlu mengklik tombol untuk memulai skrip.
algoritma penambangan bersifat deterministik, artinya selama penambang terus menjalankan algoritma, mereka akhirnya akan mendapatkan hasil. namun, karena sumber daya komputasi yang bervariasi, waktu yang diperlukan untuk menghitung hasil ini bisa berbeda di antara penambang. begitu sebuah node menghitung nilai target, usaha penambang lain selama periode tersebut menjadi sia-sia, mengakibatkan pengembalian negatif karena sumber daya fisik yang dikeluarkan.
Untuk menghindari upaya yang sia-sia, penambang seringkali menggabungkan sumber daya komputasi mereka dengan bergabung ke dalam sebuah node penambangan yang tergabung dalam sebuah pool. Node ini beroperasi seperti node lainnya, tetapi memiliki kekuatan komputasi yang jauh lebih besar. Ketika pool berhasil menambang blok, hadiah dibagikan di antara para penambang yang berpartisipasi berdasarkan sumber daya komputasi yang mereka sumbangkan. Penting untuk dicatat bahwa dalam blockchain, penambang yang tercatat sebagai pengemas blok adalah node pool penambangan, sedangkan penambang individu menerima bagian mereka dari hadiah yang dialokasikan oleh pool, bukan langsung dari sistem mata uang.
Bitmain, sebuah perusahaan yang memproduksi chip penambangan khusus berdaya tinggi, telah mengukuhkan peran kolam penambangan, yang berkontribusi pada sentralisasi kekuasaan pencatatan buku.
proyek blockchain yang berbeda mungkin memiliki teka-teki penambangan yang berbeda dan tingkat kesulitan yang berbeda. di sini, kami mengambil contoh bitcoin. algoritma penambangan yang digunakan oleh bitcoin disebut proof of work (pow). inti dari algoritma ini adalah bahwa untuk mendapatkan hasil, sejumlah kerja harus dikeluarkan untuk membuktikannya.
teka-teki penambangan bukanlah masalah matematika tradisional tetapi melibatkan menemukan nomor acak, yang dikenal sebagai nonce. nonce ini, saat digabungkan dengan data dalam blok dan diproses melalui sebuah fungsi hash, harus menghasilkan nilai hash yang memenuhi kondisi tertentu. Biasanya, kondisi ini memerlukan nilai hash agar lebih kecil dari nilai target (atau, ekuivalen, bahwa n bit pertama nilai hash adalah nol). Persamaannya adalah sebagai berikut: hash(nonce+block_data)≤target\text{hash}(\text{nonce} + \text{block_data}) \leq \text{target}hash(nonce+block_data)≤target
Bitcoin menggunakan fungsi hash sha-256, yang mengonversi panjang input apa pun menjadi output berukuran tetap sebesar 256 bit (setara dengan 64 digit heksadesimal atau 32 byte). Outputnya hampir acak tapi dijamin akan sama untuk input yang sama. Penambangan melibatkan terus-menerus mengubah nonce dan menghash data header blok menggunakan sha-256 sampai nilai hash yang memenuhi kondisi target ditemukan.
sebagai contoh, sebuah nilai hash sha-256 dengan 30 bit pertama adalah nol: 000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110000000000000000000000000000000111111010000011011000100100110111011000110100010011011000110100010110110101010011101011010100100011011010001111101001111110101001101111101011110011100011110011110000111000100110000001011011010001110011100110010111010010010010001101010110010110
mengonversi ini menjadi heksadesimal menghasilkan nilai yang dimulai dengan tujuh nol: 00000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac9000000003f41b126ec689b1a2da9d5d46d13d0fd1bece47983d59c5d32eb4ac90
untuk menyederhanakan, probabilitas menemukan hash dengan n bit pertama yang nol adalah 12n\frac{1}{2^n}2n1. semakin besar n, semakin banyak bit yang nol, dan semakin rendah probabilitasnya:
dengan n hingga 256, menemukan nilai hash seperti itu dengan kekuatan komputasi manusia saat ini, kecuali komputer kuantum, hampir tidak mungkin sebelum bumi berhenti ada.
karena sifat sha-256, satu-satunya metode adalah kekerasan, yang melibatkan terus-menerus mencoba nonce yang berbeda sampai kondisi terpenuhi. kebutuhan akan peralatan komputasi berkinerja tinggi itulah mengapa penambangan memerlukan perangkat tersebut.
karena Anda tidak dapat memprediksi nilai hash yang dihasilkan dengan menambahkan nonce ke data blok dan melewatinya melalui sha-256, prosesnya sepenuhnya acak. misalnya, jika nilai hash target adalah 10.000, Anda tidak memiliki cara untuk mengetahui nonce mana yang dikombinasikan dengan data blok akan menghasilkan nilai hash kurang dari 10.000. sifat yang tidak dapat diprediksi dan acak ini berarti para penambang harus terus menghitung kemungkinan sampai kondisinya terpenuhi. jika beberapa nilai memenuhi kondisi, nilai hash terkecil dipilih karena nilai hash yang lebih kecil menunjukkan kesulitan yang lebih tinggi dan kemungkinan terjadinya yang lebih rendah.
memverifikasi apakah nilai hash yang dihasilkan memenuhi persyaratan adalah mudah, hanya memerlukan satu operasi perbandingan. Namun, menemukan nilai hash yang kurang dari atau sama dengan nilai target hanya dapat dicapai melalui enumerasi kekerasan. Karakteristik ini, di mana memverifikasi hasilnya mudah tetapi menemukan hasilnya sulit, dikenal sebagai asimetri komputasi.
kode berikut mensimulasikan proses penambangan. dimulai dengan string data header blok “geekbang” dan mencari secara bertahap dari nilai nonce 10.000 sampai menemukan nonce yang memenuhi kondisi yang ditentukan.
berikut adalah skrip python yang menggambarkan proses penambangan:
impor hashlibdef utama (): base_string = "geekbang" nonce = 10000 hitung = 0 saat benar: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string.encode ()). hexdigest () hitung + = 1 if pow_hash.startswith ("0000"): # 4 digit heksa pertama adalah 0, setara dengan 16 bit pertama yang merupakan 0 print ("hash:", pow_hash) print ("nonce:", nonce, "jumlah pemindaian:", hitung) break nonce + = 1if __name__ == '__main__': utama ()
saat persyaratannya adalah bahwa 4 digit heksadesimal pertama dari hasil hash adalah nol (setara dengan 16 bit pertama yang nol), jumlah perhitungan sekitar 58.000. jika persyaratannya ditingkatkan menjadi 5 digit pertama yang nol, jumlah perhitungan meningkat menjadi 1,23 juta. saat persyaratannya adalah 7 digit pertama yang nol, jumlah perhitungan mencapai 160 juta. ini mengilustrasikan bahwa setiap nol tambahan dalam awalan hash meningkatkan komputasi sekitar 16 kali.
ini adalah hasil untuk kondisi target yang berbeda:
empat digit hex pertama adalah nol (16 bit):
import hashlib
def utama():
base_string = "geekbang"nonce = 10000count = 0while true: target_string = base_string + str(nonce) pow_hash = hashlib.sha256(target_string).hexdigest() count = count + 1 if pow_hash.startswith("0000"): # 前4个16进制位是0,相当于前16个比特位是0 print pow_hash print "nonce: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/51d786353cf4ac886dbb869fc7abf883dac67ceb.png" scan times: https://s3.ap-northeast-1.amazonaws.com/gimg.gateimg.com/learn/4ebdb22f10c27f8797a1c2ae7bbbd78f40220ed4.png"" % (nonce, count) break nonce = nonce + 1
jika nama == ‘utama‘:
main()
seperti yang terlihat, peningkatan jumlah nol terdepan yang diperlukan dalam hash secara signifikan meningkatkan jumlah percobaan yang diperlukan, mengikuti pola pertumbuhan eksponensial. ini menunjukkan kesulitan komputasi dan sumber daya yang diperlukan untuk penambangan, yang menekankan perlunya perangkat komputasi berkinerja tinggi dalam proses penambangan.
untuk memastikan bahwa blok dihasilkan kira-kira setiap 10 menit, sistem bitcoin menyesuaikan kesulitan penambangan dengan mengubah jumlah nol terkemuka yang diperlukan dalam nilai hash. mekanisme penyesuaian kesulitan ini merupakan bagian penting dari sistem bitcoin. mekanisme ini mengevaluasi waktu yang diperlukan untuk menghasilkan 2016 blok terakhir, yang seharusnya idealnya sekitar dua minggu. jika blok-blok ini ditambang dalam waktu kurang dari dua minggu, kesulitan meningkat dengan menambahkan lebih banyak nol terkemuka (menurunkan nilai target). sebaliknya, jika membutuhkan waktu lebih dari dua minggu, kesulitan berkurang dengan mengurangi jumlah nol terkemuka (menaikkan nilai target). mekanisme ini memastikan bahwa waktu untuk menghasilkan blok tetap sekitar 10 menit, bahkan ketika hash rate total jaringan bergejolak.
mekanisme penyesuaian kesulitan ini, dirancang oleh pencipta bitcoin satoshi nakamoto, direncanakan dari awal untuk secara otomatis beradaptasi dengan total daya komputasi jaringan. Ini menjaga kecepatan penambangan yang stabil dan mencegah mata uang diterbitkan terlalu cepat, yang dapat mengganggu ekonomi pasar.
berbagai proyek blockchain mungkin memiliki algoritma penambangan yang berbeda. di sini, kami mendeskripsikan yang paling terkenal: algoritma penambangan bitcoin.
proses eksekusi algoritma penambangan yang mendasari bitcoin adalah sebagai berikut:
ukuran setiap kolom dalam header blok adalah sebagai berikut:
https://time.geekbang.org/column/article/5963
alt="">struktur pohon merkle adalah sebagai berikut:
大后端私房菜]. alt="">
kontroversi utama yang melibatkan penambangan adalah algoritma proof of work (pow) yang digunakan oleh bitcoin dan derivatifnya. algoritma-algoritma ini memerlukan para penambang untuk mengalokasikan sumber daya komputasi yang substansial untuk menyelesaikan masalah yang disepakati oleh jaringan. Banyak orang bekerja pada komputasi-komputasi ini secara bersamaan, tetapi hanya yang pertama menyelesaikan masalah yang mendapatkan imbalan. Sumber daya komputasi dan listrik para peserta lainnya pada dasarnya terbuang percuma, tidak menghasilkan nilai tambah.
ada dua jalur utama untuk mengoptimalkan pemborosan sumber daya ini:
apa nilai dari penambangan? sepertinya pemborosan sumber daya dan tidak berarti bagi masyarakat.
ketika mengunjungi bagian 'mengapa penambangan diperlukan?' dari artikel ini, signifikansi langsung dari penambangan adalah bahwa itu mendukung penerbitan mata uang digital. Hadiah penambangan mendorong lebih banyak orang untuk berpartisipasi dalam mempertahankan mata uang digital, membuatnya lebih stabil. Selain itu, algoritma penambangan menopang konsistensi transaksi dalam sistem mata uang digital, membuatnya lebih kuat dan kurang rentan terhadap serangan internal dan eksternal.
signifikansi tidak langsung dari penambangan berasal dari mata uang digital itu sendiri. mata uang digital menciptakan sistem moneter global yang tidak memerlukan kepercayaan di mana transaksi aman dapat terjadi tanpa perlu institusi terpusat, menghindari kelemahan sentralisasi. sifat global mereka juga memungkinkan transaksi lintas batas yang efisien dan murah.
Apakah pengembalian penambangan akan berkurang hingga di bawah biaya, menyebabkan para penambang berhenti menambang dan transaksi berhenti?
Ini adalah kekhawatiran umum bahwa hasil penambangan semata-mata bergantung pada imbalan sistem, yang menurun seiring waktu. Namun, penambangan juga menghasilkan pendapatan yang signifikan dari biaya transaksi. Saat mata uang digital semakin diterima, pasar untuk transaksi mata uang digital akan berkembang. Volume transaksi yang meningkat ini akan memperkuat persaingan untuk inklusi blok, menyebabkan biaya yang lebih tinggi yang pengguna bersedia bayar untuk memprioritaskan transaksi mereka. Akibatnya, penambang dapat terus menghasilkan biaya transaksi yang substansial, memastikan kelangsungan proses transaksi.
apakah biaya transaksi akan mengkompensasi biaya penambangan?
Ya, biaya transaksi dapat membantu mengkompensasi biaya penambangan. Seiring berkurangnya hadiah blok dari waktu ke waktu, biaya transaksi menjadi sumber pendapatan yang penting bagi para penambang. Hal ini memastikan bahwa meskipun biaya listrik tinggi, para penambang masih dapat menjalankan operasi mereka melalui biaya yang dibayarkan oleh pengguna untuk pemrosesan transaksi.
Apakah beberapa penambang membagi hadiah penambangan jika mereka secara bersamaan menyiarkan blok baru mereka?
tidak, jika beberapa penambang menyelesaikan teka-teki dan menyiarkan blok baru mereka pada saat yang bersamaan, itu menciptakan garpu sementara dalam blockchain. Berikut cara kerjanya:
contoh:
apa itu serangan 51% dan mengapa tidak ada penambang super yang curang?
serangan 51% terjadi ketika satu entitas atau kelompok mengendalikan lebih dari 50% dari daya komputasi jaringan. inilah mengapa supernode biasanya tidak curang:
bagaimana blockchain mencegah gangguan yang disengaja dan transaksi penipuan?
mencegah distribusi blok yang tidak konsisten oleh penambang
definisi dan fungsi: dalam jaringan blockchain, semua transaksi yang disiarkan yang belum termasuk dalam blok disimpan sementara di memori pool (mempool) dari node jaringan. para penambang memantau mempool mereka untuk memilih transaksi untuk membangun blok baru.
strategi pemilihan transaksi: penambang dapat memilih transaksi dari mempool berdasarkan strategi mereka. Umumnya, mereka memprioritaskan transaksi dengan biaya yang lebih tinggi, tetapi beberapa mungkin juga mempertimbangkan faktor lain, seperti usia transaksi (waktu yang dihabiskannya di mempool).
siapa yang berpartisipasi dan bagaimana mereka mendapatkan: selain pengguna, tiga peserta utama dalam sistem bitcoin adalah penambang, pengembang, dan operator node.
kenaikan harga gpu: permintaan tinggi dari para penambang untuk keperluan penambangan telah menyebabkan kelangkaan pasokan, sehingga menyebabkan harga naik.
penambangan gpu: penambangan gpu adalah gpu yang sebelumnya digunakan untuk penambangan cryptocurrency. gpu ini menjalani komputasi intensif, yang mengakibatkan kerusakan yang signifikan. karena performanya yang menurun, sebagian besar orang lebih memilih untuk tidak membeli gpu penambangan bekas.
Persyaratan penyimpanan redundan penuh: Ya, penambang perlu menyimpan seluruh buku besar blockchain untuk memverifikasi apakah token sebelumnya telah dihabiskan dan untuk memastikan keamanan dan integritas buku besar. Namun, untuk blok yang sangat awal, penambang hanya perlu menyimpan header blok, bukan isi blok penuh. Ini membantu menjaga efisiensi blockchain sambil menjaga keamanannya.
tidak ada hadiah otomatis di luar 21 juta bitcoin: begitu pasokan total bitcoin mencapai batasnya sebesar 21 juta, sistem tidak akan lagi mengeluarkan bitcoin baru sebagai hadiah untuk penambang. jika pengguna juga tidak bersedia membayar biaya transaksi, secara teoritis, sistem transaksi dapat menghadapi tantangan operasional. Namun, kemungkinan besar pengguna akan bersedia membayar biaya transaksi untuk memproses transaksi mereka, memastikan kelangsungan sistem.
tinggi blok akan terus meningkat: bahkan setelah mencapai pasokan maksimum 21 juta bitcoin, tinggi blok (jumlah total blok) akan terus meningkat selama penambang bersedia menambang dan memasukkan transaksi ke dalam blok baru. tinggi blok tidak terbatas oleh batas pasokan bitcoin.
potensi perubahan konsensus: komunitas dapat mengusulkan perubahan pada aturan konsensus, seperti meningkatkan pasokan total bitcoin, untuk memungkinkan pembuatan koin baru jika diperlukan.
transaksi coinbase: dalam blockchain bitcoin, hadiah penambang didistribusikan melalui transaksi khusus yang dikenal sebagai “transaksi coinbase” atau “hadiah blok.” transaksi ini memiliki karakteristik unik:
perhitungan pendapatan per blok: pendapatan penambang dihitung setiap kali blok berhasil ditambang dan dikonfirmasi oleh mekanisme konsensus jaringan. penambang (atau kolam penambangan) yang menambang blok menerima imbalan blok dan biaya transaksi kumulatif dari semua transaksi yang disertakan dalam blok.
proses penerimaan imbalan: setelah penambang atau kolam penambangan berhasil menambang blok dan blok tersebut dikonfirmasi oleh jaringan, mereka menerima imbalan blok dan biaya transaksi. ini dilakukan melalui transaksi coinbase, yang mengkonversi biaya dan imbalan menjadi output transaksi yang belum dihabiskan (utxo) yang dikreditkan ke akun penambang.
penciptaan berurutan: blok-blok dibuat secara berurutan dalam blockchain. blok baru hanya dapat dibuat setelah blok sebelumnya berhasil ditambang dan ditambahkan ke dalam rantai.
beberapa transaksi per blok: blok biasanya berisi beberapa transaksi. penambang menyertakan sebanyak mungkin transaksi untuk memaksimalkan penghasilan biaya transaksi mereka, bukan memaketkan transaksi secara individu.
Blok yang terisi sebagian: Sebagian besar blok tidak sepenuhnya digunakan. Penambang mulai bekerja pada blok berikutnya segera setelah mereka menemukan hash yang valid yang memenuhi persyaratan kesulitan, terlepas dari apakah blok tersebut benar-benar penuh.
blok kosong: blok dapat ditambang bahkan jika tidak ada transaksi yang akan dimasukkan. blok-blok ini, disebut blok kosong, masih memberikan imbalan sistem kepada penambang.
Aturan rantai terpanjang: ketika terjadi fork, jaringan mengikuti rantai dengan bukti kerja yang paling banyak terakumulasi, yang biasanya merupakan rantai terpanjang. node beralih ke rantai yang lebih panjang begitu menjadi jelas mana yang memiliki lebih banyak pekerjaan yang dimasukkan ke dalamnya.
Resolusi pengeluaran ganda:
proses validasi:
perhitungan biaya transaksi: pengguna dapat mengontrol biaya transaksi untuk mempercepat konfirmasi transaksi mereka. biaya ditentukan oleh rumus berikut:
Biaya transaksi = total input − total output − perubahan
pengguna menetapkan biaya transaksi dengan menyesuaikan jumlah masukan, jumlah keluaran, dan jumlah kembalian.
pembagian penghasilan: saat penambangan dalam sebuah pool, node pool menerima hadiah blok. pool kemudian membagikan penghasilan kepada anggotanya berdasarkan daya komputasi yang mereka sumbangkan. pembagian ini dilakukan melalui transfer ke dompet para penambang.
penambangan egois: penambangan egois adalah strategi di mana seorang penambang (atau kolam penambangan) menemukan blok baru tetapi tidak segera menyiarkannya. sebaliknya, mereka terus menambang secara pribadi pada rantai mereka (rantai tersembunyi). begitu mereka menemukan blok tambahan, mereka menyiarkannya semua sekaligus. ini dapat membatalkan pekerjaan penambang lain dan memiringkan kekuatan komputasi serta imbalan ke arah penambang egois. bitcoin dapat mengurangi dampak penambangan egois dengan memperbaiki protokol penyiaran.
validasi transaksi: ketika suatu transaksi disiarkan ke sebuah node, ia akan mengalami beberapa pemeriksaan untuk menentukan apakah harus ditambahkan ke mempool:
validasi blok: ketika node penambang menerima blok baru, ia melakukan pemeriksaan yang ekstensif terhadap blok dan transaksinya:
[1] kuliah 12 | teknologi blockchain mendalam (4): konsensus pow-penjelasan mendalam tentang blockchain-geek time:sanggahan: