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

Disable transfers of MembershipNFTs & revoke NFT for ex-members #26

Open
oslfmt opened this issue Jun 30, 2022 · 2 comments
Open

Disable transfers of MembershipNFTs & revoke NFT for ex-members #26

oslfmt opened this issue Jun 30, 2022 · 2 comments
Labels
enhancement New feature or request

Comments

@oslfmt
Copy link
Contributor

oslfmt commented Jun 30, 2022

Since these have no monetary value and are to represent membership and function as a login token, I think members shouldn't be able to "transfer" these NFTs. I can't think of any instance where someone would for any good reason, except to perhaps gain voting power. We would probably want to disable that, since we expect everyone to have a voting power of 1.

Some related issues are: how should we revoke these NFTs after someone is no longer a member, either because they graduated or left the DAO?

A possible solution is setting some sort of timestamp, after which the NFT is automatically transferred to the 0x0 address. I'm not sure if this is possible though. Opening this thread for discussion.

@cartercameron1
Copy link
Contributor

I looked into disabling transfer abilities. Open Zeppelin does not have any current audited contracts for for removing transfers. One thing we could look into is capping voting power to a single vote, but then you could just create multiple addresses. As for revoking ERC721 Tokens, there is a way to pause functionality. Pausing functionality could solve both problems here, but the DAO would have to manually do it. I am open to any other suggestions.

@oslfmt oslfmt changed the title Disable transfers of MembershipNFTs Disable transfers of MembershipNFTs & revoke NFT for ex-members Jul 5, 2022
@oslfmt
Copy link
Contributor Author

oslfmt commented Jul 5, 2022

Pausing functionality seems like a decent workaround way to "revoke" NFTs. I'd say its probably even the best/easiest solution to this issue. Another possibility for revoking is instead of pausing, we can write a revoke function which burns the NFT. We could require a multisig of both the owner and DAO owner in order to call the function to avoid centralization powers.

A possibility for disabling transfers is just simpling overriding the transfer() function to just do nothing. We'd probably want to look into this further to make sure there's no unwanted side effects. Of course, this would mean the token is technically not an ERC721 token anymore, since it doesn't adhere to the standard, but honestly it's not meant to be one either.

@oslfmt oslfmt added the enhancement New feature or request label Aug 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants