<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Components on Freenet</title><link>https://freenet.org/build/manual/components/</link><description>Recent content in Components on Freenet</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 13 Apr 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://freenet.org/build/manual/components/feed.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://freenet.org/build/manual/components/overview/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate><guid>https://freenet.org/build/manual/components/overview/</guid><description>&lt;h2 id="components-of-decentralized-software">Components of Decentralized Software&lt;/h2>
&lt;p>Delegates, contracts, and user interfaces (UIs) each serve distinct roles in the Freenet ecosystem.
&lt;a href="https://freenet.org/build/manual/components/contracts">Contracts&lt;/a> control public data, or &amp;ldquo;shared state&amp;rdquo;.
&lt;a href="https://freenet.org/build/manual/components/delegates">Delegates&lt;/a> act as the user&amp;rsquo;s agent and can store private data on the
user&amp;rsquo;s behalf, while &lt;a href="https://freenet.org/build/manual/components/ui">User Interfaces&lt;/a> provide an interface between these and
the user through a web browser. UIs are distributed through the P2P network via contracts.&lt;/p>
&lt;p>&lt;img src="https://freenet.org/components.svg" alt="Architectural Primitives Diagram">&lt;/p>
&lt;h2 id="freenet-core">Freenet Core&lt;/h2>
&lt;p>The Freenet Core is the software that enables a user&amp;rsquo;s computer to connect to the Freenet network.
Its primary functions are:&lt;/p></description></item><item><title>Contracts</title><link>https://freenet.org/build/manual/components/contracts/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate><guid>https://freenet.org/build/manual/components/contracts/</guid><description>&lt;p>Freenet is essentially a global decentralized key-value store where keys are WebAssembly code called
Contracts. Contracts are stored in the network, along with their data or &amp;ldquo;state&amp;rdquo;. The contract
controls what state is permitted and how it can be modified, and also how to efficiently synchronize
state between peers.&lt;/p>
&lt;p>A contract&amp;rsquo;s state is just a block of bytes, and can be anything from a simple number to a complex
data structure. The contract&amp;rsquo;s code defines the state&amp;rsquo;s formatting. Even the serialization format is
up to the contract, so it can be anything from JSON to Bincode, or a custom binary format.&lt;/p></description></item><item><title>Delegates</title><link>https://freenet.org/build/manual/components/delegates/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate><guid>https://freenet.org/build/manual/components/delegates/</guid><description>&lt;p>When you use an application that handles private keys (a wallet, a messaging app, anything with cryptographic identity), you&amp;rsquo;re trusting that application with your secrets. Every library it imports, every dependency, every line of code has access to the same memory where your keys live. A single vulnerability anywhere in that stack can expose everything.&lt;/p>
&lt;p>Delegates change this equation. A delegate holds your secrets and performs sensitive operations on your behalf, but the application itself never sees the secrets. The app asks the delegate to sign a message; the delegate returns a signature. The private key never crosses the boundary.&lt;/p></description></item><item><title>User Interface</title><link>https://freenet.org/build/manual/components/ui/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate><guid>https://freenet.org/build/manual/components/ui/</guid><description>&lt;p>On the normal web, a user might visit &lt;code>https://gmail.com/&lt;/code>, their browser will download the Gmail
user interface which then runs in their browser and connects back to the Gmail servers.&lt;/p>
&lt;p>On Freenet the user interface is downloaded from a Freenet contract, and it
&lt;a href="https://freenet.org/build/manual/components/overview">interacts&lt;/a> with contracts and delegates by sending messages through
the Freenet core.&lt;/p>
&lt;p>&lt;img src="https://freenet.org/ui_delegate_contract.svg" alt="Delegate, Contract, and UI Diagram">&lt;/p>
&lt;p>These UIs are built using web technologies such as HTML, CSS, and JavaScript, and are distributed
over Freenet and run in a web browser. UIs can create, retrieve, and update contracts through a
WebSocket connection to the local Freenet peer, as well as communicate with delegates.&lt;/p></description></item></channel></rss>