Ist es möglich, zwei separate Transaktionen zu einer Transaktion zusammenzufassen, indem nur ihre Signaturen verwendet werden?

Ich habe zwei gültige txs und zwei gültige Signaturen für diese txs.

Im Moment sehen sie so aus:

1) A -> B 
2) C -> D

A und C sind Eingänge und B und D sind Ausgänge.

Ich möchte in der Lage sein, sie zu kombinieren zu:

1) A, C -> B, D

Gibt es eine Möglichkeit, diese beiden TX und ihre entsprechenden Signaturen zu einem gültigen TX zu kombinieren, ohne Zugriff auf die Schlüssel zu haben?

Ich bin mir nicht sicher, was hier gefragt wird. Sind Aund CTransaktionen? Unterschriften? Was sind „B“ und „D“? Meinst du "UTXOs", wenn du "txs" sagst? Ich weiß nicht, worauf Sie hinauswollen.
@Jestin Ich verwende möglicherweise nicht die richtige Terminologie ... A und C sind Eingänge, B und D sind Ausgänge
Aus Neugier, warum willst du das machen?

Antworten (2)

Die einzige Möglichkeit in Bitcoin ist heute die von Kaykurokawa beschriebene. Jede Signatur gibt an, für welche Ein- und Ausgänge sie signiert. Wenn Sie also unabhängig erstellte Signaturen wünschen, ist es für jeden offensichtlich, welche Ein- und Ausgänge gleichzeitig erstellt wurden.

Die allgemeine Praxis, mehrere Transaktionsteile zu einer zu kombinieren, wird CoinJoin genannt. Theoretisch funktioniert es gut, aber es erfordert die Zusammenarbeit der verschiedenen Parteien (jede signiert die Eingaben und Ausgaben aller).

Eine mögliche zukünftige Entwicklung, die dies ändern könnte, basiert auf One-Way Aggregatable Signatures (OWAS) (siehe das Papier auf https://download.wpsoftware.net/bitcoin/wizardry/horasyuanmouton-owas.pdf , das ursprünglich anonym auf https gepostet wurde ://bitcointalk.org/index.php?topic=290971.0 ). Dieser Mechanismus würde es jedem im Netzwerk ermöglichen, zwei Transaktionen zu nehmen und sie mit CoinJoin zu verbinden, ohne anschließend feststellen zu können, welche Ein- und Ausgänge miteinander verbunden sind. Als Nebeneffekt kombiniert es auch alle Signaturen in solchen Transaktionen zu einer einzigen. Auf die Spitze getrieben würde dies bedeuten, dass ein Block nur auf eine einzige Transaktion reduziert werden kann, die von Bergleuten erstellt wird, die diese Verknüpfungsoperation auf alle Transaktionen anwenden, die sie einbeziehen möchten.

Leider verlässt sich OWAS auf ein Signaturschema namens BLS, das viel neuer und nicht so gut untersucht ist wie ECDSA (das Bitcoin jetzt verwendet), sodass seine Sicherheit weniger sicher ist. Außerdem ist es viel langsamer und würde sehr invasive Änderungen an Bitcoin erfordern. Es ist jedoch ein aktives Forschungsgebiet.

In jüngerer Zeit wurde ein System namens MimbleWimble vorgeschlagen, das die Offline-Transaktionsaggregation sowie Cut-Through-Transaktionen unterstützt, während es sich nur auf die EC-Kryptografie stützt.

Ja. Sie verlangen jedoch, dass die Transaktion auf eine bestimmte Weise signiert wird. OP_CHECKSIG hat setzbare Flags, die bestimmen, welche der Ein- und Ausgänge vorzeichenbehaftet sind.

Wenn SIGHASH_SINGLE und SIGHASH_ANYONECANPAY für OP_CHECKSIG verwendet werden, signiert jede Signatur für ihre jeweiligen Eingaben und Ausgaben, sodass andere der Transaktion neue Eingaben und Ausgaben hinzufügen können.

https://en.bitcoin.it/wiki/OP_CHECKSIG

https://bitcoin.org/en/glossary/sighash-single

https://bitcoin.org/en/glossary/sighash-anyonecanpay

Wenn Sie SIGHASH_SINGLE verwenden, verraten Sie im Grunde, dass Eingabe und Ausgabe zusammenhängen. Dies bedeutet leider, dass der Zweck des Coinjoin (Datenschutz) zunichte gemacht wird.
@Jimmy Song Vielleicht ist Privatsphäre nicht der Grund, warum das OP dies will.
Es stimmt, dass dies den Zweck von CoinJoin durch die eindeutige Verknüpfung von Ein- und Ausgängen zunichte machen würde. Aber es könnte verwendet werden, um die Gebühren zu senken. Stellen Sie sich einen Dienst vor, der mit SINGLE/ANYONECANPAY signierte Eingabe-/Ausgabepaare in größere Transaktionen verpackt, um den Speicheraufwand zu reduzieren.