In einem kürzlich gehaltenen Vortrag sprach Pieter Wuille über die Beschleunigung der Überprüfung bei der Verwendung von Schnorr-Signaturen und verschiedene Algorithmen zur Überprüfung mehrerer Signaturen.
Wäre es wirklich möglich, einen einzigen Block zu verifizieren, indem man die Schlüssel und Signaturen aller Transaktionen aggregiert? (Theoretisch noch mehr Transaktionen über mehrere Blöcke)
Ich gehe davon aus, dass dies bedeutet, dass das alte ECDSA-Schema nicht mehr verwendet wird. Wenn wir abwärtskompatibel wären, könnten wir dies wahrscheinlich nur für Transaktionen tun, die Schorr-Signaturen verwenden, während die anderen einzeln verifiziert werden müssten.
(Abgesehen von der Politik drastischer Protokolländerungen) Könnten wir nicht sogar mehr Platz sparen, wenn wir den Blockheader so anpassen, dass er eine aggregierte Schnorre-Signatur für den Block enthält und alle Schnorr-Signaturen der einzelnen Transaktionen innerhalb dieses Blocks weglassen?
Habe ich etwas vergessen? Der Vortrag gab nicht viele Details, sondern erwähnte nur die Idee.
Ja, eine Validierung pro Block, aber keine Signatur pro Block.
Um Verwirrung zu beseitigen, es gibt hier 3 verschiedene Technologien:
Schnorr-Signaturen (und alle anderen bekannten auf diskreten Logarithmen basierenden Signaturschemata) unterstützen (2) und (3), aber nicht (1).
Das Fehlen von (1) bedeutet, dass es keine einzige Signatur für einen ganzen Block (*) geben kann, da der Miner, der den Block konstruiert, ein Dritter ist, der nicht an der Signaturerstellung beteiligt ist.
Aufgrund von (2) ist das Beste, worauf wir hoffen können (solange wir auf DL-basierte Signaturen beschränkt sind), eine Signatur pro Transaktion. Selbst das erfordert eine eingangsübergreifende Aggregation, die über die Implementierung von On-Chain-Schnorr-Signaturen hinaus kompliziert ist (siehe zum Beispiel diesen Beitrag ).
Aufgrund von (3) ist es jedoch richtig, dass es pro Block eine einzige Validierung geben kann , jedoch keine einzige Signatur pro Block. Die Beschleunigung, die durch Batch-Validierung möglich ist, wird tatsächlich nicht trivial. Jede der 4 Zeilen ist eine Optimierungstechnik, die derzeit in libsecp256k1 implementiert ist, die basierend auf der Größe des Problems und den Speicherbeschränkungen die beste auswählt.
(*) Es gibt eine Form der nicht interaktiven "halben Aggregation" für DL-basierte Signaturen, bei der N Signaturen nicht interaktiv zu einer einzigen Signatur der Größe (1+N)/2 Originalsignaturen kombiniert werden können. Dies könnte für Blöcke verwendet werden, obwohl die Gewinne nicht so groß sind und es Komplexitäten bei der blockweiten Aggregation gibt, die es weniger interessant machen.
René Pickhardt
Pieter Wuille
Pieter Wuille
Martin Schwarz
Pieter Wuille
Martin Schwarz
Markus Lundeberg