tests: Add xmr swap failure states to tests.

This commit is contained in:
tecnovert 2022-07-20 00:24:14 +02:00
parent 2c49d13aa0
commit fa74b9982c
No known key found for this signature in database
GPG key ID: 8ED6D8750C4E3F93
8 changed files with 303 additions and 230 deletions

View file

@ -3424,7 +3424,8 @@ class BasicSwap(BaseApp):
self.log.info('Recovering xmr swap chain B lock tx for bid %s in %d seconds', bid_id.hex(), delay)
self.createActionInSession(delay, ActionTypes.RECOVER_XMR_SWAP_LOCK_TX_B, bid_id, session)
else:
bid.setState(BidStates.XMR_SWAP_FAILED_REFUNDED)
# Other side refunded before swap lock tx was sent
bid.setState(BidStates.XMR_SWAP_FAILED)
if bid.was_received:
if not bid.was_sent:
@ -4472,8 +4473,8 @@ class BasicSwap(BaseApp):
if bid.debug_ind == DebugTypes.BID_STOP_AFTER_COIN_A_LOCK:
self.log.debug('XMR bid %s: Stalling bid for testing: %d.', bid_id.hex(), bid.debug_ind)
bid.setState(BidStates.BID_STALLED_FOR_TEST)
self.saveBidInSession(bid_id, bid, session, xmr_swap, save_in_progress=offer)
self.logBidEvent(bid.bid_id, EventLogTypes.DEBUG_TWEAK_APPLIED, 'ind {}'.format(bid.debug_ind), session)
self.saveBidInSession(bid_id, bid, session, xmr_swap, save_in_progress=offer)
return
if bid.debug_ind == DebugTypes.CREATE_INVALID_COIN_B_LOCK:

View file

@ -1,4 +1,4 @@
<svg version="1.1" id="mscgenjsreplaceme" class="mscgenjsreplaceme" xmlns="http://www.w3.org/2000/svg" width="1168" height="1393.3" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:400;font-style:normal;text-decoration:none;background-color:#fff;stroke:#000;stroke-width:2">
<svg version="1.1" id="mscgenjsreplaceme" class="mscgenjsreplaceme" xmlns="http://www.w3.org/2000/svg" width="1176" height="1664.36" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:400;font-style:normal;text-decoration:none;background-color:#fff;stroke:#000;stroke-width:2">
<defs>
<marker orient="auto" id="mscgenjsreplacemecallback-#0000FF" class="arrow-marker" viewBox="0 0 10 10" refX="9" refY="3" markerUnits="strokeWidth" markerWidth="10" markerHeight="10">
<path d="m1 1 8 2-8 2" class="arrow-style" style="stroke-dasharray:100,1;stroke:#00f"/>
@ -34,9 +34,12 @@
.mscgenjsreplaceme path,.mscgenjsreplaceme rect{fill:none}.mscgenjsreplaceme .label-text-background{fill:#fff;stroke:#fff;stroke-width:0}.mscgenjsreplaceme .return{stroke-dasharray:5,3}.mscgenjsreplaceme text{color:inherit;stroke:none;text-anchor:middle}.mscgenjsreplaceme text.anchor-start{text-anchor:start}.mscgenjsreplaceme .arrow-marker{overflow:visible}.mscgenjsreplaceme .arrow-style{stroke-width:1}.mscgenjsreplaceme .arcrow{stroke-linecap:butt}.mscgenjsreplaceme .box,.mscgenjsreplaceme .entity{fill:#fff;stroke-linejoin:round}
</style>
</defs>
<g id="mscgenjsreplaceme_body" transform="translate(44 3)">
<path class="bglayer" style="fill:#fff;stroke:#fff;stroke-width:0" d="M-44-3h1168v1393.3H-44z" id="mscgenjsreplaceme_background"/>
<path class="box inline_expression alt" d="M-36 897.12h960v471.18H-36z" id="mscgenjsreplaceme_arcspans"/>
<g id="mscgenjsreplaceme_body" transform="translate(48 3)">
<path class="bglayer" style="fill:#fff;stroke:#fff;stroke-width:0" d="M-48-3h1176v1664.36H-48z" id="mscgenjsreplaceme_background"/>
<g id="mscgenjsreplaceme_arcspans">
<path class="box inline_expression alt" d="M-38 859.12h964v780.24H-38z"/>
<path class="box inline_expression alt" d="M-34 1206.18h956v195.06H-34z"/>
</g>
<g id="mscgenjsreplaceme_lifelines">
<path class="arcrow" style="stroke:transparent" d="M60 38v38"/>
<path class="arcrow" style="stroke:#080" d="M252 38v38"/>
@ -154,27 +157,55 @@
<path class="arcrow" style="stroke:#080" d="M252 1149.18v38"/>
<path class="arcrow" style="stroke:red" d="M444 1149.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1149.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1149.18v38M1020 1149.18v38M60 1187.18v43.06"/>
<path class="arcrow" style="stroke:#080" d="M252 1187.18v43.06"/>
<path class="arcrow" style="stroke:red" d="M444 1187.18v43.06"/>
<path class="arcrow" style="stroke:#00f" d="M636 1187.18v43.06"/>
<path class="arcrow" style="stroke:transparent" d="M828 1187.18v43.06M1020 1187.18v43.06M60 1230.24v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1230.24v38"/>
<path class="arcrow" style="stroke:red" d="M444 1230.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1230.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1230.24v38M1020 1230.24v38M60 1268.24v43.06"/>
<path class="arcrow" style="stroke:#080" d="M252 1268.24v43.06"/>
<path class="arcrow" style="stroke:red" d="M444 1268.24v43.06"/>
<path class="arcrow" style="stroke:#00f" d="M636 1268.24v43.06"/>
<path class="arcrow" style="stroke:transparent" d="M828 1268.24v43.06M1020 1268.24v43.06M60 1311.3v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1311.3v38"/>
<path class="arcrow" style="stroke:red" d="M444 1311.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1311.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1311.3v38M1020 1311.3v38M60 1349.3v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1349.3v38"/>
<path class="arcrow" style="stroke:red" d="M444 1349.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1349.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1349.3v38M1020 1349.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1149.18v38M1020 1149.18v38M60 1187.18v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1187.18v38"/>
<path class="arcrow" style="stroke:red" d="M444 1187.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1187.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1187.18v38M1020 1187.18v38M60 1225.18v43.06"/>
<path class="arcrow" style="stroke:#080" d="M252 1225.18v43.06"/>
<path class="arcrow" style="stroke:red" d="M444 1225.18v43.06"/>
<path class="arcrow" style="stroke:#00f" d="M636 1225.18v43.06"/>
<path class="arcrow" style="stroke:transparent" d="M828 1225.18v43.06M1020 1225.18v43.06M60 1268.24v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1268.24v38"/>
<path class="arcrow" style="stroke:red" d="M444 1268.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1268.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1268.24v38M1020 1268.24v38M60 1306.24v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1306.24v38"/>
<path class="arcrow" style="stroke:red" d="M444 1306.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1306.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1306.24v38M1020 1306.24v38M60 1344.24v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1344.24v38"/>
<path class="arcrow" style="stroke:red" d="M444 1344.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1344.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1344.24v38M1020 1344.24v38M60 1382.24v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1382.24v38"/>
<path class="arcrow" style="stroke:red" d="M444 1382.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1382.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1382.24v38M1020 1382.24v38M60 1420.24v43.06"/>
<path class="arcrow" style="stroke:#080" d="M252 1420.24v43.06"/>
<path class="arcrow" style="stroke:red" d="M444 1420.24v43.06"/>
<path class="arcrow" style="stroke:#00f" d="M636 1420.24v43.06"/>
<path class="arcrow" style="stroke:transparent" d="M828 1420.24v43.06M1020 1420.24v43.06M60 1463.3v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1463.3v38"/>
<path class="arcrow" style="stroke:red" d="M444 1463.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1463.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1463.3v38M1020 1463.3v38M60 1501.3v43.06"/>
<path class="arcrow" style="stroke:#080" d="M252 1501.3v43.06"/>
<path class="arcrow" style="stroke:red" d="M444 1501.3v43.06"/>
<path class="arcrow" style="stroke:#00f" d="M636 1501.3v43.06"/>
<path class="arcrow" style="stroke:transparent" d="M828 1501.3v43.06M1020 1501.3v43.06M60 1544.36v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1544.36v38"/>
<path class="arcrow" style="stroke:red" d="M444 1544.36v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1544.36v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1544.36v38M1020 1544.36v38M60 1582.36v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1582.36v38"/>
<path class="arcrow" style="stroke:red" d="M444 1582.36v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1582.36v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1582.36v38M1020 1582.36v38M60 1620.36v38"/>
<path class="arcrow" style="stroke:#080" d="M252 1620.36v38"/>
<path class="arcrow" style="stroke:red" d="M444 1620.36v38"/>
<path class="arcrow" style="stroke:#00f" d="M636 1620.36v38"/>
<path class="arcrow" style="stroke:transparent" d="M828 1620.36v38M1020 1620.36v38"/>
</g>
<g id="mscgenjsreplaceme_sequence">
<path class="entity" style="stroke:transparent" d="M0 0h120v38H0z"/>
@ -225,9 +256,9 @@
<path d="M444 734.99c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)"/>
<path class="label-text-background" d="M447 718.73h123.59v14.02H447z"/>
<text x="447" y="729.74" class="directional-text method-text anchor-start"><tspan>Wait for PTX to confirm</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M444 859.12H252"/>
<path class="label-text-background" d="M268.28 843.36h159.44v14.02H268.28z"/>
<text x="348" y="854.37" class="directional-text callback-text"><tspan>Sends Participate Redeem Tx</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M444 897.12H252"/>
<path class="label-text-background" d="M268.28 881.36h159.44v14.02H268.28z"/>
<text x="348" y="892.37" class="directional-text callback-text"><tspan>Sends Participate Redeem Tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M252 935.12h384"/>
<path class="label-text-background" d="M360.95 919.36h166.09v14.02H360.95z"/>
<text x="444" y="930.37" class="directional-text return-text"><tspan>Detects Participate Redeem Tx</tspan></text>
@ -237,61 +268,76 @@
<path d="M636 1044.05c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M639 1027.8h167.61v14.02H639z"/>
<text x="639" y="1038.8" class="directional-text method-text anchor-start"><tspan>Wait for ITX Redeem to confirm</tspan></text>
<path class="inline_expression_divider" style="stroke-dasharray:10,5" d="M-36 1168.18h960"/>
<path class="inline_expression_divider" style="stroke-dasharray:10,5" d="M-38 1168.18h964"/>
<path class="label-text-background" d="M422.98 1160.92h42.03v14.02h-42.03z"/>
<text x="444" y="1171.93" class="empty-text comment-row-text"><tspan>fail path</tspan></text>
<path d="M636 1201.11c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M639 1184.86h164.59v14.02H639z"/>
<text x="639" y="1195.86" class="directional-text method-text anchor-start"><tspan>Wait for PTX locktime to expire</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M636 1249.24H252"/>
<path class="label-text-background" d="M402.98 1233.48h82.03v14.02h-82.03z"/>
<text x="444" y="1244.49" class="directional-text callback-text"><tspan>PTX Refund Tx</tspan></text>
<path d="M636 1282.17c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M639 1265.91h165.63v14.02H639z"/>
<text x="639" y="1276.92" class="directional-text method-text anchor-start"><tspan>Wait for PTX Refund to confirm</tspan></text>
<path d="M444 1239.11c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)"/>
<path class="label-text-background" d="M447 1222.86h159.94v14.02H447z"/>
<text x="447" y="1233.86" class="directional-text method-text anchor-start"><tspan>Wait for ITX locktime to expire</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M444 1287.24H252"/>
<path class="label-text-background" d="M309.31 1271.48h77.38v14.02h-77.38z"/>
<text x="348" y="1282.49" class="directional-text callback-text"><tspan>ITX Refund Tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M252 1325.24h384"/>
<path class="label-text-background" d="M368.97 1309.48h150.06v14.02H368.97z"/>
<text x="444" y="1320.49" class="directional-text return-text"><tspan>Detects Initiate Tx refund Tx</tspan></text>
<path d="M636 1434.17c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M639 1417.91h164.59v14.02H639z"/>
<text x="639" y="1428.92" class="directional-text method-text anchor-start"><tspan>Wait for PTX locktime to expire</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M636 1482.3H252"/>
<path class="label-text-background" d="M402.98 1466.55h82.03v14.02h-82.03z"/>
<text x="444" y="1477.55" class="directional-text callback-text"><tspan>PTX Refund Tx</tspan></text>
<path d="M636 1515.23c96 .1 96 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M639 1498.97h165.63v14.02H639z"/>
<text x="639" y="1509.98" class="directional-text method-text anchor-start"><tspan>Wait for PTX Refund to confirm</tspan></text>
</g>
<g id="mscgenjsreplaceme_notes">
<path d="m544 209 3-17h178l3 17-3 17H547z" class="box abox" style="stroke:#00f"/>
<path d="m546 209 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="212.75" class="box-text abox-text"><tspan>Bid Sent</tspan></text>
<path class="box" style="stroke:red" d="M352 230h184v34H352z"/>
<path class="box" style="stroke:red" d="M354 230h180v34H354z"/>
<text x="444" y="250.75" class="box-text"><tspan>User accepts bid</tspan></text>
<path d="M736 268h367v9h9m-9-9 9 9v25H736v-34z" class="box note" style="fill:#ffc"/>
<path d="M738 268h363v9h9m-9-9 9 9v25H738v-34z" class="box note" style="fill:#ffc"/>
<text x="924" y="280.75" class="box-text note-text"><tspan>Offerer generates secret_value and sends Hash(secret_value) to</tspan></text>
<text x="924" y="296.75" class="box-text note-text"><tspan>the Bidder</tspan></text>
<path d="M736 306h367v9h9m-9-9 9 9v41H736v-50z" class="box note" style="fill:#ffc"/>
<path d="M738 306h363v9h9m-9-9 9 9v41H738v-50z" class="box note" style="fill:#ffc"/>
<text x="924" y="318.75" class="box-text note-text"><tspan>ITX can be spent by knowledge of the</tspan></text>
<text x="924" y="334.75" class="box-text note-text"><tspan>secret_value and the bidder_redeem_key or after a timeout</tspan></text>
<text x="924" y="350.75" class="box-text note-text"><tspan>by the offerer_refund_key</tspan></text>
<path d="m544 377 3-17h178l3 17-3 17H547z" class="box abox" style="stroke:#00f"/>
<path d="m546 377 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="380.75" class="box-text abox-text"><tspan>Bid Accepted</tspan></text>
<path d="m544 453 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<path d="m546 453 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<text x="636" y="456.75" class="box-text abox-text"><tspan>ITX Sent</tspan></text>
<path d="m544 534.06 3-17h178l3 17-3 17H547z" class="box abox" style="stroke:#00f"/>
<path d="m546 534.06 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="537.81" class="box-text abox-text"><tspan>Bid Initiated</tspan></text>
<path d="m544 572.06 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<path d="m546 572.06 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<text x="636" y="575.81" class="box-text abox-text"><tspan>ITX Confirmed</tspan></text>
<path d="M736 593.05h367v9h9m-9-9 9 9v41.02H736v-50.02z" class="box note" style="fill:#ffc"/>
<path d="M738 593.05h363v9h9m-9-9 9 9v41.02H738v-50.02z" class="box note" style="fill:#ffc"/>
<text x="924" y="605.81" class="box-text note-text"><tspan>PTX can be spent by knowledge of the</tspan></text>
<text x="924" y="621.81" class="box-text note-text"><tspan>secret_value and the offerer_redeem_key or after a timeout</tspan></text>
<text x="924" y="637.81" class="box-text note-text"><tspan>by the bidder_refund_key</tspan></text>
<path d="m544 664.06 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<path d="m546 664.06 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<text x="636" y="667.81" class="box-text abox-text"><tspan>PTX Sent</tspan></text>
<path d="m544 783.12 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<path d="m546 783.12 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<text x="636" y="786.87" class="box-text abox-text"><tspan>PTX Confirmed</tspan></text>
<path d="m544 821.12 3-17h178l3 17-3 17H547z" class="box abox" style="stroke:#00f"/>
<path d="m546 821.12 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="824.87" class="box-text abox-text"><tspan>Bid Participating</tspan></text>
<path d="M736 842.12h367v9h9m-9-9 9 9v25H736v-34z" class="box note" style="fill:#ffc"/>
<text x="924" y="862.87" class="box-text note-text"><tspan>Reveals secret_value</tspan></text>
<path d="M-35 897.12h98.39v11.02l-7 7H-35" class="box inline_expression_label"/>
<text x="-33" y="910.37" class="inline_expression-text alt-text anchor-start"><tspan>alt: success path</tspan></text>
<path d="m544 973.12 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<path d="M-37 859.12h98.39v11.02l-7 7H-37" class="box inline_expression_label"/>
<text x="-35" y="872.37" class="inline_expression-text alt-text anchor-start"><tspan>alt: success path</tspan></text>
<path d="M738 880.12h363v9h9m-9-9 9 9v25H738v-34z" class="box note" style="fill:#ffc"/>
<text x="924" y="900.87" class="box-text note-text"><tspan>Reveals secret_value</tspan></text>
<path d="m546 973.12 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<text x="636" y="976.87" class="box-text abox-text"><tspan>PTX Redeemed</tspan></text>
<path d="m544 1092.18 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<path d="m546 1092.18 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<text x="636" y="1095.93" class="box-text abox-text"><tspan>ITX Redeemed</tspan></text>
<path d="m544 1130.18 3-17h178l3 17-3 17H547z" class="box abox" style="stroke:#00f"/>
<path d="m546 1130.18 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="1133.93" class="box-text abox-text"><tspan>Bid Completed</tspan></text>
<path d="m544 1330.3 3-17h178l3 17-3 17H547z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<text x="636" y="1334.05" class="box-text abox-text"><tspan>PTX Refunded</tspan></text>
<path d="M-33 1206.18h152.83v11.02l-7 7H-33" class="box inline_expression_label"/>
<text x="-31" y="1219.43" class="inline_expression-text alt-text anchor-start"><tspan>alt: offerer may reclaim ITX</tspan></text>
<path d="m546 1363.24 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#4bdbf1;stroke:#00f"/>
<text x="636" y="1366.99" class="box-text abox-text"><tspan>ITX Refunded</tspan></text>
<path d="m546 1563.36 3-17h174l3 17-3 17H549z" class="box abox" style="fill:#f1db4b;stroke:#00f"/>
<text x="636" y="1567.11" class="box-text abox-text"><tspan>PTX Refunded</tspan></text>
<path d="m546 1601.36 3-17h174l3 17-3 17H549z" class="box abox" style="stroke:#00f"/>
<text x="636" y="1605.11" class="box-text abox-text"><tspan>Bid Completed</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -1,4 +1,4 @@
<svg version="1.1" id="mscgenjsreplaceme" class="mscgenjsreplaceme" xmlns="http://www.w3.org/2000/svg" width="1272" height="2025.3" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:400;font-style:normal;text-decoration:none;background-color:#fff;stroke:#000;stroke-width:2">
<svg version="1.1" id="mscgenjsreplaceme" class="mscgenjsreplaceme" xmlns="http://www.w3.org/2000/svg" width="1272" height="2063.3" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:400;font-style:normal;text-decoration:none;background-color:#fff;stroke:#000;stroke-width:2">
<defs>
<marker orient="auto" id="mscgenjsreplacemecallback-#0000FF" class="arrow-marker" viewBox="0 0 10 10" refX="9" refY="3" markerUnits="strokeWidth" markerWidth="10" markerHeight="10">
<path d="m1 1 8 2-8 2" class="arrow-style" style="stroke-dasharray:100,1;stroke:#00f"/>
@ -35,10 +35,10 @@
</style>
</defs>
<g id="mscgenjsreplaceme_body" transform="translate(51 3)">
<path class="bglayer" style="fill:#fff;stroke:#fff;stroke-width:0" d="M-51-3h1272v2025.3H-51z" id="mscgenjsreplaceme_background"/>
<path class="bglayer" style="fill:#fff;stroke:#fff;stroke-width:0" d="M-51-3h1272v2063.3H-51z" id="mscgenjsreplaceme_background"/>
<g id="mscgenjsreplaceme_arcspans">
<path class="box inline_expression alt" d="M-41 680.06h1044V2000.3H-41z"/>
<path class="box inline_expression alt" d="M-37 1372.18H999v590.12H-37z"/>
<path class="box inline_expression alt" d="M-41 869.12h1044V2038.3H-41z"/>
<path class="box inline_expression alt" d="M-37 1410.18H999v590.12H-37z"/>
</g>
<g id="mscgenjsreplaceme_lifelines">
<path class="arcrow" style="stroke:transparent" d="M65 38v38"/>
@ -93,15 +93,15 @@
<path class="arcrow" style="stroke:#080" d="M273 510v38"/>
<path class="arcrow" style="stroke:red" d="M481 510v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 510v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 510v38M1105 510v38M65 548v75.06"/>
<path class="arcrow" style="stroke:#080" d="M273 548v75.06"/>
<path class="arcrow" style="stroke:red" d="M481 548v75.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 548v75.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 548v75.06M1105 548v75.06M65 623.06v38"/>
<path class="arcrow" style="stroke:#080" d="M273 623.06v38"/>
<path class="arcrow" style="stroke:red" d="M481 623.06v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 623.06v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 623.06v38M1105 623.06v38M65 661.06v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 510v38M1105 510v38M65 548v38"/>
<path class="arcrow" style="stroke:#080" d="M273 548v38"/>
<path class="arcrow" style="stroke:red" d="M481 548v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 548v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 548v38M1105 548v38M65 586v75.06"/>
<path class="arcrow" style="stroke:#080" d="M273 586v75.06"/>
<path class="arcrow" style="stroke:red" d="M481 586v75.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 586v75.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 586v75.06M1105 586v75.06M65 661.06v38"/>
<path class="arcrow" style="stroke:#080" d="M273 661.06v38"/>
<path class="arcrow" style="stroke:red" d="M481 661.06v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 661.06v38"/>
@ -117,15 +117,15 @@
<path class="arcrow" style="stroke:#080" d="M273 812.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 812.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 812.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 812.12v38M1105 812.12v38M65 850.12v86"/>
<path class="arcrow" style="stroke:#080" d="M273 850.12v86"/>
<path class="arcrow" style="stroke:red" d="M481 850.12v86"/>
<path class="arcrow" style="stroke:#00f" d="M689 850.12v86"/>
<path class="arcrow" style="stroke:transparent" d="M897 850.12v86M1105 850.12v86M65 936.12v38"/>
<path class="arcrow" style="stroke:#080" d="M273 936.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 936.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 936.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 936.12v38M1105 936.12v38M65 974.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 812.12v38M1105 812.12v38M65 850.12v38"/>
<path class="arcrow" style="stroke:#080" d="M273 850.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 850.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 850.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 850.12v38M1105 850.12v38M65 888.12v86"/>
<path class="arcrow" style="stroke:#080" d="M273 888.12v86"/>
<path class="arcrow" style="stroke:red" d="M481 888.12v86"/>
<path class="arcrow" style="stroke:#00f" d="M689 888.12v86"/>
<path class="arcrow" style="stroke:transparent" d="M897 888.12v86M1105 888.12v86M65 974.12v38"/>
<path class="arcrow" style="stroke:#080" d="M273 974.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 974.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 974.12v38"/>
@ -145,15 +145,15 @@
<path class="arcrow" style="stroke:#080" d="M273 1126.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 1126.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1126.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1126.12v38M1105 1126.12v38M65 1164.12v75.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1164.12v75.06"/>
<path class="arcrow" style="stroke:red" d="M481 1164.12v75.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1164.12v75.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1164.12v75.06M1105 1164.12v75.06M65 1239.18v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1239.18v38"/>
<path class="arcrow" style="stroke:red" d="M481 1239.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1239.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1239.18v38M1105 1239.18v38M65 1277.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1126.12v38M1105 1126.12v38M65 1164.12v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1164.12v38"/>
<path class="arcrow" style="stroke:red" d="M481 1164.12v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1164.12v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1164.12v38M1105 1164.12v38M65 1202.12v75.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1202.12v75.06"/>
<path class="arcrow" style="stroke:red" d="M481 1202.12v75.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1202.12v75.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1202.12v75.06M1105 1202.12v75.06M65 1277.18v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1277.18v38"/>
<path class="arcrow" style="stroke:red" d="M481 1277.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1277.18v38"/>
@ -169,19 +169,19 @@
<path class="arcrow" style="stroke:#080" d="M273 1391.18v38"/>
<path class="arcrow" style="stroke:red" d="M481 1391.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1391.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1391.18v38M1105 1391.18v38M65 1429.18v59.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1429.18v59.06"/>
<path class="arcrow" style="stroke:red" d="M481 1429.18v59.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1429.18v59.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1429.18v59.06M1105 1429.18v59.06M65 1488.24v54"/>
<path class="arcrow" style="stroke:#080" d="M273 1488.24v54"/>
<path class="arcrow" style="stroke:red" d="M481 1488.24v54"/>
<path class="arcrow" style="stroke:#00f" d="M689 1488.24v54"/>
<path class="arcrow" style="stroke:transparent" d="M897 1488.24v54M1105 1488.24v54M65 1542.24v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1542.24v38"/>
<path class="arcrow" style="stroke:red" d="M481 1542.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1542.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1542.24v38M1105 1542.24v38M65 1580.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1391.18v38M1105 1391.18v38M65 1429.18v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1429.18v38"/>
<path class="arcrow" style="stroke:red" d="M481 1429.18v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1429.18v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1429.18v38M1105 1429.18v38M65 1467.18v59.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1467.18v59.06"/>
<path class="arcrow" style="stroke:red" d="M481 1467.18v59.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1467.18v59.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1467.18v59.06M1105 1467.18v59.06M65 1526.24v54"/>
<path class="arcrow" style="stroke:#080" d="M273 1526.24v54"/>
<path class="arcrow" style="stroke:red" d="M481 1526.24v54"/>
<path class="arcrow" style="stroke:#00f" d="M689 1526.24v54"/>
<path class="arcrow" style="stroke:transparent" d="M897 1526.24v54M1105 1526.24v54M65 1580.24v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1580.24v38"/>
<path class="arcrow" style="stroke:red" d="M481 1580.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1580.24v38"/>
@ -205,15 +205,15 @@
<path class="arcrow" style="stroke:#080" d="M273 1770.24v38"/>
<path class="arcrow" style="stroke:red" d="M481 1770.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1770.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1770.24v38M1105 1770.24v38M65 1808.24v59.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1808.24v59.06"/>
<path class="arcrow" style="stroke:red" d="M481 1808.24v59.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1808.24v59.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1808.24v59.06M1105 1808.24v59.06M65 1867.3v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1867.3v38"/>
<path class="arcrow" style="stroke:red" d="M481 1867.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1867.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1867.3v38M1105 1867.3v38M65 1905.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1770.24v38M1105 1770.24v38M65 1808.24v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1808.24v38"/>
<path class="arcrow" style="stroke:red" d="M481 1808.24v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1808.24v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1808.24v38M1105 1808.24v38M65 1846.24v59.06"/>
<path class="arcrow" style="stroke:#080" d="M273 1846.24v59.06"/>
<path class="arcrow" style="stroke:red" d="M481 1846.24v59.06"/>
<path class="arcrow" style="stroke:#00f" d="M689 1846.24v59.06"/>
<path class="arcrow" style="stroke:transparent" d="M897 1846.24v59.06M1105 1846.24v59.06M65 1905.3v38"/>
<path class="arcrow" style="stroke:#080" d="M273 1905.3v38"/>
<path class="arcrow" style="stroke:red" d="M481 1905.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1905.3v38"/>
@ -225,7 +225,11 @@
<path class="arcrow" style="stroke:#080" d="M273 1981.3v38"/>
<path class="arcrow" style="stroke:red" d="M481 1981.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 1981.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1981.3v38M1105 1981.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 1981.3v38M1105 1981.3v38M65 2019.3v38"/>
<path class="arcrow" style="stroke:#080" d="M273 2019.3v38"/>
<path class="arcrow" style="stroke:red" d="M481 2019.3v38"/>
<path class="arcrow" style="stroke:#00f" d="M689 2019.3v38"/>
<path class="arcrow" style="stroke:transparent" d="M897 2019.3v38M1105 2019.3v38"/>
</g>
<g id="mscgenjsreplaceme_sequence">
<path class="entity" style="stroke:transparent" d="M0 0h130v38H0z"/>
@ -261,13 +265,13 @@
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M481 529H273"/>
<path class="label-text-background" d="M311.64 513.25h130.72v14H311.64z"/>
<text x="377" y="524.25" class="directional-text callback-text"><tspan>Sends script-coin-lock-tx</tspan></text>
<path d="M689 577.93c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 529.67h40.91v14.02H692z"/>
<text x="692" y="540.68" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 545.67h107.02v14.02H692z"/>
<text x="692" y="556.68" class="directional-text method-text anchor-start"><tspan>script-coin-lock-tx to</tspan></text>
<path class="label-text-background" d="M692 561.67h39.34v14.02H692z"/>
<text x="692" y="572.68" class="directional-text method-text anchor-start"><tspan>confirm</tspan></text>
<path d="M689 615.93c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 567.67h40.91v14.02H692z"/>
<text x="692" y="578.68" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 583.67h107.02v14.02H692z"/>
<text x="692" y="594.68" class="directional-text method-text anchor-start"><tspan>script-coin-lock-tx to</tspan></text>
<path class="label-text-background" d="M692 599.67h39.34v14.02H692z"/>
<text x="692" y="610.68" class="directional-text method-text anchor-start"><tspan>confirm</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 718.06H273"/>
<path class="label-text-background" d="M408.97 702.3h144.06v14.02H408.97z"/>
<text x="481" y="713.31" class="directional-text callback-text"><tspan>Sends noscript-coin-lock-tx</tspan></text>
@ -285,59 +289,59 @@
<text x="484" y="745.74" class="directional-text method-text anchor-start"><tspan>noscript-coin-lock-tx to</tspan></text>
<path class="label-text-background" d="M484 750.73h39.34v14.02H484z"/>
<text x="484" y="761.74" class="directional-text method-text anchor-start"><tspan>confirm</tspan></text>
<path class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)" d="M481 893.12h208"/>
<path class="label-text-background" d="M519.64 877.36h130.72v14.02H519.64z"/>
<text x="585" y="888.37" class="directional-text method-text"><tspan>Sends script-coin-lock-tx</tspan></text>
<path class="label-text-background" d="M539.3 895.36h91.73v14.02H539.3z"/>
<text x="585" y="906.37" class="directional-text method-text"><tspan>release message</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 993.12H273"/>
<path class="label-text-background" d="M397.3 977.36h167.41v14.02H397.3z"/>
<text x="481" y="988.37" class="directional-text callback-text"><tspan>Sends script-coin-lock-spend-tx</tspan></text>
<path class="inline_expression_divider" d="M-41 1107.12h1044"/>
<path class="label-text-background" d="M459.98 1099.86h42.03v14.02h-42.03z"/>
<text x="481" y="1110.87" class="empty-text comment-row-text"><tspan>fail path</tspan></text>
<path d="M689 1194.05c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 1145.8h40.91v14.02H692z"/>
<text x="692" y="1156.8" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 1161.8h131.69v14.02H692z"/>
<text x="692" y="1172.8" class="directional-text method-text anchor-start"><tspan>script-coin-lock-tx lock to</tspan></text>
<path class="label-text-background" d="M692 1177.8h33.02v14.02H692z"/>
<text x="692" y="1188.8" class="directional-text method-text anchor-start"><tspan>expire</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M481 1258.18H273"/>
<path class="label-text-background" d="M359.98 1242.42h34.03v14.02h-34.03z"/>
<text x="377" y="1253.43" class="directional-text callback-text"><tspan>Sends</tspan></text>
<path class="label-text-background" d="M300.64 1260.42h152.72v14.02H300.64z"/>
<text x="377" y="1271.43" class="directional-text callback-text"><tspan>script-coin-lock-pre-refund-tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M273 1296.18h208"/>
<path class="label-text-background" d="M300.64 1280.42h152.72v14.02H300.64z"/>
<text x="377" y="1291.43" class="directional-text return-text"><tspan>script-coin-lock-pre-refund-tx</tspan></text>
<path d="M481 1451.11c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)"/>
<path class="label-text-background" d="M484 1418.86h40.91v14.02H484z"/>
<text x="484" y="1429.86" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M484 1434.86h124.06v14.02H484z"/>
<text x="484" y="1445.86" class="directional-text method-text anchor-start"><tspan>pre-refund tx to confirm</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M481 1515.24H273"/>
<path class="label-text-background" d="M359.98 1499.48h34.03v14.02h-34.03z"/>
<text x="377" y="1510.49" class="directional-text callback-text"><tspan>Sends</tspan></text>
<path class="label-text-background" d="M282.3 1517.48h189.41v14.02H282.3z"/>
<text x="377" y="1528.49" class="directional-text callback-text"><tspan>script-coin-lock-pre-refund-spend-tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M273 1599.24h416"/>
<path class="label-text-background" d="M364.28 1583.48h233.44v14.02H364.28z"/>
<text x="481" y="1594.49" class="directional-text return-text"><tspan>Detects script-coin-lock-pre-refund-spend-tx</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 1637.24H273"/>
<path class="label-text-background" d="M382.97 1621.48h196.06v14.02H382.97z"/>
<text x="481" y="1632.49" class="directional-text callback-text"><tspan>Sends scriptless-coin-lock-recover-tx</tspan></text>
<path class="inline_expression_divider" d="M-37 1751.24H999"/>
<path class="label-text-background" d="M396.95 1743.98h168.09V1758H396.95z"/>
<text x="481" y="1754.99" class="empty-text comment-row-text"><tspan>bidder swipes script coin lock tx</tspan></text>
<path d="M689 1830.17c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 1797.91h40.91v14.02H692z"/>
<text x="692" y="1808.92" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 1813.91h142.41v14.02H692z"/>
<text x="692" y="1824.92" class="directional-text method-text anchor-start"><tspan>pre-refund tx lock to expire</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 1886.3H273"/>
<path class="label-text-background" d="M368.63 1870.55h224.75v14.02H368.63z"/>
<text x="481" y="1881.55" class="directional-text callback-text"><tspan>Sends script-coin-lock-pre-refund-swipe-tx</tspan></text>
<path class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)" d="M481 931.12h208"/>
<path class="label-text-background" d="M519.64 915.36h130.72v14.02H519.64z"/>
<text x="585" y="926.37" class="directional-text method-text"><tspan>Sends script-coin-lock-tx</tspan></text>
<path class="label-text-background" d="M539.3 933.36h91.73v14.02H539.3z"/>
<text x="585" y="944.37" class="directional-text method-text"><tspan>release message</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 1031.12H273"/>
<path class="label-text-background" d="M397.3 1015.36h167.41v14.02H397.3z"/>
<text x="481" y="1026.37" class="directional-text callback-text"><tspan>Sends script-coin-lock-spend-tx</tspan></text>
<path class="inline_expression_divider" d="M-41 1145.12h1044"/>
<path class="label-text-background" d="M459.98 1137.86h42.03v14.02h-42.03z"/>
<text x="481" y="1148.87" class="empty-text comment-row-text"><tspan>fail path</tspan></text>
<path d="M689 1232.05c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 1183.8h40.91v14.02H692z"/>
<text x="692" y="1194.8" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 1199.8h131.69v14.02H692z"/>
<text x="692" y="1210.8" class="directional-text method-text anchor-start"><tspan>script-coin-lock-tx lock to</tspan></text>
<path class="label-text-background" d="M692 1215.8h33.02v14.02H692z"/>
<text x="692" y="1226.8" class="directional-text method-text anchor-start"><tspan>expire</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M481 1296.18H273"/>
<path class="label-text-background" d="M359.98 1280.42h34.03v14.02h-34.03z"/>
<text x="377" y="1291.43" class="directional-text callback-text"><tspan>Sends</tspan></text>
<path class="label-text-background" d="M300.64 1298.42h152.72v14.02H300.64z"/>
<text x="377" y="1309.43" class="directional-text callback-text"><tspan>script-coin-lock-pre-refund-tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M273 1334.18h208"/>
<path class="label-text-background" d="M300.64 1318.42h152.72v14.02H300.64z"/>
<text x="377" y="1329.43" class="directional-text return-text"><tspan>script-coin-lock-pre-refund-tx</tspan></text>
<path d="M481 1489.11c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:red" marker-end="url(#mscgenjsreplacememethod-#FF0000)"/>
<path class="label-text-background" d="M484 1456.86h40.91v14.02H484z"/>
<text x="484" y="1467.86" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M484 1472.86h124.06v14.02H484z"/>
<text x="484" y="1483.86" class="directional-text method-text anchor-start"><tspan>pre-refund tx to confirm</tspan></text>
<path class="arc directional callback" style="stroke:red" marker-end="url(#mscgenjsreplacemecallback-#FF0000)" d="M481 1553.24H273"/>
<path class="label-text-background" d="M359.98 1537.48h34.03v14.02h-34.03z"/>
<text x="377" y="1548.49" class="directional-text callback-text"><tspan>Sends</tspan></text>
<path class="label-text-background" d="M282.3 1555.48h189.41v14.02H282.3z"/>
<text x="377" y="1566.49" class="directional-text callback-text"><tspan>script-coin-lock-pre-refund-spend-tx</tspan></text>
<path class="arc directional return" style="stroke:#080" marker-end="url(#mscgenjsreplacemecallback-#008800)" d="M273 1637.24h416"/>
<path class="label-text-background" d="M364.28 1621.48h233.44v14.02H364.28z"/>
<text x="481" y="1632.49" class="directional-text return-text"><tspan>Detects script-coin-lock-pre-refund-spend-tx</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 1675.24H273"/>
<path class="label-text-background" d="M382.97 1659.48h196.06v14.02H382.97z"/>
<text x="481" y="1670.49" class="directional-text callback-text"><tspan>Sends scriptless-coin-lock-recover-tx</tspan></text>
<path class="inline_expression_divider" d="M-37 1789.24H999"/>
<path class="label-text-background" d="M396.95 1781.98h168.09V1796H396.95z"/>
<text x="481" y="1792.99" class="empty-text comment-row-text"><tspan>bidder swipes script coin lock tx</tspan></text>
<path d="M689 1868.17c104 .1 104 22.8 0 22.8" class="arc directional method" style="stroke:#00f" marker-end="url(#mscgenjsreplacememethod-#0000FF)"/>
<path class="label-text-background" d="M692 1835.91h40.91v14.02H692z"/>
<text x="692" y="1846.92" class="directional-text method-text anchor-start"><tspan>Wait for</tspan></text>
<path class="label-text-background" d="M692 1851.91h142.41v14.02H692z"/>
<text x="692" y="1862.92" class="directional-text method-text anchor-start"><tspan>pre-refund tx lock to expire</tspan></text>
<path class="arc directional callback" style="stroke:#00f" marker-end="url(#mscgenjsreplacemecallback-#0000FF)" d="M689 1924.3H273"/>
<path class="label-text-background" d="M368.63 1908.55h224.75v14.02H368.63z"/>
<text x="481" y="1919.55" class="directional-text callback-text"><tspan>Sends script-coin-lock-pre-refund-swipe-tx</tspan></text>
</g>
<g id="mscgenjsreplaceme_notes">
<path d="m591 209 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
@ -363,45 +367,48 @@
<text x="1001" y="502.75" class="box-text note-text"><tspan>the offerer&apos;s signature for it.</tspan></text>
<path d="m591 529 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="532.75" class="box-text abox-text"><tspan>Bid Script coin spend tx valid</tspan></text>
<path d="m591 642.06 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="645.81" class="box-text abox-text"><tspan>Bid Script coin locked</tspan></text>
<path d="M-40 680.06h98.39v11.02l-7 7H-40" class="box inline_expression_label"/>
<text x="-38" y="693.31" class="inline_expression-text alt-text anchor-start"><tspan>alt: success path</tspan></text>
<path d="m591 567 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="562.75" class="box-text abox-text"><tspan>Exchanged script lock spend tx</tspan></text>
<text x="689" y="578.75" class="box-text abox-text"><tspan>msg</tspan></text>
<path d="m591 680.06 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="683.81" class="box-text abox-text"><tspan>Bid Script coin locked</tspan></text>
<path d="m591 831.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="834.87" class="box-text abox-text"><tspan>Bid Scriptless coin locked</tspan></text>
<path d="M799 852.11h395v9h9m-9-9 9 9v73.02H799v-82.02z" class="box note" style="fill:#ffc"/>
<text x="1001" y="864.87" class="box-text note-text"><tspan>The XmrBidLockReleaseMessage contains the offerer&apos;s OTVES for it. </tspan></text>
<text x="1001" y="880.87" class="box-text note-text"><tspan> The bidder decodes the offerer&apos;s signature</tspan></text>
<text x="1001" y="896.87" class="box-text note-text"><tspan>from the OTVES. When the offerer has the</tspan></text>
<text x="1001" y="912.87" class="box-text note-text"><tspan>plaintext signature, they can decode the bidder&apos;s noscript-coin-lock-tx</tspan></text>
<text x="1001" y="928.87" class="box-text note-text"><tspan>signature.</tspan></text>
<path d="m591 955.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="958.87" class="box-text abox-text"><tspan>Script coin lock released</tspan></text>
<path d="m591 1031.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1034.87" class="box-text abox-text"><tspan>Script tx redeemed</tspan></text>
<path d="M-40 869.12h98.39v11.02l-7 7H-40" class="box inline_expression_label"/>
<text x="-38" y="882.37" class="inline_expression-text alt-text anchor-start"><tspan>alt: success path</tspan></text>
<path d="M799 890.11h395v9h9m-9-9 9 9v73.02H799v-82.02z" class="box note" style="fill:#ffc"/>
<text x="1001" y="902.87" class="box-text note-text"><tspan>The XmrBidLockReleaseMessage contains the offerer&apos;s OTVES for it. </tspan></text>
<text x="1001" y="918.87" class="box-text note-text"><tspan> The bidder decodes the offerer&apos;s signature</tspan></text>
<text x="1001" y="934.87" class="box-text note-text"><tspan>from the OTVES. When the offerer has the</tspan></text>
<text x="1001" y="950.87" class="box-text note-text"><tspan>plaintext signature, they can decode the bidder&apos;s noscript-coin-lock-tx</tspan></text>
<text x="1001" y="966.87" class="box-text note-text"><tspan>signature.</tspan></text>
<path d="m591 993.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="996.87" class="box-text abox-text"><tspan>Script coin lock released</tspan></text>
<path d="m591 1069.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1072.87" class="box-text abox-text"><tspan>Bid Completed</tspan></text>
<path d="M799 1241.18h395v9h9m-9-9 9 9v25H799v-34z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1261.93" class="box-text note-text"><tspan>tx can be sent by either party.</tspan></text>
<path d="m591 1334.18 3-17.01h190l3 17.01-3 17.01H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1329.93" class="box-text abox-text"><tspan>Bid Script pre-refund tx in</tspan></text>
<text x="689" y="1345.93" class="box-text abox-text"><tspan>chain</tspan></text>
<path d="M-36 1372.18h200.86v11.02l-7 7H-36" class="box inline_expression_label"/>
<text x="-34" y="1385.43" class="inline_expression-text alt-text anchor-start"><tspan>alt: offerer refunds script coin lock tx</tspan></text>
<path d="M799 1490.23h395v9h9m-9-9 9 9v41.02H799v-50.02z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1502.99" class="box-text note-text"><tspan>Refunds the script lock tx, with the offerer&apos;s cleartext signature</tspan></text>
<text x="1001" y="1518.99" class="box-text note-text"><tspan>the bidder can refund the noscript lock tx. </tspan></text>
<text x="1001" y="1534.99" class="box-text note-text"><tspan>Once the lock expires the pre-refund tx can be spent by the bidder.</tspan></text>
<path d="m383 1561.24 3-17h190l3 17-3 17H386z" class="box abox" style="stroke:red"/>
<text x="481" y="1564.99" class="box-text abox-text"><tspan>Bid Failed, refunded</tspan></text>
<path d="M799 1582.24h395v9h9m-9-9 9 9v25H799v-34z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1602.99" class="box-text note-text"><tspan>Bidder recovers the offerer&apos;s scriptless chain key-shard.</tspan></text>
<path d="m591 1675.24 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1678.99" class="box-text abox-text"><tspan>Bid Scriptless tx recovered</tspan></text>
<text x="689" y="1072.87" class="box-text abox-text"><tspan>Script tx redeemed</tspan></text>
<path d="m591 1107.12 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1110.87" class="box-text abox-text"><tspan>Bid Completed</tspan></text>
<path d="M799 1279.18h395v9h9m-9-9 9 9v25H799v-34z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1299.93" class="box-text note-text"><tspan>tx can be sent by either party.</tspan></text>
<path d="m591 1372.18 3-17.01h190l3 17.01-3 17.01H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1367.93" class="box-text abox-text"><tspan>Bid Script pre-refund tx in</tspan></text>
<text x="689" y="1383.93" class="box-text abox-text"><tspan>chain</tspan></text>
<path d="M-36 1410.18h200.86v11.02l-7 7H-36" class="box inline_expression_label"/>
<text x="-34" y="1423.43" class="inline_expression-text alt-text anchor-start"><tspan>alt: offerer refunds script coin lock tx</tspan></text>
<path d="M799 1528.23h395v9h9m-9-9 9 9v41.02H799v-50.02z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1540.99" class="box-text note-text"><tspan>Refunds the script lock tx, with the offerer&apos;s cleartext signature</tspan></text>
<text x="1001" y="1556.99" class="box-text note-text"><tspan>the bidder can refund the noscript lock tx. </tspan></text>
<text x="1001" y="1572.99" class="box-text note-text"><tspan>Once the lock expires the pre-refund tx can be spent by the bidder.</tspan></text>
<path d="m383 1599.24 3-17h190l3 17-3 17H386z" class="box abox" style="stroke:red"/>
<text x="481" y="1602.99" class="box-text abox-text"><tspan>Bid Failed, refunded</tspan></text>
<path d="M799 1620.24h395v9h9m-9-9 9 9v25H799v-34z" class="box note" style="fill:#ffc"/>
<text x="1001" y="1640.99" class="box-text note-text"><tspan>Bidder recovers the offerer&apos;s scriptless chain key-shard.</tspan></text>
<path d="m591 1713.24 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1716.99" class="box-text abox-text"><tspan>Bid Failed, refunded</tspan></text>
<path d="m591 1924.3 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1928.05" class="box-text abox-text"><tspan>Bid Failed, swiped</tspan></text>
<text x="689" y="1716.99" class="box-text abox-text"><tspan>Bid Scriptless tx recovered</tspan></text>
<path d="m591 1751.24 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1754.99" class="box-text abox-text"><tspan>Bid Failed, refunded</tspan></text>
<path d="m591 1962.3 3-17h190l3 17-3 17H594z" class="box abox" style="stroke:#00f"/>
<text x="689" y="1966.05" class="box-text abox-text"><tspan>Bid Failed, swiped</tspan></text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View file

