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

refactor: r/demo/users #3166

Draft
wants to merge 93 commits into
base: master
Choose a base branch
from
Draft

refactor: r/demo/users #3166

wants to merge 93 commits into from

Conversation

leohhhn
Copy link
Contributor

@leohhhn leohhhn commented Nov 20, 2024

Description

Addresses: #2827

WIP

This PR refactors the current r/demo/users & r/sys/users system in accordance to the issue mentioned above. Here is the high-level overview:

  • Removes the r/demo/users package in favor of r/gnoland/users
  • r/gnoland/users becomes the main entry-point for users registering their usernames
  • Modifies r/sys/users:
    • It now contains the address/name <> user store, so that the registration implementation (such as r/gnoland/users) can be agnostic and upgradeable, by providing a whitelist mechanism which allows write access to the store to certain addresses
  • Implements better rendering
  • Both r/sys/users & r/gnoland/users are ownable & pausable, currently by a single address, which could become a DAO at one point
Contributors' checklist...
  • Added new tests, or not needed, or not feasible
  • Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory
  • Updated the official documentation or not needed
  • No breaking changes were made, or a BREAKING CHANGE: xxx message was included in the description
  • Added references to related issues and PRs
  • Provided any useful hints for running manual tests

@github-actions github-actions bot added the 🧾 package/realm Tag used for new Realms or Packages. label Nov 20, 2024
Copy link

codecov bot commented Nov 21, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

📢 Thoughts on this report? Let us know!

@zivkovicmilos zivkovicmilos self-requested a review November 21, 2024 06:03
@leohhhn leohhhn changed the title refactor: r/demo/users refactor: r/demo/users Nov 21, 2024
@github-actions github-actions bot added 📦 🤖 gnovm Issues or PRs gnovm related 📦 🌐 tendermint v2 Issues or PRs tm2 related 📦 ⛰️ gno.land Issues or PRs gno.land package related labels Nov 25, 2024
# Conflicts:
#	examples/gno.land/r/demo/users/users.gno
#	examples/gno.land/r/demo/users/z_10_filetest.gno
#	examples/gno.land/r/demo/users/z_11_filetest.gno
#	examples/gno.land/r/demo/users/z_11b_filetest.gno
#	examples/gno.land/r/demo/users/z_2_filetest.gno
#	examples/gno.land/r/demo/users/z_3_filetest.gno
#	examples/gno.land/r/demo/users/z_4_filetest.gno
#	examples/gno.land/r/demo/users/z_5_filetest.gno
#	examples/gno.land/r/demo/users/z_6_filetest.gno
#	examples/gno.land/r/demo/users/z_7_filetest.gno
#	examples/gno.land/r/demo/users/z_7b_filetest.gno
#	examples/gno.land/r/demo/users/z_8_filetest.gno
#	examples/gno.land/r/demo/users/z_9_filetest.gno
#	examples/gno.land/r/sys/users/verify.gno

// ResolveAddressOrName
// Note: unlike ResolveName, input must be "@" prefixed for names
func ResolveAddressOrName(aon string) *UserData {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I say we completely remove this function, its annoying to handle and can lead to bugs. Let's leave it up to the users if they want to provide a named lookup or only an address lookup

)

const (
adminAddr = "g1u7y667z64x2h7vc6fmpcprgey4ck233jaww9zq" // @moul
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the goal is to have a DAO managing it, I prefer using the existing GovDAO system or implementing panic("not implemented") instead of relying on an outdated centralized admin.

Comment on lines +12 to +13
WhitelistAddEvent = "WhitelistAdd"
WhitelistDeleteEvent = "WhitelistDelete"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this.

If you want to implement a whitelisting system, please write a p/ library for this. However, I prefer not to include advanced logic and event handling inline in the core implementation of an r/sys/ contract. Let's keep the implementation concise.

)

var (
Ownable = ownable.NewWithAddress(adminAddr) // Until a DAO is formed to manage this contract
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type UserData struct {
addr std.Address
username string
alias *UserData
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
alias *UserData
aliasTo *UserData

std.TestSetOrigCaller(whitelistedCallerAddr)

t.Run("valid_registration", func(t *testing.T) {
t.Parallel()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should not have to set this, please remove.

}

// GetReadonlyStore exposes the username store in readonly mode
func GetReadonlyStore() *rotree.ReadOnlyTree {
Copy link
Member

@moul moul Jan 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
func GetReadonlyStore() *rotree.ReadOnlyTree {
func GetReadonlyNameStore() avl.ITree {

}

// RegisterAlias adds an Alias pointing to an existing user.
func RegisterAlias(alias string, address std.Address) error {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The action is not to register an alias, but to replace a name and transform the existing one into an alias for the newly created name.

It takes the newName, previousName string signature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📦 🌐 tendermint v2 Issues or PRs tm2 related 📦 ⛰️ gno.land Issues or PRs gno.land package related 📦 🤖 gnovm Issues or PRs gnovm related 🧾 package/realm Tag used for new Realms or Packages.
Projects
Status: 📥 Inbox
Status: In Progress
Development

Successfully merging this pull request may close these issues.

r/sys/users Mainnet v1 (mvp) & v2
6 participants