Commit Graph

275 Commits (31c63f0c4de954e90a2a0b5ac7ac81d5e68d8c62)

Author SHA1 Message Date
Daniel Karzel a692cf9299 Remove all short-codes because they don't add value at the moment 4 years ago
Daniel Karzel c9d492d155 Only wait for xmr-lock until t1 expired 4 years ago
Daniel Karzel 83ce6f2c85 Ensure that Bob can cancel correctly if T1 expired and Alice did not move
Bob has to check for the possibility to cancel in every state after he locked the BTC.
Otherwise Bob will try to perform actions that don't have any point.
4 years ago
Daniel Karzel 8296490764
Merge pull request #111 from comit-network/trace-xmr-btc
Fix tracing subscribe filter for xmr-btc`
4 years ago
Daniel Karzel 5f8b7f2624 Fix tracing subscribe filter for xmr-btc` 4 years ago
Franck Royer 40a27a2438
Remove dead code 4 years ago
Franck Royer df237f82cf
Fix clippy warning 4 years ago
Franck Royer 49b84d84b9
Add address at the start
Do not carry peer id around as we currently only expect one peer.
4 years ago
Franck Royer 1e4b115556
Separate Bob restart tests
To stabilize CI
4 years ago
Franck Royer e366d3a73b
Join all futures to avoid hanging tests 4 years ago
Franck Royer 2abf65f3b6
Remove sleep that seems unnecessary 4 years ago
Franck Royer 4a4e23038b
Add logging to investigate add address race condition 4 years ago
Franck Royer 1a4bd0e2b4
Bob refunds swap after restart that requires communication
As Bob is dialing Alice, we now ensure that we are connected to Alice
at each step that needs communication.
If we are not connected, we proceed with dialing.

In an attempt to improve libp2p usage, we also add known address of
Alice first and only use peer_id to dial.
This ensures that we use the expected peer id.
4 years ago
Franck Royer d9ea7ab605
Only carry the tx_lock_id instead of the full state 4 years ago
Franck Royer edfab58246
Scope alice db
To better match the restart scenario
4 years ago
Franck Royer dc96b3d1e9
Stop running first event loop after Alice restarts 4 years ago
Franck Royer 638143a10d
Replace hard coded port by dynamic available one
Fixes #84.
4 years ago
Franck Royer 2212758d17
Rename refund test as it is alice specific 4 years ago
bors[bot] 3db71997d3
Merge #99
99: Cleanup resume_from_database functions only used in tests r=da-kami a=da-kami

Follow up of https://github.com/comit-network/xmr-btc-swap/pull/88

Co-authored-by: Daniel Karzel <daniel@comit.network>
4 years ago
bors[bot] 4f631c0c9b
Merge #98
98: Remove tor module r=da-kami a=da-kami

This removes the currently unused `tor module`.
Different `tokio` versions have been causing issues with the `tor` module in the past (i.e. `Cargo.lock` broken problem...). It started causing issues again when adding a dependency to `jsonrpc_client` working on https://github.com/comit-network/xmr-btc-swap/pull/97

We don't support `tor` at the moment and are no planning to add this feature initially as it is not super important to users. 
The functionality can easily added again at a later point.

Co-authored-by: Daniel Karzel <daniel@comit.network>
4 years ago
bors[bot] 88c29dbce5
Merge #94
94: T1Expired state for Bob and check expiries in states after both locked r=da-kami a=da-kami



Co-authored-by: Daniel Karzel <daniel@comit.network>
4 years ago
Daniel Karzel 4046305474
Merge pull request #88 from comit-network/resume-swap-cli
Resume command and global database cl-parameter
4 years ago
Daniel Karzel 20893c1bb1 Cleanup Display for database states 4 years ago
Daniel Karzel e6493784bf Change `pin_mut!` to `select!` 4 years ago
Daniel Karzel 773eebc723 Cleanup resume_from_database functions only used in tests 4 years ago
Daniel Karzel e9681b6e2b Work in review comments 4 years ago
Daniel Karzel 43d05935e7 Remove tor module 4 years ago
Daniel Karzel 093cbaa4b4 Introduce T1Expired state for Bob properly and check expiries in states after both locked 4 years ago
Daniel Karzel 6d03d1bbff Resume command and global database cl-parameter 4 years ago
Franck Royer 71cf501c29
Delete `bob::negotiate`
This module was intended to contain helper functions for each step.

