jayrbolton / dat-wot

[WIP] A decentralized public key network with encryption utilities for data collaboration
52 stars 8 forks source link

Sharing and fetching private dats #22

Closed jayrbolton closed 7 years ago

jayrbolton commented 7 years ago

This adds a bunch of functionality around sharing a dat privately with one or more contacts and also listing dats that have been shared with you from your contacts. I really need to update the readme :yum:

The integration-style tests are getting unwieldy and repetitive. I was thinking of combining all those type of tests into one single big integration test and then adding smaller, separated unit tests. @karissa I could use your help to do dat unit tests sometime without all my process forking stuff

next things:

jayrbolton commented 7 years ago

Would also like to post dat-pki up on dat irc soon to maybe get some feedback and code reviews, maybe after a few more things have been implemented

okdistribute commented 7 years ago

What's a tag in this case? Is that a group?

Looks great, happy to help with the unit tests that just use in-memory replication. You can take two archives and replicate them to eachother directly in order to simulate the network connection. For example,

var stream = archive.replicate()
stream.pipe(archive2.replicate()).pipe(stream)

Example can be seen in the hyperdrive tests: https://github.com/mafintosh/hyperdrive/blob/master/test/basic.js#L50

jayrbolton commented 7 years ago

So I was kinda saving the term "groups" for multi-writer dats, where we could create a permissions system that can grant/revoke write access to a dat. There would also be considerations for administrating the group dat itself (a dat containing metadata for a group). The tag thing we could implement in the shorter term as a quick way to share a dat (give read access) to many users in one function call.

But now I'm thinking I don't need to separate it into "tags," and group read access could actually be part of the same thing as a multi-writing system

Some basic cases are:

Also, for "device networking", I was thinking it could be easy to have the user create a separate account on each device (separate keypair), do a handshake similar to adding a contact to authorize the "device pairing", and then all dats created on one device automatically become downloadable from the other device.

I'll give the memory streaming thing a shot soon