05:46:34 there might be a relevant body of research on sybil attacks in p2p networks, like https://link.springer.com/chapter/10.1007/978-3-319-23829-6_14 07:14:57 Proof of work on asshole peers, I'm shooting in the dark here 07:15:31 But what if every time you detect an asshole peer, you perform X proof of work (determined by you), and broadcast the best hash to the network attached to their IP. 07:16:19 In aggregate, the most asshole-y peers will end up having high asshole ratings, due to random chance working out for the crowd 07:16:48 There's some room for people to perform work to attempt to bump nodes off the network of course, but it may be the start of an idea 11:50:02 Is it possible for me to create a huge amount of IPs, then simulate the behaviour of a bad peer for each IP and have you performing proof of work for those IPs? 11:55:36 That sounds like what Chris Grayling would do. 11:56:21 I think the point is to make the presumed asshole do it, rather than the one detecting it. 11:57:52 Embarrassingly had to google who this was, I’m so out of touch with politics 11:58:28 Oh I see, I thought the honest peer was meant to do the proof of work and send the IP of the bad peer with the proof of work 12:26:04 I think you are right actually, re-reading. 19:23:32 kenshamir: Of course. Arguably thats whats happening right now, and what we are trying to remedy 19:24:12 Though if you have a client-set default where you want to get X good peers, I think its not an issue 19:24:28 its a probabalistic thing 19:25:05 I considered having nodes send PoW in order to be peers, but that has issues 19:25:24 because highly connected nodes and stuff would be adversely affected 19:26:06 In my case, the work is only performed if/when a bad peer is detected, and the lowest hash broadcast if below a threshold 20:09:55 Oh I was not aware of the current state. Okay makes sense now, you are suggesting a reputation system that is better than the _current_ one 20:10:41 Yes, users need some way of knowing which peers are known bad network wide 20:11:42 My insight here is just that if we have everyone perform some small PoW when they have a bad peer, eventually high difficulty hashes will materialize 20:12:22 Obviously it's gameable in some ways, but it might be the start of an idea 20:13:11 Perhaps timestamps and expirations would alleviate some of that 20:15:52 Oh interesting, can you explain why high difficulty hashes would materialise eventually? 20:16:09 That is how proof of work works 20:16:25 Who is setting the difficulty? 20:17:22 If I see a bad peer, how would I know how much proof of work I should do, for example? 20:18:06 Any user can perform a user determined amount of hashes, and then broadcast the lowest hash (highest difficulty) to the network. You don't need to set a difficulty at all, but you can set a threshold below) above which you don't connect to peers 20:19:11 We can give a number in orders of magnitude for diff 20:19:28 'my client won't connect to people whose diff exceeds 7' 20:19:32 Okay I think I got it, so if I see a bad peer, I can perform as much proof of work I want 20:19:54 Yes 20:20:48 Okay makes sense, I’m still not sure that high difficulty hashes will eventually appear though, because as a node I would want to do the least amount of proof of work for the reputation system right? 20:35:46 I think this would solve it though. If you mandate that everyone has to provide a hash of X difficulty for bad peers. 20:36:14 We can't exactly mandate it 20:36:45 and the 'gaming' issues I was thinking about are bad actors providing false proofs against real nodes 20:37:01 Maybe not mandate, but as a node, I just won’t accept your “vote” if it’s below a certain difficulty 20:39:32 Oh I see, yeah that’s a realistic adversarial model. 20:39:51 yeah ken, that was the 'order of magnitude' thing 20:40:01 people can decide on their level of tolerance for bad nodes 20:40:26 Oh I see, sorry I’m a bit slow 20:40:30 Yeah makes sense 20:41:05 I have not done any research into reputation systems, was just curious about your idea 20:41:15 sure, I'm spitballing here 20:41:22 we actually have a working CPU-based PoW system 20:41:34 It would be a shame not to use it if its applicable 20:41:51 this sort of scheme wouldn't work at all under any system other than randomX, because FPGAs etc 20:42:04 Oh how difficult would it be to integrate? 20:42:39 I’m assuming you mean a working reputation system and not a working POW consensus system 20:42:45 I mean the PoW system. 20:43:09 Having a network of users able to do small amounts of provable work in aggregate is very useful 20:43:30 If at the very least because it increases the resources required to attack it 20:43:48 Yeah true, I think a reputation system based on PoW is natural since you already use PoW 20:44:19 PoW has a number of fun implications, like if you find the highest diff block ever discovered in btc, you can roughly estimate the total work expended by the network in aggregate 20:44:34 Which is the same principle I'm using here 20:44:52 What if a miner decides he doesn’t like X and does a ridiculously high difficulty hash for X? 20:45:19 What do you mean? 20:46:07 For a miner to 'choose' a block with a ridiculous difficulty without posting intermediate blocks, they would probabalistically need to discard every non-conforming block (and burn the work) 20:46:40 I guess that’s how I would attack the network. 20:46:40 instead of competing for blocks like a shmuck, i make ridiculously high difficulty hashes for the competition, so they get blackballed 20:46:40 Would that work? 20:47:34 Or I guess alternatively, I could blackball an exchange and initiate an eclipse attack on them? 20:47:58 Oh I didn’t get my point across, rephrasing 20:48:07 Ah, yes, that's my adversarial example. My suggested way of resolving that was limiting the blacklist to a fixed period of time, so after X time (if you haven't received a subsequent proof of bad behavior) it rolls off your list 20:48:14 So as a miner, I would stop mining for blocks temporarily 20:48:17 Which would force the adversary to constantly produce those hashes 20:48:53 Heck, if we drop the limit low to something like a couple hours, it might actually be viable 20:49:31 I would focus on the reputation system and blackball the competition, by making them look like bad actors to the rest of the network, since I have the hash power for it, then I’d win a lot of blocks since no one is talking to the competition 20:49:47 This is for nodes 20:49:49 Ahh I see 20:49:51 Not mining 20:50:01 Yep for nodes 20:50:28 It's possible I guess, but I'm sure people would run nodes without the rule 20:50:38 I was illustrating that the end goal would be to subvert the mining system through the reputation system, so there is a motive 20:50:42 If it's an issue I can't imagine miners wouldn't set up a relayed service 20:50:44 Relayer 20:51:25 During the period of time, I guess that malicious miner who blackballed the competition would win a lot of blocks? 20:51:37 Doubtful 20:51:46 Existing connections are a thing 20:51:54 And again, not everyone would run this 20:52:00 Or have the threshold low 20:52:02 Oh right, I see 20:52:42 Yeah I guess if you made it so that nodes first checked if that node was being bad, if they are on their list, then it would be solved? 20:53:15 So the blackballing would be applicable only for newer connections 20:53:38 Yeah, the intent is not to kick off established connections 20:53:53 The asshole peers aren't established connections 20:53:57 I think every full node would need to run it no? 20:54:11 Hm. Actually. These peers are just non-relaying 20:54:17 My mental model was broken there 20:54:31 It's actually an issue, because it's not just disconnecting nodes, it's non-relaying nodes too 20:55:04 Every fullnode would not need to run this, it's an optional thing 20:55:51 It creates a subnetwork of nodes who have a shared blacklist, and are likely highly self connected 20:56:44 Oh I would think it would be in their interest to run a reputation system so that they can always be connected to “live” and honest peers 20:57:21 Oh right, that’s a good depiction. A network on top of a network 20:57:40 * > <@freenode_needmoney90:matrix.org> It creates a subnetwork of nodes who have a shared blacklist, and are likely highly self connected 20:57:40 Oh right, that’s a good depiction. A network inside of a network 20:58:04 Sure, but it's a potentially adversarial environment - if no one runs a node that peers with all, then we risk malicious actors abusing that to knock peers off 20:58:23 It's more a 'public service' thing 20:58:45 Those nodes would prolly have higher max connection counts to combat it though 20:59:08 are we talking about the evil peers™ that have been found not relaying txs? 21:05:40 kayront - yes, also affectionately known as asshole nodes 21:06:41 so what's the theory ? annoyance? tx logging? 21:06:45 dos? 21:07:05 most likely tx <-> ip logging 21:07:12 also general annoyance maybe 21:24:21 Seems like a lot of effort just for annoyance. From the list moneromoo shared - https://gui.xmr.pm/files/block.txt - it seemed like IPs largely came from RIPE Network Coordination Centre or OVH Hosting. tx <-> ip seems most likely. presumably D++ makes it more obvious and problematic when nodes drop tx 21:24:49 yes, it certainly does 21:31:49 https://github.com/monero-project/monero/pull/6936 seems quite effective at catching and dropping them 21:56:21 neednoether90 23:44:37 idea: if a node misbehaves and there's a lot of misbehaving nodes in that ASN, send it say 1GB of traffic as punishment 23:44:49 This would be fine for ordinary users on home connections, who wouldn't notice much downtime 23:45:17 but if they're using commercial hosting providers, they will often disconnect problematic custoemrs, or charge them extra for network scrubbing