Meta tags:
description= The Radicle forge is an open source, peer-to-peer code collaboration stack built on Git.;
Headings (most frequently used words):
peer, repositories, protocol, nodes, to, storage, self, node, git, vs, radicle, guide, introduction, local, first, trust, through, certification, collaborative, objects, conclusion, seeding, identifiers, nids, running, gossip, transport, encryption, privacy, replication, via, bootstrap, federation, delegates, identity, document, private, repository, identifier, rid, working, stored, copy, layout, url, scheme, canonical, branches, certifying, concurrency, consistency, extending, cobs, signed, refs,
Text of the page (most frequently used words):
the (297), and (133), #radicle (89), #repository (85), for (70), are (66), git (65), node (55), network (50), this (47), with (44), repositories (44), peer (43), protocol (38), that (38), nodes (38), data (32), user (32), can (31), their (29), identity (29), peers (27), users (26), which (26), document (23), key (23), refs (22), all (22), storage (21), each (20), code (19), its (19), stored (18), from (18), used (17), self (16), under (16), rid (16), other (15), same (15), object (14), branch (14), first (14), collaboration (13), have (13), while (13), also (13), allows (13), set (13), unique (13), they (13), using (13), without (12), changes (12), commit (12), source (12), delegates (12), seed (12), connection (12), control (11), not (11), only (11), cobs (11), example (11), namespaces (11), such (11), references (11), via (11), gossip (11), over (10), cob (10), like (10), across (10), local (10), canonical (10), rad (10), more (10), private (10), new (9), signed (9), objects (9), graph (9), state (9), may (9), one (9), any (9), through (9), artifacts (9), hosted (9), master (9), where (9), copy (9), but (8), xyz (8), multiple (8), version (8), system (8), since (8), when (8), allowing (8), social (8), between (8), centralized (8), access (8), did (8), public (8), heartwood (7), certifying (7), collaborative (7), defined (7), these (7), two (7), issues (7), time (7), identified (7), process (7), url (7), remote (7), namespace (7), reference (7), identifier (7), address (7), message (7), timestamp (7), seeding (7), systems (6), trusted (6), connected (6), issue (6), initial (6), fetch (6), both (6), them (6), directly (6), github (6), location (6), known (6), push (6), shared (6), working (6), inventory (6), project (6), replication (6), addresses (6), announcement (6), static (6), updates (5), every (5), support (5), patch (5), separate (5), change (5), then (5), use (5), patches (5), name (5), model (5), designed (5), secure (5), metadata (5), cryptographic (5), based (5), threshold (5), branches (5), verify (5), z42hl2jl4xnk6k8ohqaswfmgcl7ji (5), scheme (5), uses (5), own (5), refer (5), tree (5), making (5), end (5), privacy (5), authenticity (5), federation (5), federated (5), architecture (5), bootstrap (5), discovery (5), run (5), messages (5), u64 (5), guide (5), sovereignty (4), well (4), established (4), wider (4), coordination (4), type (4), types (4), consistent (4), way (4), function (4), root (4), ensuring (4), face (4), concurrency (4), different (4), simply (4), free (4), commits (4), will (4), maintain (4), includes (4), typically (4), heads (4), automatically (4), signature (4), signatures (4), out (4), decentralized (4), z6mknslrjotcuklre435hvnqt4juhbvwlx4kuzqkestbu8vi (4), what (4), tip (4), always (4), nid (4), layout (4), level (4), directory (4), device (4), physical (4), including (4), within (4), offline (4), copies (4), involves (4), maintaining (4), visibility (4), json (4), diverse (4), once (4), place (4), exchange (4), handshake (4), noise (4), broadcasting (4), interested (4), client (4), personal (4), team (3), approach (3), hosting (3), built (3), workflows (3), full (3), cryptographically (3), third (3), party (3), enable (3), range (3), extending (3), base (3), predefined (3), domain (3), com (3), associated (3), supports (3), ensure (3), order (3), causal (3), represent (3), computer (3), result (3), useful (3), form (3), non (3), synchronization (3), represented (3), central (3), server (3), experience (3), important (3), must (3), managed (3), identities (3), discussions (3), three (3), allow (3), means (3), role (3), supported (3), verification (3), framework (3), software (3), update (3), updated (3), command (3), sigrefs (3), published (3), than (3), default (3), forges (3), instead (3), need (3), bitcoin (3), trust (3), know (3), operate (3), about (3), rip (3), file (3), tags (3), second (3), underlying (3), top (3), has (3), sharing (3), design (3), ensures (3), synchronizing (3), servers (3), either (3), easy (3), ids (3), interest (3), details (3), how (3), derived (3), identification (3), encoded (3), encrypted (3), group (3), sets (3), stack (3), description (3), before (3), dids (3), delegate (3), begins (3), content (3), challenges (3), service (3), often (3), information (3), protocols (3), enables (3), fully (3), policies (3), connect (3), implementation (3), pre (3), clients (3), into (3), tor (3), requires (3), networking (3), however (3), unix (3), announcements (3), alias (3), capabilities (3), ssb (3), lightning (3), running (3), sovereign (3), identifiers (3), community (3), traditional (3), upon (2), easily (2), interoperate (2), existing (2), already (2), ownership (2), structures (2), meaning (2), verified (2), anyone (2), functionalities (2), potentially (2), beyond (2), conclusion (2), extensibility (2), primitives (2), requiring (2), were (2), task (2), acme (2), prevent (2), mechanism (2), interacting (2), subsequent (2), modifications (2), made (2), crdt (2), retrieve (2), current (2), causally (2), operation (2), single (2), list (2), ordering (2), topological (2), orders (2), merge (2), hash (2), cannot (2), configured (2), conflict (2), dependencies (2), dag (2), representing (2), represents (2), certain (2), operations (2), times (2), histories (2), replicated (2), representation (2), gives (2), makes (2), points (2), combination (2), comment (2), comments (2), reach (2), eventually (2), thing (2), consistency (2), entirely (2), reviews (2), requests (2), owned (2), found (2), platforms (2), gitlab (2), given (2), authenticate (2), draws (2), inspiration (2), establishing (2), whenever (2), there (2), blob (2), special (2), along (2), create (2), serves (2), specified (2), attribute (2), future (2), defaultbranch (2), note (2), authoritative (2), pushing (2), permission (2), small (2), unlike (2), certification (2), interact (2), following (2), layer (2), helper (2), specific (2), commands (2), learn (2), standard (2), interacted (2), individual (2), files (2), containing (2), locally (2), logical (2), view (2), database (2), contents (2), primarily (2), developers (2), pull (2), bare (2), common (2), propagated (2), internet (2), most (2), specialized (2), line (2), transfer (2), among (2), works (2), able (2), sha (2), encoding (2), replicate (2), achieved (2), setting (2), initialized (2), called (2), responsible (2), permissions (2), identifying (2), supplemented (2), offer (2), tied (2), related (2), specifically (2), benefits (2), operators (2), reliability (2), although (2), independent (2), share (2), resources (2), autonomy (2), rather (2), book (2), connecting (2), joining (2), build (2), multiplexing (2), concurrent (2), take (2), fetches (2), receiving (2), after (2), diffie (2), hellman (2), initiating (2), initiator (2), responder (2), pattern (2), takes (2), connections (2), transport (2), encryption (2), structure (2), long (2), oid (2), repoid (2), relayed (2), routing (2), agent (2), utf (2), nonce (2), functionality (2), forming (2), focus (2), focuses (2), contrast (2), just (2), install (2), optionally (2), open (2), applications (2), actively (2), generate (2), digital (2), authority (2), pair (2), ed25519 (2), nids (2), typical (2), choose (2), opt (2), significantly (2), provide (2), continuous (2), policy (2), establishes (2), direct (2), novel (2), host (2), distributed (2), tools (2), introduction (2), publishing (2), 2018, 2026, introduces, rooted, familiar, needing, remaining, highly, extensible, customization, datatypes, opening, possibility, far, unlimited, broader, hierarchical, arrangement, houses, accommodates, ones, organization, define, might, look, something, some, hypothetical, hierarchy, naming, collisions, summary, independently, records, tracks, modification, compatible, replays, deterministic, getting, value, applying, values, fold, reduce, materialize, displayed, starting, going, tips, happens, observed, traversed, yield, simplest, traverse, partially, ordered, vertices, sorted, treat, bubbled, partial, reduced, colors, authors, arrows, parents, box, property, mathematics, science, whereby, applied, changing, idempotence, think, usage, synchronized, graphs, destructive, idempotent, unioned, modeled, parent, child, relationships, handled, integrity, guaranteed, few, things, achieve, native, encodes, disjoint, inspection, evaluation, combines, pointing, checking, merged, directed, acyclic, norm, those, good, factors, don, determine, final, converge, exact, see, reverse, notation, documents, propose, versioning, tracking, bugs, feature, labeling, assigning, customize, extend, inside, inherit, properties, play, supplementing, inherently, counterparts, clone, tuf, format, show, ref, 9767b485c2aad1e23097d2b5165287ba84cfa452, f3eaa7454e3a4714885905ae99f616fc7895b5fa, fe31d5b6049583a42c21a543545d182b893aa4a0, 0590b78ee42b39087983e4de04164065e5aa11bc, ffbb812ad6e7fe1c5c610b1246ca5ca9d7d16027, signs, entirety, placed, referenced, together, proof, basis, verifying, states, leading, reason, say, doesn, require, inputs, itself, currently, additional, lacking, pushed, recognized, dynamically, updating, matter, granted, maintainers, maintainer, allowed, deemed, authentic, enough, get, because, dishonest, hinges, nature, anchored, https, agreed, above, would, map, path, interpret, urls, instructs, invoke, executable, during, point, correct, fetching, though, browsable, meant, risk, corrupting, additionally, pack, appear, trees, etc, below, contains, usual, categories, thus, namespaced, blobs, stripped, history, edit, per, uniquely, storing, odb, enhances, work, frictionless, eliminates, workflow, akin, forge, origin, accessed, report, tooling, tool, soft, fork, space, affecting, sole, owner, writer, unmodified, disk, partitioned, maintains, remains, z3gqcjuoa1n9hahkufzs5fcsgazv5, uniqueness, stable, globally, assigned, deterministically, produce, 160, bit, digest, alphabet, prefixed, valid, urn, btc, multibase, confidentiality, rest, rely, selective, renders, invisible, inaccessible, z6mkt67gdsw7715mefrup4pszxjrjh6kj6y48wrqvv4n1trk, restricted, designated, snippet, payload, here, standardizes, identical, byte, particularly, hashing, needs, encapsulates, required, authorize, bot, critical, tasks, merging, addressing, modifying, creator, grow, accommodate, documentation, arbitrary, serving, primary, abstraction, fundamentally, essential, validating, left, right, similar, little, bearing, interchangeable, undifferentiated, incentives, operational, costs, exceed, perceived, compelled, shut, down, disrupt, undermining, platform, continuity, models, promote, decentralization, decide, block, taking, choice, away, restricting, flow, examples, include, plain, old, mail, mastodon, standards, boundaries, interoperability, collective, services, centralizing, thereby, enhancing, scalability, resilience, manage, computing, ˌfɛdəˈreɪʃn, degree, ultimately, mediated, administrators, themselves, bootstrapping, establish, regular, find, empty, large, books, rosa, iris, hence, configure, initiate, idea, sessions, efficient, avoids, problems, nats, framing, initiates, negotiating, should, sent, skipped, downloaded, accessible, actual, transferred, seeds, leverage, hide, onion, phase, completed, exchanged, strong, communications, forward, secrecy, initiated, securely, generating, ephemeral, last, step, sending, channel, calls, inbound, advance, nodeannouncement, performing, agree, session, duration, originating, participants, relaying, endless, propagation, drop, encountered, sake, temporarily, replayed, period, being, stands, hashes, identify, nodeid, was, relevant, inventories, constructing, table, maps, dos, protection, external, advertised, features, publicly, reachable, facilitate, tables, aid, core, fulfilling, distinct, append, logs, incorporating, context, leverages, proven, efficiency, complete, failure, persist, secured, thanks, subscribe, announce, turn, trigger, until, gossiped, adopts, p2p, scuttlebutt, guided, check, comprised, interface, cli, web, frontend, released, mit, apache, licenses, encourage, development, adheres, specification, outlined, rips, implementations, improvement, proposals, written, high, performance, memory, safe, language, rust, lightweight, suitable, devices, maintained, engineers, terms, interchangeably, safeguard, lost, compromised, changeable, easier, human, method, z6mkhaxgbzdvotdkl5257faiztigic2qtklgpbnnegta2dok, verifiable, subject, registry, provider, certificate, even, varies, part, creating, created, providing, email, cryptography, w3c, seeder, collaborating, dedicated, offering, infrastructure, enhance, capacity, broad, vary, openly, selectively, clones, initializes, opts, changed, reflect, choices, rules, retention, kept, offered, act, referred, indistinguishable, irrespective, activity, runs, equipment, necessary, operating, extends, integrated, locates, replicates, communities, contributing, emergence, lead, fragmented, environments, profiles, instance, simultaneously, limits, exposure, advantage, grown, due, effects, isolation, impact, potential, projects, solutions, forgejo, gitea, widely, modify, commonly, feasible, cumbersome, frequently, enhanced, interfaces, management, review, dependency, vendor, lock, places, compromising, freedoms, cases, necessitating, delves, release, nonetheless, foreseen, possible, today, knowledge, regardless, connectivity, actions, committing, adding, performed, provenance, reliance, synchronize, alongside, locate, provided, least, online, keys, latest, generation, depending, participant, operates, capable, hood,
Text of the page (random words):
htning updates are gossiped on the network until they reach all interested peers peer connections in radicle are secured thanks to a noise protocol handshake radicle uses the noise xk pattern specifically just like the lightning network with the node id as the static key this requires nodes to know the node ids of their peers before connecting to them which takes place through the exchange of peer information over the gossip protocol unlike ssb s focus on social networking via append only logs radicle focuses on code collaboration by incorporating git s object model and transfer protocol into a peer to peer context this architecture not only leverages git s proven efficiency and reliability but also gives users complete autonomy over their social artifacts radicle s peer to peer architecture in contrast to federated systems ensures no centralized points of failure allowing the network to persist as long as users operate nodes a set of connected peers forming a gossip network gossip protocol the radicle networking layer is designed as a gossip protocol where messages are relayed between peers to build routing tables that aid in repository discovery and replication the core functionality is achieved with three message types each fulfilling a distinct role node announcements are used for broadcasting node ids and physical addresses on which a node is publicly reachable to facilitate peer discovery node announcement version u8 supported protocol version features u64 advertised node capabilities timestamp u64 message timestamp unix time alias u8 non unique alias utf 8 addresses address external addresses nonce u64 nonce used for dos protection agent u8 user agent utf 8 inventory announcements are used for broadcasting repository inventories and constructing the routing table which maps out what repositories are hosted where inventory announcement inventory repoid repository inventory timestamp u64 message timestamp unix time reference announcements are used for broadcasting updates to repositories relayed only to nodes interested in the relevant repository refs announcement rid repoid repository that was updated refs nodeid oid updated signed refs rad sigrefs timestamp u64 message timestamp unix time oid stands for object id and represents the sha 1 hashes used by git to identify objects to prevent endless propagation nodes drop any message already encountered however for the sake of broadcasting messages to new nodes gossip messages may be temporarily stored and replayed to nodes joining the network for the first time or after a long period of being offline each announcement includes the originating node id along with a cryptographic signature and timestamp allowing network participants to verify the authenticity of messages before relaying them to peers announcement message structure tip refer to rip 1 to learn more details about radicle s networking protocol transport encryption privacy connections between peers in the radicle network are encrypted using a noise protocol handshake this begins with two peers performing a diffie hellman key exchange to agree on a shared session key that is used for the duration of the connection radicle uses the xk handshake pattern which requires the connection responder s static key to be known in advance by the initiator this pre sharing takes place over the gossip network via the nodeannouncement message since the static key is simply the node id the noise framework calls the node that is receiving an inbound connection the responder and the node that is initiating the connection the initiator once the static key is known a connection to the node can be initiated securely by generating an ephemeral key from the static key using diffie hellman the last step involves the initiating node sending its own static key over the secure channel after the handshake phase is completed all data exchanged between peers is fully encrypted and benefits from strong forward secrecy ensuring secure and private communications across the network tip radicle also supports tor addresses users can leverage tor to hide their ip address from peers and connect to onion addresses on the tor network replication via git while gossip is used to exchange metadata actual repository data is transferred via replication using the git protocol the process begins with a node establishing a secure connection to one or more of the repository s seeds upon receiving a reference or inventory announcement of interest once connected the node initiates a git fetch protocol which involves negotiating which objects should be sent or skipped by the remote node the objects are then downloaded into the node s storage making them accessible to other nodes via the same process since radicle uses a framing protocol for all its sessions the fetch protocol is able to take place over the same physical connection between nodes as the gossip protocol this allows for a more efficient use of resources and avoids certain problems with nats although git s protocols are typically connection based radicle s design allows for multiple concurrent git fetches to take place over a single connection the idea of re using a network connection for multiple concurrent protocols is called multiplexing connection multiplexing in radicle bootstrap nodes a node joining the network for the first time will not know any peers hence it s useful to pre configure network clients with addresses of well known nodes that can be used to initiate or bootstrap the peer discovery process and build an address book radicle s reference implementation is pre configured with two bootstrap nodes that are connected to if the address book is empty iris radicle network and rosa radicle network these are nodes run by the radicle team and have large address books that are shared with connecting peers in the bootstrapping process nodes connect to an initial set of bootstrap nodes and once they establish a connection use the regular peer discovery mechanism to find more peers federation vs peer to peer federation allows for a degree of sovereignty as each node can set its content policies but user experience and identity are ultimately tied and mediated by these nodes administrators rather than by the users themselves federation ˌfɛdəˈreɪʃn n computing a system architecture where multiple independent servers or nodes operate under a common set of standards and protocols allowing them to share data resources and functionalities across boundaries while maintaining autonomy this model enables interoperability and collective services among diverse systems without fully centralizing control thereby enhancing privacy scalability and resilience each node in a federated network can set its policies manage its users and control its data examples of federated systems include at protocol mastodon and plain old e mail although federated models promote a level of decentralization they face unique challenges such as when node operators decide to block other nodes taking that choice away from its users and restricting the free flow of information federated systems also face challenges related to incentives specifically when the operational costs of maintaining a node exceed the perceived benefits node operators are often compelled to shut down this can disrupt access for users undermining the platform s reliability and the continuity of service while radicle seed nodes face similar challenges this has little bearing on the end user seed nodes are interchangeable and offer an undifferentiated service they are not tied to a user s identity or access to the network federation left vs peer to peer right repositories repositories are central to the radicle network serving as the primary data abstraction and object shared between peers a repository in radicle is fundamentally a git repository supplemented with a unique repository identifier rid and metadata essential for validating the authenticity of its contents radicle repositories which can be either public or private can accommodate diverse content including source code documentation and arbitrary data sets all repositories are initialized with an identity document from which a unique repository id rid is derived the identity document is where repository permissions and ownership are defined as well as identifying metadata such as name and description delegates repositories are managed and owned by what are called delegates a delegate is an individual group or bot identified by a did delegates are responsible for critical tasks such as merging patches addressing issues and modifying repository permissions a repository always begins with one delegate its creator and can eventually grow to multiple delegates identity document before a repository can be published on radicle it needs to be initialized with an identity document this json document stored under the refs rad id reference in git encapsulates key metadata such as the repository s name description and default branch it also includes the dids of the repository s delegates and the threshold of delegate signatures required to authorize changes to the repository s default branch the identity document is stored in canonical json form canonical json form standardizes json encoding to ensure identical byte representation for the same data structures making it particularly useful for cryptographic operations like hashing here s an example of the identity document for the heartwood repository delegates did key z6mknslrjotcuklre435hvnqt4juhbvwlx4kuzqkestbu8vi threshold 1 payload xyz radicle project name heartwood description radicle heartwood protocol stack ️ defaultbranch master private repositories radicle supports private repositories where access is restricted to a designated group of trusted peers this is achieved by setting the visibility attribute in the identity document for example the following snippet sets the visibility to private while also allowing a specific peer to have access to the repository visibility type private allow did key z6mkt67gdsw7715mefrup4pszxjrjh6kj6y48wrqvv4n1trk this ensures only nodes in the privacy set can replicate and access the data maintaining confidentiality while the data is not encrypted at rest these repositories rely on selective replication through the allow list for privacy which renders them invisible and inaccessible to other nodes in the radicle network note that repository delegates always have access to their private repositories repository identifier rid to ensure uniqueness and easy identification of repositories a stable and globally unique identifier known as the repository identifier rid is assigned to each repository the rid is deterministically derived from the initial version of the repository s identity document this process involves using git s hash object function to produce a 160 bit sha 1 digest of the document this is then encoded using multibase encoding with the base 58 btc alphabet and prefixed with rad making it a valid urn rad z3gqcjuoa1n9hahkufzs5fcsgazv5 example repository id for the heartwood project since the rid is derived from the initial version of the repository s identity document the document is able to change while the rid remains the same tip refer to rip 2 for more details about how repository identity works in the radicle protocol local first storage storage is designed in such a way that it s easy to transfer data between peers over the network using an unmodified git protocol radicle repositories are simply git repositories stored in a special location on disk peer data is stored within the same repository using git namespaces where node ids are used as the namespace this allows storage to be managed through a partitioned approach where each user maintains their own namespace of a repository as well as namespaces of other users they have an interest in all within the same git repository these copies are then shared among users across the network we can view a peer s namespace as their soft fork of the repository it is their own space for making changes to the repository without affecting other namespaces the peer is the sole owner and writer of this namespace identified and verified by their node id working vs stored copy storage is accessed directly by the node to report its inventory to other nodes and by the end user through either specialized tooling or the git command line tool users are typically interacting with two repository copies the working copy and a remote stored copy that is interacted with via git push and git fetch using radicle s git remote helper this workflow is akin to what most developers are used to when synchronizing changes between their working copy and the origin remote which is typically a repository on a hosted git forge changes to the stored copy are automatically propagated to the network when the user is connected to the internet but can also be made while offline this local first design not only enhances the user experience by making offline work frictionless but also eliminates the need for centralized servers synchronizing the working copy with the stored copy of a repository storage layout radicle s storage layout is designed to support multiple repositories and multiple peers per repository each repository is a bare git repository stored under a common base directory identified uniquely with its repository id or rid instead of each of the repository s peers storing data in a separate git repository with a separate object database odb peer data is stored within the same git repository using git namespaces a bare git repository is a repository stripped of its working directory containing only the version history the contents of the git directory it s used primarily as a remote repository that developers can push to and pull from but cannot directly edit files or commit changes in for each peer including the local peer their unique node id nid is used as the namespace thus each peer has its own namespaced references eg refs heads and refs tags while sharing the underlying objects i e commits and blobs with other namespaces via a shared object database this design ensures only one copy of each object is stored across all repository namespaces since the underlying storage uses git the storage layout below is represented as a file tree on the file system with storage representing the storage root or top level directory under which all repositories are stored on a user s device for every repository each peer associated with that repository must have a separate logical git source tree which contains all the usual reference categories this logical repository is also known as the repository namespace or view and allows nodes to maintain local data for all peers in the same physical repository storage storage root containing all repositories rid storage for first repository refs all git references locally stored namespaces all peer source trees or namespaces nid first node s source tree r...
|