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 transfer channel membership between homeservers #238

Open
cjdelisle opened this issue Apr 6, 2017 · 1 comment
Open

Ability to transfer channel membership between homeservers #238

cjdelisle opened this issue Apr 6, 2017 · 1 comment
Labels
A-Identity-Service A-S2S Server-to-Server API (federation) feature Suggestion for a significant extension which needs considerable consideration

Comments

@cjdelisle
Copy link

I'm considering this distinct to https://github.com/matrix-org/GSoC/blob/master/IDEAS.md#decentralised-accounts because it is not as complex to implement.
The general idea is that I might want to move from @caleb:HomeserverA to @cjd:HomeserverB and while I accept that my handle will change, I would like to swap my new user into all of the channels and private messages which my old user was in and when I switch, I would like to keep my backscroll.

To bound the scope of this proposal:

  • Name change is expected, this is not about making a global p2p nickname namespace
  • Both involved homeservers are willing to perform the transfer

How the workflow might work:

  1. On the old homeserver, In your user settings, next to "disable account" there is "transfer account", which also shows a warning because it is also permanent, after you click this button, you enter the new id to transfer to (which should already be registered with the new homeserver).
  2. It produces for you a block of base64 which contains the new name and a signature authorising the shift, the user copies this.
  3. User logs into the new homeserver and goes to settings and clicks "import account" and pastes the base64 code.
  4. After verifying, the new homeserver broadcasts a transfer message to the network, this message contains the authorization to transfer from the old homeserver and so it is signed by both old and new.
  5. Receiving a transfer message, all homeservers find-and-replace the old user with the new one in the db.
  6. New homeserver begins to synchronize history of all of the channels joined from the old one. OR downloads them from the old homeserver through some special api...

Notes:

  • base64 blob and new homeserver name constitute 2 factor auth for transfer, this helps mitigate the risk that someone accidentally transfers to the wrong account (not theirs).
  • Transfers must be accepted, otherwise they can be used to "invite" people to zillions of channels
  • Transferring username and image are a "nice to have" but definitely not required.
@richvdh
Copy link
Member

richvdh commented Apr 20, 2017

somewhat related to matrix-org/synapse#1209

@richvdh richvdh added the feature Suggestion for a significant extension which needs considerable consideration label Oct 26, 2017
@turt2live turt2live added A-S2S Server-to-Server API (federation) A-Identity-Service labels Feb 6, 2019
@richvdh richvdh transferred this issue from matrix-org/matrix-spec-proposals Mar 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Identity-Service A-S2S Server-to-Server API (federation) feature Suggestion for a significant extension which needs considerable consideration
Projects
None yet
Development

No branches or pull requests

3 participants