Bewerken van Mining

Uit BitcoinWiki.nl
Waarschuwing: Je bent niet aangemeld. Je IP-adres zal voor iedereen zichtbaar zijn als je wijzigingen op deze pagina maakt. Wanneer je je aanmeldt of een account aanmaakt, worden je bewerkingen aan je gebruikersnaam toegeschreven. Daarnaast zijn er nog andere voordelen.

Deze bewerking kan ongedaan gemaakt worden. Hieronder staat de tekst waarin de wijziging ongedaan is gemaakt. Controleer voor het publiceren of het resultaat gewenst is.

Huidige versie Je tekst
Regel 1: Regel 1:
'''Mining''' is het proces van het bevestigen van [[Transacties|transacties]] uit de [[Mempool|mempool van de node]] door ze in [[Blockchain#Blokken|blokken]] te plaatsen. Hiermee voorziet het in de benodigde coördinatie in een systeem dat verder geen autoriteiten/leiders kent. Het is een veel voorkomende misvatting dat het mining proces de creatie van nieuwe bitcoin betreft, dit is technisch gezien niet het geval; een nieuw gecreëerd blok geeft de miner enkel het recht nieuwe bitcoin toe te eigenen, maar het proces als zodanig behelst het produceren van het nieuwe blok zelf.
Mining is het proces van het bevestigen van [[Transacties|transacties]] uit de [[Mempool|mempool van de node]] door ze in [[Blockchain#Blokken|blokken]] te plaatsen. Hiermee voorziet het in de benodigde coördinatie in een systeem dat verder geen autoriteiten/leiders kent. Het is een veel voorkomende misvatting dat het mining proces de creatie van nieuwe bitcoin betreft, dit is technisch gezien niet het geval; een nieuw gecreëerd blok geeft de miner enkel het recht nieuwe bitcoin toe te eigenen, maar het proces als zodanig behelst het produceren van het nieuwe blok zelf.


De miners produceren blokken door de heel vaak te gokken om een juiste "hash" te vinden, die voldoet aan de vooraf bepaalde voorwaarde. Als ze deze vinden is het blok geldig. De verdiensten van de miner zitten in de [[Bitcoin#De_Halving|bloksubsidie]] en de [[Transacties#Transactiekosten|transactiekosten]] van de transacties die ze in het blok zetten, die zij zich in dat desbetreffende blok toe eigenen.
De miners produceren blokken door de heel vaak te gokken om een juiste "hash" te vinden, die voldoet aan de vooraf bepaalde voorwaarde. Als ze deze vinden is het blok geldig. De verdiensten van de miner zitten in de [[Bitcoin#De_Halving|bloksubsidie]] en de [[Transacties#Transactiekosten|transactiekosten]] van de transacties die ze in het blok zetten, die zij zich in dat desbetreffende blok toe eigenen.
Regel 7: Regel 7:
=== Proces ===
=== Proces ===
# Een miner heeft een [[Bitcoin node]]. Op deze node ontvangt hij continu nieuwe [[Transacties|transacties]] die mensen hebben gedaan. Die transacties zijn op het moment van verzenden onbevestigd, pas als ze in een [[Blockchain#Blokken|blok]] worden opgenomen zijn de transactie bevestigd. De node van de miner slaat de transacties tijdelijk op in zijn [[Mempool|mempool]].
# Een miner heeft een [[Bitcoin node]]. Op deze node ontvangt hij continu nieuwe [[Transacties|transacties]] die mensen hebben gedaan. Die transacties zijn op het moment van verzenden onbevestigd, pas als ze in een [[Blockchain#Blokken|blok]] worden opgenomen zijn de transactie bevestigd. De node van de miner slaat de transacties tijdelijk op in zijn [[Mempool|mempool]].
# De miner voegt een zogenaamde coinbasetransactie toe, waarbij de door het bitcoin algoritme gegenereerde nieuwe bitcoin (m.a.w. de blok subsidie) en transactie fees naar een bitcoinadres van de winnende miner worden gestuurd. Volgens de [[Consensusregels|regels]] mag een miner (op dit moment) 6,25 ''nieuwe'' bitcoin opnemen in de coinbase transactie. Als de miner een groter aantal bitcoin in de coinbasetransactie opneemt (en zich dus niet aan de regels houdt) zal het blok niet worden geaccepteerd.
# De miner voegt een zogenaamde coinbasetransactie toe, waarbij de door het bitcoin algoritme gegenereerde nieuwe bitcoin (m.a.w. de blok subsidie) en transactie fees naar een bitcoinadres van de winnende miner worden gestuurd. Volgens de regels mag een miner (op dit moment) 6,25 ''nieuwe'' bitcoin opnemen in de coinbase transactie. Als de miner een groter aantal bitcoin in de coinbasetransactie opneemt (en zich dus niet aan de regels houdt) zal het blok niet worden geaccepteerd.
# De miner bekijkt de mempool en selecteert doorgaans de transacties waaraan de hoogste fee is meegegeven. We noemen deze selectie het "blocktemplate" of een kandidaatblok.
# De miner bekijkt de mempool en selecteert doorgaans de transacties waaraan de hoogste fee is meegegeven. We noemen deze selectie het "blocktemplate" of een kanditaatblok.
# Vervolgens moet de block header worden geconstrueerd. De block header is een samenvatting van het blok en bestaat uit de volgende onderdelen:
# Vervolgens moet de block header worden geconstrueerd. De block header is een samenvatting van het blok en bestaat uit de volgende onderdelen:
#* software version number;
#* software version number:;
#* de [[Blockchain#Wat_maakt_de_blockchain_een_blockchain|hash van het vorige blok]] toe;
#* de [[Blockchain#Wat_maakt_de_blockchain_een_blockchain|hash van het vorige blok]] toe;
#* de root van de merkle root van de transacties die in het desbetreffende blok zijn opgenomen;
#* de root van de merkle root van de transacties die in het desbetreffende blok zijn opgenomen;
Regel 16: Regel 16:
#* de proof-of-work algoritme target van dit blok;
#* de proof-of-work algoritme target van dit blok;
#* de nonce.
#* de nonce.
# Nu begint het daadwerkelijke '''minen'''. De miner probeert duizenden keren per seconde om een [[#Hashing|hash]] van de block header te vinden die voldoet aan [[Consensusregels|de regels]]. Dit houdt in dat hij de nonce, elke keer aanpast om steeds een nieuwe unieke hash te vinden. Als de miner geluk heeft, en een hash vindt die aan de regels voldoet, zal hij het blok distribueren naar het netwerk. Een hash voldoet aan de regels wanneer het getal van de hash kleiner of gelijk is aan de target van dit blok<ref>https://bitcoin.stackexchange.com/questions/102430/how-is-the-target-hash-determined</ref>.  
# Nu begint het daadwerkelijke '''minen'''. De miner probeert duizenden keren per seconde om een [[#Hashing|hash]] van de block header te vinden die voldoet aan [[Bitcoin#Moeilijkheid|de regels]]. Dit houdt in dat hij de nonce, elke keer aanpast om steeds een nieuwe unieke hash te vinden. Als de miner geluk heeft, en een hash vindt die aan de regels voldoet, zal hij het blok distribueren naar het netwerk.
# Het [[Bitcoin node#Netwerk|netwerk]] ontvangt het nieuwe blok, zal controleren of aan alle [[Consensusregels|regels]] wordt voldaan en deze accepteren. De nodes halen de (in dit nieuwe blok) bevestigde transacties uit hun [[Mempool|mempool]].
# Het [[Bitcoin node#Netwerk|netwerk]] ontvangt het nieuwe blok, zal controleren of aan alle regels wordt voldaan en deze accepteren. De nodes halen de (in dit nieuwe blok) bevestigde transacties uit hun [[Mempool|mempool]].
# Het proces begin weer opnieuw vanaf stap 1.
# Het proces begin weer opnieuw vanaf stap 1.


=== Hashing ===
=== Hashing ===
Bij [[Hashfunctie|Hashing]] ("verhaspelen" in het Nederlands) wordt door middel van een hash algoritme een hashcode berekend van een blok gegevens / de block header ("input"). Uit deze hashcode is dan niet meer af te leiden wat de oorspronkelijke gegevens waren, maar iemand die de gegevens heeft kan wel opnieuw daarvan de hashcode berekenen en controleren of de berekende hashcode overeenkomt met een eerder verkregen hashcode.  
Hashing ("verhaspelen" in het Nederlands) is een proces om een hashcode te maken: bij hashing wordt door middel van een hash algoritme een hashcode berekend van een blok gegevens / de block header ("input"). Uit deze hashcode is dan niet meer af te leiden wat de oorspronkelijke gegevens waren, maar iemand die de gegevens heeft kan wel opnieuw daarvan de hashcode berekenen en controleren of de berekende hashcode overeenkomt met een eerder verkregen hashcode.


Een miner gebruikt de gegevens uit het blok en voegt daar een onderdeel aan toe, zijnde de ''nonce'', . Dit doet de miner random en berekent dan snel de uitkomst van de blok-info plus zijn gekozen nonce. De regel is dat een correcte hash een [[Bitcoin#Moeilijkheid|bepaalde hoeveelheid nullen]] bevat. Op een gegeven moment vindt de eerste miner een hash met voldoende nullen. De miner publiceert dit en iedereen kan op basis van dezelfde input (het blok en de nonce) controleren dat de hash klopt met de data.
Het hashen van een blok gebeurt door steeds een onderdeel van de input, zijnde de ''nonce'', aan te passen. De regel is dat een correcte hash een [[Bitcoin#Moeilijkheid|bepaalde hoeveelheid nullen]] bevat. Op een gegeven moment vindt de miner een hash met voldoende nullen. Iedereen met dezelfde input (het blok en de juiste teller-data) kan controleren dat de hash klopt met de data.


=== Lege blokken ===
=== Lege blokken ===
Lege blokken zijn blokken zonder transacties erin, slechts één [[Transacties#Coinbase|coinbasetransactie]]. Soms worden er lege blokken gevonden.  
Lege blokken zijn blokken zonder transacties erin, slechts één [[Transacties#Coinbase|coinbasetranasctie]]. Soms worden er lege blokken gevonden. Dit kan gebeuren als de miner nog niet voldoende tijd heeft gehad, sinds het vinden van het vorige blok, om een nieuw blocktemplate (zie stap 2 hierboven) te bepalen. De miner wil zijn machines niet uitzetten, en laat zijn machines doorzoeken naar blokken, welke leeg zullen zijn (want er is nog geen nieuw template met transacties). Hij doet dit omdat hij ook voor lege blokken een beloning (subsidie) krijgt.  
 
Wanneer een nieuw blok wordt gevonden, sturen de mining pools de miners een bloksjabloon zonder transacties, zodat zij zo snel mogelijk naar het volgende blok kunnen zoeken. Meteen daarna sturen zij een bloksjabloon vol transacties, maar een volledig bloksjabloon is een grotere dataoverdracht en het duurt iets langer om de miners te bereiken.  
 
In deze tussenliggende tijd, die meestal niet meer dan 1-2 seconden bedraagt, hebben de miners soms geluk en vinden zij een nieuw blok met behulp van het lege bloksjabloon.


Het aantal transacties in een blok is niet relevant voor het [[Energieverbruik]]; een leeg blok kost niet (substantieel) minder energie om te vinden dan een normaal 'vol' blok.  
Het aantal transacties in een blok is niet relevant voor het [[Energieverbruik]]; een leeg blok kost niet (substantieel) minder energie om te vinden dan een normaal 'vol' blok.  
Regel 52: Regel 48:
* De bloksubsidie
* De bloksubsidie
** Dit zijn de bitcoin die in de coinbasetransactie worden gecreëerd
** Dit zijn de bitcoin die in de coinbasetransactie worden gecreëerd
** De subsidie is gebonden aan [[Consensusregels|regels]], een miner mag TOT de afgesproken grens claimen
** De subsidie is gebonden aan regels, een miner mag TOT de afgesproken grens claimen
* De transactiekosten ("fees") die gemaakt zijn door de mensen die een transactie deden
* De transactiekosten ("fees") die gemaakt zijn door de mensen die een transactie deden
** De optelsom van alle fees van alle transacties mogen door de miner worden geclaimd
** De optelsom van alle fees van alle transacties mogen door de miner worden geclaimd
Regel 62: Regel 58:


=== Moeilijkheidsgraad ===
=== Moeilijkheidsgraad ===
De moeilijkheidgraad (difficulty in het Engels) is de maatstaf voor het vinden van een correcte hash waarvan de waarde onder het aangegeven doel (target) ligt. Het doel is een 256-bit nummer die alle Bitcoin nodes delen. De [[SHA|SHA-256]] hash van een blok moet lager of gelijk zijn aan dit nummer. Des te lager het nummer, des te moeilijker het wordt om het blok te vinden. In praktijk betekent dit dat de uitkomst van een hash moet beginnen met een aantal nullen (bijv: ''000000000000000000094c8ceeda06ce2438753ad50ef3699e03618459adb88f''). Om de 2016 blokken wordt de moeilijkheidsgraad opnieuw berekend. Zijn er teveel miners aan het werk gaat de moeilijkheidsgraad omhoog (d.w.z. de beschikbare rekenkracht is te hoog voor de huidige moeilijkheidsgraad) en zijn er te weinig miners gaat de moeilijkheidsgraad omlaag (d.w.z. de beschikbare rekenkracht is te laag voor de huidige moeilijkheidsgraad). Op deze manier blijft het netwerk stabiel en veilig en wordt er gemiddeld elke 10 minuten een nieuw bitcoin blok gevonden. Dit aanpassingsmechanisme zorgt ervoor dat er niet significant meer of minder bitcoin gemined worden over de tijd als het hashvermogen in het netwerk verandert.
De moeilijkheidgraad (difficulty in het Engels) is de maatstaf voor het vinden van een correcte hash waarvan de waarde onder het aangegeven doel (target) ligt. Het doel is een 256-bit nummer die alle Bitcoin nodes delen. De SHA-256 hash van een blok moet lager of gelijk zijn aan dit nummer. Des te lager het nummer, des te moeilijker het wordt om het blok te vinden. In praktijk betekent dit dat de uitkomst van een hash moet beginnen met een aantal nullen (bijv: ''000000000000000000094c8ceeda06ce2438753ad50ef3699e03618459adb88f''). Om de 2016 blokken wordt de moeilijkheidsgraad opnieuw berekend. Zijn er teveel miners aan het werk gaat de moeilijkheidsgraad omhoog (d.w.z. de beschikbare rekenkracht is te hoog voor de huidige moeilijkheidsgraad) en zijn er te weinig miners gaat de moeilijkheidsgraad omlaag (d.w.z. de beschikbare rekenkracht is te laag voor de huidige moeilijkheidsgraad). Op deze manier blijft het netwerk stabiel en veilig en wordt er gemiddeld elke 10 minuten een nieuw bitcoin blok gevonden. Dit aanpassingsmechanisme zorgt ervoor dat er niet significant meer of minder bitcoin gemined worden over de tijd als het hashvermogen in het netwerk verandert.
 
=== Mining Pools ===
Pools zijn groepen van mensen (of bedrijven) met miners die samen zoeken naar een blok. Als een blok gevonden wordt, dan worden de opbrengsten gedeeld naar rato van bijdrage aan de pool. Het is een manier om consistenter blokken te vinden: zonder pool minen levert een miner misschien eens per maand een blok op, met een pool vindt de pool mogelijk dagelijks een blok, en verdeelt de inkomsten. Deze verdeling vindt plaats op basis van het aantoonbare aandeel van het hashvermogen dat een miner heeft geleverd aan de pool. Dit aandeel wordt bepaald aan de hand van het aantal (ongeldige) blokken dat de miners naar de pool stuurt die voldoen aan een bepaald moeilijkheidsgraad (die lager is dan de moeilijkheidsgraad die op dat moment geldt voor het minen van een ongeldig blok) binnen een bepaalde tijd. Omdat dan zowel de periode, de moeilijkheidsgraad en het aantal bekend is, kan de hashvermogen dat de desbetreffende miner aan de pool heeft geleverd worden afgeleid.
 
In de volgende tabel staan een paar Bitcoin mining pools.  


{| class="wikitable"
=== Pools ===
|-
Pools zijn groepen van mensen (of bedrijven) met miners die samen zoeken naar een blok. Als een blok gevonden wordt, dan worden de opbrengsten gedeeld naar rato van bijdrage aan de pool. Het is een manier om consistenter blokken te vinden: zonder pool minen levert een miner misschien eens per maand een blok op, met een pool vindt de pool mogelijk dagelijks een blok, en verdeelt de inkomsten. Deze verdeling vindt plaats op basis van het aantoonbare aandeel van het hashvermogen dat een miner heeft geleverd aan de pool. Dit aandeel wordt bepaald aan de hand van het aantal (ongeldige) blokken dat de miners naar de pool stuurt die voldoen aan een bepaald moeilijkheidsgraad (die lager is dan de moeilijkheidsgraad die op dat moment geldt voor het minen van een ongeldig blok) binnen een bepaalde tijd. Omdat dan zowel de periode, de moeilijkheidsgraad en het aantal bekend is, kan de hashvermogen dat de desbetreffende miner aan de pool heeft geleverd worden afgeleid.
! Naam !! Website !! Reward !! Opmerkingen
|-
| Slush Pool || https://slushpool.com/ || [[Mining_schema#Proportioneel|Proportioneel]] || Slush Pool is de oudste mining pool, en nog steeds populair
|-
| KanoPool || https://www.kano.is// || [[Mining_schema#PPLNS|PPLNS]] || KanoPool is een eenvoudige mining pool met een lage fee. De pool is wel erg klein waardoor het maanden kan duren voordat een blok is gevonden.
|-
| Poolin || https://www.poolin.com || [[Mining_schema#FPPS|FPPS]] || Poolin is een Chinese mining pool  
|-
|}


=== Gespecialiseerde apparatuur (ASICs) ===
=== Gespecialiseerde apparatuur (ASICs) ===
Regel 90: Regel 72:
=== Zie verder ===
=== Zie verder ===
* [https://beginnenmetbitcoin.com/#ep8 Aflevering 8] van [[Beginnen met Bitcoin]] legt mining verder uit
* [https://beginnenmetbitcoin.com/#ep8 Aflevering 8] van [[Beginnen met Bitcoin]] legt mining verder uit
<references />
[[Categorie:Techniek]]
Let op: alle bijdragen aan BitcoinWiki.nl worden geacht te zijn vrijgegeven onder de Creative Commons Naamsvermelding-Gelijk delen (zie BitcoinWiki NL:Auteursrechten voor details). Als je niet wilt dat je tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor "Pagina opslaan".
Hierbij beloof je ons tevens dat je deze tekst zelf hebt geschreven of overgenomen uit een vrije, openbare bron.
Gebruik geen materiaal dat beschermd wordt door auteursrecht, tenzij je daarvoor toestemming hebt!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Annuleren Hulp bij bewerken (opent in een nieuw venster)

Op deze pagina gebruikte sjabloon: