diff --git a/docs/sequence.puml b/docs/sequence.puml index ec2b4bca..cbfd4979 100644 --- a/docs/sequence.puml +++ b/docs/sequence.puml @@ -4,52 +4,53 @@ actor Bob Actor Alice database Monero -Bob --> Alice: Establish connection +group Negotiation -group Request Response Channel - Bob -> Alice: Request Amounts - note left: Btc Amount + Bob --> Alice: Establish connection - Alice --> Bob: Send Amounts - note right: Btc & Xmr Amounts + group Request Response Channel + Bob -> Alice: Swap request + note left: Btc Amount\naddress hints + note right: Alice stores peer id & address hints\nto contact Bob + + Alice --> Bob: Swap response + note right: Exact XMR amount + end end -group Request Response Channel - Bob -> Alice: bob::Message0 - note left: Pubkeys\ndleq proof s_b\nxmr viewkey v_b\nbtc refund addr +group Execution Setup + group Phase A [Messages can be exchanged in any order] + Bob -> Alice: Message0 + note left: Pubkeys\ndleq proof s_b\nxmr viewkey v_b\nbtc refund addr - Alice --> Bob: alice::Message0 - note right: Pubkeys\ndleq proof s_a\nxmr view key v_a\nbtc redeem addr\nbtc punish addr + Alice -> Bob: Message1 + note right: Pubkeys\ndleq proof s_a\nxmr view key v_a\nbtc redeem addr\nbtc punish addr + end + + group Phase B [Messages must be exchanged in the given order] + + Bob -> Alice: Message2 + note left: unsigned btc lock tx + + Alice -> Bob: Message3 + note right: btc cancel tx sig\nbtc refund tx enc sig S_b + + Bob -> Alice: Message4 + note left: btc punish tx sig\nbtc cancel tx sig + + end end -group Request Response Channel - Bob -> Alice: bob::Message1 - note left: btc lock tx - - Alice --> Bob: alice::Message1 - note right: cancel tx sig\nrefund tx enc sig S_b -end - -group Request Response Channel - Bob -> Alice: bob::Message2 - note left: punish tx sig\ncancel tx sig - -== Negotiated == - +group Execution Bob ->> Bitcoin: Lock Alice ->> Monero: Lock - Alice --> Bob: alice::Message2 - note right: xmr lock tx transfer proof -end + Alice -> Bob: Message5 + note right: xmr lock tx transfer proof\nThis can be removed if Bob watches the blockchain. -group Request Response Channel - Bob -> Alice: bob::Message3 + Bob -> Alice: Message6 note left: redeem tx enc sig S_a - Alice --> Bob: alice::Message3 - note right: Empty -end Alice ->> Bitcoin: Redeem @@ -58,5 +59,6 @@ end Bob -> Bob: Extract s_a Bob ->> Monero: Redeem +end @enduml