Bitcoin Forum
September 16, 2019, 01:35:45 PM *
News: If you like a topic and you see an orange "bump" link, click it. More info.
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: [INFO] Kupas tuntas GPU Mining  (Read 516 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
abhiseshakana
Hero Member
*****
Offline Offline

Activity: 532
Merit: 1333


🅸ndonesia 🅿atrol 🆂quad


View Profile WWW
October 23, 2018, 08:05:36 AM
Last edit: November 07, 2018, 09:30:32 AM by abhiseshakana
Merited by dbshck (6), roycilik (2), joniboini (2), Husna QA (2), payjoe93 (2), Dermelon (1)
 #1


Latar belakang


Pasti sudah banyak yang mengenal istilah GPU Mining, tetapi apakah ada yang mengetahui detail dari kegiatan Gpu mining itu seperti apa ?
Bagaimana sebuah GPU bekerja sehingga bisa muncul sebuah hashrate ?
Bagaimana sebuah GPU bisa terkoneksi dengan jaringan blockchain ?
Bagaimana proses komputasi tersebut dilakukan ?





Intro


Block
Block adalah sebuah wadah berbagai transaksi yang telah dikirimkan pada sebuah jaringan dan untuk memproses sebuah block pada konsensus PoW dibutuhkan peran Miner.

Hashrate
Satuan pada proses hash function yang digunakan dalam kegiatan mining, sebagai penanda kecepatan komputasi dari sebuah node miner setiap detiknya.
Satuan yang digunakan = hash/second (H/s)

Mining
Proses komputasi untuk membuat sebuah block dalam jaringan blockchain, dan untuk setiap block valid yang dibuat akan mendapatkan reward sesuai dengan porsi hashrate-nya masing-masing.

Dalam kegiatan mining, GPU digunakan sebagai salah satu perangkat elektronik yang bisa melakukan proses mining. Dengan kombinasi dari beberapa perangkat lunak dan perangkat keras lainnya, maka perangkat sistem ini akan menjadi sebuah node aktif yang bisa ikut berperan dalam proses kegiatan mining pada sebuah jaringan blockchain (P2P).





Detail GPU Mining


Struktur GPU


https://en.wikipedia.org/wiki/File:Generic_block_diagram_of_a_GPU.svg


Driver dan Framework

Driver
Sebuah program yang berfungsi untuk melakukan kontrol dan menjalankan sebuah perangkat tertentu yang terpasang pada sebuah sistem komputer (PC, Laptop). Program ini menyediakan antarmuka perangkat lunak (software) ke perangkat keras (hardware), sehingga memungkinkan sebuah OS dan program-program yang ada didalamnya, untuk bisa mengakses fungsi dari hardware tersebut.

Framework
GPU mendukung API extensions yang bisa digunakan pada bahasa pemrograman C, seperti OpenCL. Sehingga sebuah GPU bisa melakukan proses komputasi umum seperti layaknya sebuah CPU.
Nvidia menggunakan framework yang disebut CUDA dan AMD menggunakan AMD APP SDK, dengan teknologi tersebut memungkinkan terjadinya proses komputasi (compute kernels) dari bahasa pemrograman (C, C++, Python) untuk dijalankan pada stream processors sebuah GPU, dan mengakses fungsi-fungsi yang ada pada sebuah GPU secara langsung.

Program mining

Program mining rata-rata menggunakan bahasa pemrograman C, C++ dan Python. Sehingga untuk melakukan proses komputasi pada kegiatan mining menggunakan GPU, dibutuhkan software frameworks seperti OpenCL, Cuda dan AMD SDK.

Pada program mining ada parameter-parameter yang mesti ditambahkan pada bagian config atau .bat file. Supaya proses mining bisa berjalan sesuai dengan target yang diinginkan, maka parameter-parameter seperti : Pool URL, Algoritma coin, Address mining reward, dll harus disesuaikan terlebih dahulu.

Beberapa contoh Program Mining :
  • CCMiner
  • SGMiner
  • Claymore
  • Xmr-Stak

Algoritma mining

Fungsi hash khusus dalam bentuk algoritma matematika, yang digunakan pada setiap proses komputasi (menghasilkan hash) dalam memproduksi sebuah block pada mekanisme Proof of Work.

Contoh algoritma mining :
  • Sha-256
  • Blake
  • Scrypt
  • X11

Hashing

Proses komputasi pada GPU menggunakan algoritma mining tertentu, dalam merumuskan suatu permasalahan matematika yang komplek sehingga bisa dihasilkan sebuah hash yang valid. Proses hashing dalam kegiatan mining selalu berkaitan dengan difficulty, yakni tingkat kesulitan pada level tertentu dalam memproduksi hash sesuai dengan ketentuan target yang ada.

Elemen-elemen tersebut mempengaruhi berapa lama (waktu yang dibutuhkan) sebuah block dapat diselesaikan, dengan ketentuan block time berbanding lurus dengan difficulty dan berbanding terbalik dengan hashing. Jadi semakin besar nilai difficulty maka waktu untuk memproses sebuah block juga akan semakin lama. Begitu juga sebaliknya, semakin besar kemampuan hashing sebuah node miner maka nilai block time akan semakin kecil.

Proses GPU mining

Quote
GPU »» Driver »» Mining System »» Mining Program »» Kernels Framework (OpenCL, Cuda, AMD SDK) »» Hashing »» Mining Pool »» Global Network »» Pool Luck »» Generate Block »» Validation »» Block Reward »» Mining Pool »» Mature reward »» Sent reward as effective hashrate »» Miner wallet

- Pada saat GPU terpasang pada Mining Rig system, dibutuhkan sebuah driver supaya GPU tersebut bisa dikenali oleh Mining Rig.

- Saat sebuah program mining dijalankan maka dengan adanya sebuah driver, program mining akan mengenali GPU yang terpasang pada sistem mining rig

- Selanjutnya program mining akan mengakses kernels framework (OpenCL, Cuda, Amd Sdk), sehingga program mining dapat menjalankan fungsi-fungsi yang ada didalam sebuah GPU termasuk proses hashing.

- Setelah program mining terintegrasi dengan GPU, maka program mining tersebut akan terhubung dengan jaringan sebuah Pool sesuai dengan parameter yang ada pada config atau bat file (PooL URL + Port).

- Mining Pool adalah sebuah Full node dengan berbagai node miner didalamnya. Pada saat Node Pool terhubung dengan sebuah jaringan P2P, maka node Pool akan bertindak sebagai Node miner yang dapat memproses sebuah block.

- Pada saat Pool memproses suatu block, maka Pool akan memberikan perintah Job baru ke setiap node miner yang terhubung didalam jaringan Pool tersebut.

- Setiap Job baru yang diterima oleh node miner, akan ditindak lanjuti dengan proses hashing yang dilakukan oleh GPU dan untuk setiap kontribusi hashing yang dilakukan akan dikenali oleh Pool sebagai accepted shares.

- Jadi proses hashing (accepted shares) yang dilakukan oleh keseluruhan node miner yang tergabung didalam sebuah Pool (menjadi satu kesatuan sebagai Node Pool), berpotensi untuk membuat sebuah block.

- Saat Node Pool berhasil memproses Block yang valid dengan waktu tercepat (Pool Luck) dibandingkan dengan node-node miner lainnya, maka block ini akan didistribusikan ke jaringan blockchain.

- Node Pool tadi akan menerima Mining Reward sebagai imbalan hasil kerja memproduksi sebuah block.

- Block Reward yang diterima akan berstatuskan immature sehingga reward ini masih belum bisa untuk digunakan/dikirim. Untuk menghasilkan sebuah mature reward, maka dibutuhkan N konfirmasi (sesuai protokol) pada block yang dibuat tadi.

- Pada saat block tersebut menjadi invalid (tidak menjadi rantai block terpanjang/orphan/stale block), maka immature reward yang tadi diterima akan menjadi hilang. Tetapi jika block tadi menjadi rantai terpanjang dan mendapatkan N konfirmasi, maka reward akan berstatuskan mature (confirmed)

- Mature reward akan didistribusikan oleh Pool ke address miner sesuai dengan porsi effective hashrate (accepted shares) masing-masing miner.



Distribusi mining pada jaringan Mining Pool (Stratum Protocol)



- Saat miner terhubung dengan jaringan pool, berarti miner tsb menyatakan telah siap untuk menerima job baru dengan mengirimkan sebuah perintah subscribe
Code:
{"id": 1, "method": "mining.subscribe", "params": ["user agent/version"]}

user agent : Nama program mining
Version : Versi program mining



- Setelah itu Pool akan merespon permintaan tersebut dengan memberikan data-data : pool difficulty, 2 hash penanda subscribe dari miner, nilai extranonce1 yg ditentukan oleh pool (masing-masing miner menerima extranonce1 yg berbeda-beda), ukuran format extranonce2 yg digunakan (bytes)
Code:
{"id": 1, "result": [[["mining.set_difficulty", "subscription id 1"], ["mining.notify", "subscription id 1"]], "extranonce1", extranonce2_size], "error": null}\n



- Lalu miner akan melakukan proses authorize dengan mengirimkan data-data : username (address wallet atau worker ID) dan password yang digunakan.
Code:
{"id": 2, "method": "mining.authorize", "params": ["username", "password"]}



- Jika proses authorize berhasil maka pool akan mengirimkan pesan kepada miner
Code:
{"id":2, "result":true,"error":null}



- Jika memungkinkan miner bisa merubah nilai difficulty secara manual dengan mengirimkan perintah sebagai berikut
Code:
{"id":null, "method":"mining.set_difficulty","params":[value]}

Tetapi tidak semua pool mengijinkan untuk dilakukan pengaturan difficulty secara manual, jadi difficulty yg digunakan sesuai dengan ketentuan dari Pool tersebut.



- Lalu pool akan mulai mengirimkan sebuah job baru kepada masing-masing miner yang bergabung dalam jaringannya
Code:
{"id":null, "method":"params": ["Job_ID", "PrevHash", "CoinBase1", "CoinBase2", [Merkle_Branch], "version", "nBits", "nTime", CleanJobs]}

Job_ID : Hash dari job yg diterima miner
PrevHash : Hash dari block sebelumnya
CoinBase1 : bagian awal dari transaksi coinbase yang dibikin oleh miner
CoinBase2 : bagian akhir dari transaksi coinbase
Merkle_Branch : berisi list dari hash transaksi yg ditentukan oleh pool untuk membuat merkle root
Version : versi block
nBits = Target dalam format compact (4 bytes)
nTime = timestamps
CleanJobs = true atau false



- Setelah semua data yg dibutuhkan oleh miner lengkap, maka miner akan memulai proses hashing pada block template (data-data) tadi. Pertama-tama miner akan membuat transaksi coinbase dengan menggabungkan : Coinbase1 + Extranonce1 + Extranonce2 + Coinbase2 (sesuai urutan) dan melakukan hash pada data tersebut.



- Saat hash coinbase didapat, maka langkah selanjutnya ialah membuat sebuah merkle root dengan memasangkan semua list hash transaksi sampai didapatkan sebuah hash merkle root (dimulai dengan melakukan hash pada penggabungan hash (coinbase) + hash transaksi pertama pada merkle_branch, dan diteruskan pada hash-hash transaksi selanjutnya). Untuk penjelasan singkat mengenai merkle root bisa dilihat disini https://bitcointalk.org/index.php?topic=5041577.msg46549453#msg46549453



- Langkah selanjutnya ialah membuat sebuah block header dengan melakukan hashing pada : version + prevhash + merkle_root + ntime + nbits + nonce
Dari proses hashing ini hasil yg didapatkan akan dibandingkan dengan target (berdasarkan pool difficulty), jika hasil masih belum sesuai (dibawah) target maka akan digunakan nonce atau extranonce2 lainnya sampai didapatkan hash yang sesuai/dibawah target.



- Setelah itu miner akan mengirimkan share tersebut ke jaringan pool dengan data sebagai berikut :
Code:
{"id": 4, "method": "mining.submit", "params": ["username", "job id", "ExtraNonce2", "nTime", "nonce"]}



- Pool akan memberi respon terhadap share tersebut dengan memberikan status : true (diterima) atau false (ditolak)
Code:
{"id":4,"result":true/false,"error":null}










Note : Data-data diatas mengacu pada stratum protocol pada jaringan Bitcoin. Karena masing-masing mining Pool mempunyai stratum protocol yang tidak jauh berbeda, maka secara garis besar stratum protocol dari Bitcoin bisa dijadikan contoh untuk penjelasan proses kerja sebuah jaringan mining pool.


Reference :
https://en.bitcoin.it/wiki/Stratum_mining_protocol  ;  https://en.bitcoin.it/wiki/Block_hashing_algorithm  ;  https://arxiv.org/pdf/1703.06545.pdf




Note :
- Post spam, dan out of topic akan saya hapus
- Jika ada yang salah, mohon dikoreksi
- Jika ada bagian yang kurang mengerti silahkan ditanyakan
- Buat yang ingin menambahkan informasi (sesuai topik), saya persilahkan

References :
https://en.wikipedia.org/wiki/Graphics_processing_unit
https://en.wikipedia.org/wiki/Cryptographic_hash_function
https://en.wikipedia.org/wiki/Device_driver

1568640945
Hero Member
*
Offline Offline

Posts: 1568640945

View Profile Personal Message (Offline)

Ignore
1568640945
Reply with quote  #2

1568640945
Report to moderator
1568640945
Hero Member
*
Offline Offline

Posts: 1568640945

View Profile Personal Message (Offline)

Ignore
1568640945
Reply with quote  #2

1568640945
Report to moderator
1568640945
Hero Member
*
Offline Offline

Posts: 1568640945

View Profile Personal Message (Offline)

Ignore
1568640945
Reply with quote  #2

1568640945
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
GirL-Miner
Newbie
*
Offline Offline

Activity: 22
Merit: 0


View Profile
October 23, 2018, 08:50:33 PM
 #2

agan bisa dijelaskan proses pemberian job baru yg dilakukan oleh pool kepada miner2 yg ikut di poolnya
dan knapa hashrate yg ditunjukan pada pool tidak sama dgn hashrate yg ada di software miner ?
abhiseshakana
Hero Member
*****
Offline Offline

Activity: 532
Merit: 1333


🅸ndonesia 🅿atrol 🆂quad


View Profile WWW
October 24, 2018, 08:32:50 AM
Last edit: October 24, 2018, 02:29:15 PM by abhiseshakana
Merited by dbshck (3)
 #3

agan bisa dijelaskan proses pemberian job baru yg dilakukan oleh pool kepada miner2 yg ikut di poolnya

Pada saat proses pembuatan sebuah Block, maka mining pool akan mengirimkan block template yang berbeda-beda ke setiap miner yang ada didalam jaringannya. Hal ini dilakukan supaya masing-masing miner yang mendapatkan job (block template), tidak melakukan proses hashing terhadap permasalahan yg sama (tidak kerja dua kali). Sehingga proses untuk membuat sebuah block yang valid tidak membuang banyak waktu karena masing-masing miner berusaha untuk mengerjakan soal yang berbeda-beda.

Jadi mining pool berperan sebagai operator dalam mendistribusikan pekerjaan (block template) yang berbeda kepada tiap-tiap miner yang ada didalam jaringan pool tersebut, sehingga masing-masing miner berpotensi menghasilkan suatu hash yang valid dalam pembentukan sebuah block.


Quote
dan knapa hashrate yg ditunjukan pada pool tidak sama dgn hashrate yg ada di software miner ?

Dalam mining pasti Om pernah mendengar istilah "reported hashrate" dan "effective hashrate"
Reported Hashrate adalah nilai hashrate yang ditampilkan oleh program mining mengacu pada kemampuan GPU dalam melakukan proses hashing. Sedangkan Effective hashrate adalah jumlah valid shares yang diterima oleh mining Pool, berdasarkan besaran hashrate yang dihasilkan oleh miner dalam pemrosesan suatu block.

Beberapa faktor yang menyebabkan nilai effective hashrate berbeda dengan nilai reported hashrate :

- Koneksi Jaringan
Jika dalam proses hashing hasil yg kita kirim ke pool mengalami delay karena adanya gangguan koneksi jaringan dan pada saat yg sama sebuah block valid berhasil diproses oleh pool, maka share yang dikirim akan menjadi invalid karena tidak menjadi bagian dari Block tersebut.

- Pool difficulty (share difficulty)
Share difficulty adalah tingkat kesulitan yang menentukan berapa banyak nilai shares (accepted shares) yang bisa/mampu dikirim oleh miner, dalam setiap proses pembuatan sebuah block.

- Fee program mining
Setiap program mining yang mempunyai/menetapkan fee dalam programnya, maka akan mengurangi jumlah share yang bisa diproduksi dalam setiap usaha pembuatan sebuah block. Karena dengan adanya fee tersebut, akan ada waktu tertentu dimana proses hashing yang dilakukan akan menjadi hak dari developer program mining tersebut.

- DLL

sebas7ian
Member
**
Offline Offline

Activity: 63
Merit: 27


View Profile
October 26, 2018, 05:52:52 AM
 #4



Dalam mining pasti Om pernah mendengar istilah "reported hashrate" dan "effective hashrate"
Reported Hashrate adalah nilai hashrate yang ditampilkan oleh program mining mengacu pada kemampuan GPU dalam melakukan proses hashing. Sedangkan Effective hashrate adalah jumlah valid shares yang diterima oleh mining Pool, berdasarkan besaran hashrate yang dihasilkan oleh miner dalam pemrosesan suatu block.



- Pool difficulty (share difficulty)
Share difficulty adalah tingkat kesulitan yang menentukan berapa banyak nilai shares (accepted shares) yang bisa/mampu dikirim oleh miner, dalam setiap proses pembuatan sebuah block.



gan bisa dijelaskan bagaimana cara pool dalam menentukan effectiv hashrate dari para minernya dan pengaruh share dificulty terhadap efective hashrate tersebut. Karna yg gw tau share difficulty yg dipake oleh pool jauh lebih kecil daripada difficulty aslinya
manjiLocked
Full Member
***
Offline Offline

Activity: 182
Merit: 134


Alt of manji account


View Profile
October 26, 2018, 07:42:31 AM
Merited by dbshck (2), abhiseshakana (1)
 #5

gan bisa dijelaskan bagaimana cara pool dalam menentukan effectiv hashrate
Setiap Pool memiliki perhitungan yg Berbeda dalam menghitung jumlah effective hashrate.

Pool Menghitung Valid Share dalam satuan Seconds kemudian menjumlahkannya .

Pointnya:
Berapa banyak Valid share ke Pool dalam satuan second. Jika di Detailkan Maka Type & Jenis VGA & hal2 yg mempengaruhi kestabilan koneksi[1]sangat Mempengaruhi Jumlah Valid Share/second.

ex:
Miners1: 70 share (POW stat perSec) dalam waktu 10seconds

Miner-N: 100 Share(POW stat peSec) dalam waktu 10Seconds.

Kok bisa Beda?
Jawbannya. pada point [1].

dari para minernya dan pengaruh share dificulty terhadap efective hashrate tersebut. Karna yg gw tau share difficulty yg dipake oleh pool jauh lebih kecil daripada difficulty aslinya
Diff aslinya itu maksudnya Diff Global?.

Rumus sederhanannya:
Tl;dr: Effective Hash Rate = Shares per second = difficulty * numbers of proof of work per second

it's the Logic
abhiseshakana
Hero Member
*****
Offline Offline

Activity: 532
Merit: 1333


🅸ndonesia 🅿atrol 🆂quad


View Profile WWW
October 26, 2018, 10:41:15 AM
Merited by dbshck (3)
 #6

gan bisa dijelaskan bagaimana cara pool dalam menentukan effectiv hashrate dari para minernya dan pengaruh share dificulty terhadap efective hashrate tersebut. Karna yg gw tau share difficulty yg dipake oleh pool jauh lebih kecil daripada difficulty aslinya

Nambahin jawaban Om manji

Misal diketahui Mining difficulty = 5.000.000.000, jika mining pool menetapkan share difficulty sama (5.000.000.000) maka hanya dibutuhkan 1 share untuk membuat 1 block yg sesuai dengan target dalam kurun N waktu (block time). Tetapi jika Pool tersebut menetapkan share difficulty hanya sebesar 5.000, maka dibutuhkan total share sebanyak 1.000.000 untuk membuat sebuah block yang valid.

Share adalah hasil proses hashing dari sebuah block template yang dikirimkan oleh miner kepada Pool, jumlah share tergantung dengan share difficulty dan besar hashrate masing-masing miner. Misal dengan hashrate 1000 h/s pada share diff 5000 seorang miner A dapat menghasilkan share sebanyak 2 dalam kurun 10 detik, dan Miner B mempunyai hashrate hanya sebesar 500 h/s dan menggunakan share diff 1000, maka share yg dihasilkan sebanyak 5 dalam kurun waktu 10 detik.

Meskipun dengan hashrate lebih kecil, dalam kurun waktu yang sama Miner B mampu menghasilkan jumlah share yg lebih banyak, tetapi porsi reward yang akan dihasilkan masih akan kalah dibandingkan dengan Miner A. Karena untuk porsi reward yang akan diberikan oleh Pool berdasarkan dari effective hashrate yg diberikan oleh masing-masing miner, jadi untuk Miner A mempunyai effective hashrate sebesar 10000 total shares (2*5000) dan Miner B hanya mempunyai effective hashrate sebesar 5000 total shares (5*1000)

Kriss.Kross
Member
**
Offline Offline

Activity: 103
Merit: 35


View Profile
October 27, 2018, 07:04:27 AM
Last edit: October 27, 2018, 11:34:46 PM by Kriss.Kross
 #7

Pada saat proses pembuatan sebuah Block, maka mining pool akan mengirimkan block template yang berbeda-beda ke setiap miner yang ada didalam jaringannya. Hal ini dilakukan supaya masing-masing miner yang mendapatkan job (block template), tidak melakukan proses hashing terhadap permasalahan yg sama (tidak kerja dua kali). Sehingga proses untuk membuat sebuah block yang valid tidak membuang banyak waktu karena masing-masing miner berusaha untuk mengerjakan soal yang berbeda-beda.


Request bang .. kalok berkenan skalian dikupas bagaimana proses kerja seorang miner mendapatkan job mining, data apa saja yg ada didalamnya dan peran kerja miner dalam memproses job tsb.
smoga penjelasannya dapat memberikan pencerahan bwat miner pemula seperti ane ini.





Akan saya coba jabarkan langkah-langkah kerja pada sebuah jaringan mining Pool (cmiiw)

.........................................................................

Salut bang bwat penjelasannya, dan trima kasih sudah mau membagi ilmunya (next time kalok ane dah punya smerit lg, pasti akan ane sisihkan buat post tsb)

#Menunggu saat yang tepat untuk mining kembali
abhiseshakana
Hero Member
*****
Offline Offline

Activity: 532
Merit: 1333


🅸ndonesia 🅿atrol 🆂quad


View Profile WWW
October 27, 2018, 07:47:18 AM
Merited by dbshck (5), joniboini (1), Husna QA (1), Dermelon (1)
 #8


Request bang .. kalok berkenan skalian dikupas bagaimana proses kerja seorang miner mendapatkan job mining, data apa saja yg ada didalamnya dan peran kerja miner dalam memproses job tsb.
smoga penjelasannya dapat memberikan pencerahan bwat miner pemula seperti ane ini.

Akan saya coba jabarkan langkah-langkah kerja pada sebuah jaringan mining Pool (cmiiw)

- Saat miner terhubung dengan jaringan pool, berarti miner tsb menyatakan telah siap untuk menerima job baru dengan mengirimkan sebuah perintah subscribe
Code:
{"id": 1, "method": "mining.subscribe", "params": ["user agent/version"]}

user agent : Nama program mining
Version : Versi program mining



- Setelah itu Pool akan merespon permintaan tersebut dengan memberikan data-data : pool difficulty, 2 hash penanda subscribe dari miner, nilai extranonce1 yg ditentukan oleh pool (masing-masing miner menerima extranonce1 yg berbeda-beda), ukuran format extranonce2 yg digunakan (bytes)
Code:
{"id": 1, "result": [[["mining.set_difficulty", "subscription id 1"], ["mining.notify", "subscription id 1"]], "extranonce1", extranonce2_size], "error": null}\n



- Lalu miner akan melakukan proses authorize dengan mengirimkan data-data : username (address wallet atau worker ID) dan password yang digunakan.
Code:
{"id": 2, "method": "mining.authorize", "params": ["username", "password"]}



- Jika proses authorize berhasil maka pool akan mengirimkan pesan kepada miner
Code:
{"id":2, "result":true,"error":null}



- Jika memungkinkan miner bisa merubah nilai difficulty secara manual dengan mengirimkan perintah sebagai berikut
Code:
{"id":null, "method":"mining.set_difficulty","params":[value]}

Tetapi tidak semua pool mengijinkan untuk dilakukan pengaturan difficulty secara manual, jadi difficulty yg digunakan sesuai dengan ketentuan dari Pool tersebut.



- Lalu pool akan mulai mengirimkan sebuah job baru kepada masing-masing miner yang bergabung dalam jaringannya
Code:
{"id":null, "method":"params": ["Job_ID", "PrevHash", "CoinBase1", "CoinBase2", [Merkle_Branch], "version", "nBits", "nTime", CleanJobs]}

Job_ID : Hash dari job yg diterima miner
PrevHash : Hash dari block sebelumnya
CoinBase1 : bagian awal dari transaksi coinbase yang dibikin oleh miner
CoinBase2 : bagian akhir dari transaksi coinbase
Merkle_Branch : berisi list dari hash transaksi yg ditentukan oleh pool untuk membuat merkle root
Version : versi block
nBits = Target dalam format compact (4 bytes)
nTime = timestamps
CleanJobs = true atau false



- Setelah semua data yg dibutuhkan oleh miner lengkap, maka miner akan memulai proses hashing pada block template (data-data) tadi. Pertama-tama miner akan membuat transaksi coinbase dengan menggabungkan : Coinbase1 + Extranonce1 + Extranonce2 + Coinbase2 (sesuai urutan) dan melakukan hash pada data tersebut.



- Saat hash coinbase didapat, maka langkah selanjutnya ialah membuat sebuah merkle root dengan memasangkan semua list hash transaksi sampai didapatkan sebuah hash merkle root (dimulai dengan melakukan hash pada penggabungan hash (coinbase) + hash transaksi pertama pada merkle_branch, dan diteruskan pada hash-hash transaksi selanjutnya). Untuk penjelasan singkat mengenai merkle root bisa dilihat disini https://bitcointalk.org/index.php?topic=5041577.msg46549453#msg46549453



- Langkah selanjutnya ialah membuat sebuah block header dengan melakukan hashing pada : version + prevhash + merkle_root + ntime + nbits + nonce
Dari proses hashing ini hasil yg didapatkan akan dibandingkan dengan target (berdasarkan pool difficulty), jika hasil masih belum sesuai (dibawah) target maka akan digunakan nonce atau extranonce2 lainnya sampai didapatkan hash yang sesuai/dibawah target.



- Setelah itu miner akan mengirimkan share tersebut ke jaringan pool dengan data sebagai berikut :
Code:
{"id": 4, "method": "mining.submit", "params": ["username", "job id", "ExtraNonce2", "nTime", "nonce"]}



- Pool akan memberi respon terhadap share tersebut dengan memberikan status : true (diterima) atau false (ditolak)
Code:
{"id":4,"result":true/false,"error":null}








Note : Data-data diatas mengacu pada stratum protocol pada jaringan Bitcoin. Karena masing-masing mining Pool mempunyai stratum protocol yang tidak jauh berbeda, maka secara garis besar stratum protocol dari Bitcoin bisa dijadikan contoh untuk penjelasan proses kerja sebuah jaringan mining pool.


Reference :
https://en.bitcoin.it/wiki/Stratum_mining_protocol  ;  https://en.bitcoin.it/wiki/Block_hashing_algorithm  ;  https://arxiv.org/pdf/1703.06545.pdf

yuniaspratama
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
November 08, 2018, 08:36:07 AM
 #9

wah bagus nih aada info info mengenai gpu mining, saya jadi teringat temaan saya yang mining menggunakan VGA Card,
dia sempat nanya ke saya 'apa maksid stale shares'. Bisa agan jelaskan apa itu stale shares? saya lihat di grafik pool dia ada seperti jarum naik warna kuning banyak banget  Shocked  
Dermelon
Sr. Member
****
Offline Offline

Activity: 436
Merit: 366



View Profile
November 08, 2018, 03:05:42 PM
Last edit: November 09, 2018, 05:15:21 PM by Dermelon
Merited by dbshck (5), abhiseshakana (2), pandukelana2712 (1), sebas7ian (1)
 #10

wah bagus nih aada info info mengenai gpu mining, saya jadi teringat temaan saya yang mining menggunakan VGA Card,
dia sempat nanya ke saya 'apa maksid stale shares'. Bisa agan jelaskan apa itu stale shares? saya lihat di grafik pool dia ada seperti jarum naik warna kuning banyak banget  Shocked  
Stale Shared
adalah share yang valid tapi sudah melampaui batas waktu (telat atau sudah basi). Share ini tidak ikut dihitung dalam effective hashrate.
definisi lainnya ada di https://kenmahdi.wordpress.com/2017/04/30/apa-itu-hashrate/



gan bisa dijelaskan bagaimana cara pool dalam menentukan effectiv hashrate dari para minernya dan pengaruh share dificulty terhadap efective hashrate tersebut. Karna yg gw tau share difficulty yg dipake oleh pool jauh lebih kecil daripada difficulty aslinya

Nambahin jawaban Om manji

Misal diketahui Mining difficulty = 5.000.000.000, jika mining pool menetapkan share difficulty sama (5.000.000.000) maka hanya dibutuhkan 1 share untuk membuat 1 block yg sesuai dengan target dalam kurun N waktu (block time). Tetapi jika Pool tersebut menetapkan share difficulty hanya sebesar 5.000, maka dibutuhkan total share sebanyak 1.000.000 untuk membuat sebuah block yang valid.

Share adalah hasil proses hashing dari sebuah block template yang dikirimkan oleh miner kepada Pool, jumlah share tergantung dengan share difficulty dan besar hashrate masing-masing miner. Misal dengan hashrate 1000 h/s pada share diff 5000 seorang miner A dapat menghasilkan share sebanyak 2 dalam kurun 10 detik, dan Miner B mempunyai hashrate hanya sebesar 500 h/s dan menggunakan share diff 1000, maka share yg dihasilkan sebanyak 5 dalam kurun waktu 10 detik.

Meskipun dengan hashrate lebih kecil, dalam kurun waktu yang sama Miner B mampu menghasilkan jumlah share yg lebih banyak, tetapi porsi reward yang akan dihasilkan masih akan kalah dibandingkan dengan Miner A. Karena untuk porsi reward yang akan diberikan oleh Pool berdasarkan dari effective hashrate yg diberikan oleh masing-masing miner, jadi untuk Miner A mempunyai effective hashrate sebesar 10000 total shares (2*5000) dan Miner B hanya mempunyai effective hashrate sebesar 5000 total shares (5*1000)

Hanya menambahkan, penjelasan para master disini sudah mengupas sangat dalam, saya hanya ingin memberikan sudut pandang dari newbie saja.

Untuk memahami hubungan share difficulty dengan mining reward yang didapat, sebelumnya perlu dipahami :
 - Apa itu Network Difficulty/target difficulty, pool difficulty/share difficulty.
 - Bagaimana mekanisme pool menghitung bobot sebuah share.
 - Alasan utama kehadiran pool.

Pool terjemahan bebasnya adalah tempat berkumpul, sama dengan istilah yang digunakan oleh pool taksi/bis. Mining pool hadir ketika network difficulty naik tinggi, sehingga miner dengan hashrate kecil (Miner Kecil) menjadi sangat lama mendapatkan block. Solusinya adalah mining dilakukan secara gotong-royong oleh banyak Miner Kecil, block reward yang didapat dibagikan kepada miner yang terlibat sesuai dengan kontribusinya terhadap kegiatan ini.

Persoalan yang timbul adalah :
P1. Bagaimana cara membagi tugas kepada semua miner agar tetap bisa mining walaupun dengan hashrate kecil padahal network diff sudah sangat tinggi?
P2. Bagaimana cara membagikan block reward yang didapat oleh pool secara adil?
P3. Parameter apa yang bisa digunakan untuk menghitung kontribusi setiap miner secara adil?
P4. Bagaimana cara pembayaran kepada setiap miner?

Target Difficulty
Difficulty (Diff) adalah tingkat kesulitan, semakin besar nilainya maka akan semakin sulit mendapatkan solusinya. mining adalah kegiatan menghitung, jika tingkat kesulitan tinggi maka akan semakin lama solusi didapatkan.
Bitcoin didisain untuk membuat block baru setiap 10 menit secara otomatis (block time). Banyaknya hashrate dari para miner mempengaruhi kecepatan penemuan hash dari sebuah block baru. semakin banyak miner maka akan semakin cepat solusi perhitungan ditemukan, jika diasumsikan tingkat kesulitan adalah sama. Padahal waktu pembuatan block baru selalu dijaga dalam rentang waktu 10 menit untuk setiap blocknya. Untuk mengatasi hal ini maka dibuat sebuah mekanisme tingkat kesulitan yang berubah-ubah, targetnya agar block time sebisa mungkin selalu 10 menit. Jangan sampai terlalu cepat atau pun terlalu lambat. Cara ini dikenal dengan target difficulty dan menjadi diff untuk seluruh network Bitcoin. sehingga dikenal juga sebagai Network Difficulty.

Quote
Sebagai ilustrasi adalah kegiatan lempar dadu. Sebuah dadu berisi angka 1 sampai 6, ketika 2 buah dadu dilempar maka kemungkinan nilai yang keluar adalah 2-12.
Jika dibuat target untuk mencari nilai dibawah 13. Maka setiap kali dadu dilempar ,solusi akan selalu ditemukan. Ini adalah tingkat kesulitan yang paling rendah. Sekarang target kita ubah untuk mencari nilai dibawah 6. Akibatnya waktu yang dibutuhkan untuk menemukan solusi bisa menjadi lebih lama. Target juga bisa dipersulit menjadi "temukan nilai dibawah 3". Maka tingkat kesulitan akan semakin tinggi. Target seperti ini yang disebut Target Difficulty. Ingat solusi yang dicari adalah semua nilai dibawah target.
Catatan:
Contoh ini mengambil Ilustrasi dari buku Mastering Bitcoin by Andreas M. Antonopoulos, untuk lebih jelasnya silahkan membaca buku tsb. Jika kutipan ini tidak diperbolehkan oleh moderator, silahkan dihapus.


P1. Bagaimana cara membagi tugas kepada semua miner agar tetap bisa mining walaupun dengan hashrate kecil padahal network diff sudah sangat tinggi?
Ketika diff sudah sangat tinggi, Miner Kecil sangat kecil kemungkinannya menemukan solusi sebuah block. Tetapi jika diff diturunkan maka miner masih bisa menemukan solusi walaupun belum tentu solusi ini lebih rendah dari target diff. Maka pool membuat Target Diff sendiri yang selalu dibawah Network Diff. Miner Kecil melakukan mining berdasarkan Target Diff yang ditentukan oleh Pool yang dikenal sebagai Pool Diff. Pool ada yang membuat diff berbeda-beda untuk menerima Miner Kecil dengan hashrate yang berbeda-beda, biasanya ditentukan berdasarkan port.
Mining pool tujuannya adalah menurunkan Diff, tetapi jika Miner memilih diff terlalu rendah maka miner akan menjadi terlalu sering mengirimkan share ke pool. Bayangkan jika ada ribuan miner yang melakukan hal seperti ini. Server pool akan sangat terbebani, jika melebihi kemampuannya maka server bisa hang. Situasi ini tidak ubahnya seperti mendapatkan serangan ddos. Sebaliknya jika memilih diff terlalu tinggi, maka share menjadi sangat sedikit. Jadi carilah diff yang paling sesuai dengan kemampuan VGA. Biasanya di halaman web pool diberikan panduan untuk pemilihan diff yang sesuai atau jika tersedia bisa juga digunakan port untuk vardiff . Vardiff adalah diff yang berubah-ubah secara otomatis.

P2. Parameter apa yang bisa digunakan untuk menghitung kontribusi setiap miner?
Setiap kali Miner Kecil menemukan solusi yang valid dan mengirimkannya ke pool, maka dicatat oleh pool sebagai sebuah Share yang dikenal sebagai Accepted Shared. Jika solusi ini lebih rendah dari Target Diff nya Network maka pool mendapatkan block reward. Jika tidak, Accepted Shared tetap dicatat untuk menghitung kontribusi setiap miner. Jika pool memiliki Diff berbeda-beda, maka setiap shared dihitung bobotnya dengan memperhitungkan tingkat Diff. Cara perhitungannya lihat penjelasannya om manji dan om abhi.

P3. Bagaimana cara membagikan block reward yang didapatkan pool secara adil?
Harga koin sering berubah dengan cepat, sehingga banyak miner yang sering berpindah-pindah pool supaya bisa selalu mendapatkan hasil maksimal. Cara ini tidak ubahnya seperti kutu loncat. Terkadang situasi ini bisa merugikan miner lainnya, maka dibuatlah beberapa metode perhitungan seperti Pay per Shares(PPS), Pay Per Last (luck) N Shares (PPLNS) dan lainnya.

P4. Bagaimana cara pembayaran kepada setiap miner?
Pool melakukan transfer koin hasil mining kepada miner secara otomatis ke wallet address masing-masing. Jangan sampai salah memasukkan wallet address, karena jika terjadi kesalahan pengiriman maka koin akan hilang. Pool menetapkan fee,periode dan treshold(batas minimal) pembayaran yang berbeda-beda. Ada pool yang melakukan pembayaran setiap 1 jam atau lebih. Treshold adalah batas minimal jumlah koin yang dihasilkan oleh miner, jika sudah mencapai batas minimal ini secara otomatis akan dibayarkan. Pool mengambil besaran fee berbeda-beda sesuai dengan kebijakan masing-masing, umumnya 1% tetapi ada juga yang 0%.


CMIIW
Jika ada yang salah mohon dikoreksi
Jika ada yang kurang silahkan dilengkapi
Jika ada penjelasan yang lebih baik, itu yang kita tunggu Smiley
kalacC
Newbie
*
Online Online

Activity: 11
Merit: 12


View Profile
November 10, 2018, 06:21:00 AM
Last edit: November 10, 2018, 03:17:46 PM by kalacC
Merited by dbshck (3), Dermelon (1), manjiLocked (1)
 #11

wah bagus nih aada info info mengenai gpu mining, saya jadi teringat temaan saya yang mining menggunakan VGA Card,
dia sempat nanya ke saya 'apa maksid stale shares'. Bisa agan jelaskan apa itu stale shares? saya lihat di grafik pool dia ada seperti jarum naik warna kuning banyak banget  Shocked  
Stale Shared
adalah share yang valid tapi sudah melampaui batas waktu (telat atau sudah basi). Share ini tidak ikut dihitung dalam effective hashrate.
definisi lainnya ada di https://kenmahdi.wordpress.com/2017/04/30/apa-itu-hashrate/

(Hanya sedikit menambahkan)

Definisi di atas sudah cukup menjelaskan tentang "Stale Shares".
Namun kemudian akan muncul pertanyaan, kenapa stale shares terjadi?

Berikut ini adalah penyebabnya:

Latency miner ke pool.
Ini berkaitan dengan koneksi Internet dan jarak miner ke pool (mining pool). Latency jika di artikan merupakan jeda waktu / waktu yang dibutuhkan oleh jaringan untuk mengantarkan sebuah paket data dari sumber data ke penerima data. Untuk itu, dibutuhkan koneksi internet yang STABIL untuk pooled mining agar shares yang dihasilkan mining rig kita tidak basi/telat diterima oleh pool. Pun begitu dengan pemilihan server pool, semakin dekat jarak server, maka (kemungkinan besar) semakin baik pula proses pengiriman data dari miner ke pool.

Dengan kata lain, koneksi Internet yang tidak stabil merupakan penyebab -Stale Shares- terjadi.



- Long polling
Suatu jenis sistem yang dijalankan oleh beberapa mining pool, dimana metode ini memberlakukan sebuah ketentuan dan akan melakukan propagasi kepada node miner untuk menghentikan proses mining. Hal ini dilakukan supaya job order dari block yang sedang diproses oleh miner tidak dikerjakan lebih lanjut, karena Block tersebut telah selesai dibuat/ditemukan.
Stale shares terjadi jika mining pool atau program mining yang digunakan tidak mendukung sistem Long Polling. Jadi pada saat block telah ditemukan, node miner yg masih memproses job order dari block tersebut akan mendapatkan stale shares pada saat dia men-submit shares tersebut ke jaringan mining pool.

Penambahan yang sangat bagus.
Saya hanya akan menambahkan beberapa penjelasan terkain Long Polling.

Long Polling merupakan kemampuan sebuah mining pool untuk memberitahukan kepada para miner yang melakukan penambangan di pool tersebut bahwasanya mereka bisa segera berpindah ke job unit yang baru karena adanya perubahan pada jaringan coin.

Betul sekali ketika mining pool atau program mining yang digunakan tidak mendukung sistem Long Polling maka akan menghasilkan stale shares.

Namun...kalaupun mining pool atau program mining yang digunakan mendukung sistem Long Polling, tidak serta merta stale shares tidak akan dihasilkan. Yang perlu diingat adalah Long Polling (proses pengiriman notifikasi kepada miner) juga memerlukan jaringan yang sehat (stabil). <=== Terkait dengan Latency dan permilihan server.

Hal lain yang mungkin terjadi adalah:

Ketika pool mengirimkan notifikasi kepada para minernya untuk segera berpindah ke job unit baru, para miner ( penggunakan program mining yang mendukung sistem Long Polling) akan segera melakukan permintaan job unit baru dalam waktu yang hampir bersamaan. Jika pool tidak cukup cepat mengeluarkan job unit yang baru, hal tersebutpun akan menghasilkan stale shares.



Stale Shares di bawah 5% sudah cukup baik (menurut saya).
Diatas 5%, perlu melakukan pengecekan terhadap apapun yang terkait dengan koneksi yang digunakan.
punk.zink
Full Member
***
Offline Offline

Activity: 134
Merit: 137


View Profile
November 10, 2018, 11:08:30 AM
Merited by dbshck (4)
 #12

Latency miner ke pool.
Ini berkaitan dengan koneksi Internet dan jarak miner ke pool (mining pool). Latency jika di artikan merupakan jeda waktu / waktu yang dibutuhkan oleh jaringan untuk mengantarkan sebuah paket data dari sumber data ke penerima data. Untuk itu, dibutuhkan koneksi internet yang STABIL untuk pooled mining agar share yang dihasilkan mining rig kita tidak basi/telat diterima oleh pool. Pun begitu dengan pemilihan server pool, semakin dekat jarak server, maka (kemungkinan besar) semakin baik pula proses pengiriman data dari miner ke pool.

Dengan kata lain, koneksi Internet yang tidak stabil merupakan penyebab -Stale Share- terjadi.

Hanya sedikit memberikan tambahan.
Bad latency memang menjadi faktor utama yang menyebabkan stale shares terjadi. Tetapi ada beberapa faktor lain yg juga bisa menyebabkan terjadinya stale shares.

- Long polling
Suatu jenis sistem yang dijalankan oleh beberapa mining pool, dimana metode ini memberlakukan sebuah ketentuan dan akan melakukan propagasi kepada node miner untuk menghentikan proses mining. Hal ini dilakukan supaya job order dari block yang sedang diproses oleh miner tidak dikerjakan lebih lanjut, karena Block tersebut telah selesai dibuat/ditemukan.
Stale shares terjadi jika mining pool atau program mining yang digunakan tidak mendukung sistem Long Polling. Jadi pada saat block telah ditemukan, node miner yg masih memproses job order dari block tersebut akan mendapatkan stale shares pada saat dia men-submit shares tersebut ke jaringan mining pool.

- Orphan Shares
Hal ini terjadi manakala sebuah node miner mengirimkan shares yang sama kepada mining pool, padahal shares tersebut sudah lebih dulu dikirimkan oleh node miner lainnya dan sudah ditentukan menjadi accepted shares oleh mining pool. Maka shares yang dikirimkan oleh node miner yang terakhir (belakangan) akan menjadi stale shares.

cmiiw
zbutterfly
Full Member
***
Offline Offline

Activity: 454
Merit: 104


Investing in the future development of blockchain


View Profile WWW
November 17, 2018, 04:44:33 AM
 #13

Dalam GPU kenapa algo lyra2z lebih hemat energi dari pada algo yang lain? Atau kenapa bisa terjadi perbedaan daya listrik antar algo?

sebas7ian
Member
**
Offline Offline

Activity: 63
Merit: 27


View Profile
November 18, 2018, 12:25:19 AM
 #14

Dalam GPU kenapa algo lyra2z lebih hemat energi dari pada algo yang lain? Atau kenapa bisa terjadi perbedaan daya listrik antar algo?

karena masing-masing algo mining saat melakukan proses hashing membutuhkan suplai listrik yang berbeda-beda gan. Seperti algo lyra2z, yg memang terkenal  hanya menggunakan 60%-70% dari sumberdaya vga, sehingga membuat temperatur vga jarang sekali menimbulkan efek panas yg berlebih.
Ljunior
Member
**
Offline Offline

Activity: 105
Merit: 48


View Profile
November 19, 2018, 09:58:28 AM
 #15

juga setiap type dari VGA meskipun dalam Merk yg sama sangat berpengaruh dan termasuk Software Mining yg digunakan.

Conseptual Thinking,  banyak hal menakjubkan dari sesuatu yg abstrak.  Berpikir mengandalkan apa yg dilihat memiliki batasan,  tapi berpikir abstrak dapat menjelajah ruang dan waktu.
konponser
Newbie
*
Offline Offline

Activity: 79
Merit: 0


View Profile
July 03, 2019, 12:55:40 PM
 #16

https://imgur.com/7E1L6gV

Bgaimana cara kerja sehingga pembuat mining software mendapat fee saat kita mining dengan minernya?
terkadang saat mining, muncul dev fee. biasanya 1-2 menit saat kita menambang.
bagaimana mengetahui bahwa dev fee tidak mengambil lebih banyak hash dari porsi kita sebagai miner?
apakah dev fee bisa dihilangkan?

*maaf gambar gak tampil. blum ada merit  Grin
abhiseshakana
Hero Member
*****
Offline Offline

Activity: 532
Merit: 1333


🅸ndonesia 🅿atrol 🆂quad


View Profile WWW
July 05, 2019, 06:09:49 AM
Merited by dbshck (4)
 #17



Bgaimana cara kerja sehingga pembuat mining software mendapat fee saat kita mining dengan minernya?
terkadang saat mining, muncul dev fee. biasanya 1-2 menit saat kita menambang.

Pada saat developer program mining membuat sebuah software mining, biasanya mereka akan menyisipkan sebuah script yang berisi dengan address dan pool pilihan mereka kedalam software mining tersebut dan memberikan parameter-parameter tambahan seperti "x" detik lama script ini akan berjalan dan "y" menit untuk memicu script ini untuk aktif, sehingga pada saat seorang user menggunakan software mining tersebut maka setiap "y" menit software tersebut akan melakukan switch dan mulai memining ke Pool dan address yang telah ditentukan oleh si pembuat software selama "x" detik.


Quote
bagaimana mengetahui bahwa dev fee tidak mengambil lebih banyak hash dari porsi kita sebagai miner?

Jika agan mempunyai data-data mengenai pool difficulty, rata-rata effective hashrate (rig agan), rata-rata Block time (mining pool) dan jumlah reward coin maka agan bisa menghitungnya secara manual. Setelah menjalankan mining selama 24 Jam agan bisa membandingkan hasilnya dengan coin yang telah agan dapatkan dan secara umum selisih dari keduanya adalah besaran dari dev fee yang ada di sotfware mining yang agan gunakan.

Untuk mengetahui angka pastinya memang agak susah gan, karena selisih dari coin yg dihasilkan dengan coin berdasarkan perhitungan manual, nilainya juga ikut dipengaruhi effective hashrate, stale hashrate dan koneksi yang agan gunakan. Tetapi dengan perbandingan tersebut agan bisa mengetahui gambarannya secara kasar.

Quote
apakah dev fee bisa dihilangkan?

Ada yang bisa dan ada yang tidak

Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!