Skip to content

need separation of private blocks and public blocks #1386

Open
whyrusleeping opened this Issue · 4 comments

4 participants

@whyrusleeping
IPFS member

Before v0.4.0 merges with the pinning updates, we need to be able to have blocks in our blockstore that don't get advertised and sent out to the network. Sending out pin lists would be very bad for privacy and security. This will also enable us to move towards having all ipfs data stored as dags in the blockstore.

One approach to this would be to have two separate blockstore objects with different namespaces into the same underlying datastore. This way, iterating over the keys in our 'public' datastore will not yeild any private data.

@whyrusleeping whyrusleeping added this to the IPFS 0.4.0 milestone
@jbenet
IPFS member

One approach to this would be to have two separate blockstore objects with different namespaces into the same underlying datastore. This way, iterating over the keys in our 'public' datastore will not yeild any private data.

yeah i think this would work

other approaches include:
1. making dags of "allowed" or "blocked" content
2. more granular ACLs where "allowed" or "blocked" can use lists of peers.
3. go fully to a capability system, with read caps

something like (2.) or (3.) is needed in the long run. (2.) will be hard to get right. general ways to do (3.) are well known and work well in practice.

@whyrusleeping
IPFS member

having dags for allowed or blocked content will get really expensive, as you get more and more content on your system, those dags will become massive, and the cost to percolate the changes up the dag to the root becomes more and more costly with each block you add.

mapping the concept of ACL's to ipfs is gonna be fun. I think we can do it, but it's going to be new territory.

@wking
IPFS member
@tv42

What @wking said, the set data type created for pinning should work ok for that. The current settings are items per node=8192 and fanout=256, which would handle 13 billion entries with a 4-level tree.

And it's imitating some of the ideas from fractal trees, so additions should typically touch only the root node.

(Note that the current implementation follows the old pinning API, which assumes in-memory state and full load/store; obviously that won't be fun with 10e9 entries.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.