1008: Upgrade libp2p and stabilized the version r=delta1 a=lescuer97

This is an upgrade for libp2p, I did a previous PR but got mixed up with rebases

Co-authored-by: leonardo <leoescuer@protonmail.com>
Co-authored-by: Leonardo Escuer <47948594+lescuer97@users.noreply.github.com>
Co-authored-by: Byron Hambly <bhambly@blockstream.com>
pull/1103/head
bors[bot] 2 years ago committed by GitHub
commit 0d794a13d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,9 +4,9 @@ on:
pull_request: # Need to run on pull-requests, otherwise PRs from forks don't run
push:
branches:
- 'staging' # Bors uses this branch
- 'trying' # Bors uses this branch
- 'master' # Always build head of master for the badge in the README
- "staging" # Bors uses this branch
- "trying" # Bors uses this branch
- "master" # Always build head of master for the badge in the README
jobs:
static_analysis:
@ -40,7 +40,6 @@ jobs:
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v3.0.2
@ -71,7 +70,7 @@ jobs:
test:
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
@ -92,7 +91,8 @@ jobs:
docker_tests:
strategy:
matrix:
test_name: [
test_name:
[
happy_path,
happy_path_restart_bob_after_xmr_locked,
happy_path_restart_bob_before_xmr_locked,
@ -105,11 +105,10 @@ jobs:
alice_refunds_after_restart_bob_refunded,
ensure_same_swap_id,
concurrent_bobs_before_xmr_lock_proof_sent,
alice_manually_redeems_after_enc_sig_learned
]
alice_manually_redeems_after_enc_sig_learned,
]
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3.0.2

@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
version:
description: 'The new version in X.Y.Z format.'
description: "The new version in X.Y.Z format."
required: true
jobs:

