# Content Addressed Systems
**Content addressing** can be nicely defined as:
> The **address** of a piece of **content** is **derived** from the content itself.
This is typically done via a hash digest. You take the content, which is some random array of bytes (it could be text, video, etc). You run it through a hash function, and from that you derive your address.

Generally, we can think of it as:
```python
Data = bytes[...]
Address = hash_function(Data)
```
For example we have:
* Git commit = `SHA1(change set)`
* Bitcoin block = `SHA-256(block header)`
Frequently you will hear about [Merkle-Tree](Merkle-Tree.md) in this content.
### Why would you want to do this?
* **Secure**: The address *authenticates* the content
* **Immutable**: The content cannot change (or it would map to a different address!). This is great because you know that the address will always refer to the same thing.
* **De-duplication**: The same data always gets the same address
---
Date: 20211023
Links to: [Content-Addressability-in-Fabric](Content-Addressability-in-Fabric.md)
Tags:
References:
* [Fantastic youtube talk](https://www.youtube.com/watch?v=VtzpJU4Cns8)