Die Anzahl der Bitcoins wird nicht 21.000.000 betragen / Sudo Null IT News

Woher kommen neue Bitcoins?

Bitcoin hat ein begrenztes Angebot und noch sind nicht alle Coins auf Lager. Verkehr. Die einzige Möglichkeit, neue Münzen zu erstellen, ist Bergbau – ein Mechanismus zum Hinzufügen von Daten zur Blockchain.

Bitcoin-Protokoll legt das maximale Angebot der Münze in Höhe von 21.000.000 BTC fest. Das sagt der folgende Code. Die Variable MAX_MONEY ist eine Konstante, die gleich dem 21.000.000-fachen von COIN ist. COIN ist gleich der Anzahl von Satoshi in 1 Bitcoin, d.h. 1 BTC = 100.000.000 Satoshi. Satoshi ist die kleinste Einheit von Bitcoin, d.h. Es ist unmöglich, mit Beträgen unter 0,00000001 BTC (1 Satoshi) zu arbeiten.

/** Die Menge an Satoshis in einem BTC. */ static constexpr CAmount COIN = 100000000; statischer constexpr CAmount MAX_MONEY = 21000000 * COIN;

Bis September 2022 wurden etwa 91 % aller Bitcoins (ca. 19.142.006) abgebaut, aber es wird mehr als 100 Jahre dauern, bis die restlichen Bitcoins abgebaut sind. Dies ist auf ein periodisches Ereignis zurückzuführen, das als Halving bezeichnet wird (mehr dazu im nächsten Kapitel), das darauf abzielt, die Mining-Belohnungen für Kryptowährungen schrittweise zu reduzieren.

Mining ermöglicht es Netzwerkmitgliedern, Blöcke zur Blockchain hinzuzufügen. Dazu müssen sie die Rechenleistung ihres Computers auf die Lösung eines bestimmten kryptografischen Problems ausrichten. Als Anreiz steht demjenigen eine Belohnung zur Verfügung, der die passende Lösung findet und einen gültigen (gültigen) Block bildet.

Es braucht viele Ressourcen, um einen Block zu bilden, während die Überprüfung der Gültigkeit dieses Blocks sehr einfach ist. Wenn jemand versucht, das Netzwerk auszutricksen und einen ungültigen Block hinzuzufügen, wird eine solche Anfrage sofort abgelehnt und der Miner erhält keine Belohnung für das durchgeführte Mining.

Belohnen besteht aus zwei Komponenten: Provisionen aus Transaktionen im Block und Blockbelohnung. Die Blockbelohnung ist die einzige Quelle für neue Bitcoins. Steigt mit jedem abgebauten Block gesamte Münzversorgung. Nehmen wir zum Beispiel einen Block mit einer Höhe von 752.730. Der Miner, der diesen Block abgebaut hat, erhält 6,25 BTC als Blockbelohnung. Diese 6,25 BTC wurden geschürft und erhöhten das Gesamtangebot an Coins, aber die verbleibenden 0,10285206 BTC sind die Summe der Gebühren aller Transaktionen in diesem Block (sie wirken sich nicht auf das Gesamtangebot an Coins aus).

Die Höhe der Blockbelohnung und die Gesamtprovision des Bitcoin-Blocks mit einer Höhe von 752730Die Höhe der Blockbelohnung und die Gesamtprovision des Bitcoin-Blocks mit einer Höhe von 752730

Neu generierte Coins werden durch eine spezielle Art von Transaktion erstellt – Coinbase. Typischerweise ist eine Coinbase-Transaktion die erste Transaktion, die einem Block hinzugefügt wird, und erzeugt im Grunde Coins aus dem Nichts.

coinbaseTx.vout[0].nValue = nFees + GetBlockSubsidy(nHeight, chainparams.GetConsensus());

Es ist die GetBlockSubsidy-Funktion, die die Blockbelohnung bestimmt.

Das Bitcoin-Protokoll passt die Schwierigkeit des Schürfens so an, dass das Finden einer Lösung für einen neuen Block ungefähr 10 Minuten dauert. Blöcke werden nicht immer in genau zehn Minuten geschürft, aber diese Einstellung ist eine Art Benchmark für alle Netzwerkteilnehmer. Die Variable nPowTargetTimespan spiegelt die Zeit (in Sekunden) wider, um die Schwierigkeit der Blockerstellung (standardmäßig zwei Wochen) anzupassen, um die Gesamtgeschwindigkeit der Blockerstellung zu steuern. Die Variable nPowTargetSpacing enthält die durchschnittliche Zeit (in Sekunden) für die Blockgenerierung (standardmäßig 10 Minuten).

Konsens.nPowTargetTimespan = 14 * 24 * 60 * 60; // zwei Wochen Konsens.nPowTargetSpacing = 10 * 60;

Was ist Bitcoin Halving?

