From bd223522c9b8da76d0039e31fffcf9d82dcecf20 Mon Sep 17 00:00:00 2001 From: Ali Bertay SOLAK <54456222+alibertay@users.noreply.github.com> Date: Sat, 25 Jan 2025 13:17:58 +0300 Subject: [PATCH 1/6] Create erc-social_sbt.md --- ERCS/erc-social_sbt.md | 125 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 ERCS/erc-social_sbt.md diff --git a/ERCS/erc-social_sbt.md b/ERCS/erc-social_sbt.md new file mode 100644 index 0000000000..f0497b5602 --- /dev/null +++ b/ERCS/erc-social_sbt.md @@ -0,0 +1,125 @@ +--- +eip: draft +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. + +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. + +## 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. + +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. + +## 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. + +## 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). From 0627bda78974f0228d7d08f55602278e40cc0b67 Mon Sep 17 00:00:00 2001 From: Sam Wilson <57262657+SamWilsn@users.noreply.github.com> Date: Mon, 27 Jan 2025 10:55:32 -0500 Subject: [PATCH 2/6] Update and rename erc-social_sbt.md to erc-7869.md --- ERCS/{erc-social_sbt.md => erc-7869.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ERCS/{erc-social_sbt.md => erc-7869.md} (99%) diff --git a/ERCS/erc-social_sbt.md b/ERCS/erc-7869.md similarity index 99% rename from ERCS/erc-social_sbt.md rename to ERCS/erc-7869.md index f0497b5602..c521daaa25 100644 --- a/ERCS/erc-social_sbt.md +++ b/ERCS/erc-7869.md @@ -1,5 +1,5 @@ --- -eip: draft +eip: 7869 title: Social SBT description: Social SBT, A Soul-Bound Token for DAO Governance author: Ali Bertay SOLAK (@alibertay) From 9935119190022eadadec0671325782539785d591 Mon Sep 17 00:00:00 2001 From: Ali Bertay SOLAK <54456222+alibertay@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:33:58 +0300 Subject: [PATCH 3/6] Update erc-7869.md Errors have been fixed, Social SBT's point usage area has been explained more clearly, and a flow on how to prevent baline attacks has been created. --- ERCS/erc-7869.md | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/ERCS/erc-7869.md b/ERCS/erc-7869.md index c521daaa25..b360d992c2 100644 --- a/ERCS/erc-7869.md +++ b/ERCS/erc-7869.md @@ -11,25 +11,33 @@ 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. +SocialSBT is a non-transferable [ERC-721](https://eips.ethereum.org/EIPS/eip-721)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. -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. +Each SocialSBT token starts with zero social points. Social points are adjusted through a community-driven voting process, where token holders vote on whether to increase or decrease an individual’s points based on their behavior and contributions. This system prevents governance manipulation by large token holders and ensures that influence within the DAO is distributed fairly. + +By enforcing non-transferability, limiting token ownership to one per address, and introducing a community-based voting mechanism, SocialSBT strengthens the integrity of DAO governance and fosters a more community-aligned decision-making process. ## 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. +Traditional DAOs' economic token-based governance models are prone to manipulation by entities with significant financial resources, undermining the collective interests of the community. + +In typical DAOs, governance tokens are bought and sold on the open market, meaning that a whale can acquire a large number of tokens and use them to dominate voting processes. This enables wealthy individuals or entities to override community-driven decisions simply by purchasing voting power. -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. +SocialSBT shifts governance influence to social contributions rather than token holdings, mitigating whale attacks and fostering fair participation. However, social points are not automatically granted for actions. Instead, members must contribute meaningfully to the community in ways that encourage others to propose an increase in their social points. Social point adjustments occur through a **community-driven voting process**, where other members decide whether a participant’s contributions merit an increase or decrease in governance influence. This ensures that governance power remains a **collective decision**, rather than an automated metric or financial purchase. ## 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 +All functions and structures declared in this section MUST be used. + +**Non-Transferability Enforcement** + - **Disabled Functions**: `transferFrom` and `safeTransferFrom` + - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://eips.ethereum.org/EIPS/eip-721) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. 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. + - **Function**: mint() public override payable + - **Description**: The mint function MUST override the base [ERC-721](https://eips.ethereum.org/EIPS/eip-721) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. - **Constraints**: - The caller must pay the exact _price. - Each address can own only one token. @@ -79,11 +87,21 @@ All functions and structures declared in this section MUST be used ## 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. +SocialSBT decouples governance power from token holdings by implementing a community-based governance system. This ensures fairness and prevents undue influence by high-point token holders. + +Unlike traditional DAOs, where governance power is directly tied to the number of tokens held, SocialSBT enforces a **contribution-based governance model**. However, social points are **not automatically assigned** when a user contributes. Instead, members must perform valuable actions that prompt the community to initiate a voting process to recognize their efforts. This approach ensures that social points are **collectively decided and transparently adjusted** rather than arbitrarily awarded. + +Here’s how SocialSBT mitigates whale attacks in practice: + +1. **Non-transferable tokens**: Since SocialSBT tokens cannot be bought or transferred, governance power cannot be acquired through market purchases. +2. **Community-driven social point adjustments**: Social points are not automatically granted. Instead, a proposal must be initiated and approved by the DAO community for a member’s points to increase or decrease. +3. **Contribution-based voting power**: Only members who provide meaningful contributions can gain governance influence, and these contributions must be recognized by the community through an **on-chain voting process**. + +Because SocialSBT ensures that governance influence is directly linked to community engagement rather than wealth, whales cannot manipulate voting outcomes by simply acquiring tokens. This system reinforces democratic participation and aligns decision-making with the collective interests of the DAO. ## 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. +SocialSBT extends the [ERC-721](https://eips.ethereum.org/EIPS/eip-721) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. ## Test Cases From 6a813b5f1208a2cc12e3dd12079cb34e97c990a1 Mon Sep 17 00:00:00 2001 From: Ali Bertay SOLAK <54456222+alibertay@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:38:42 +0300 Subject: [PATCH 4/6] Update erc-7869.md ERC721 hyperlink updated --- ERCS/erc-7869.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ERCS/erc-7869.md b/ERCS/erc-7869.md index b360d992c2..88927ab090 100644 --- a/ERCS/erc-7869.md +++ b/ERCS/erc-7869.md @@ -11,7 +11,7 @@ created: 2024-01-25 --- ## Abstract -SocialSBT is a non-transferable [ERC-721](https://eips.ethereum.org/EIPS/eip-721)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. +SocialSBT is a non-transferable [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. Each SocialSBT token starts with zero social points. Social points are adjusted through a community-driven voting process, where token holders vote on whether to increase or decrease an individual’s points based on their behavior and contributions. This system prevents governance manipulation by large token holders and ensures that influence within the DAO is distributed fairly. @@ -33,11 +33,11 @@ All functions and structures declared in this section MUST be used. **Non-Transferability Enforcement** - **Disabled Functions**: `transferFrom` and `safeTransferFrom` - - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://eips.ethereum.org/EIPS/eip-721) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. + - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. 1. **Minting Tokens** - **Function**: mint() public override payable - - **Description**: The mint function MUST override the base [ERC-721](https://eips.ethereum.org/EIPS/eip-721) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. + - **Description**: The mint function MUST override the base [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. - **Constraints**: - The caller must pay the exact _price. - Each address can own only one token. @@ -101,7 +101,7 @@ Because SocialSBT ensures that governance influence is directly linked to commun ## Backwards Compatibility -SocialSBT extends the [ERC-721](https://eips.ethereum.org/EIPS/eip-721) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. +SocialSBT extends the [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. ## Test Cases From 2cf309d1a19a76026502d8394d67600aac5029fa Mon Sep 17 00:00:00 2001 From: Ali Bertay SOLAK <54456222+alibertay@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:41:04 +0300 Subject: [PATCH 5/6] Update erc-7869.md --- ERCS/erc-7869.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ERCS/erc-7869.md b/ERCS/erc-7869.md index 88927ab090..b360d992c2 100644 --- a/ERCS/erc-7869.md +++ b/ERCS/erc-7869.md @@ -11,7 +11,7 @@ created: 2024-01-25 --- ## Abstract -SocialSBT is a non-transferable [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. +SocialSBT is a non-transferable [ERC-721](https://eips.ethereum.org/EIPS/eip-721)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. Each SocialSBT token starts with zero social points. Social points are adjusted through a community-driven voting process, where token holders vote on whether to increase or decrease an individual’s points based on their behavior and contributions. This system prevents governance manipulation by large token holders and ensures that influence within the DAO is distributed fairly. @@ -33,11 +33,11 @@ All functions and structures declared in this section MUST be used. **Non-Transferability Enforcement** - **Disabled Functions**: `transferFrom` and `safeTransferFrom` - - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. + - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://eips.ethereum.org/EIPS/eip-721) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. 1. **Minting Tokens** - **Function**: mint() public override payable - - **Description**: The mint function MUST override the base [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. + - **Description**: The mint function MUST override the base [ERC-721](https://eips.ethereum.org/EIPS/eip-721) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. - **Constraints**: - The caller must pay the exact _price. - Each address can own only one token. @@ -101,7 +101,7 @@ Because SocialSBT ensures that governance influence is directly linked to commun ## Backwards Compatibility -SocialSBT extends the [ERC-721](https://github.com/ethereum/ERCs/blob/master/ERCS/eip-721.md) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. +SocialSBT extends the [ERC-721](https://eips.ethereum.org/EIPS/eip-721) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. ## Test Cases From c7c4d16387dcb7f0aa4d1ffff3f3309a22045cab Mon Sep 17 00:00:00 2001 From: Ali Bertay SOLAK <54456222+alibertay@users.noreply.github.com> Date: Wed, 29 Jan 2025 15:46:11 +0300 Subject: [PATCH 6/6] Update erc-7869.md --- ERCS/erc-7869.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ERCS/erc-7869.md b/ERCS/erc-7869.md index b360d992c2..1315172579 100644 --- a/ERCS/erc-7869.md +++ b/ERCS/erc-7869.md @@ -11,7 +11,7 @@ created: 2024-01-25 --- ## Abstract -SocialSBT is a non-transferable [ERC-721](https://eips.ethereum.org/EIPS/eip-721)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. +SocialSBT is a non-transferable [ERC-721](./eip-721)-based token standard that integrates a dynamic social point system to enhance DAO governance. Unlike traditional token-based governance, SocialSBT allocates voting power based on social contributions rather than financial holdings, mitigating whale attacks and ensuring equitable decision-making. Each SocialSBT token starts with zero social points. Social points are adjusted through a community-driven voting process, where token holders vote on whether to increase or decrease an individual’s points based on their behavior and contributions. This system prevents governance manipulation by large token holders and ensures that influence within the DAO is distributed fairly. @@ -33,11 +33,11 @@ All functions and structures declared in this section MUST be used. **Non-Transferability Enforcement** - **Disabled Functions**: `transferFrom` and `safeTransferFrom` - - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](https://eips.ethereum.org/EIPS/eip-721) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. + - **Description**: SocialSBT tokens are permanently non-transferable. The standard [ERC-721](./eip-721) transfer functions **MUST** be overridden and disabled to enforce soulbound behavior. 1. **Minting Tokens** - **Function**: mint() public override payable - - **Description**: The mint function MUST override the base [ERC-721](https://eips.ethereum.org/EIPS/eip-721) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. + - **Description**: The mint function MUST override the base [ERC-721](./eip-721) implementation to ensure compliance with SocialSBT’s non-transferability and single-token ownership per address. - **Constraints**: - The caller must pay the exact _price. - Each address can own only one token. @@ -101,7 +101,7 @@ Because SocialSBT ensures that governance influence is directly linked to commun ## Backwards Compatibility -SocialSBT extends the [ERC-721](https://eips.ethereum.org/EIPS/eip-721) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. +SocialSBT extends the [ERC-721](./eip-721) standard while remaining compatible with its core functionalities. However, it introduces non-transferability and a social point mechanism, which deviate from the standard. ## Test Cases