Blockgewicht
Blockgewicht vor SegWit, es gab eine maximale Blockgröße von 1MB. Nach SegWit wurde das Konzept der maximalen Blockgröße entfernt und durch das maximale Blockgewicht ersetzt. Das maximale Blockgewicht der Kryptowährung beträgt 4 MB.
Zusammenfassung: “Wie bekomme ich günstigere Transaktionen?»
Um günstigere Transaktionen zu erhalten, müssen Sie:
Es gibt keine Kompatibilitätsprobleme: Nicht-SegWit-Wallets können BTC an SegWit-Adressen senden und SegWit-Wallets können BTC an Nicht-SegWit-Adressen senden.
Die Bedeutung des Blockgewichts
Normalerweise zählt jedes Byte in einer Transaktion als 4 Byte Blockgewicht. Wenn jedoch ein Byte Teil des SegWit-Bitcoin-Zeugenbereichs ist, erhält es einen Rabatt und zählt nur als 1 Byte Blockgewicht.
Angenommen, Sie haben zuvor eine BTC an die Bitadresse A von SegWit Bitcoin und eine BTC an die Adresse B erhalten. Betrachten Sie nun eine Transaktion, bei der beide Beträge an eine Adresse C gesendet werden. Die Daten, die nichts mit den Transaktionseingaben zu tun haben, sind immer nicht mit von der Partie Daten gezählt als 4 Bytes/Byte. Insbesondere spielt Adresse C keine Rolle und kann SegWit, Nicht-SegWit oder irgendetwas anderes sein. Die mit der Adresse A verbundenen Zeugendaten werden in den SegWit-Zeugenbereich übernommen und als 1 Byte/Byte gezählt. Die mit der Adresse B in Beziehung stehenden Zeugendaten sind nicht SegWit und werden daher als 4 Bytes/Byte gezählt.
“Witness-Daten” sind mehr oder weniger die Daten, die in der ScriptSig einer älteren Transaktion eingehen würden.
Umwandlung in reale Größen
Es ist ein häufiges Missverständnis, dass SegWit Transaktionen kleiner macht, aber das ist falsch. Eine 300-Byte-Transaktion ist 300 Byte auf der Festplatte und in der Leitung. SegWit zählt nur diese Bytes unterschiedlich zu der 4MB Gewichtsgrenze.
Die maximale Größe eines Blocks ist fast gleich dem maximalen Blockgewicht, also aktuell 4 MB. Dies ist nicht irgendwie erfundene Größe; der maximale Block ist wirklich 4MB on-disk und on-wire. Dieses Maximum kann jedoch nur erreicht werden, wenn der Block voller seltsamer Transaktionen ist, daher sollte er normalerweise nicht gesehen werden.
Die typische Größe eines Blocks hängt von der Zusammensetzung der Transaktionen in diesem Block ab. Ab 2017 würde der durchschnittliche Transaktionsaufbau zu etwa 2,3 MB typischen Blöcken führen, wenn alle Transaktionen SegWit-Transaktionen wären.
Ausführliches Beispiel
Betrachten Sie diese Transaktion:
Daten | Beschreibung | Anzahl der Rohbytes | Typ (Multiplikator) | Abschnitt Gesamtgewicht | Laufendes Gesamtgewicht |
---|---|---|---|---|---|
Version 1 | 4 | Nicht-Zeuge (4x) | 16 | 16 | |
SegWit-Markierung | 1 | Zeuge (1x) | 1 | 17 | |
SegWit-Flagge | 1 | Zeuge (1x) | 1 | 18 | |
Anzahl der Eingänge (1) | 1 | Nicht-Zeuge (4x) | 4 | 22 | |
Vorheriger Ausgabe-Hash | 32 | Nicht-Zeuge (4x) | 128 | 150 | |
Vorheriger Ausgabe-Index (3) | 4 | Nicht-Zeuge (4x) | 16 | 166 | |
Skriptlänge (23 bytes) | 1 | Nicht-Zeuge(4x) | 4 | 170 | |
Skript: P2SH-eingeschlossenes P2WPKH-Zeugenprogramm | 23 | Nicht-Zeuge (4x) | 92 | 262 | |
Sequenz | 4 | Nicht-Zeuge (4x) | 16 | 278 | |
Anzahl der Ausgänge (1) | 1 | Nicht-Zeuge (4x) | 4 | 282 | |
Ausgabewert (0.99987100 BTC) | 8 | Nicht-Zeuge (4x) | 32 | 314 | |
Skriptgröße ausgeben (25) | 1 | Nicht-Zeuge (4x) | 4 | 318 | |
Skript: DUP HASH160 0x1d7c… EQUALVERIFY CHECKSIG | 25 | Nicht-Zeuge (4x) | 100 | 418 | |
Anzahl der Stapelelemente für Eingabe 0 (2) | 1 | Zeuge (1x) | 1 | 419 | |
Größe des Stapeleintrags 0 (72) | 1 | Zeuge (1x) | 1 | 420 | |
Stapelartikel 0, Unterschrift | 72 | Zeuge (1x) | 72 | 492 | |
Größe des Stapelgegenstandes 1 (33) | 1 | Zeuge (1x) | 1 | 493 | |
Stapel 1, Pubkey | 33 | Zeuge (1x) | 33 | 526 | |
Sperrzeit (0) | 4 | Nicht-Zeuge (4x) | 16 | 542 |
Die tatsächliche Größe der Transaktion auf der Festplatte und über das Netzwerk beträgt 218 Byte, die Größe in Bytes der gesamten Transaktion, die oben in Hexadezimal angegeben ist. Das Gewicht ist immer größer als die tatsächliche Größe, in diesem Fall 542 Bytes.
Es ist nicht möglich, genau gleichwertige Legacy-Transaktionen für SegWit-Transaktionen zu erstellen. Wenn BTC an eine SegWit-Adresse gesendet wird, muss sie in einer SegWit-Eingabe ausgegeben werden. Zum Vergleich, eine ähnliche 1-Eingabe, wäre die 1-Ausgabe-Legacy-Transaktion etwa 191 Bytes. Die Legacy-Transaktion würde 0,0191% eines 1-MB-Legacy-Blocks verbrauchen, während diese Transaktion 0,0136% eines SegWit-Blocks verbraucht, eine Reduktion von 34%. Verschiedene Transaktionstypen können viel größere Reduzierungen haben.
Möglicherweise stellen Sie fest, dass die Transaktionsgröße etwas zugenommen hat – 218 Byte im Vergleich zu 191 Byte – aber der meiste / der gesamte Overhead sind redundante Daten, die entfernt werden könnten. Wenn Sie beispielsweise den Zeugen haben, können Sie das 23-Byte-P2SH-Skript berechnen. Bei Bedarf könnten diese Daten vor der Übertragung der Transaktionen entfernt werden: Dies wäre eine Änderung des P2P-Protokolls, die nicht einmal eine Softfork erfordert.