Der erste Bitcoin-Block wurde am 3. Januar 2009 um 18:15:05 (GMT) generiert. Ein solcher Block wird als Genesis-Block bezeichnet. Die Erstellungszeit kann durch das erste Argument der Funktion CreateGenesisBlock ermittelt werden. 1231006505 ist die Unix-Zeit (die Unix-Zeit ist die Anzahl der Sekunden seit Mitternacht am 1. Januar 1970). Bei der Umrechnung dieser Zahl erhält man das ursprüngliche Datum.

genesis = CreateGenesisBlock(1231006505, 2083236893, 0x1d00ffff, 1, 50 * COIN);

Ursprünglich betrug die Blockbelohnung 50 BTC. Die Belohnung wird alle 210.000 erstellten Blöcke halbiert. Die Variable nSubsidyHalvingInterval ist verantwortlich für die Anzahl der Blöcke, die erstellt werden müssen, bevor die Mining-Belohnung sinkt, d.h. nach dem Erstellen von 210.000 Blöcken wird die Blockbelohnung halbiert (etwa einmal alle 4 Jahre).

Konsens.nSubsidyHalvingInterval = 210000;

Formeller ausgedrückt ist die Halbierung der Prozess der Reduzierung der Erstellungsrate neuer Einheiten der Kryptowährung. Diese. dies bezieht sich auf die periodische Reduzierung der Miner-Belohnung für einen geschürften Block.

Wie Sie in der Grafik sehen können, nimmt die Blockbelohnung mit jeder Halbierung ab, bis sie überhaupt null wird (bis 2140).

Blockbelohnung in Satoshi basierend auf der BlockhöheBlockbelohnung in Satoshi basierend auf der Blockhöhe

Die Halbierung ist ein wesentlicher Bestandteil des Wirtschaftsmodells von Kryptowährungen, da sie für die stabile Rate der Erstellung neuer Coins und ihre weitere Regulierung verantwortlich ist. Diese kontrollierte monetäre Inflationsrate ist einer der Hauptunterschiede zwischen Kryptowährungen und traditionellen Fiat-Währungen, die im Wesentlichen einen unendlichen Umlauf haben.

Belohnung blockieren

