Commit Graph

92 Commits (b06321a40f0279aa1f243b00004f42836bbc66fd)

Author SHA1 Message Date
rishflab 24631d464d Add test for recursive executor 4 years ago
rishflab 3b005bd15c Resolve rebase issues, restructure code and fix warnings 4 years ago
Franck Royer 437c1cbb80 Started to extract some steps
Tealised that the whole point is for them to be idempotent to be useful
4 years ago
Franck Royer 66866f8fbd Remove rng argument 4 years ago
Franck Royer bff83bbe99 Progress on Cancellation path 4 years ago
Franck Royer 8976a03b3d Implemented Alice transition from `BtcLocked` to `XmrLocked` 4 years ago
rishflab dd07e2f882 Add Alice execution path
Consolidate and simplify swap execution. Generators are no longer
needed. Consolidate recovery and swap data structures. The
recursive calls can be replaced with a loop if returning prior to
completion is desired for testing purposes.

Fill out alice abort path

Move state machine executors into seperate files

Not compiling due to recursion/async issues

Fix async recursion compilation errors

Fix Bob swap execution

Remove check for ack message from Alice. Seems like a bad idea to
rely on an acknowledgement message instead of looking at the
blockchain.

Fix Bob abort

Fix warnings

Xmr lock complete

Add TxCancel submit to XmrLocked

Bob swap completed

Remove alice
4 years ago
Lucas Soriano del Pino 483c819e17 Correctly re-export types from bitcoin and monero modules 4 years ago
Lucas Soriano del Pino 28225f8643 Implement swap recover function for Alice
This introduces a lot of duplication between the binary and the
library, but it's okay because this module should only be a temporary
measure until we allow recovery to be handled by the original state
machine.

Also, fix a bug in `xmr_btc::alice::action_generator` caused by the
incorrect assumption that Alice's ability to punish Bob could be
determined before the cancel transaction hits the blockchain.
4 years ago
Lucas Soriano del Pino f9cfc2abe3 Remove generics from Database 4 years ago
rishflab ea08778b2f Save state for Bob at specific points in the swap 4 years ago
Lucas Soriano del Pino 4790d701e5 Update cross-curve-dleq dependency
Making build times considerably faster.

On my machine, after running `cargo clean`, `cargo build -p swap`
takes 2min 19s.

The updated dependency also comes with a critical fix to the `Scalar`
type, which originally wrongly assumed that secp256k1 and ed25519
scalars had the same endianness. For this reason, we now have to
reverse the bytes of recovered scalars if we are to use them on a
different chain.

Finally, there is no need to append `RUST_MIN_STACK=100000000` to
avoid stack overflows in tests and when running the binary.
4 years ago
Tobin C. Harding 4d4acde476 Bubble up an event when Bob receives message 3 response
Before this patch Bob is not sending message 3. This is because we are not
polling Bob's swarm correctly. To fix it we can just mimic the other NB's and
bubble up an event when Bob receives message 3 response from Alice, this way we
can `await` upon this event which triggers polling, making Bob's swarm send the
message.
4 years ago
Lucas Soriano del Pino 9384b0cf3c [WIP] Swap app e2e test 4 years ago
Lucas Soriano del Pino a4e4c27bee Execute Bob's on-chain protocol after handshake
Co-authored-by: Tobin C. Harding <tobin@coblox.tech>
4 years ago
Lucas Soriano del Pino 4ee82a5a2a Execute Alice's on-chain protocol after handshake
Co-authored-by: Tobin C. Harding <tobin@coblox.tech>
4 years ago
Lucas Soriano 58aa2b5a2b
Merge pull request #23 from comit-network/remove-re-export
Do not re-export curve25519_dalek
4 years ago
Tobin C. Harding cbccc282ef Send Message2 from Bob to Alice
In order for Alice to complete the handshake she needs to transition to state 3,
for this she needs message 2 from Bob.