However, those are not needed except for the negotiate step.
A dedicated module is not needed for one function.
4 years ago
Franck Royer 19066200d1
Add a TODO to use existing helper functions
Helper functions already exist on the xmr-btc crate states, use them
like it is done in the bob module.
4 years ago
Franck Royer 84bec0631b
Rename alice::negotiate to steps
This module includes helper function for each state.
4 years ago
Franck Royer 53d13330c2
Remove dupe code 4 years ago
rishflab 9d266fc648 Add balance assertions to restart tests 4 years ago
Franck Royer 5ba830f3bf
Replace swap `recover` terminology with `resume` 4 years ago
Franck Royer 8cc470a80e
Use `-ed` terminology for cancel state 4 years ago
Daniel Karzel b83ab71669
Split up tests into separate files to overcome CI failure 4 years ago
Daniel Karzel 7cae6a9e4d
Add Bob restart test 4 years ago
Daniel Karzel 4ec2da29a0
Modularize Bob's test setup (separate init for state, event_loop) 4 years ago
Daniel Karzel 9a930af33f
Remove duplicated restart+refund test, move tests into separate files 4 years ago
Daniel Karzel 91d4d5da25
Cleanup swap execution to not return EventLoopHandle, refactor both_refund test 4 years ago
Daniel Karzel 3692046758
Bob's recover function 4 years ago
Daniel Karzel bf39c34ada
Alice restart and refund test if restarted before encsig learner 4 years ago
Daniel Karzel 8c929564ef
Refactor container initialization 4 years ago
rishflab 143d8bc07d
Move message0 response handler out of NB 4 years ago
Daniel Karzel 4143394767
Add recovery function for Alice 4 years ago
rishflab 4b00141c29
Fix happy path test 4 years ago
Franck Royer 7092af457a
Introduced DB for Alice & Bob 4 years ago
Franck Royer 4ce8695dfc
Align with origin/database 4 years ago
Franck Royer 1a5b9f9fa9
Update tests after rebase 4 years ago
Franck Royer c4cdd098fd
Use from instead of try_from for Alice state conversion 4 years ago
Franck Royer caf903acda
wip: Add test for when bob restarts 4 years ago
Franck Royer 905fc6cf35
Save Bob state during swap 4 years ago
Franck Royer 7e0a1ffe84
Remove generator for bob 4 years ago
Franck Royer c6af5eb9ac
Introduce test where alice restarts before all communications are done 4 years ago
Franck Royer 3580b7ed2c
Add test where Alice restart after encsign is learned 4 years ago
Franck Royer a22efaa7bc
Remove unneeded peer id argument 4 years ago
Franck Royer 9323f22009
Reorder calls 4 years ago
Franck Royer a24d1a49b9
Remove unneeded `as_ref_calls` 4 years ago
Franck Royer 1c7cc7ee46
Scope futures' instanciation 4 years ago
Franck Royer 6226e5789f
Introduce test where alice restart mid-swap 4 years ago
Franck Royer 71a0832ef4
Add zero const to monero::Amount 4 years ago
Franck Royer 64b021daf4
Save Alice states in db 4 years ago
Franck Royer 238f6a989d
Extract spend key as soon as possible 4 years ago
Franck Royer c095693a5f
Refund swap if resumed from a step that requires further communication 4 years ago
Franck Royer 11cea9ba69
Remove passing alice peer id
The usage of the peer id is incorrect as we do not even check it when
dialing. For now, we can ignore it.
We can then re-introduce it and use it properly at a later stage.
4 years ago
rishflab d8d6477ee9 Remove and fix comments 4 years ago
rishflab 082f4eb005 Use unused port in refund test 4 years ago
rishflab 7af4b6980a Test Alice refunds after Bob refund
Reworked Alice XmrLocked state transition handler to handle the
scenario when Alice received the encsig but Bob refunds.
Previously Alice was trying to redeem after receiving the encsig
without checking if t1 had elapsed.
4 years ago
rishflab 773390886b Test that Bob refunds if Alice fails to act 4 years ago
rishflab 78c6a1a78f Add Bob refund execution 4 years ago
rishflab f806ad7231 Assert balances after punish 4 years ago
bors[bot] 9fecf7008e
Merge #61
61: Prepare CLI for mainnet swap r=da-kami a=da-kami



