-
Notifications
You must be signed in to change notification settings - Fork 575
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
Add ERC: Social SBT #865
base: master
Are you sure you want to change the base?
Add ERC: Social SBT #865
Changes from 2 commits
bd22352
0627bda
9935119
6a813b5
2cf309d
c7c4d16
f378559
eb133bb
6ee419a
66f72bf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,125 @@ | ||||||
--- | ||||||
eip: 7869 | ||||||
title: Social SBT | ||||||
description: Social SBT, A Soul-Bound Token for DAO Governance | ||||||
author: Ali Bertay SOLAK (@alibertay) | ||||||
discussions-to: https://ethereum-magicians.org/t/erc-social-sbt/22363 | ||||||
status: Draft | ||||||
type: Standards Track | ||||||
category: ERC | ||||||
created: 2024-01-25 | ||||||
--- | ||||||
|
||||||
## Abstract | ||||||
SocialSBT is a non-transferable ERC-721-based token standard that integrates a dynamic social point system for DAO governance. It aims to mitigate whale attacks and promote equitable, community-driven decision-making. | ||||||
Check failure on line 14 in ERCS/erc-7869.md
|
||||||
|
||||||
SocialSBT introduces a soulbound token standard built on ERC-721 that incorporates a social point system for DAO governance. Tokens are non-transferable, and governance power is tied to contributions rather than token holdings. Members can vote on adjustments to social points based on behavior and contributions, ensuring fair and community-aligned decision-making. | ||||||
Check failure on line 16 in ERCS/erc-7869.md
|
||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The first mention of "ERC-7869" in ERCS/erc-7869.md is not a hyperlink, which triggers the following validation error: To fix this, please update the first occurrence of "ERC-7869" to be a hyperlink. You can refer to the guidelines here: Markdown Link First. |
||||||
|
||||||
## Motivation | ||||||
|
||||||
Traditional DAO's economic token based governance models are prone to manipulation by entities with significant financial resources, undermining the collective interests of the community. SocialSBT shifts governance influence to social contributions rather than token holdings, mitigating whale attacks and fostering fair participation. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
The system rewards positive contributions and penalizes harmful behaviors. A economic token based voting mechanism ensures equitable participation during social point adjustments, promoting fairness and encouraging active engagement in DAO governance. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
## Specification | ||||||
|
||||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. | ||||||
|
||||||
All functions and structures declared in this section MUST be used | ||||||
|
||||||
1. **Minting Tokens** | ||||||
- **Function**: mint() public payable | ||||||
- **Description**: Mints a SocialSBT token for the caller, provided they pay the _price and do not already own a token. | ||||||
- **Constraints**: | ||||||
- The caller must pay the exact _price. | ||||||
- Each address can own only one token. | ||||||
|
||||||
2. **Deleting Tokens** | ||||||
- **Function**: deleteToken(uint256 tokenId) public | ||||||
- **Description**: Allows token owners to permanently delete their tokens without refunds. | ||||||
- **Constraints**: | ||||||
- Caller must own the specified token. | ||||||
|
||||||
3. **Voting on Proposals** | ||||||
- **Function**: vote(uint256 votingIndex_, bool choice_) public | ||||||
- **Description**: Token holders can vote "yes" (true) or "no" (false) on proposals to adjust social points. | ||||||
- **Constraints**: | ||||||
- Caller must own a token. | ||||||
- Each caller can vote only once per proposal. | ||||||
|
||||||
4. **Ending Voting** | ||||||
- **Function**: endVoting(uint256 votingIndex_) public | ||||||
- **Description**: Ends voting and adjusts points if the majority votes "yes." | ||||||
- **Constraints**: | ||||||
- Voting period must have expired. | ||||||
- Proposal must be active. | ||||||
|
||||||
5. **Querying Token Points** | ||||||
- **Function**: pointOf(uint256 tokenId) public view returns (uint256) | ||||||
- **Description**: Retrieves the social points associated with a specified token. | ||||||
|
||||||
6. **Event Triggers** | ||||||
- **NewVotingCreated**: Triggered when a voting proposal is created. | ||||||
- **VoteEvent**: Triggered when a user casts a vote. | ||||||
- **VotingEnd**: Triggered when voting ends. | ||||||
- **PointUpdated**: Triggered when token points are adjusted. | ||||||
|
||||||
7. **Voting Struct** | ||||||
- **votingIndex**: uint256 | ||||||
- **name**: string | ||||||
- **description**: string | ||||||
- **tokenIndex**: uint256 | ||||||
- **point**: uint256 | ||||||
- **increase**: bool | ||||||
- **yes**: uint256 | ||||||
- **no**: uint256 | ||||||
- **startDate**: uint256 | ||||||
- **endDate**: uint256 | ||||||
- **isActive**: bool | ||||||
|
||||||
## Rationale | ||||||
|
||||||
SocialSBT decouples governance power from token holdings by implementing economic token based system. This ensures fairness and prevents undue influence by high-point token holders. Non-refundable token burning discourages speculative behaviors and maintains the integrity of DAO governance. | ||||||
|
||||||
## Backwards Compatibility | ||||||
|
||||||
SocialSBT extends the ERC-721 standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. | ||||||
Check failure on line 86 in ERCS/erc-7869.md
|
||||||
|
||||||
## Test Cases | ||||||
|
||||||
1. **Minting Tokens** | ||||||
- Expected: Successful minting for eligible users. | ||||||
- Failures: | ||||||
- User already owns a token. | ||||||
- Payment amount does not match _price. | ||||||
|
||||||
2. **Voting** | ||||||
- Expected: Correct vote recording and prevention of duplicate voting. | ||||||
- Failures: | ||||||
- Non-token holder participation. | ||||||
- Duplicate votes on the same proposal. | ||||||
|
||||||
3. **Ending Voting** | ||||||
- Expected: Accurate point adjustment based on majority votes. | ||||||
- Failures: | ||||||
- Ending before expiration. | ||||||
- Inactive proposals. | ||||||
|
||||||
4. **Burning Tokens** | ||||||
- Expected: Permanent token removal. | ||||||
- Failures: | ||||||
- Unauthorized burn attempts. | ||||||
|
||||||
## Security Considerations | ||||||
|
||||||
SocialSBT ensures secure governance through: | ||||||
- **Non-transferability**: Prevents token trading and governance manipulation. | ||||||
- **Fair voting**: Independent of social points. | ||||||
- **Mitigation of whale attacks**: Restricts tokens to one per wallet. | ||||||
- **Non-refundable burning**: Discourages exploitative behaviors. | ||||||
|
||||||
Needs discussion. | ||||||
|
||||||
## Copyright | ||||||
|
||||||
Copyright and related rights waived via [CC0](../LICENSE.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I reviewed the abstract, and it does a great job of introducing SocialSBT and its goals. However, to better align with the purpose of an abstract, I think it could more clearly summarize how the proposal works. Right now, it focuses on the features and intended outcomes but doesn't fully explain the mechanism behind the social point system and its integration with ERC-721.
Clarify the Mechanism – How does the social point system integrate with ERC-721? How are social points assigned and adjusted? What actions contribute to governance power?
A clear flow of how SocialSBT mitigates whale attacks in practice.