Skip to content

Overview

James Carnley edited this page Nov 9, 2023 · 5 revisions

EFS Overview


This page is terrible, do not read yet

Used to be tech stuff but that's now been moved to architecture overview and this hasn't been cleaned up.


What is it?

EFS at its core is a hierarchical structure of folders and data implemented on top of a property graph. Users access data through a static HTML, CSS, JS Web App hosted on IPFS that connects to the blockchain via a user's wallet, RPC endpoint, or a light client.

Property Graph

EFS utilizes a property graph model which allows for the storage of data in a graph structure with nodes representing entities, and edges representing the relationships between these entities. Each node and edge can have associated properties that store data in key-value pairs.

graph TD;
    Root -->|contains| Folder1[EthFinance]
    Root((Root)) -->|contains| Tags[Tags]
    Root -->|contains| Folder2[UIs]

    Folder1 --> File1A{{ETH breaks 10K}}
    Folder1 --> File1B{{EFS released}}
    Folder1 --> SubFolder1A[submitted]

    Folder2 --> File2A{{Uniswap}}
    Folder2 --> SubFolder2A{{Aave}}

    Tags --> NSFW{{NSFW}}
    Tags --> DeFi{{DeFi}}

    File2A -->|tagged with| DeFi
    File1A1 -->|tagged with| NSFW

    SubFolder1A --> File1A1{{Satoshi says BTC or bust}}
    SubFolder2A --> File2A1{{ipfs = QmRA...D4}}


    classDef folder fill:#ffcc00,color:#333,stroke:#333,stroke-width:2px;
    classDef file fill:#ccffcc,color:#333,stroke:#333,stroke-width:1px;

    class Root,Folder1,Folder2,Tags,SubFolder1A,SubSubFolder2A1 folder;
    class File1A,File1B,File2A,File1A1,File2A1,File2A1a,SubFolder2A,File2A1b file;
Loading

Nodes

  • Represent an idea or community
  • Controls its property values and types
  • Has associated properties/files/data in the form of key-value pairs

Properties

  • These are individual peices of data and files
  • Can be simple (name = "James") or complex (Whitepaper = bytes of PDF file)
  • Each property has an associated content-type/mime-type such as text/plain or application/pdf

Edges

  • Represent relationships between nodes
  • Can have properties that describe the nature of the relationship
  • Edges can be either single statuses like James -> "Follows" -> Vitalik or an array of events such as instances of James -> "Met IRL".ETHDenver -> Vitalik

Hierarchical Structure

  • EFS's graph is organized in a hierarchical folder-like structure that allows for ownership and organizational structure for large communities

Folders

  • Represented as nodes with related properties
  • Folders may also denote a certain type of contents such as /account/0x918327...1f having special properties of being an owned folder by that user
  • Can contain other folders and files, mirroring traditional file system structures

Files

  • Represented as properties with data content
  • Stored within folders, providing a clear organizational structure

URI Scheme

  • EFS implements a URI scheme that enables users to reference data within the property graph easily from the web
  • The URI format is designed to be intuitive and aligns with existing web standards, allowing other resources on the web to link directly to EFS data
  • URI: efs://chainId/path/subject:relationship.type?option=value&option=value#editon

Clone this wiki locally