You are reading content from Scuttlebutt
@Anders %bwJIDc5qP6j5uNSeJLB0WQGSNOagswiel6ZLMcHu3KY=.sha256

Feedless identity

The idea for feedless identities and the name came out of a few conversations with Andre around meta feeds and how we can create a solution for same-as.

I should probably start by saying that same-as is something that a lot of different people have been trying to solve many times before. So with that in mind let me try and sketch anoter solution anyway ;-)

What we wanted was 3 things:

  • An identity to refer to
  • A member protocol including a way to deal with removing members
  • A way to send private messages to all member of this identity

Feedless identity is a concept where multiple regular identities are linked together with a specific purpose, such as belonging to the same physical person (same-as). The identity will have keypair that is shared with the linked members. The reason it is called feedless is because, as the name implies, all messages related to the identity is posted on the feeds of the members of an feedless identity.

Each identity should have a feed containing messages related to feedless identities it is linked to. Each feedless identity works by consensus, meaning as long as all the members of an identity are mutually linked, the identity is considered valid. Any member of the identity can revoke the validity of an identity by creating a tombstone message.

To create a new feedless identity, a keypair is created and the identity is announced:

{ type: 'feedless/create', identity: '@id', name: 'arj' }

The identity can then be linked between identities:

{ type: 'feedless/link', identity: '@id', from: '@mf', to: '@othermf', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }

Once @othermf posts a similar message, the identity is linked and the creator of the identity should send the private key of the identity to the new member. Messages of a feedless identity are tangled using the initial message as the root.

The identity can be extended with members by having all current members linking the new identity and the new identity linking back.

Any member can revoke the feedless identity by posting the following message:

{ type: 'feedless/tombstone', identity: '@id', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }

Once another member sees this message they should also post a tombstone message, this is to make it harder for an adversary to try and keep the identity alive by withholding new messages after one of the identities has been compromised. It is up to the members to create a new feedless identity as the existing is now considered void and should not be used.

Lastly the name can be changed in a consensus fashion as well:

{ type: 'feedless/name', identity: '@id', name: 'arj', tangles: { feedless: { root: '%abc', previous: '%abcd' } } }

A new identity added to the feedless identity can merge these messages by including the name in the link message.

These feedless identities thus act as public groups. They work best for small groups where the members should be publicly known. For larger groups, private-groups should be considered instead.

It might also be possible to operate with identities where instead of full censensus only a quorum is needed. Imagine you have groups of groups, where instead of having each member of a feedless identity ack a link between the identity and another linked identity, you would only have say 2/3 of the members do that. Another thing to note about groups of groups is that in the consensus form they end up being the same as just a group of all the individual feeds.

Messages to the feedless identity should be posted as box2 messages. There is a large overlap between this and private groups implementation wise (keystore, reindexing etc).

@Anders %w+lPQ2qgP1bG3d4M/28HhqUUJr0d0n2eb74j7qQoWzk=.sha256

@mixmix @Mix Android would love your feedback on this :-)

User has not chosen to be hosted publicly
User has not chosen to be hosted publicly
User has chosen not to be hosted publicly
@Anders %vwMi2ZtQuOAdUjerdPjbDY6/NhmUoXitkA3RC94+0VU=.sha256

@Mix Android I'll leave some comments here responded to your audio message before I forget.

  • Tangle: it already is :) Might be a bit hard to see because the line is so long
  • Authorization and private group membership:
    One thing I like about the solution above is that they behave very much like ordinary identities in that you reference them by the id. The ID can be compromised, but again this is not really that different from an ordinary feed. I would argue that we have a stronger model here because we have tombstones.
  • virtual identity (cycling keys): I could maybe see the argument for being able to cycle keys, I'm just very afraid that going that down that road will lead to a lot of hard problems and edge cases. Like what happens if two people try to kick each other out? One thing that was important for me with this design was to keep it very simple to avoid these things. The question is if its too simple. I would argue that what we have here enables some very interesting use cases that people have been wanting for a very long time.

Very keen on having a call on this, but wanted to give you some more context first.

User has not chosen to be hosted publicly
User has not chosen to be hosted publicly
User has not chosen to be hosted publicly
@cel-desktop %Otasx4bP3qlGqm9AhYe4ymLYoC2hJPty1uPpVSYflWY=.sha256

Feedless is also the name of an SSB app by @rchaves: %GUm8osP..., %/9rxDo8.... I don't think there is collision in the proposed message types though.

@Anders %6s+RFXv1Ps2Y638X2ZjncjNu/2CMi0kI8GqfMUqA8lQ=.sha256

@Timothy Bradley both meta feeds and feedless identity requires mutual consent in order to be linked.

@mix %whhh9Fd50elOTIibn6c2cqrhchBzoz0TetAayYvP15U=.sha256

UPDATE: mix and arj have started meeting regularly to get into the details of this. Tmrw we'll be having our third pairing session trying to pull together a draft spec.

Currently I'm most excited about calling it the Fusion Dance spec

fusion-dance.gif

@luandro %2j1iZVkootksrXqz8O4K7vnHIM2ooN6vJGyMbmi0MwM=.sha256

fusion.gif

Exciting 🎉 🎉

@mix %pm0OOGzd0erqPQoT3pRBkgqZzxR500rD8e8IItz31DM=.sha256
Voted ![fusion.gif](&AtQIL5Li5pqCqCWEIKfgc5nqfYB1P51cSeScir76Zew=.sha256) Exciti
@mix %J1aLcG3MKS7YijfWYlibV78cWnUZRq+AOedPBGeF8cE=.sha256

exactly @Luandro Pàtwy. Glad you got the reference !

Join Scuttlebutt now