Send `bob::Message2` to Alice and transition to `State3` - completing the
handshake.
4 years ago
Lucas Soriano del Pino 0dd01c3a3b Do not re-export curve25519_dalek
Anything that needs to be re-exported by this crate from
`curve25519_dalek` can be re-exported from the `monero` module. In
fact, the `Scalar` type was already being re-exported.
4 years ago
Lucas Soriano del Pino cea1af1e1a Take bitcoin_tx_lock_timeout as argument to action generators 4 years ago
Lucas Soriano del Pino 1d21ae7e7a Use pin_mut! instead of futures::pin_mut! 4 years ago
Lucas Soriano del Pino aa2a20916e Include Bob being inactive as a reason for failure 4 years ago
Lucas Soriano del Pino 41e8c7283c Verify Bob's redeem encsig as Alice
Not doing so means that receiving an invalid encrypted signature from
Bob would make the generator produce a `RedeemBtc` action that should
not be accepted by the node (since Bob's signature would be invalid
after decrypting his encrypted signature).

It's better to fail early and let the user know what went wrong,
rather than let them hit an incomprehensible error when using their
wallet.
4 years ago
Lucas Soriano del Pino def3399d1c Use while instead of loop 4 years ago
Lucas Soriano del Pino c86a82b315 Rename action_generator_alice to action_generator 4 years ago
Lucas Soriano del Pino e84c56378c Test that both parties refund if Alice does not redeem
Also:

- Move generator functions to `alice` and `bob` modules. This makes
using `tracing` a lot easier, since the context of the file name let's
us differentiate between Alice's and Bob's generator logs more
clearly.
- Accept 0 confirmations when watching for the Monero lock
transaction. This should eventually be configured by the application,
but in the tests it's making things unexpectedly slower.
4 years ago
rishflab ec71f98252 Revert re-imports to qualified paths 4 years ago
rishflab fea6b29da9 Test monero amount serialisation 4 years ago
rishflab 28ffe063b7 Remove stale comment 4 years ago
Franck Royer 82b092d86e Use consensus encoding for monero private key
Using consensus encoding future proof the library by using a commonly
accepted de/serialization format.
4 years ago
Franck Royer 9ea708b2a5 Remove custom implementation of bitcoin amount serde
This is unnecessary as rust-bitcoin provides it.
4 years ago
rishflab c781ee949d Move storage into application crate 4 years ago
Philipp Hoenisch 17b32fed90
Moving tor into swap 4 years ago
rishflab a29786e175 Use external serialisation implementation 4 years ago
rishflab 62bc3c0432 Fix rebase conflicts 4 years ago
rishflab e3b68a3864 Improve database type safety
The database is now bound to a type eg. alice::State or bob::State.
The caller cannot expect to retrieve a type that is different to
the type that was stored.
4 years ago
rishflab 8eda051087 Remove redundant serialisation implementation
ECDSAfun's serialisation implementation was already imported
making the custom implementation redundant

Remove remnants of stale comment

Remove redundant conversion

Rename params to be consistent
4 years ago
Tobin C. Harding ade0e08db6 Merge branch 'master' into on-chain-protocol 4 years ago
Tobin C. Harding f8adf6d7e0 Merge branch 'on-chain-protocol' of github.com:comit-network/xmr-btc-swap into on-chain-protocol 4 years ago
Tobin C. Harding eed5e8e9a4 Move monero serde code to lib 4 years ago
Tobin C. Harding 0f17ec076c Add message1 4 years ago
Lucas Soriano del Pino 5395303a99 Test on-chain protocol happy path 4 years ago
Tobin C. Harding a0987ee2b8 Use upstream serder for dleq Proof 4 years ago
Tobin C. Harding ad0d8d5713 Emit message0 out of NB (both parties) 4 years ago
Tobin C. Harding ad0d563d93 Use Normal secp256k1::Point 4 years ago
Tobin C. Harding 7dffe4cf5f Implement Clone on states 4 years ago
Tobin C. Harding 2a07113074 Fix buld after merge of db branch 4 years ago
Tobin C. Harding 3e0b40c248 Merge branch 'db' into on-chain-protocol 4 years ago
Philipp Hoenisch ae1ea08bb2
Make it work on CI 4 years ago
Philipp Hoenisch e1d8a1c39b
PR feedback integrated 4 years ago