JoinMarket-Org / joinmarket-clientserver

Bitcoin CoinJoin implementation with incentive structure to convince people to take part
GNU General Public License v3.0
713 stars 175 forks source link

Stopgap: list of directory nodes #1445

Open AdamISZ opened 1 year ago

AdamISZ commented 1 year ago

Our current defaults are here.

Here is a newly proposed one: ylegp63psfqh3zk2huckf2xth6dxvh2z364ykjfmvsoze6tkfjceq7qd.onion:5222

We could add more to this page over time.

"Stopgap": because, the only realistic solution I think, over time, is some kind of gossip of directory nodes done dynamically, via something like seed directory nodes. There is a lot to discuss about that idea, and nothing has been coded yet. Hence as a stopgap, barring regularly re-releasing the software every week or something, we can perhaps just list possible directory nodes here. The idea is that they don't need trust, they are very lightweight, and they don't hold funds nor user information.

AdamISZ commented 1 year ago

It's worth mentioning something here: users want access to all counterparties. This is why we've always had a focus on "connect to every message channel, redundantly".

In contrast, "well let's just connect to some random set out of a long list", as in a gossip network, is harder to fit into our model. You want to see everyone's messages, not just "be informed of a global state update" (as in e.g. bitcoin, where gossip can make a lot more sense; you only need a few, or even one node, to tell you about a valid state update).

CohibAA commented 1 year ago

Here is another new directory node for consideration: wkd3kd73ze62sqhlj2ebwe6fxqvshw5sya6nkvrgcweegt7ljhuspaid.onion:5222 plq5jw5hqke6werrc5duvgwbuczrg4mphlqsqbzmdfwxwkm2ncdzxeqd.onion

I'll be using it to troubleshoot https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1435

edit: The original troubleshooting node server is currently down. It has been replaced with plq5jw5hqke6werrc5duvgwbuczrg4mphlqsqbzmdfwxwkm2ncdzxeqd.onion:5222 which should be a "permanent" node.

AdamISZ commented 1 year ago

Here is another new directory node for consideration: wkd3kd73ze62sqhlj2ebwe6fxqvshw5sya6nkvrgcweegt7ljhuspaid.onion:5222

I'll be using it to troubleshoot #1435

Thanks!

Grov-r commented 10 months ago

Is there a limit to the number of directories you can add? Added these two alternates (yleg, wkd3) after the original 3,, and on startup, it only tries to connect to 3 of them based on the logs.

2023-10-19 22:38:02,430 [MainThread ] [INFO ] Trying to connect to node: bqlpq6ak24mwvuixixitift4yu42nxchlilrcqwk2ugn45tdclg42qid.onion:5222 2023-10-19 22:38:02,446 [MainThread ] [INFO ] Trying to connect to node: g3hv4uynnmynqqq2mchf3fcm3yd46kfzmcdogejuckgwknwyq5ya6iad.onion:5222 2023-10-19 22:38:02,449 [MainThread ] [INFO ] Trying to connect to node: 3kxw6lf5vf6y26emzwgibzhrzhmhqiw6ekrek3nqfjjmhwznb2moonad.onion:5222 2023-10-19 22:38:28,596 [MainThread ] [INFO ] Updating status to connected for peer 3kxw6lf5vf6y26emzwgibzhrzhmhqiw6ekrek3nqfjjmhwznb2moonad.onion:5222. 2023-10-19 22:38:28,604 [MainThread ] [INFO ] We, NOT-SERVING-ONION, are calling the handshake callback as client. 2023-10-19 22:38:28,606 [MainThread ] [INFO ] Sending this handshake: {"app-name": "joinmarket", "directory": false, "location-string": "NOT-SERVING-ONION", "proto-ver": 5, "features": {}, "nick": "J52psgw98cxvaRaX", "network": "mainnet"} to peer 3kxw6lf5vf6y26emzwgibzhrzhmhqiw6ekrek3nqfjjmhwznb2moonad.onion:5222 2023-10-19 22:38:40,224 [MainThread ] [INFO ] Updating status to connected for peer g3hv4uynnmynqqq2mchf3fcm3yd46kfzmcdogejuckgwknwyq5ya6iad.onion:5222. 2023-10-19 22:38:40,237 [MainThread ] [INFO ] We, NOT-SERVING-ONION, are calling the handshake callback as client. 2023-10-19 22:38:40,238 [MainThread ] [INFO ] Sending this handshake: {"app-name": "joinmarket", "directory": false, "location-string": "NOT-SERVING-ONION", "proto-ver": 5, "features": {}, "nick": "J52psgw98cxvaRaX", "network": "mainnet"} to peer g3hv4uynnmynqqq2mchf3fcm3yd46kfzmcdogejuckgwknwyq5ya6iad.onion:5222 2023-10-19 22:38:40,299 [MainThread ] [DEBUG] We got a disconnect event: g3hv4uynnmynqqq2mchf3fcm3yd46kfzmcdogejuckgwknwyq5ya6iad.onion:5222

CohibAA commented 10 months ago

Is there a limit to the number of directories you can add? Added these two alternates (yleg, wkd3) after the original 3,, and on startup, it only tries to connect to 3 of them based on the logs.

I don't believe so, I have several in my configs that all seem to at least attempt to connect. Maybe double check the formatting, I remember having a similar problem and was either missing a comma or port number iirc.

Note, I've edited my comment above due to the wkd3 node being down currently (not related to the issues here).

roshii commented 9 months ago

new node to consider: odpwaf67rs5226uabcamvypg3y4bngzmfk7255flcdodesqhsvkptaid.onion:5222

kristapsk commented 4 months ago

the only realistic solution I think, over time, is some kind of gossip of directory nodes done dynamically, via something like seed directory nodes. There is a lot to discuss about that idea, and nothing has been coded yet.

I think with recent news regarding coinjoins, we should prioritize this and start discussing solutions.

roshii commented 3 months ago

I think with recent news regarding coinjoins, we should prioritize this and start discussing solutions.

We may want to use directory nodes to gossip active directory nodes as follows.

  1. When DN sends handshake to client it sends a list of known active directory nodes to client (the list would be empty when DN is just started)
  2. If client if then aware of new active directory nodes or known inactive directory nodes, it replies to DN with a list of DN to be added (the ones he his connected to) or removed (the ones he his failing to connect to).

We could maybe think of some sort of a DN connectivity score, starting at 0, slowly increasing with time, and decreasing on each failed connection attempt. Client could maintain their local score, and DN could average scores received from various clients. This should allow highly available/rarely failing DN to be prioritized over others.

theborakompanioni commented 3 months ago

Jam docker standalone currently sets (https://github.com/joinmarket-webui/jam-docker/blob/6bb93e1d362659655ba3bf91231d2d4aae32cb6f/standalone/default.cfg#L83):

g3hv, 3kxw and bqlp are taken from the current defaults. wkd3 and ylegp have been added based on the suggestions here.

Should

be added as well? What do you think?

Also, which ones to remove? wkd3 @CohibAA ? Kind of do not want to remove the defaults, even when they are not working reliably. It is quite a burden to maintain the list manually.

roshii commented 3 months ago

What do you think?

I'd say odpwa can be added. It has something like 95% uptime, and except for maintenance, I do not plan at taking service down in the near future.