diff --git a/README.md b/README.md index e6883e9..fe285e0 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,25 @@ -# Encrypted Dataroom Management (eDRM) +# ZDrive -Trustless, encrypted filesharing where access is enforced via FHE (Fully Homomorphic Encryption). Nobody can see who has access to what. Documents live on Filecoin via Storacha. +Encrypted file sharing where access is enforced via FHE (Fully Homomorphic Encryption). Nobody can see who has access to what. Documents live on Filecoin via Storacha. ## The Problem -Data rooms are essential to every investment deal, yet the market (\$3-4B TAM, led by Intralinks and Datasite) charges \$15-50k+ per deal for what is fundamentally access control on a file share. +Securely sharing files today means trusting a vendor with your data. Whether it's a data room for a deal (\$3-4B TAM, led by Intralinks and Datasite at \$15-50k+ per deal), confidential project files, or anything you want to share privately, you're relying on trust assumptions of the vendors and members that operate these platforms. -Often we need to rely on trust assumptions of the vendors and the members that operate on these data rooms. - -**Alternatively, it's a way to securely share documents with your friends that no-one else can access!** +**ZDrive replaces vendor trust with math.** ## The Solution -eDRM replaces vendor trust with math. Document encryption and access control are enforced on-chain via [Zama](https://docs.zama.org/protocol) FHE and [Storacha](https://storacha.network). +ZDrive uses [Zama](https://docs.zama.org/protocol) FHE for on-chain encrypted access control and [Storacha](https://storacha.network) for decentralized storage. No intermediary can read your files or see who has access, and the audit log is clean and verifiable. -No intermediary can read dealflow files or see who has access and the audit log is clean and verifiable. +Can be used for simple sharing documents to confidential fundraising data rooms, M&A due diligence, investor updates. ## How It Works -1. Company creates a data room: FHE-encrypted room key generated on-chain -2. Company uploads documents: encrypted client-side with AES-256-GCM derived from the room key, stored on Filecoin via Storacha, encrypted CID recorded on-chain -3. Company grants access to investor/auditor addresses: `FHE.allow(roomKey, investor)` lets them decrypt -4. Investor/Auditor connects wallet: decrypts FHE room key, derives AES key, downloads and decrypts documents from Storacha +1. Create a folder: FHE-encrypted folder keys generated on-chain +2. Upload documents: encrypted client-side with AES-256-GCM derived from the folder key, stored on Filecoin via Storacha, encrypted CID recorded on-chain +3. Grant access to collaborator addresses: lets them decrypt locally. +4. Collaborator connects wallet: decrypts FHE folder key, derives AES key, downloads and decrypts documents. For the full encryption flow, key hierarchy, and contract interface, see [Technical Architecture](docs/ARCHITECTURE.md). @@ -86,7 +84,7 @@ This runs: #### Storacha setup If it's too much effort to setup Storacha ask for keys from: petros@obolos.io -The dapp encrypts files client-side and uploads them to Filecoin via [Storacha](https://storacha.network). +The dapp encrypts files client-side and uploads them to Filecoin via [Storacha](https://storacha.network). Make an agent key and a delegation proof: @@ -94,11 +92,11 @@ Make an agent key and a delegation proof: # 1. Install the CLI npm i -g @storacha/cli -# 2. Login. Then CONFIRM email link +# 2. Login. CONFIRM email link npx @storacha/cli login your@email.com -# 3. Create a space (or use an existing one from `npx @storacha/cli space ls`) -npx @storacha/cli space create my-data-room +# 3. Create a space (or use an existing with `npx @storacha/cli space ls`) +npx @storacha/cli space create my-zdrive # 4. Generate an agent key. prints a DID and a private key npx @storacha/cli key create @@ -109,7 +107,7 @@ npx @storacha/cli delegation create \ --can store/add --can upload/add --can filecoin/offer \ --can space/blob/add --can space/index/add \ --base64 -# → copy the base64 string as VITE_STORACHA_PROOF +# copy the base64 string as VITE_STORACHA_PROOF ``` Then set both values in `dapp/.env`: diff --git a/contracts/package.json b/contracts/package.json index fb07ef7..8261a5b 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,5 +1,5 @@ { - "name": "encrypted-dataroom-contracts", + "name": "zdrive-contracts", "version": "0.1.0", "private": true, "scripts": { diff --git a/dapp/.env.example b/dapp/.env.example index f4b746f..c06e2ee 100644 --- a/dapp/.env.example +++ b/dapp/.env.example @@ -3,11 +3,11 @@ # # Setup (one-time): # 1. npm i -g @storacha/cli -# 2. w3 login # confirm via email -# 3. w3 space create my-data-room # creates a space -# 4. w3 key create # prints DID + private key +# 2. npx @storacha/cli login # confirm via email +# 3. npx @storacha/cli space create my-zdrive # creates a space +# 4. npx @storacha/cli key create # prints DID + private key # → copy the private key (MgC…) as VITE_STORACHA_KEY -# 5. w3 delegation create \ +# 5. npx @storacha/cli delegation create \ # --can store/add --can upload/add --can filecoin/offer \ # --can space/blob/add --can space/index/add \ # --base64 diff --git a/dapp/index.html b/dapp/index.html index a1bcdd5..91760f8 100644 --- a/dapp/index.html +++ b/dapp/index.html @@ -4,7 +4,16 @@ - eDRM + ZDrive + + + + + + + + +