BEARBEITEN: Diese Frage ist nicht spezifisch für Bitcoin. Es ist auf jede andere Kryptowährung anwendbar, die daran interessiert ist, ein anderes Signaturschema als Bitcoin oder den QT-Referenzclient zu verwenden. Ein Grund dafür ist, die Komplexität (und Fehler) im Protokoll zu reduzieren.
Mein Verständnis von formbaren Transaktionen in Bitcoin ist, dass zwei verschiedene Werte für "S" unterstützt werden, wenn eine Signatur validiert wird.
Die Lösung hierfür besteht darin, sicherzustellen, dass S kleiner als der folgende Wert ist
X9ECParameters ecParams = Org.BouncyCastle.Asn1.Sec.SecNamedCurves.GetByName("secp256k1");
HALF_CURVE_ORDER = ecParams.N.ShiftRight(1);
Welche Algorithmen oder Signaturansätze sind angesichts der Fülle an Signaturmechanismen, die für Kryptowährungen verfügbar sind, nicht anfällig für Malleable Transactions?
zB Was wäre wenn...
Ich bin an Antworten interessiert, die sowohl defekte Lösungen als auch solche beschreiben, die verhindern würden, dass formbare Transaktionen jemals stattfinden.
Mein Ziel ist es, einen Algorithmus auszuräumen, der konsistente Ergebnisse mit minimaler Komplexität für Implementierer liefert. (mit anderen Worten, sogar Mt. Gox würde es richtig machen)
Die Lösung ist unabhängig vom Kurven- oder Signaturalgorithmus dieselbe – nicht-kanonische Signaturen ablehnen. Genau dafür hat sich Bitcoin entschieden.
Johannes T
Macher7
Johannes T
Johannes T
Macher7
HALF_CURVE_ORDER = ecParams.N.ShiftRight(1);