Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Great idea! #1

Open
DougAnderson444 opened this issue Jul 12, 2019 · 2 comments
Open

Great idea! #1

DougAnderson444 opened this issue Jul 12, 2019 · 2 comments

Comments

@DougAnderson444
Copy link

Hey @Gozala , I just read your IPDF readme and it's great stuff! Love it. I am looking forward to following your work, and wondering what you would need to help it along? Is it a money/time issue?

@Gozala
Copy link
Owner

Gozala commented Jul 12, 2019

@DougAnderson444 Thanks you. I also have recently presented at https://camp.ipfs.io/ and I think slides I've used better reflect current thinking (in case you want to look at them).

wondering what you would need to help it along? Is it a money/time issue?

IPDF is what I need very deep in the rabbit hole, but there are bunch of other things I need to work out before I'd be able to make use of it. That is to say my current (limited free) time is spend on other things that would eventually lead to needing this. At the same time https://ipld.io/ are making substantial changes and ones it solidifies it will likely require changes to the IPDF implementations as well, so putting it down the priority list seems like a good idea.

However if you or others are interested in collaborating I'd be more than happy to workout how do we move this forward sooner. It is also worth mentioning that Textile is considering redesign of their threads that has similar constraints and goals & if we can converge that would be ideal.

@DougAnderson444
Copy link
Author

Happy 3 year anniversary of this issue!

Over the past 3 years, I've been working more on this. I think that something like this needs to be more than just a data feed; because data always needs an app to display it (nobody likes {reading: "JSON"})

So I've been working on the design below. It combines a few ideas from here and elsewhere: Data (plus a CRUD app for the data!) saved in IPLD. IPLD merkle root passed to contacts via p2p (you choose... hypercore, pubsub, blockchain... it's agnostic). The data is homomorphically encrypted so it never has to be decrypted to pass along to a new contact. On the other side, the contact Alice decrypts the data, and renders it in the app.

I call this "Self-Updating Internet Technology enabled dapps" (or SUITable dapps for short) because once the Merkle root of the data changes, it's reflected in the peers and then the app updates itself. Like a contact app that updates addresses and phone numbers when your friend gets a new phone (no more "New phone, who dis?"). Just go to to 0xMyPublicKey/Contact and IPLD pulls up your latest from the most recent merkle root you shared with people.

I thought it might interest you given our discussion a few years ago.

flowchart LR
  subgraph SUITable-DApps
    direction TB
        subgraph P2P-Hypercore-Protocol-HyPNS[P2P Network or Blockchain]
            direction LR
            pk  -.-> |WebRTC|Contacts[Alice: \n Gets Latest \n Merkle Root from \n swarm/pubsub Topic]
            subgraph ContactBook
                direction LR
                Contacts
            end
        end
        subgraph IPLD
            direction TB
            m1[Merkle Root] -.->|next|M[Merkle Root]
            M -.->|prev|m1
            AliceRenders
            AccessList
        end
    subgraph DApp
        direction BT
        Rendered
        AliceDApp
    end
    subgraph Wallet
        direction TB
        Encrypt <-.-> |PKI|Decrypt
        K[Re-encryption Key] --> AccessList[Access List]-->M
        AliceDecrypt[Alice uses \n re-encryption \n key to Decrypt \n shared data]
    end
  end
    M -.->  pk(Topic: Public Key \n Data: Latest Merkle Root)
  m1[Merkle Root CID] -->|User Data Ciphertext| Decrypt
  Decrypt -->|User Data Plaintext| Rendered
  m1[Merkle Root CID] -->|ES Module| Rendered
  Rendered -->|Updated User Data| Encrypt
  Encrypt-->|Updated User Data| M[New Merkle Root CID]
  Encrypt-->|Re-Encrypted Key for Alice| K
  AliceRenders[Alice: \nResolves es module +\n  data from Merkle Root]
  Contacts-->AliceRenders
  AliceRenders-->AliceDecrypt
  AliceDecrypt-->AliceDApp[Alice renders DApp +\n  Data in the browser]
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants