Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Address Resolution Key
Address Resolution Keys (ARKs) are a way to help people connect to Freenet if they have problems caused by firewalls, routers or changing IP addresses. If someone cannot accept incoming traffic it can make it difficult to connect. ARKs are an implementation detail and you don't need to know anything about them to use Freenet.
An Address Resolution Key (ARK) is an Updatable Subspace Key (USK) inserted by the node whenever its IP address changes. It contains the reference for the node - its cryptographic details, and in particular its IP addresses.
When a node's IP address changes, it may lose connection to several of its neighbors, because of UDP hole punching (UDP hole punching only works when both sides know the other's IP address). However, it inserts its ARK through the one or two nodes which do still work for it, and when those peers realize that they can no longer connect to it, they fetch the ARK. If the fetch succeeds, they use the new reference, and connect to the node. This serves the function of a trusted third party in classic UDP hole punching (traditional P2P would use a central server to tell clients the current IP of their neighbors).