gno icon indicating copy to clipboard operation
gno copied to clipboard

`r/sys/users` Mainnet v1 (mvp) & v2

Open moul opened this issue 1 year ago • 2 comments

For the launch (or ideally, before), we need to rewrite r/demo/users into a better version and rename it r/sys/users. This issue will outline the MVP requirements and the final vision for the system.

MVP / v1

The MVP (v1) implementation will focus on creating a simple username system with the following characteristics:

  • Usernames must be unique.
  • Usernames should start with three letters.
  • Usernames should end with three numbers.
  • Example: moul123.
  • A simple anti-squatting mechanism will be implemented, such as a DAO-managed blacklist of keywords, or a better option if available.
  • Users must either receive an invite or pay a fee.
  • Usernames will not be transferable at this stage.
  • Implementation Details: The MVP should resemble the current r/demo/users implementation but with the new constraints, and the system needs to be upgradeable.## Final(?) Vision (v2) Requirements

v2

The final version (v2) will enhance the MVP with advanced features:

  • Vanity Usernames: Users can register vanity usernames without the limitation of numbers. If a user already has a free username, they can retain it and add a vanity username, though several factors need consideration.
  • Advanced Anti-Squatting System: We will integrate a robust anti-squatting mechanism. -> #2727
  • Auction System: An auction system will be implemented in conjunction with the anti-squatting system.
  • Dual Username Considerations: We need to define how to handle previous accounts, specifically whether to prevent their use.
sequenceDiagram
    participant Alice
    participant r/users
    Alice->>r/g1234567/foo: addpkg
    Alice->>r/users: RegisterV1("alice123")
    Alice->>r/alice123/foo: addpkg
    Alice->>r/users: RegisterV2Vanity("alice")
    Alice->>r/alice/foo: addpkg

moul avatar Sep 21 '24 13:09 moul

I would like to give this a shot. Could work well with the teams realm I'm writing now.

irreverentsimplicity avatar Oct 17 '24 04:10 irreverentsimplicity

Since I'm not working on the teams realm anymore, I'll withdraw from this for now.

irreverentsimplicity avatar Oct 21 '24 03:10 irreverentsimplicity

For V1, the part I'm wondering about is the anti-squatting system managed by a DAO. Do we already have a pkg or an example of a realm that's managed by a DAO, or would the idea be to do it all from scratch? If it's from scratch, would it be better to develop a “dao manager/maker/factory/builder” pkg first, before tackling the new r/sys/users that would need it?

I link the PR: https://github.com/gnolang/gno/pull/2963 that could be used to build the dao that manage the users realms

MikaelVallenet avatar Oct 25 '24 21:10 MikaelVallenet

@MikaelVallenet

Have you started any work on this yet?

leohhhn avatar Nov 18 '24 10:11 leohhhn

@MikaelVallenet

Have you started any work on this yet?

Hello :wave:, no i did not

MikaelVallenet avatar Nov 18 '24 13:11 MikaelVallenet

Updated the OP: -> ~~Users must either receive an invite or pay a fee.~~ It may change in the future, but for now, let's assume that the enforced pattern above will be sufficient to make it permissionless.

moul avatar Nov 20 '24 18:11 moul

Just to comment on the state of the issue: revamped user registry (#3166) currently implements the name pattern for V1, and allows GovDAO to grant a user a vanity name of their choice.

Auctions, and other name-taking mechanisms are up for discussion and would be implemented for V2. I'll open a new issue about this.

leohhhn avatar Mar 10 '25 15:03 leohhhn