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

Ability to republish third-party /ipns/ records #3117

Open
Tangent128 opened this issue Aug 24, 2016 · 12 comments
Open

Ability to republish third-party /ipns/ records #3117

Tangent128 opened this issue Aug 24, 2016 · 12 comments
Labels
help wanted Seeking public contribution on this issue kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up topic/ipns Topic ipns

Comments

@Tangent128
Copy link

Tangent128 commented Aug 24, 2016

The publishing node for an /ipns/ name might be offline for an extended period of time; it should be possible for other nodes interested in the node's content to republish the name so it doesn't expire.

This could be done by having nodes explicitly configured with names to keep alive (once automated republishing of your own name is in); or nodes might just refresh records when they resolve them.

@jbenet
Copy link
Member

jbenet commented Aug 24, 2016

Yep agreed.
On Tue, Aug 23, 2016 at 23:19 Tangent128 [email protected] wrote:

Type (bug, feature, meta, test failure, question): feature
Area (api, commands, daemon, fuse, etc): dht
Priority (from P0: functioning, to P4: operations on fire): P1

Description:

The publishing node for an /ipns/ name might be offline for an extended
period of time; it should be possible for other nodes interested in the
node's content to republish the name so it doesn't expire.

This could be done by having nodes explicitly configured with names to
keep alive (once automated republishing of your own name is in); or nodes
might just refresh records when they resolve them.


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
#3117, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIcoVQBJPciE7xuNjqtBMFcY0S0iewpks5qi7g1gaJpZM4JrmR6
.

@whyrusleeping whyrusleeping added kind/enhancement A net-new feature or improvement to an existing feature help wanted Seeking public contribution on this issue topic/ipns Topic ipns labels Aug 24, 2016
@whyrusleeping
Copy link
Member

@Tangent128 thanks for filing! Your own name currently gets republished automatically (as long as your node is online of course). We can expand that mechanism a bit and expose it through some api.

@matthewrobertbell
Copy link

My 2 cents:

When I access normal IPFS data, I'm implicitly agreeing to host that data for a while, it should be the same when I access an IPNS record. Popular IPNS records are therefore automatically widely available.

If explicit action was required to host the record, it's unlikely many would do it, leaving IPNS de facto centralised.

@whyrusleeping
Copy link
Member

@mattseh good point, rehosting ipns records should have the same feel to it as other content on the network. I'm not yet sure how best to do that though, multiple people rebroadcasting the same ipns entry isnt super useful, you really just need at least one. More causes spam (and doesnt actually improve availablility any)

@Kubuxu
Copy link
Member

Kubuxu commented Aug 26, 2016

Maybe we could measure availability of IPNS entry, IIRC we query for 20, 16 is accepted as done, otherwise we wait for some timeout. If we reach this timeout, but we have good number of entries (10+) we can rebroadcast the right one back to the network?

Also do we send the right IPNS entry to a peers that sent as a outdated ones?

@matthewrobertbell
Copy link

To add to my point: There is a nice use case for IPFS in general, where a group of computers that are networked together but not connected to the internet can do a lot of useful things, for example sharing files.

If they wish to share files that are updated from a feed that is powered by IPNS, this falls over unless the IPNS owner is part of that network, but this would often not be the case, for example with a popular podcast feed.

@lockedshadow
Copy link

First of all, I apologize for my bad english. Hope that you can understand it.
(But it very important topic for me, so I'm try to expound my point of view!)

When I access normal IPFS data, I'm implicitly agreeing to host that data for a while

...and when I pin some IPFS object, I'm explicitly agreeing to host that object permanently (until I not unpin that, of course). So maybe the upcoming mechanism of republish third-party IPNS records should contains the same two mode? And process of explicitly republishing of IPNS entries should be named «ipns pinning»?

At least, «ipns pinning» itself would be very useful: when the validity of every IPNS link completely depends on uptime of the node which publishes certain content (let's call this node «Origin»), it's a sort of centralization again, isn't it? But everything changed when appears other nodes interested in the «Origin»'s content. If this nodes (let's call them «Keepers») will have ability to explicitly republish IPNS record of some «Origin», the last state of content that referenced by this record will be available in case of «Origin» temporary go offline, and even completely disappear someday, until all «Keepers» not disappear. (Something like parity in availability of IPFS objects and IPNS links, right?)

Thus, execution of «ipns pinning» maybe should recursive pin IPFS objects which are linked with given IPNS entry too — for ensure consistency of all linked data, not only list of hashes. But on the other hand, some extremely large data published by «Origin» may cause network and/or storage issues on the «Keepers» nodes...

@whyrusleeping whyrusleeping added this to the Ipfs 0.4.12 milestone Sep 3, 2017
@Kubuxu
Copy link
Member

Kubuxu commented Nov 6, 2017

It is possible with keystore.

# generate key
ipfs key gen --type rsa --size 2048 shared-key
# move "$IPFS_PATH/keystore/shared-key"  do different machine
# on different machine
ipfs name publish -k shared-key /ipfs/Qm...AAA

@Kubuxu Kubuxu closed this as completed Nov 6, 2017
@lidel lidel added the P1 High: Likely tackled by core team if no one steps up label Nov 10, 2021
@lidel lidel removed this from the Ipfs 0.4.12 milestone Nov 10, 2021
@lidel
Copy link
Member

lidel commented Nov 10, 2021

Reopening, as we still can't "pin and provide" IPNS records signed by other people's keys.

@RangerMauve
Copy link

This would be super useful to have built into go-ipfs. Would outside contributions or a devgrant be appreciated for this functionality?

@aschmahmann
Copy link
Contributor

Yep! Some pointers and previous issues are mentioned in the linked issue (#1958 (comment)).

A lot of the work here is UX so would recommend anyone taking this on to post an issue describing their approach to make it easier to discuss before doing all the coding and wiring up. If people would rather discuss once there's a PR + some live code that's fine too just a greater risk that they'll have to rewrite some code.

@RangerMauve
Copy link

Should either this or #1958 be closed as a duplicate?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Seeking public contribution on this issue kind/enhancement A net-new feature or improvement to an existing feature P1 High: Likely tackled by core team if no one steps up topic/ipns Topic ipns
Projects
None yet
Development

No branches or pull requests

9 participants