Schauen wir uns die GetBlockSubsidy-Funktion genauer an.

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& ConsensusParams) { int halvings = nHeight / ConsensusParams.nSubsidyHalvingInterval; // Blockbelohnung auf Null setzen, wenn Rechtsverschiebung nicht definiert ist. Wenn (Halbierungen >= 64) 0 zurückgeben; CAmount nSubsidy = 50 * COIN; // Die Subvention wird alle 210.000 Blöcke halbiert, was ungefähr alle 4 Jahre der Fall sein wird. nSubvention >>= Halbierungen; zurück nSubvention; }

Das erste Argument der nHeight-Funktion ist die Höhe des Blocks, das zweite Argument sind die Konsensparameter, die unverändert bleiben. Der Blockhöhenwert ist eine ganze Zahl geteilt durch 210.000 (weil nSubsidyHalvingInterval = 210000). Wenn der Wert der Halbierungsvariable >= 64 ist, gibt es keine Blockbelohnung. Aber in welchem ​​Fall sind Halbierungen gleich 64? Dazu muss die Blockhöhe mindestens 13.440.000 betragen, aber das wird erst um 2264 geschehen, und die Blockbelohnung wird bis 2140 Null sein, also gibt es eine andere Bedingung, aufgrund derer dies passieren wird.

Wenn wir uns den obigen Code genauer ansehen, können wir sehen, dass der Wert der nSubsidy-Variablen vom Typ CAmount ist. Und der Typ CAmount ist ein Alias ​​für den Typ int64_t (ein ganzzahliger Datentyp mit fester Größe, in diesem Fall 64 Bit oder 8 Byte).

typedef int64_t Menge;

Die Variable nSubsidy speichert den Wert 100 \, 000 \, 000 \, * \, 50, d.h. 5.000.000.000 Satoshi.

Die Division von nSubsidy erfolgt durch den bitweisen Rechtsschiebeoperator (>>=). Die Verschiebung erfolgt um so viele Bits nach rechts, wie in der Halvings-Variablen angegeben. Eine Verschiebung nach rechts entspricht der Division der Zahl durch zwei, zwei Verschiebungen durch vier, drei durch acht usw. Eine detailliertere Arbeit des Bedieners ist im Bild unten sichtbar.

Beispiel für eine bitweise Rechtsverschiebung für 157Beispiel für eine bitweise Rechtsverschiebung für 157

Die anfängliche Zahl von 5.000.000.000 Satoshi kann sehr lange durch zwei geteilt werden, bis sie Null wird. Und auf diesen Moment verlassen sich Experten bei der Bestimmung des Datums, an dem der letzte Bitcoin geschürft wird.

Die Gesamtmenge an Satoshi, die vor der nächsten Halbierung auf der angegebenen Höhe abgebaut wirdDie Gesamtmenge an Satoshi, die vor der nächsten Halbierung auf der angegebenen Höhe abgebaut wird

Zu 6\,930 \, 000^{-mu} Die Blockbelohnung für den Block ist gleich 0 und dementsprechend endet die Erstellung neuer Bitcoins dort. Dies soll bis zur 33. Halbierung geschehen, die um das Jahr 2140 herum stattfinden wird (2016 wurde eine Blockhöhe von 420.000 erreicht, in 4 Jahren 630.000, also zu erreichen 6\,930 \,000^{th} Block ab 420\,000^{th}Block muss abgebaut werden 6\,930\,000\,-\,420\,000\,=\,6\,510\,000 Blöcke. In dieser Zeit wird es geben \scriptsize \frac{6\,510\,000}{210\,000}\,=31Halbierungen, zwischen denen 4 Jahre liegen. Also zu 6\,930 \, 000^{-mu} Block wird passieren 31\,*\,4\,=124 des Jahres. Fügen Sie dies zu 2016 hinzu und wir erhalten 2016\,+124\,=2140 Jahr). Daraus ergibt sich das ungefähre Datum.

Die Formel für die Anzahl der Bitcoins

Anhand der bereitgestellten Informationen konnte eine Formel abgeleitet werden, mit der wir die Gesamtzahl der Bitcoins in Satoshi berechnen konnten, die in der Höhe geschürft werden n.

\normalsize \begin{equation} f(n)=\left(\sum_{i=0}^{\operatorname{floor}\left(\frac{n}{210\,000}\right)-1} \ text { floor }\left(\frac{50 \cdot 100\,000\,000}{2^i}\right)\right) \cdot 210\,000+ \\ +\text { floor }\left( \frac{50 \cdot 100\,000\,000}{2^{\left(\text { floor }\left(\frac{n}{210\,000}\right)\right)))\right ) \cdot \bmod (n,\, 210\,000) \end{equation}

Diese Funktion hat eine Größenbeschränkung 2\,099\,999\,997\,690\,000 \, \text{Satoshi}was kleiner ist als 21\,000\,000 \, \text{BTC}. Das bedeutet, dass Bitcoins niemals existieren werden. 21\,000\,000\,.

Formelableitung

Zwischen jeder Halbierung wird die gleiche Anzahl von Blöcken (210.000) erstellt. Alle diese 210.000 Blöcke enthalten die gleiche Menge an Blockbelohnung (50 \, \cdot \, 100 \,000\,000 \, \text{Satoshi}), aber mit jedem Halving wird es halbiert. Dies kann durch Division durch berücksichtigt werden 2^Ich. Da wir mit ganzen Zahlen arbeiten, müssen wir alles verwerfen, was aufgrund der Division mit der Funktion nach dem Komma kommt \text{Boden()}. Der Summenindex nimmt den Anfangswert an ich=0. Um die Anzahl der Halbierungen herauszufinden, die aufgetreten sind, bevor die Höhe überschritten wurde nmuss geteilt werden n bei 210.000. Da uns nur das Gesamtergebnis interessiert, verwerfen wir wieder alles Überflüssige mit Hilfe von \text{Boden()}. Wir subtrahieren 1, um nicht zu viel zu zählen. Da jedes Glied der Summe mit 210.000 multipliziert wird, kann man 210.000 aus dem Vorzeichen der Summe herausnehmen.

Um die vor der nächsten Halbierung erhaltenen Bitcoins zu berücksichtigen, müssen Sie den aktuellen Wert der Blockbelohnung aufgrund des Multiplikators erhalten

\text { Etage }\left(\frac{50 \cdot 100\,000\,000}{2^{\left(\text { Etage }\left(\frac{n}{210\,000}\right )\richtig richtig){.}

Um die Anzahl der Blöcke zu erhalten, die nach der letzten Halbierung erstellt wurden, müssen Sie die Funktion verwenden \text{mod}().

Die Multiplikation dieser beiden Faktoren ergibt die verbleibende Anzahl von Bitcoins, und alles in der Summe ist die gewünschte Antwort.

Ähnliche Ergebnisse können in Excel erzielt werden.

Die Ergebnisse der Berechnung der Anzahl von Bitcoins in Satoshi, die mit der angegebenen Höhe abgebaut werdenDie Ergebnisse der Berechnung der Anzahl von Bitcoins in Satoshi, die mit der angegebenen Höhe abgebaut werden

Fazit

Jetzt wissen Sie, dass es niemals 21.000.000 Bitcoins geben wird und warum der letzte Anteil davon um das Jahr 2140 eingehen wird.

Zusätzlich

Link zu github mit Bitcoin-Quellcode.

Similar Posts

Leave a Reply

Your email address will not be published.