Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: Pandapip1 <[email protected]>
  • Loading branch information
Amxx and Pandapip1 authored Oct 24, 2022
1 parent 3daaf38 commit 2670277
Showing 1 changed file with 2 additions and 8 deletions.
10 changes: 2 additions & 8 deletions EIPS/eip-5805.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,11 @@ requires: 712

## Abstract

Many DAOs (decentralized autonomous organizations) rely on tokens to represent one's voting power. In order to perform this task effectively, the token contracts need to include specific mechanisms such as checkpoints and delegation.

The existing implementations are not standardized.

This EIP proposes to standardize the way votes are delegated by an account to another, and the way current and past votes are tracked and queried. The corresponding behavior is compatible with many token types, including but not limited to [EIP-20](./eip-20.md) and [EIP-721](./eip-721.md).

This EIP also considers the diversity of time tracking functions, allowing the voting tokens (and any contract associated with it) to track the votes based on `block.number`, `block.timestamp`, or any other non-decreasing function.
Many DAOs (decentralized autonomous organizations) rely on tokens to represent one's voting power. In order to perform this task effectively, the token contracts need to include specific mechanisms such as checkpoints and delegation. The existing implementations are not standardized. This EIP proposes to standardize the way votes are delegated from one account to another, and the way current and past votes are tracked and queried. The corresponding behavior is compatible with many token types, including but not limited to [EIP-20](./eip-20.md) and [EIP-721](./eip-721.md). This EIP also considers the diversity of time tracking functions, allowing the voting tokens (and any contract associated with it) to track the votes based on `block.number`, `block.timestamp`, or any other non-decreasing function.

## Motivation

Beyond simple monetary transactions, decentralized autonomous organizations are arguably one of the first use cases of blockchain and smart contract technologies. Many communities are today organized around a governance contract that allows users to vote. Among these communities, some represent the voting power using transferable tokens ([EIP-20](./eip-20.md), [EIP-721](./eip-721.md), other). In this context, the more tokens you own, the more voting power you have. Governor contracts, such as Compound's GovernorBravo, read from these "voting token" contracts to get the voting power of the users.
Beyond simple monetary transactions, decentralized autonomous organizations are arguably one of the most important use cases of blockchain and smart contract technologies. Today, many communities are organized around a governance contract that allows users to vote. Among these communities, some represent voting power using transferable tokens ([EIP-20](./eip-20.md), [EIP-721](./eip-721.md), other). In this context, the more tokens one owns, the more voting power one has. Governor contracts, such as Compound's `GovernorBravo`, read from these "voting token" contracts to get the voting power of the users.

Unfortunately, simply using the `balanceOf(address)` function present in most token standards is not good enough:
- The values are not checkpointed, so a user can vote, transfer its tokens to a new account, and vote again with the same tokens.
Expand Down

0 comments on commit 2670277

Please sign in to comment.