Co-authored-by: Daniel Karzel <daniel@comit.network>
4 years ago
Daniel Karzel 03b8e5f52e Upgrade CLI for mainnet test 4 years ago
Daniel Karzel aad7a22f81 Utility function for initializing tracing for tests 4 years ago
Franck Royer c0478d7191
Move expiries to config
So they can be different for mainnet and regtest
4 years ago
Franck Royer ef6e8fc723
Clean-up unused code 4 years ago
Franck Royer e71bf7d8e9
Add comment regarding processing in network behaviour 4 years ago
Franck Royer 2c9fb7b1da
Rename var to match type name 4 years ago
Franck Royer 91d28682ed
Remove comments 4 years ago
Franck Royer 53aae5cf5f
Use anyhow macro as intended 4 years ago
Franck Royer 51cc44484b
Remove unneeded pub qualifiers 4 years ago
rishflab 9ba89194b0 Rename swarm driver to event loop 4 years ago
rishflab f5d3d54b13 Prevent premature Bob t1 timeout
Bob was hitting the t1 timeout and entering cancel
instead of redeem. This was resolved by increasing
the timeouts to 50.
4 years ago
rishflab 27d1334726 Init Alice behaviour with state0
Previously state0 had to be set after creating Alice's behaviour.
With the event loop we no longer has access to the swarm so
set_state0() has to be called indirectly through a channel. This
means it is difficult to guarantee state0 is being set due to the
asynchronous nature of channels. This was solved by initialising
Alice with state0.
4 years ago
rishflab 3d8866f1a0 Convert event loop to use fused futures select
Co-authored-by: Daniel Karzel <daniel@comit.network>
4 years ago
rishflab 58da1df9dc Create SwarmDriverHandle to resolve ownership issues 4 years ago
rishflab 6f7408ecce Drive swarm in seperate async task
Previously the libp2p swarm had to be manually polled within the
protocol execution code to execute actions such as sending a
message. The swarm is now wrapped in SwarmDriver which polls the
swarm in a seperate task
4 years ago
rishflab f88ed9183b
Merge pull request #54 from comit-network/bob-unhappy-paths
Punish Test
4 years ago
rishflab bd8e6e36e0 Fix monero blocktime config 4 years ago
Daniel Karzel 1a2857af29 Properly init tracing per test and reverse the filter to be exclusive
Tracing should be initialized by test and the `_guard` kept alive within the test.
Re-using this code in different tests does not really have any additional value.

Instead of specifying what messages we want to include, I went for a filter that excludes noise.
That way we get more useful logging.
4 years ago
rishflab 883a913f30 Remove nonsensical monero * monero multiplication 4 years ago
rishflab 627b1a9f00 Remove unnecessary execution restart 4 years ago
rishflab 8592ef5f79 Address PR feedback
Add context to logging statements. Use amount type for monero in tests. Remove stale
code and comments.
4 years ago
Franck Royer 78674818c2
Upgrade bitcoin-harness 4 years ago
rishflab b4ac69fa9c Reduce stack size to prevent CI resource issues 4 years ago
rishflab e4eed7b1a5 Change multiaddr for test runs 4 years ago
rishflab c91e9652aa Add alice punish test
Use reusable test init functions for happy path test

Extract tracing setup to reusable function

Move test initialization to seperate functions

Increase stack size in CI

Fix monero max finality time

Force Bob swarm polling to send message 2

Run Bob state to xmr_locked in punish test to force the sending of
message2. Previously Bob state was run until btc_locked. Although
this was the right thing to do, message2 was not being sent as the
swarm was not polled in btc_locked. Alice punish test passes.

Add info logging to executor
4 years ago
rishflab 5fef68322a Allow Alice to exit execution at a specified state 4 years ago
rishflab 584cc22024 Allow Bob to exit execution at a specified state 4 years ago