@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Adjust quote based on Bitcoin balance.
If the max_buy_btc in the ASB config is higher than the available balance to trade, it will return the max available balance discounting the Monero locking fees. In the case the balance is lower than the min_buy_btc config it will return 0 to the CLI. If the ASB returns a quote of 0 the CLI will not allow you continue with a trade.
- Reduce required confirmations for Bitcoin transactions from 2 to 1
- Update from monero v17.2.0 to monero v17.3.0
- Both the ASB and CLI now support the [Identify](https://github.com/libp2p/specs/blob/master/identify/README.md) protocol. This makes its version and network (testnet/mainnet) avaliable to others
- Display minimum BTC deposit required to cover the minimum quantity plus fee in the Swap CLI

420
Cargo.lock generated

@ -49,11 +49,20 @@ version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98"
dependencies = [
"getrandom 0.2.2",
"getrandom 0.2.6",
"once_cell",
"version_check",
]
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "ansi_term"
version = "0.11.0"
@ -187,7 +196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
dependencies = [
"futures-core",
"getrandom 0.2.2",
"getrandom 0.2.6",
"instant",
"pin-project-lite 0.2.9",
"rand 0.8.3",
@ -376,12 +385,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "blake2"
version = "0.9.1"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4"
checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174"
dependencies = [
"crypto-mac 0.8.0",
"digest",
"digest 0.9.0",
"opaque-debug",
]
@ -395,6 +404,15 @@ dependencies = [
"generic-array",
]
[[package]]
name = "block-buffer"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
dependencies = [
"generic-array",
]
[[package]]
name = "block-padding"
version = "0.2.1"
@ -485,21 +503,21 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chacha20"
version = "0.7.1"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fee7ad89dc1128635074c268ee661f90c3f7e83d9fd12910608c36b47d6c3412"
checksum = "f08493fa7707effc63254c66c6ea908675912493cd67952eda23c09fae2610b1"
dependencies = [
"cfg-if 1.0.0",
"cipher",
"cpufeatures 0.1.4",
"cpufeatures 0.2.1",
"zeroize",
]
[[package]]
name = "chacha20poly1305"
version = "0.8.0"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1580317203210c517b6d44794abfbe600698276db18127e37ad3e69bf5e848e5"
checksum = "b6547abe025f4027edacd9edaa357aded014eecec42a5070d9b885c3c334aba2"
dependencies = [
"aead",
"chacha20",
@ -763,6 +781,16 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "crypto-common"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "crypto-mac"
version = "0.8.0"
@ -809,7 +837,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "639891fde0dbea823fc3d798a0fdf9d2f9440a42d64a78ab3488b0ca025117b3"
dependencies = [
"byteorder",
"digest",
"digest 0.9.0",
"rand_core 0.5.1",
"subtle",
"zeroize",
@ -822,7 +850,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "574d8b2cd0bae5434fd50d53280f8299d95557a978686555880aaf5b8f4f81e9"
dependencies = [
"byteorder",
"digest",
"digest 0.9.0",
"rand_core 0.6.2",
"serde",
"subtle-ng",
@ -914,6 +942,16 @@ dependencies = [
"generic-array",
]
[[package]]
name = "digest"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer 0.10.2",
"crypto-common",
]
[[package]]
name = "directories-next"
version = "2.0.0"
@ -943,9 +981,9 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
[[package]]
name = "dtoa"
version = "0.4.8"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
checksum = "5caaa75cbd2b960ff1e5392d2cfb1f44717fffe12fc1f32b7b5d1267f99732a6"
[[package]]
name = "ecdsa_fun"
@ -978,7 +1016,7 @@ dependencies = [
"ed25519",
"rand 0.7.3",
"serde",
"sha2",
"sha2 0.9.8",
"zeroize",
]
@ -1089,9 +1127,9 @@ dependencies = [
[[package]]
name = "fixedbitset"
version = "0.2.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e"
[[package]]
name = "flate2"
@ -1211,13 +1249,13 @@ dependencies = [
[[package]]
name = "futures-rustls"
version = "0.21.1"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a1387e07917c711fb4ee4f48ea0adb04a3c9739e53ef85bf43ae1edc2937a8b"
checksum = "e01fe9932a224b72b45336d96040aa86386d674a31d0af27d800ea7bc8ca97fe"
dependencies = [
"futures-io",
"rustls 0.19.0",
"webpki 0.21.4",
"rustls 0.20.2",
"webpki 0.22.0",
]
[[package]]
@ -1297,9 +1335,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.2"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8"
checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
dependencies = [
"cfg-if 1.0.0",
"libc",
@ -1427,7 +1465,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840"
dependencies = [
"crypto-mac 0.8.0",
"digest",
"digest 0.9.0",
]
[[package]]
@ -1437,7 +1475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15"
dependencies = [
"crypto-mac 0.10.0",
"digest",
"digest 0.9.0",
]
[[package]]
@ -1447,18 +1485,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
dependencies = [
"crypto-mac 0.11.1",
"digest",
]
[[package]]
name = "hmac-drbg"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
dependencies = [
"digest",
"generic-array",
"hmac 0.8.1",
"digest 0.9.0",
]
[[package]]
@ -1561,25 +1588,14 @@ dependencies = [
[[package]]
name = "if-addrs"
version = "0.6.5"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28538916eb3f3976311f5dfbe67b5362d0add1293d0a9cad17debf86f8e3aa48"
checksum = "cbc0fa01ffc752e9dbc72818cdb072cd028b86be5e09dd04c5a643704fe101a9"
dependencies = [
"if-addrs-sys",
"libc",
"winapi 0.3.9",
]
[[package]]
name = "if-addrs-sys"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de74b9dd780476e837e5eb5ab7c88b49ed304126e412030a0adba99c8efe79ea"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "image"
version = "0.23.14"
@ -1606,9 +1622,9 @@ dependencies = [
[[package]]
name = "instant"
version = "0.1.9"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if 1.0.0",
]
@ -1755,9 +1771,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.119"
version = "0.2.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"
[[package]]
name = "libgit2-sys"
@ -1773,12 +1789,16 @@ dependencies = [
[[package]]
name = "libp2p"
version = "0.40.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f592f1b06f12a5686a5de7be9f289a161c96d5f89f12b04b7d14cf3d61d7381"
dependencies = [
"atomic",
"bytes",
"futures",
"futures-timer",
"getrandom 0.2.6",
"instant",
"lazy_static",
"libp2p-core",
"libp2p-dns",
@ -1797,14 +1817,15 @@ dependencies = [
"multiaddr",
"parking_lot 0.11.2",
"pin-project 1.0.5",
"rand 0.7.3",
"smallvec",
"wasm-timer",
]
[[package]]
name = "libp2p-core"
version = "0.30.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c4178afd65bf7c56744b4e0a6cfa6e9b694fe666efba596e03a46f79454d8d"
dependencies = [
"asn1_der",
"bs58",
@ -1813,8 +1834,8 @@ dependencies = [
"fnv",
"futures",
"futures-timer",
"instant",
"lazy_static",
"libsecp256k1",
"log",
"multiaddr",
"multihash",
@ -1823,10 +1844,10 @@ dependencies = [
"pin-project 1.0.5",
"prost",
"prost-build",
"rand 0.7.3",
"rand 0.8.3",
"ring",
"rw-stream-sink",
"sha2",
"sha2 0.10.2",
"smallvec",
"thiserror",
"unsigned-varint",
@ -1836,8 +1857,9 @@ dependencies = [
[[package]]
name = "libp2p-dns"
version = "0.30.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39d4a2e7efe62c738833b6be6c0f158cf7ffccba462320f4b3bebe43e1050e7b"
dependencies = [
"futures",
"libp2p-core",
@ -1848,24 +1870,26 @@ dependencies = [
[[package]]
name = "libp2p-identify"
version = "0.31.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae5d84b4e57cb66abb9dd28ea36f69620816e004a7479c0ad76f45002820f99b"
dependencies = [
"futures",
"futures-timer",
"libp2p-core",
"libp2p-swarm",
"log",
"lru 0.6.6",
"lru",
"prost",
"prost-build",
"smallvec",
"wasm-timer",
]
[[package]]
name = "libp2p-metrics"
version = "0.1.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0791098ddec13b0c2f9ed37a29175f7c712ce8804ebaba7cbd8bddbc83120190"
dependencies = [
"libp2p-core",
"libp2p-identify",
@ -1876,8 +1900,9 @@ dependencies = [
[[package]]
name = "libp2p-mplex"
version = "0.30.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49d470ee73a74340e429fa278469ed274a648738e3fb8de2e8d113482441732f"
dependencies = [
"asynchronous-codec",
"bytes",
@ -1893,8 +1918,9 @@ dependencies = [
[[package]]
name = "libp2p-noise"
version = "0.33.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3676dc2df10a7f4f6a80fbeaf2ce4168a0ca6567273e3105b21fa4c877be9017"
dependencies = [
"bytes",
"curve25519-dalek",
@ -1905,7 +1931,7 @@ dependencies = [
"prost",
"prost-build",
"rand 0.8.3",
"sha2",
"sha2 0.10.2",
"snow",
"static_assertions",
"x25519-dalek",
@ -1914,76 +1940,83 @@ dependencies = [
[[package]]
name = "libp2p-ping"
version = "0.31.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d384b30135f122a59bf0d186647ad307da0878a9563232cb382d9dbded6a393e"
dependencies = [
"futures",
"futures-timer",
"instant",
"libp2p-core",
"libp2p-swarm",
"log",
"rand 0.7.3",
"void",
"wasm-timer",
]
[[package]]
name = "libp2p-rendezvous"
version = "0.1.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec166a822f4167929c8e1673c05106f7c86a42b8e9e917b569e1d86f06b9d8b5"
dependencies = [
"asynchronous-codec",
"bimap",
"futures",
"futures-timer",
"instant",
"libp2p-core",
"libp2p-swarm",
"log",
"prost",
"prost-build",
"rand 0.8.3",
"sha2",
"sha2 0.10.2",
"thiserror",
"unsigned-varint",
"void",
"wasm-timer",
]
[[package]]
name = "libp2p-request-response"
version = "0.13.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36194499f5b03d66d56badbed430d93bf1bfd9cec80311e03280de130fbe3d5e"
dependencies = [
"async-trait",
"bytes",
"futures",
"instant",
"libp2p-core",
"libp2p-swarm",
"log",
"lru 0.7.0",
"rand 0.7.3",
"smallvec",
"unsigned-varint",
"wasm-timer",
]
[[package]]
name = "libp2p-swarm"
version = "0.31.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db8ae0811c7a05b6edc6684eb5cc69b055cbb715ad780e6b97872d90308503c1"
dependencies = [
"either",
"futures",
"futures-timer",
"instant",
"libp2p-core",
"log",
"rand 0.7.3",
"smallvec",
"void",
"wasm-timer",
]
[[package]]
name = "libp2p-swarm-derive"
version = "0.25.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33b4d0acd47739fe0b570728d8d11bbb535050d84c0cf05d6477a4891fceae10"
dependencies = [
"quote",
"syn",
@ -1991,8 +2024,9 @@ dependencies = [
[[package]]
name = "libp2p-tcp"
version = "0.30.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52042e8796c5b58d0415bceb1bcb1bcca28b222339978e52b1a0305800bb5199"
dependencies = [
"futures",
"futures-timer",
@ -2007,8 +2041,9 @@ dependencies = [
[[package]]
name = "libp2p-websocket"
version = "0.31.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83d788da0ab952632d6ead2486baf38a98db92907d4bc5d0f324af0d0fab803d"
dependencies = [
"either",
"futures",
@ -2019,13 +2054,14 @@ dependencies = [
"rw-stream-sink",
"soketto",
"url",
"webpki-roots 0.21.0",
"webpki-roots 0.22.2",
]
[[package]]
name = "libp2p-yamux"
version = "0.34.0"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053d13ce0670d29f9c5a974cf371e6cc4d2d864da1c72bf6870ac5d5e45e2036"
dependencies = [
"futures",
"libp2p-core",
@ -2034,54 +2070,6 @@ dependencies = [
"yamux",
]
[[package]]
name = "libsecp256k1"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73"
dependencies = [
"arrayref",
"base64 0.12.3",
"digest",
"hmac-drbg",
"libsecp256k1-core",
"libsecp256k1-gen-ecmult",
"libsecp256k1-gen-genmult",
"rand 0.7.3",
"serde",
"sha2",
"typenum",
]
[[package]]
name = "libsecp256k1-core"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80"
dependencies = [
"crunchy",
"digest",
"subtle",
]
[[package]]
name = "libsecp256k1-gen-ecmult"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3"
dependencies = [
"libsecp256k1-core",
]
[[package]]
name = "libsecp256k1-gen-genmult"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d"
dependencies = [
"libsecp256k1-core",
]
[[package]]
name = "libsqlite3-sys"
version = "0.22.2"
@ -2131,18 +2119,9 @@ dependencies = [
[[package]]
name = "lru"
version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91"
dependencies = [
"hashbrown",
]
[[package]]
name = "lru"
version = "0.7.0"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c748cfe47cb8da225c37595b3108bea1c198c84aaae8ea0ba76d01dda9fc803"
checksum = "32613e41de4c47ab04970c348ca7ae7382cf116625755af070b008a15516a889"
dependencies = [
"hashbrown",
]
@ -2188,9 +2167,9 @@ checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
[[package]]
name = "memchr"
version = "2.3.4"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "memoffset"
@ -2354,10 +2333,10 @@ version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "752a61cd890ff691b4411423d23816d5866dd5621e4d1c5687a53b94b5a979d8"
dependencies = [
"digest",
"digest 0.9.0",
"generic-array",
"multihash-derive",
"sha2",
"sha2 0.9.8",
"unsigned-varint",
]
@ -2383,8 +2362,9 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
name = "multistream-select"
version = "0.10.4"
source = "git+https://github.com/libp2p/rust-libp2p.git#6d3ab8a3debe8d69dcd004173999732f12d0da96"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "363a84be6453a70e63513660f4894ef815daf88e3356bffcda9ca27d810ce83b"
dependencies = [
"bytes",
"futures",
@ -2553,12 +2533,12 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "open-metrics-client"
version = "0.12.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7337d80c23c2d8b1349563981bc4fb531220733743ba8115454a67b181173f0d"
checksum = "f85842b073145726190373213c63f852020fb884c841a3a1f390637267a2fb8c"
dependencies = [
"dtoa",
"itoa 0.4.7",
"itoa 1.0.1",
"open-metrics-client-derive-text-encode",
"owning_ref",
]
@ -2663,9 +2643,9 @@ dependencies = [
[[package]]
name = "petgraph"
version = "0.5.1"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7"
checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"
dependencies = [
"fixedbitset",
"indexmap",
@ -2844,9 +2824,9 @@ dependencies = [
[[package]]
name = "prost"
version = "0.8.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de5e2533f59d08fcf364fd374ebda0692a70bd6d7e66ef97f306f45c6c5d8020"
checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001"
dependencies = [
"bytes",
"prost-derive",
@ -2854,27 +2834,29 @@ dependencies = [
[[package]]
name = "prost-build"
version = "0.8.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "355f634b43cdd80724ee7848f95770e7e70eefa6dcf14fea676216573b8fd603"
checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
dependencies = [
"bytes",
"heck 0.3.2",
"itertools",
"lazy_static",
"log",
"multimap",
"petgraph",
"prost",
"prost-types",
"regex",
"tempfile",
"which",
]
[[package]]
name = "prost-derive"
version = "0.8.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "600d2f334aa05acb02a755e217ef1ab6dea4d51b58b7846588b747edec04efba"
checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe"
dependencies = [
"anyhow",
"itertools",
@ -2885,9 +2867,9 @@ dependencies = [
[[package]]
name = "prost-types"
version = "0.8.0"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "603bbd6394701d13f3f25aada59c7de9d35a6a5887cfc156181234a44002771b"
checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a"
dependencies = [
"bytes",
"prost",
@ -3052,7 +3034,7 @@ version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
dependencies = [
"getrandom 0.2.2",
"getrandom 0.2.6",
]
[[package]]
@ -3168,16 +3150,18 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
dependencies = [
"getrandom 0.2.2",
"getrandom 0.2.6",
"redox_syscall",
]
[[package]]
name = "regex"
version = "1.4.5"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
@ -3193,9 +3177,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
version = "0.6.23"
version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "remove_dir_all"
@ -3469,7 +3453,7 @@ name = "secp256kfun"
version = "0.6.2-alpha.0"
source = "git+https://github.com/LLFourn/secp256kfun#84134daf34845434d7f38cdae7ffc31730a3b1e9"
dependencies = [
"digest",
"digest 0.9.0",
"rand_core 0.6.2",
"secp256k1",
"secp256kfun_parity_backend",
@ -3619,10 +3603,10 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f"
dependencies = [
"block-buffer",
"block-buffer 0.9.0",
"cfg-if 1.0.0",
"cpuid-bool",
"digest",
"digest 0.9.0",
"opaque-debug",
]
@ -3632,21 +3616,32 @@ version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa"
dependencies = [
"block-buffer",
"block-buffer 0.9.0",
"cfg-if 1.0.0",
"cpufeatures 0.2.1",
"digest",
"digest 0.9.0",
"opaque-debug",
]
[[package]]
name = "sha2"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676"
dependencies = [
"cfg-if 1.0.0",
"cpufeatures 0.2.1",
"digest 0.10.3",
]
[[package]]
name = "sha3"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
dependencies = [
"block-buffer",
"digest",
"block-buffer 0.9.0",
"digest 0.9.0",
"keccak",
"opaque-debug",
]
@ -3666,7 +3661,7 @@ version = "0.3.2-alpha.0"
source = "git+https://github.com/LLFourn/secp256kfun#84134daf34845434d7f38cdae7ffc31730a3b1e9"
dependencies = [
"curve25519-dalek-ng",
"digest",
"digest 0.9.0",
"generic-array",
"rand_core 0.6.2",
"secp256kfun",
@ -3750,7 +3745,7 @@ dependencies = [
"rand_core 0.6.2",
"ring",
"rustc_version",
"sha2",
"sha2 0.9.8",
"subtle",
"x25519-dalek",
]
@ -3873,7 +3868,7 @@ dependencies = [
"percent-encoding",
"rustls 0.19.0",
"serde",
"sha2",
"sha2 0.9.8",
"smallvec",
"sqlformat",
"sqlx-rt",
@ -3901,7 +3896,7 @@ dependencies = [
"quote",
"serde",
"serde_json",
"sha2",
"sha2 0.9.8",
"sqlx-core",
"sqlx-rt",
"syn",
@ -4076,7 +4071,7 @@ dependencies = [
"serde_cbor",
"serde_json",
"serde_with",
"sha2",
"sha2 0.9.8",
"sigma_fun",
"spectral",
"sqlx",
@ -4164,7 +4159,7 @@ dependencies = [
"rand 0.7.3",
"serde",
"serde_json",
"sha2",
"sha2 0.9.8",
]
[[package]]
@ -4179,7 +4174,7 @@ dependencies = [
"rand 0.8.3",
"serde",
"serde_json",
"sha2",
"sha2 0.9.8",
]
[[package]]
@ -4423,7 +4418,7 @@ dependencies = [
"hex",
"hmac 0.11.0",
"rand 0.7.3",
"sha2",
"sha2 0.9.8",
"sha3",
"tokio",
]
@ -4625,9 +4620,9 @@ dependencies = [
[[package]]
name = "typenum"
version = "1.13.0"
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "ucd-trie"
@ -4707,9 +4702,9 @@ dependencies = [
[[package]]
name = "unsigned-varint"
version = "0.7.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f8d425fafb8cd76bc3f22aace4af471d3156301d7508f2107e98fbeae10bc7f"
checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836"
dependencies = [
"asynchronous-codec",
"bytes",
@ -4748,7 +4743,7 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
dependencies = [
"getrandom 0.2.2",
"getrandom 0.2.6",
"serde",
]
@ -4895,21 +4890,6 @@ version = "0.2.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d6f8ec44822dd71f5f221a5847fb34acd9060535c1211b70a05844c0f6383b1"
[[package]]
name = "wasm-timer"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f"
dependencies = [
"futures",
"js-sys",
"parking_lot 0.11.2",
"pin-utils",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
]
[[package]]
name = "web-sys"
version = "0.3.48"
@ -5120,14 +5100,14 @@ dependencies = [
[[package]]
name = "yamux"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7d9028f208dd5e63c614be69f115c1b53cacc1111437d4c765185856666c107"
checksum = "0c0608f53c1dc0bad505d03a34bbd49fbf2ad7b51eb036123e896365532745a1"
dependencies = [
"futures",
"log",
"nohash-hasher",
"parking_lot 0.11.2",
"parking_lot 0.12.0",
"rand 0.8.3",
"static_assertions",
]

@ -2,13 +2,12 @@
"$schema": "https://dprint.dev/schemas/v0.json",
"projectType": "openSource",
"incremental": true,
"markdown": {
},
"markdown": {},
"rustfmt": {
"edition": 2018,
"edition": 2021,
"condense_wildcard_suffixes": true,
"format_macro_matchers": true,
"imports_granularity" : "Module",
"imports_granularity": "Module",
"use_field_init_shorthand": true,
"format_code_in_doc_comments": true,
"normalize_comments": true,
@ -16,7 +15,7 @@
"overflow_delimited_expr": true
},
"includes": ["**/*.{md}", "**/*.{toml}", "**/*.{rs}"],
"excludes": [ "target/" ],
"excludes": ["target/"],
"plugins": [
"https://plugins.dprint.dev/markdown-0.13.1.wasm",
"https://github.com/thomaseizinger/dprint-plugin-cargo-toml/releases/download/0.1.0/cargo-toml-0.1.0.wasm",

@ -31,7 +31,7 @@ ed25519-dalek = "1"
futures = { version = "0.3", default-features = false }
hex = "0.4"
itertools = "0.10"
libp2p = { git = "https://github.com/libp2p/rust-libp2p.git", default-features = false, features = [ "tcp-tokio", "yamux", "mplex", "dns-tokio", "noise", "request-response", "websocket", "ping", "rendezvous", "identify" ] }
libp2p = { version = "0.42.2", default-features = false, features = [ "tcp-tokio", "yamux", "mplex", "dns-tokio", "noise", "request-response", "websocket", "ping", "rendezvous", "identify" ] }
monero = { version = "0.12", features = [ "serde_support" ] }
monero-rpc = { path = "../monero-rpc" }
pem = "1.1"

@ -16,9 +16,10 @@ use libp2p::dns::TokioDnsConfig;
use libp2p::identify::{Identify, IdentifyConfig, IdentifyEvent};
use libp2p::ping::{Ping, PingConfig, PingEvent};
use libp2p::request_response::{RequestId, ResponseChannel};
use libp2p::swarm::dial_opts::PeerCondition;
use libp2p::swarm::{
DialPeerCondition, IntoProtocolsHandler, NetworkBehaviour, NetworkBehaviourAction,
PollParameters, ProtocolsHandler,
IntoProtocolsHandler, NetworkBehaviour, NetworkBehaviourAction, PollParameters,
ProtocolsHandler,
};
use libp2p::tcp::TokioTcpConfig;
use libp2p::websocket::WsConfig;
@ -107,7 +108,7 @@ pub mod behaviour {
where
LR: LatestRate + Send + 'static,
{
pub rendezvous: libp2p::swarm::toggle::Toggle<rendezous::Behaviour>,
pub rendezvous: libp2p::swarm::behaviour::toggle::Toggle<rendezous::Behaviour>,
pub quote: quote::Behaviour,
pub swap_setup: alice::Behaviour<LR>,
pub transfer_proof: transfer_proof::Behaviour,
@ -139,7 +140,7 @@ pub mod behaviour {
.with_agent_version(agentVersion);
Self {
rendezvous: libp2p::swarm::toggle::Toggle::from(rendezvous_params.map(
rendezvous: libp2p::swarm::behaviour::toggle::Toggle::from(rendezvous_params.map(
|(identity, rendezvous_peer_id, rendezvous_address, namespace)| {
rendezous::Behaviour::new(
identity,
@ -187,6 +188,7 @@ pub mod behaviour {
pub mod rendezous {
use super::*;
use libp2p::swarm::dial_opts::DialOpts;
use libp2p::swarm::DialError;
use std::pin::Pin;
@ -292,12 +294,14 @@ pub mod rendezous {
fn inject_dial_failure(
&mut self,
peer_id: &PeerId,
peer_id: Option<PeerId>,
_handler: Self::ProtocolsHandler,
_error: DialError,
_error: &DialError,
) {
if peer_id == &self.rendezvous_peer_id {
self.connection_status = ConnectionStatus::Disconnected;
if let Some(id) = peer_id {
if id == self.rendezvous_peer_id {
self.connection_status = ConnectionStatus::Disconnected;
}
}
}
@ -312,9 +316,11 @@ pub mod rendezous {
ConnectionStatus::Disconnected => {
self.connection_status = ConnectionStatus::Dialling;
return Poll::Ready(NetworkBehaviourAction::DialPeer {
peer_id: self.rendezvous_peer_id,
condition: DialPeerCondition::Disconnected,
return Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(self.rendezvous_peer_id)
.condition(PeerCondition::Disconnected)
.build(),
handler: Self::ProtocolsHandler::new(Duration::from_secs(30)),
});
}
@ -335,9 +341,10 @@ pub mod rendezous {
self.registration_status =
RegistrationStatus::RegisterOnNextConnection;
return Poll::Ready(NetworkBehaviourAction::DialPeer {
peer_id: self.rendezvous_peer_id,
condition: DialPeerCondition::Disconnected,
return Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(self.rendezvous_peer_id)
.condition(PeerCondition::Disconnected)
.build(),
handler: Self::ProtocolsHandler::new(Duration::from_secs(30)),
});
}

@ -9,6 +9,7 @@ use anyhow::{Context, Result};
use futures::future::{BoxFuture, OptionFuture};
use futures::{FutureExt, StreamExt};
use libp2p::request_response::{RequestId, ResponseChannel};
use libp2p::swarm::dial_opts::DialOpts;
use libp2p::swarm::SwarmEvent;
use libp2p::{PeerId, Swarm};
use std::collections::HashMap;
@ -81,7 +82,7 @@ impl EventLoop {
}
pub async fn run(mut self) {
match self.swarm.dial(&self.alice_peer_id) {
match self.swarm.dial(DialOpts::from(self.alice_peer_id)) {
Ok(()) => {}
Err(e) => {
tracing::error!("Failed to initiate dial to Alice: {}", e);
@ -167,12 +168,13 @@ impl EventLoop {
tracing::info!("Successfully closed connection to Alice");
return;
}
SwarmEvent::UnreachableAddr { peer_id, address, attempts_remaining, error } if peer_id == self.alice_peer_id && attempts_remaining == 0 => {
tracing::warn!(%address, "Failed to dial Alice: {}", error);
SwarmEvent::OutgoingConnectionError { peer_id, error } if matches!(peer_id, Some(alice_peer_id) if alice_peer_id == self.alice_peer_id) => {
tracing::warn!( "Failed to dial Alice: {}", error);
if let Some(duration) = self.swarm.behaviour_mut().redial.until_next_redial() {
tracing::info!("Next redial attempt in {}s", duration.as_secs());
}
}
_ => {}
}

@ -6,6 +6,7 @@ use futures::StreamExt;
use libp2p::multiaddr::Protocol;
use libp2p::ping::{Ping, PingConfig, PingEvent};
use libp2p::request_response::{RequestResponseEvent, RequestResponseMessage};
use libp2p::swarm::dial_opts::DialOpts;
use libp2p::swarm::SwarmEvent;
use libp2p::{identity, rendezvous, Multiaddr, PeerId, Swarm};
use serde::Serialize;
@ -42,8 +43,9 @@ pub async fn list_sellers(
.behaviour_mut()
.quote
.add_address(&rendezvous_node_peer_id, rendezvous_node_addr.clone());
swarm
.dial(&rendezvous_node_peer_id)
.dial(DialOpts::from(rendezvous_node_peer_id))
.context("Failed to dial rendezvous node")?;
let event_loop = EventLoop::new(
@ -147,7 +149,7 @@ impl EventLoop {
swarm_event = self.swarm.select_next_some() => {
match swarm_event {
SwarmEvent::ConnectionEstablished { peer_id, endpoint, .. } => {
if peer_id == self.rendezvous_peer_id{
if peer_id == self.rendezvous_peer_id {
tracing::info!(
"Connected to rendezvous point, discovering nodes in '{}' namespace ...",
self.namespace
@ -161,35 +163,41 @@ impl EventLoop {
);
} else {
let address = endpoint.get_remote_address();
tracing::debug!(%peer_id, %address, "Connection established to peer");
self.reachable_asb_address.insert(peer_id, address.clone());
}
}
SwarmEvent::UnreachableAddr { peer_id, error, address, .. } => {
if address == self.rendezvous_addr {
tracing::error!(
"Failed to connect to rendezvous point at {}: {}",
address,
error
);
// if the rendezvous node is unreachable we just stop
return Vec::new();
} else {
tracing::debug!(
"Failed to connect to peer at {}: {}",
address,
error
);
self.unreachable_asb_address.insert(peer_id, address.clone());
match self.asb_quote_status.entry(peer_id) {
Entry::Occupied(mut entry) => {
entry.insert(QuoteStatus::Received(Status::Unreachable));
},
_ => {
tracing::debug!(%peer_id, %error, "Connection error with unexpected peer")
SwarmEvent::OutgoingConnectionError { peer_id, error } => {
if let Some(peer_id) = peer_id {
if peer_id == self.rendezvous_peer_id {
tracing::error!(
%peer_id,
%self.rendezvous_addr,
"Failed to connect to rendezvous point: {}",
error
);
// if the rendezvous node is unreachable we just stop
return Vec::new();
} else {
tracing::error!(
%peer_id,
"Failed to connect to peer: {}",
error
);
self.unreachable_asb_address.insert(peer_id, Multiaddr::empty());
match self.asb_quote_status.entry(peer_id) {
Entry::Occupied(mut entry) => {
entry.insert(QuoteStatus::Received(Status::Unreachable));
},
_ => {
tracing::debug!(%peer_id, %error, "Connection error with unexpected peer");
}
}
}
} else {
tracing::debug!("Failed to connect (no peer id): {}", error);
}
}
SwarmEvent::Behaviour(OutEvent::Rendezvous(

@ -4,8 +4,9 @@ use backoff::ExponentialBackoff;
use futures::future::FutureExt;
use libp2p::core::connection::ConnectionId;
use libp2p::core::Multiaddr;
use libp2p::swarm::dial_opts::{DialOpts, PeerCondition};
use libp2p::swarm::protocols_handler::DummyProtocolsHandler;
use libp2p::swarm::{DialPeerCondition, NetworkBehaviour, NetworkBehaviourAction, PollParameters};
use libp2p::swarm::{NetworkBehaviour, NetworkBehaviourAction, PollParameters};
use libp2p::PeerId;
use std::pin::Pin;
use std::task::{Context, Poll};
@ -112,9 +113,10 @@ impl NetworkBehaviour for Behaviour {
self.sleep = Some(Box::pin(tokio::time::sleep(next_dial_in)));
Poll::Ready(NetworkBehaviourAction::DialPeer {
peer_id: self.peer,
condition: DialPeerCondition::Disconnected,
Poll::Ready(NetworkBehaviourAction::Dial {
opts: DialOpts::peer_id(self.peer)
.condition(PeerCondition::Disconnected)
.build(),
handler: Self::ProtocolsHandler::default(),
})
}

@ -129,8 +129,9 @@ where
<T as NetworkBehaviour>::OutEvent: Debug,
{
let addr_to_dial = other.external_addresses().next().unwrap().addr.clone();
let local_peer_id = *other.local_peer_id();
self.dial_addr(addr_to_dial.clone()).unwrap();
self.dial(addr_to_dial).unwrap();
let mut dialer_done = false;
let mut listener_done = false;
@ -144,8 +145,8 @@ where
SwarmEvent::ConnectionEstablished { .. } => {
dialer_done = true;
}
SwarmEvent::UnknownPeerUnreachableAddr { address, error } if address == addr_to_dial => {
panic!("Failed to dial address {}: {}", addr_to_dial, error)
SwarmEvent::OutgoingConnectionError { peer_id, error } if matches!(peer_id, Some(alice_peer_id) if alice_peer_id == local_peer_id) => {
panic!("Failed to dial address {}: {}", peer_id.unwrap(), error)
}
other => {
tracing::debug!("Ignoring {:?}", other);

@ -60,6 +60,28 @@ impl Transport for TorDialOnlyTransport {
fn address_translation(&self, _: &Multiaddr, _: &Multiaddr) -> Option<Multiaddr> {
None
}
fn dial_as_listener(self, addr: Multiaddr) -> Result<Self::Dial, TransportError<Self::Error>> {
let address = TorCompatibleAddress::from_multiaddr(Cow::Borrowed(&addr))?;
if address.is_certainly_not_reachable_via_tor_daemon() {
return Err(TransportError::MultiaddrNotSupported(addr));
}
let dial_future = async move {
tracing::debug!(address = %addr, "Establishing connection through Tor proxy");
let stream =
Socks5Stream::connect((Ipv4Addr::LOCALHOST, self.socks_port), address.to_string())
.await
.map_err(|e| io::Error::new(io::ErrorKind::ConnectionRefused, e))?;
tracing::debug!("Connection through Tor established");
Ok(TcpStream(stream.into_inner()))
};
Ok(dial_future.boxed())
}
}
/// Represents an address that is _compatible_ with Tor, i.e. can be resolved by

Loading…
Cancel
Save