# 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. ![](Features%20vs%20values.png) 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)