<ahref="https://capnproto.org/">Cap’n Proto</a> is designed for deserialization speed and schema evolution. Flexible and well supported in Rust.
</li>
<li>
<h4>RPC is fully in-schema and documented</h4>
Both ‘Question/Answer’ and ‘Statement’ RPC modes are supported. All schema fields are documented.
</li>
<li>
<h4>RPC fully supports Private Routing</h4>
All private routing structures are expressed in the RPC schema itself, no magic encrypted blobs.
</li>
<li>
<h4>Schema Evolution is built-in</h4>
Fields can be added and removed with full backward and forward compatibility. New features won’t break older Veilid nodes.
</li>
<li>
<h4>RPC Schema is cryptography-independent</h4>
As cryptosystems change, the language spoken by Veilid nodes remains the same.
</li>
</ul>
### Distributed Hash Table
Distributed Hash Tables are a way of storing data in records that have keys that are close to nodes in the network.
#### DHT Is Just ‘Search’
It may look complicated, but all the DHT algorithms out there are just ‘search’ algorithms. Finding data that is stored on some node somewhere out there.
#### Improving Search
We built a better DHT by making both search and data locality more relevant. Veilid synchronizes popular data when nodes come and go from the network.
<imgsrc="/img/dht-diagram.png"alt="a tree diagram for the search ability"class="img-fluid lightbox">
Locating a node by its ID. Here the node with the prefix 0011 finds the node with the prefix 1110 by
successively learning of and querying closer and closer nodes. The line segment on top represents the
space of 160-bit IDs, and shows how the lookups coverge to the target node. Below we illustrate RPC messages