# Terminology

The following terms are used when describing the Dat Protocol.

## Terminology Currently in Use

**feed:**The main data structure in Hypercore. Append-only log that uses multiple data structures and algorithms to safely store data.**data:**Atomic pieces of data that are written to the feed by users.**keypair:**An`Ed25519`

keypair used to encrypt data with.**signature:**Certificate that proves a data structure was created by a specific keypair.**tree:**A binary tree mapped as a`flat-tree`

to keep an index of the current data.**flat-tree:**Mapping of a series of integers to a binary tree structure.**bitfield:**Space-efficient data structure used to figure out which data you have and what data you don't. Meant to always be kept in memory because it's small enough.**run-length-encoding (RLE):**Basic compression scheme used to compress bitfields when sending over the wire.**parent node:**A parent has two children under it, and is always odd-numbered. Node 3 is the parent of 1 and 5.**leaf node:**A node with no children. A leaf node is always even-numbered. Nodes 0, 2, 4, 6 and 8 are leaf nodes.**sibling node:**The other node that shares a parent with the current node. For example nodes 4 and 6 are siblings.**uncle node:**A parent's sibling. Node 1 is the uncle of nodes 4 and 6.**root node:**A top-most node where the full tree under it is complete (e.g. all parent nodes have 2 children). Node 3 is a root node.**node span:**The two nodes that are furthest away in the sub-tree. The span of node 1 is`0, 2`

. The span of node 3 is`0, 6`

.**right node span:**The left-most node in the span. The right span of node 1 is 2. The right span of node 3 is 6.