Alice besitzt eine leere Ethereum-Brieftasche. Erhält 1 ETH und sendet dann 1 ETH an Bob.
Alice besitzt eine leere Bitcoin-Brieftasche. Erhält 1 BTC und sendet dann 1 BTC an Bob.
Was sind die Transaktionsgrößen in Bytes (Alice->Bob) in beiden Fällen? Wenn Ethereum niedriger ist, ist das der Hauptgrund, warum Ethereum mehr TX/Sek. leisten kann als Bitcoin?
Dieser Beitrag enthält mehrere Fragen. Lassen Sie uns sie einzeln ansprechen.
Bevor die Fragen beantwortet werden, gibt es einen Fehler in der Annahme des Beitrags: Er berücksichtigt nicht die Transaktionsgebühren. Wenn Alice einen Ether oder einen BTC hat, kann Bob nicht den vollen Betrag erhalten (vielleicht könnte er das, damals in den Tagen ohne Transaktionsgebühren für BTC, aber sicherlich nicht jetzt), da die Transaktionsgebühren abgezogen werden müssen von Alices Konto.
Aus dem gelben Papier von Ethereum wissen wir, dass die logische Struktur einer Transaktion wie folgt ist.
-----------------------------
| Nonce | Up to 32 bytes |
-----------------------------
| GasPrice | Up to 32 bytes |
-----------------------------
| GasLimit | Up to 32 bytes |
-----------------------------
| To | 20 bytes addr |
-----------------------------
| Value | Up to 32 bytes |
-----------------------------
| Data | 0 - unlimited |
-----------------------------
| V | 1 (usually) |
-----------------------------
| R | 32 bytes |
-----------------------------
| S | 32 bytes |
-----------------------------
Notiz:
Dies ist nur die logische Struktur. Die tatsächlichen Daten sind im RLP -Format kodiert, sind also aufgrund des hinzugefügten Längenpräfixes länger.
Das V-Feld war immer 1 Byte vor EIP-155 . Es ist wahrscheinlich sicher zu sagen, dass jeder größere Kunde EIP-155 implementiert hat. Für das Hauptnetz, Testnetz, bleibt dieses Feld auch bei EIP-155 auf 1 Byte. Bei privaten Netzwerken mit "Ketten-ID" mit größeren Werten kann dieses Feld viel länger sein. Siehe diese Frage .
Wir könnten lächerliche Daten verwenden, um eine theoretische "minimale" Größe anzugeben, zB indem wir einen Null-Gaspreis angeben. Dies ist jedoch nicht sehr aussagekräftig, da solche Transaktionen heutzutage nicht mehr abgebaut werden könnten. Stattdessen verwenden wir diese Transaktion als Beispiel für die Analyse, da es sich um eine realistisch einfache Zahlung von Alice an Bob handelt.
Führen Sie in der web3-Konsole Folgendes aus (je nach Client muss möglicherweise stattdessen „eth.getRawTransaction“ verwendet werden)
eth.getTransaction(''0x14a298c1eea89f42285948b7d51eeac2876ca7406c9784b9b90dd3591d156d64').raw
Das sollte geben
"0xf86b80850ba43b7400825208947917bc33eea648809c285607579c9919fb864f8f8703baf82d03a0008025a0067940651530790861714b2e8fd8b080361d1ada048189000c07a66848afde46a069b041db7c29dbcc6becf42017ca7ac086b12bd53ec8ee494596f790fb6a0a69"
das sind 109 Bytes. Wenn wir die Daten analysieren
f86b length 80 nonce (0: this is the minimum an account can have) 85 0ba43b7400 gas price 82 5208 gas limit (this is fixed for simple payments) 94 7917bc33eea648809c285607579c9919fb864f8f (address, always 20 bytes) 87 03baf82d03a000 (value, in theory this can be shrunken to zero) 80 (data, already zero length) 25 (V, one byte) a0 067940651530790861714b2e8fd8b080361d1ada048189000c07a66848afde46 (R) a0 69b041db7c29dbcc6becf42017ca7ac086b12bd53ec8ee494596f790fb6a0a69 (S)
Von diesem Beispiel gibt es nicht mehr viel zu kürzen. Ein kleinerer Wert kann das Wertefeld auf ein Byte reduzieren. Ein niedrigerer Gaspreis kann um ein oder zwei Bytes weiter schrumpfen. Daher scheint es, dass eine realistische "minimale" Transaktionsgröße größer als 100 Bytes (109 - 7 -2) sein sollte.
Bei einer Bitcoin-Transaktion ist die Sache komplizierter (Struktur hier erklärt ). Gehen Sie von der "klassischen" Transaktion aus, dh ohne SegregatedWitness:
Für eine grobe Schätzung ist wahrscheinlich eine gute Beispieltransaktion die in diesem großartigen Blogbeitrag beschriebene Transaktion , die Anzahl der Bytes beträgt 247.
Diese Frage geht davon aus, dass die Blockgrößenbeschränkung von Ethereum durch die Bytelänge bestimmt wird. Das ist nicht wahr. Die Blockgröße wird tatsächlich durch das Gaslimit des Blocks bestimmt. Siehe diese Frage für weitere Details. Die einfache Antwort auf diese Frage lautet also „nein“.
Lassen Sie uns kurz die Envelope-Schätzung für die durchschnittliche Transaktionsgröße im Ethereum-Netzwerk durchgehen.
Vereinfachende Annahmen:
Infinitesimalrechnung:
Durchschnittliche Transaktionsgröße für Bitcoin ~ 0,6 kb (3-mal mehr als Ethereum)
Also ja, Ethereum-Transaktionen sind im Durchschnitt kleiner, aber das erklärt nicht allein die überlegene Verarbeitungskapazität. Ein wesentlicher Unterschied zwischen Bitcoin Bitcoin und Ethereum besteht darin, dass Ethereum per se kein Blockgrößenlimit hat, sondern ein Gaslimit, dh es kann nur eine maximale Anzahl von Berechnungen ausführen. Je nachdem, wie groß Transaktionen und wie rechenintensiv Transaktionen sind, kann ein Ethereum-Block also mehr oder weniger Transaktionen aufnehmen. Eine weitere Überlegung ist, dass die Zielblockzeit für Ethereum ~ 17 Sekunden gegenüber 10 Minuten für Bitcoin beträgt.
Quellen:
Malone