@ -64,4 +64,3 @@ xu {
B abox B [label="Bid Completed"];
};
}

View file

@ -31,10 +31,11 @@ xu {
B abox B [label="Exchanged script lock spend tx msg"];
B => B [label="Wait for script-coin-lock-tx to confirm"];
B abox B [label="Bid Script coin locked"];
# Bidder would only send noscript-coin-lock-tx if script-coin-lock-tx validates
B =>> N [label="Sends noscript-coin-lock-tx"];
B => B [label="Wait for noscript-coin-lock-tx to confirm"], O => O [label="Wait for noscript-coin-lock-tx to confirm"];
B abox B [label="Bid Scriptless coin locked"];
CB alt C [label="success path"] {
B =>> N [label="Sends noscript-coin-lock-tx"];
B => B [label="Wait for noscript-coin-lock-tx to confirm"], O => O [label="Wait for noscript-coin-lock-tx to confirm"];
B abox B [label="Bid Scriptless coin locked"];
O => B [label="Sends script-coin-lock-tx release message"],
C note C2
[label="The XmrBidLockReleaseMessage contains the offerer's OTVES for it.
@ -78,4 +79,3 @@ xu {
};
};
}

View file

@ -121,7 +121,12 @@ def wait_for_bid(delay_event, swap_client, bid_id, state=None, sent=False, wait_
assert(len(bids) < 2)
for bid in bids:
if bid[2] == bid_id:
if state is not None and state != bid[5]:
if type(state) == list:
if bid[5] in state:
return
else:
continue
elif state is not None and state != bid[5]:
continue
return
raise ValueError('wait_for_bid timed out.')
@ -302,7 +307,7 @@ def make_rpc_func(node_id, base_rpc_port=BASE_RPC_PORT):
return rpc_func
def extract_states_from_xu_file(file_path):
def extract_states_from_xu_file(file_path, prefix):
states = {}
alt_counter = 0
@ -342,6 +347,8 @@ def extract_states_from_xu_file(file_path):
if definitions[1] != 'abox':
continue
if definitions[0] != prefix:
continue
tag_start = 'label="'
tag_end = '"'

View file

@ -73,8 +73,8 @@ class Test(BaseTest):
wait_for_balance(test_delay_event, 'http://127.0.0.1:1801/json/wallets/ltc', 'balance', 1000.0)
diagrams_dir = 'doc/protocols/sequence_diagrams'
cls.states_bidder = extract_states_from_xu_file(os.path.join(diagrams_dir, 'bidder.alt.xu'))
cls.states_offerer = extract_states_from_xu_file(os.path.join(diagrams_dir, 'offerer.alt.xu'))
cls.states_bidder = extract_states_from_xu_file(os.path.join(diagrams_dir, 'bidder.alt.xu'), 'B')
cls.states_offerer = extract_states_from_xu_file(os.path.join(diagrams_dir, 'offerer.alt.xu'), 'O')
@classmethod
def tearDownClass(cls):

View file

@ -342,8 +342,8 @@ class BaseTest(unittest.TestCase):
logger.addHandler(cls.stream_fp)
diagrams_dir = 'doc/protocols/sequence_diagrams'
cls.states_bidder = extract_states_from_xu_file(os.path.join(diagrams_dir, 'xmr.bidder.alt.xu'))
cls.states_offerer = extract_states_from_xu_file(os.path.join(diagrams_dir, 'xmr.offerer.alt.xu'))
cls.states_bidder = extract_states_from_xu_file(os.path.join(diagrams_dir, 'xmr.bidder.alt.xu'), 'B')
cls.states_offerer = extract_states_from_xu_file(os.path.join(diagrams_dir, 'xmr.offerer.alt.xu'), 'O')
try:
logging.info('Preparing coin nodes.')
@ -689,8 +689,6 @@ class Test(BaseTest):
logging.info('---------- Test PART to XMR leader recovers coin a lock tx')
swap_clients = self.swap_clients
js_w0_before = read_json_api(1800, 'wallets')
offer_id = swap_clients[0].postOffer(
Coins.PART, Coins.XMR, 101 * COIN, 0.12 * XMR_COIN, 101 * COIN, SwapTypes.XMR_SWAP,
lock_type=TxLockTypes.SEQUENCE_LOCK_BLOCKS, lock_value=12)
@ -709,16 +707,18 @@ class Test(BaseTest):
swap_clients[0].acceptXmrBid(bid_id)
wait_for_bid(test_delay_event, swap_clients[0], bid_id, BidStates.XMR_SWAP_FAILED_REFUNDED, wait_for=180)
wait_for_bid(test_delay_event, swap_clients[1], bid_id, BidStates.XMR_SWAP_FAILED_REFUNDED, sent=True)
wait_for_bid(test_delay_event, swap_clients[1], bid_id, [BidStates.BID_STALLED_FOR_TEST, BidStates.XMR_SWAP_FAILED_REFUNDED], sent=True)
js_w0_after = read_json_api(1800, 'wallets')
bid_id_hex = bid_id.hex()
path = f'bids/{bid_id_hex}/states'
offerer_states = read_json_api(1800, path)
assert(compare_bid_states(offerer_states, self.states_offerer[1]) is True)
def test_03_follower_recover_a_lock_tx(self):
logging.info('---------- Test PART to XMR follower recovers coin a lock tx')
swap_clients = self.swap_clients
js_w0_before = read_json_api(1800, 'wallets')
offer_id = swap_clients[0].postOffer(
Coins.PART, Coins.XMR, 101 * COIN, 0.13 * XMR_COIN, 101 * COIN, SwapTypes.XMR_SWAP,
lock_type=TxLockTypes.SEQUENCE_LOCK_BLOCKS, lock_value=12)
@ -740,11 +740,16 @@ class Test(BaseTest):
wait_for_bid(test_delay_event, swap_clients[0], bid_id, BidStates.BID_STALLED_FOR_TEST, wait_for=180)
wait_for_bid(test_delay_event, swap_clients[1], bid_id, BidStates.XMR_SWAP_FAILED_SWIPED, wait_for=80, sent=True)
js_w0_after = read_json_api(1800, 'wallets')
wait_for_none_active(test_delay_event, 1800)
wait_for_none_active(test_delay_event, 1801)
bid_id_hex = bid_id.hex()
path = f'bids/{bid_id_hex}/states'
bidder_states = read_json_api(1801, path)
bidder_states = [s for s in bidder_states if s[1] != 'Bid Stalled (debug)']
assert(compare_bid_states(bidder_states, self.states_bidder[2]) is True)
def test_04_follower_recover_b_lock_tx(self):
logging.info('---------- Test PART to XMR follower recovers coin b lock tx')
@ -752,7 +757,7 @@ class Test(BaseTest):
offer_id = swap_clients[0].postOffer(
Coins.PART, Coins.XMR, 101 * COIN, 0.14 * XMR_COIN, 101 * COIN, SwapTypes.XMR_SWAP,
lock_type=TxLockTypes.SEQUENCE_LOCK_BLOCKS, lock_value=18)
lock_type=TxLockTypes.SEQUENCE_LOCK_BLOCKS, lock_value=28)
wait_for_offer(test_delay_event, swap_clients[1], offer_id)
offer = swap_clients[1].getOffer(offer_id)
@ -769,6 +774,14 @@ class Test(BaseTest):
wait_for_bid(test_delay_event, swap_clients[0], bid_id, BidStates.XMR_SWAP_FAILED_REFUNDED, wait_for=180)
wait_for_bid(test_delay_event, swap_clients[1], bid_id, BidStates.XMR_SWAP_FAILED_REFUNDED, sent=True)
bid_id_hex = bid_id.hex()
path = f'bids/{bid_id_hex}/states'
offerer_states = read_json_api(1800, path)
bidder_states = read_json_api(1801, path)
assert(compare_bid_states(offerer_states, self.states_offerer[1]) is True)
assert(compare_bid_states(bidder_states, self.states_bidder[1]) is True)
def test_05_btc_xmr(self):
logging.info('---------- Test BTC to XMR')
swap_clients = self.swap_clients