Laut Wiki :
Wenn die Blockgröße mehr als 250 kB beträgt, werden Transaktionen zunehmend teurer, je näher die Blockgröße an die Grenze von 500 kB heranreicht. Das Senden einer Transaktion mit einer Blockgröße von 400 kB kostet das 5-fache des normalen Betrags; Das Senden bei 499 kB kostet das 500-fache usw.
Was ist die genaue Formel, die die Transaktionsgebühr bestimmt?
Siehe GetMinFee() in main.h für den Code, der die Mindesttransaktionsgebühr bestimmt.
Der Teil, den Sie beschreiben, wird wie folgt implementiert:
// Raise the price as the block approaches full
if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2)
{
if (nNewBlockSize >= MAX_BLOCK_SIZE_GEN)
return MAX_MONEY;
nMinFee *= MAX_BLOCK_SIZE_GEN / (MAX_BLOCK_SIZE_GEN - nNewBlockSize);
}
wo:
nBlockSize
hängt davon ab, wer wir sind:
nBlockSize
ist 1nBlockSize
ist 1000nBlockSize
ist die Größe des Blocks, den wir erstellen, bevor wir die neue Transaktion hinzufügennNewBlockSize
ist die Größe des Blocks einschließlich der neuen TransaktionMAX_BLOCK_SIZE_GEN
ist 500kBMAX_MONEY
sind 21 Millionen BTC (alles Geld der Welt)also heißt es:
500kB / (500kB - nNewBlockSize)
Hinweis: Indem wir die Symbole neu anordnen, erhalten wir genau das, was Meni in seiner Antwort geschrieben hat:
Fee
= Normal fee / ((500kB - size) / 500kB)
=Normal fee / (1 - size / 500kB)
Ich kenne die Formel aus keiner maßgeblichen Quelle, aber basierend auf den Beispielen im Text ist sie es
Fee = Normal fee / (1 - Block size / 500KB)
Oder gleichwertig (und ich vermute, der eigentliche Code verwendet dieses Formular)
Fee = Normal fee * (500 KB) / (500KB - Block size)
Die anderen Antworten beschreiben die derzeit im Client implementierten Regeln, aber ich gehe davon aus, dass diese Regeln ersetzt werden, sobald Blockgrößenbeschränkungen relevant werden. Da diese Regeln nicht durchgesetzt werden, wenn Kunden die Blockchain verifizieren, sind sie nur Richtlinien und werden verletzt, wenn sie gegen die Interessen der Bergleute verstoßen.
Miner wählen einfach die Teilmenge der Kandidatentransaktionen aus, die die Grenzen (Blockgröße und Signaturanzahl) respektieren und die Gebühr maximieren.
Abgesehen von einigen kleineren Komplikationen (Rucksack und abhängige Transaktionen) bedeutet dies, dass Miner die Transaktionen danach sortieren, fee/transactionSize
ob die maximale Größe der begrenzende Faktor ist und fee/signatureCount
ob die Anzahl der Signaturen der begrenzende Faktor ist.
CodesInChaos
David Schwarz
CodesInChaos
David Schwarz
Stefan Gornik