-
-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Ipns Filesystem Semantics #102
Comments
Warning, Brain Dump: |
I also feel like any other ipns entries (aka, other peoples public keys, and dns resolved names) should be a symlink over to /ipfs/thehashitresolvesto. Since the files denoted by those paths are NOT mutable, i feel this makes the most sense |
The ability to publish multiple different ipns pubkey entries would be nice, so as well as having your peer pubkeyhash in ipns, i propose we have a system where users can generate new keypairs through the ipns tool. Idea:
creates a new keypair which should be stored either in the config file, or in a separate file and referenced by the config file. Specifying a friendly name will symlink |
I like all these ideas. some of them may run into problems with FS semantics, or with naming expectations. listingMain issue with listing is we cannot list the full directory. POSIX semantics tend to be either list the whole thing or don't, so not clear whether we'll break things if we only list some directory entries. I agree it makes sense on our end, so maybe this should be a togged option. > ls /ipfs
# list all locally pinned hashes, plus these special files:
add # adds data written as objects to IPFS applying default blocking algo.
pin # pins a hash
> ls /ipns
# lists all local names, plus these special files
publish # write (pk, hash, sig) to publish a name. (or this sort of thing) OR maybe: > ls /ipfs
cached/ # list all locally cached objects (inc pinned)
pinned/ # list all locally pinned hashes, plus these special files:
add # adds data written as objects to IPFS applying default blocking algo.
pin # pins a hash
> ls /ipns
cached/
pinned/
local/ # lists all local names, plus these special files
publish # write (pk, hash, sig) to publish a name. that way, listing is always the same. issue though is that now resolving friendly local names
(just experimenting) > ipns init
# generates pub/key pair
created new name Qmzmxmzcmxvmzxmvcmvzmcvmz
> ipns [--id <pk hash>] name foo .
# take current directory's ipfs hash (say it's Qbbbbbbbbbb)
# add sub-name
mapped Qmzmxmzcmxvmzxmvcmvzmcvmz/foo to Qbbbbbbbbbb
> ipns resolve Qmzmxmzcmxvmzxmvcmvzmcvmz/foo
Qbbbbbbbbbb so your "friendly names" are pushed out as named tags/branches to your home "repo/domain". |
oh and +1 to |
although, ive been talked into thinking publish is a better name for the operation than commit |
More notes on this:
|
i like that. Curently |
Rough draft of commit structure:
Although, after writing this out, im mildly opposed to it... since it means one more retrieval that needs to happen (and consequently, more latency) |
https://github.com/jbenet/node-ipfs/blob/master/submodules/ipfs-objects-git/git-objects.proto#L36-L44 - but that's actually wrong. Some points on yours:
Another draft: // Let's look at it like an interface for simplicity
type Commit interface {
// Parent commit(s) (obj.links["parent[0-9]+"])
Parents() []Multihash
// Authors (obj.links["author[0-9]+"] + in obj.data)
Authors() []Authorship
// Published value (obj.links["value"])
Value() Multihash
//Commit Message (in obj.data)
Message() string
// Time of publish (in obj.data)
Date() time.Time
}
type Authorship struct {
// ptr to the identity of the author
Author Multihash
// ptr to a role like "author", "committer", "publisher", etc.
Role Multihash
}
This latency will be amortized after the first fetch + by smarter bitswap strategies. The flexibility of supporting arbitrary datastructures (the model) is much more important here, as we can address the sequential RTT issues. |
Okay, I like that. My reason for having a version number was that I assumed the only person publishing a certain priv key is that priv keys owner, and since a given |
Update Travis CI to use standard test script.
feat: add a transports section for enabling/disabling transports
feat: add a transports section for enabling/disabling transports
feat: add a transports section for enabling/disabling transports
feat: add a transports section for enabling/disabling transports
Hey, Just creating a discussion space for figuring out how the filesystem interface for ipns is going to feel!
The text was updated successfully, but these errors were encountered: