Ich lese die Wiki-Seite hier: https://en.bitcoin.it/wiki/Atomic_cross-chain_trading
Ich verstehe, dass ein Benutzer eine Transaktion erstellen kann, ohne sie zu signieren und sie nicht an das Netzwerk zu senden . Ich weiß, dass dies das Hauptkonzept ist, um atomare Swaps zum Laufen zu bringen. Aber ich bin ein bisschen verwirrt, wie jeder Schritt genau funktioniert. Kann jemand jede Zeile erklären?
A picks a random number x
A creates TX1: "Pay w BTC to <B's public key> if (x for H(x) known and signed by B) or (signed by A & B)"
A creates TX2: "Pay w BTC from TX1 to <A's public key>, locked 48 hours in the future, signed by A"
A sends TX2 to B
B signs TX2 and returns to A
1) A submits TX1 to the network
B creates TX3: "Pay v alt-coins to <A-public-key> if (x for H(x) known and signed by A) or (signed by A & B)"
B creates TX4: "Pay v alt-coins from TX3 to <B's public key>, locked 24 hours in the future, signed by B"
B sends TX4 to A
A signs TX4 and sends back to B
2) B submits TX3 to the network
3) A spends TX3 giving x
4) B spends TX1 using x
This is atomic (with timeout). If the process is halted, it can be reversed no matter when it is stopped.
Before 1: Nothing public has been broadcast, so nothing happens
Between 1 & 2: A can use refund transaction after 72 hours to get his money back
Between 2 & 3: B can get refund after 24 hours. A has 24 more hours to get his refund
After 3: Transaction is completed by 2
- A must spend his new coin within 24 hours or B can claim the refund and keep his coins
- B must spend his new coin within 72 hours or A can claim the refund and keep his coins
For safety, both should complete the process with lots of time until the deadlines.
Ich denke, das ist einfacher zu verstehen, wenn Sie ein wenig abstrahieren. Auf hoher Ebene ist ein Atomic Swap sehr einfach: Die beiden Parteien richten Transaktionen so ein, dass sie beide ihre Coins nehmen können, indem sie das Urbild an einen (vorab festgelegten) Hash weitergeben H
. Zunächst kennt eine Partei das Urbild. Sie müssen es offenbaren, um ihre Münzen zu nehmen, so dass die Handlung des Nehmens ihrer Münzen ausreicht, damit die andere Partei ihre Münzen nehmen kann.
Genauer gesagt funktioniert der Tier Nolan im OP wie folgt.
x
und gibt H(x)
B.x
. In ähnlicher Weise sendet B seine Münzen an einen 2-von-2-Ausgang, den A nehmen kann, wenn sie aufdeckt x
. Dies sind TX1 bzw. TX3.x
er auch seine Münzen nimmt.)x
.x
und nimmt seine Münzen.Es gibt eine Variante davon namens Coinswap , bei x
der die Blockchain nicht getroffen wird, bei der die Schritte (4) und (5) durch A ersetzt werden, die die x
Off-Chain aufdecken, und die Unterzeichner sich dann einfach gegenseitig die Coins geben, nur x
als Fallback. Dies verkompliziert die Locktime-Struktur und erfordert auch anders geformte Transaktionen, die aufbewahrt werden müssen, x
und deren Hash von der Blockchain, was das Protokoll leider sehr beängstigend aussehen lässt, aber das ist alles, was passiert.
Grundsätzlich hängt dies von der Kenntnis der Zufallszahl X ab :
Bitcoin
TX1 (To redeem: reveal secret number X or refund)
A -------> B ---->
Altmünze
TX2 (To redeem: reveal secret number X or refund)
B -------> A ---->
Betrachten wir nun einige Fälle: