A Kademlia network that is harder to poison
Kademlia has no central authority, which is its strength and its weak spot: anyone can join, and anyone can claim to be anyone. Classic eMule takes most contacts at their word. eMule Qt checks them, measures them and remembers the ones that misbehave.
One node per IP, and a memory for liars
A Sybil attack floods your routing table with fake nodes so that searches and publishes land on the attacker. eMule Qt’s node reputation layer tracks every contact by address and node ID:
- One node per IP — a single address cannot fill your routing table with a crowd of IDs.
- ID flips are noticed — a verified node that changes its Kademlia ID within an hour has its IP banned for up to 24 hours. Unverified flips are recorded but never banned, so nobody can get an innocent peer banned by forging its address.
- Problem nodes are parked — contacts that fail are set aside for five minutes instead of being dialled again and again.
Every list is bounded and ages out on last-seen, so the bookkeeping cannot be turned into a memory attack of its own.
Timeouts that fit your network
A fixed timeout is either too short for a slow line or too long for a fast one. eMule Qt keeps the response times of recent Kad contacts and computes the mean and variance, setting the timeout at roughly the 95% point plus a small margin, capped at three seconds. Lookups on a good connection stop waiting for dead nodes sooner; lookups on a slow one stop giving up on live ones.
Your public IP, confirmed
Your external address decides which UDP keys peers use and how you are published. eMule Qt does not adopt an address a single peer reports: it is committed only once a second, independent reply agrees, and your external port needs two of three peers in agreement. One lying or confused peer can no longer knock you off the network.