21 Millionen? Wieviele Bitcoins es wirklich geben wird!

3 „Gefällt mir“

Hallo,

ich sage einfach weiterhin, dass es nie mehr als 21 Mio. Bitcoin geben wird.
Ist dann für erste einfacher zu erklären, die Aussage ist richtig und hört sich schicker an. Nicht das jemand gleich von Bitcoin abgeneigt ist wenn ich es ihm erkläre und mit irgendeiner krummen Satoshisumme um die Ecke komme :smiley:
Aber für Fortgeschrittene ein schöner Beitrag! :slight_smile:

₿este Grüße!
₿itcousin

1 „Gefällt mir“

Das ganze ist ja sowieso eher mit einem Augenzwinkern zu verstehen :wink:

1 „Gefällt mir“

Das ist interessant und es liegt wohl daran dass man „nu“ 8 Nachkommastellen hat. Ich frage mich warum bei der Halbierung einmal auf und einmal abgerundet wird, wenn die Satoshi-Zahl nicht durch 2 teilbar ist.

Im Bitcoin Code wird nur mit ganzen Zahlen in Satoshi gerechnet.

Das vorgesehene Maximum von 2,1E+15 Sat passt recht gut in den Wertebereich des verwendeten Integer-Typs int64_t. Es wären nur noch ca. 3 Größenordnungen Luft für eine größere Satoshi-Anzahl, also eine feinere Unterteilung gewesen.

Es wird immer nur abgerundet.

Streng genommen wird gar nicht halbiert und gerundet, sondern die Ursprungs-Subsidy in der Einheit Satoshis (ganze Zahl) wird in Binärdarstellung um die Anzahl der Halvings jeweils um ein Bit nach rechts verschoben.

Dabei werden alle Bits der Zahl um eine Stelle nach rechts verschoben („Halbierung“). Allerdings fällt die letzte 1 oder 0 der Binärzahl bei einem Rightshift weg:

  • Befindet sich dort eine 0, ist die Zahl gerade und man hat nach dem Rightshift exakt halbiert (-> keine Rundung).
  • Befindet sich dort eine 1, ist die Zahl ungerade und man hat nach dem Rightshift die Ursprungszahl minus 1 halbiert (-> abgerundet).

Quelle: Bitcoin Core auf GitHub

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
    int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
    // Force block reward to zero when right shift is undefined.
    if (halvings >= 64)
        return 0;

    CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;
}

siehe Rightshift: nSubsidy >>= halvings;

6 „Gefällt mir“