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

Voting Proxy #372

Merged
merged 7 commits into from
Nov 8, 2019
Merged

Voting Proxy #372

merged 7 commits into from
Nov 8, 2019

Conversation

Freydal
Copy link
Contributor

@Freydal Freydal commented Nov 7, 2019

Background

Currently, accounts within the contract system are affiliated with single owner address. This means one address controls deposits, withdrawals, listing management, and voting. This presents a challenge for large stakeholders who wish to leverage their large holdings to participate in votes, as they would be required to have their funds controlled with a hot-wallet that frequently interacts with the contract system.

Proposal overview

This proposal suggests the addition of voterProxy addresses (name yet to be finalized) which may be arbitrary addresses authorized (and de-authorized) on behalf of an account owner to commit and reveal votes on their behalf, leveraging their holdings.

The designated voterProxy addresses for a given account may only be used to commit and reveal votes on behalf of the owner. They may not take action that moves funds (withdrawals, new listings, new challenges, etc.). The owner can authorize and de-authorize these addresses at will.

Specification

Contract system

  • Voting
    • New Functions
      • commitProxyVote: Different entry point capitalizing on existing commitVote implementation providing the address being proxied
      • revealProxyVote: Different entry point capitalizing on existing revealVote implementation providing the address being proxied
  • Treasury
    • Storage
      • Merge address mappings into a struct (validate gas)
      • Adding address => boolean for votingProxies
    • New Functions
      • registerProxyVote: Different entry point capitalizing on existing registerVote implementation providing the address being proxied.
      • authorizeProxy: Allow provided address to proxy votes
      • deauthorizeProxy: Disallow provided address from proxy votes.
      • isProxyFor: Check the proxy status ( mostly for reveal transaction)

Network client

No changes to network client needed for this PR.

Considerations

@hrharder hrharder added discussion enhancement New feature or request labels Nov 6, 2019
hrharder
hrharder previously approved these changes Nov 7, 2019
Copy link
Member

@hrharder hrharder left a comment

Choose a reason for hiding this comment

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

Looking great -- not sure you wanted to merge yet, but will approve in case you do.

@Freydal Freydal merged commit d7532db into master Nov 8, 2019
@Freydal Freydal deleted the refactor/adding-voter-proxy branch November 8, 2019 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants