Skip to content

feat: set proposal's strategies fiat value #567

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

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

wa0x6e
Copy link
Contributor

@wa0x6e wa0x6e commented Aug 3, 2025

Enhanced Proposal Voting Power Value Calculation

This PR implements comprehensive voting power value calculation for proposals by integrating with the Overlord service
to provide more accurate and precise strategy valuations.

Key Features

🎯 Core Enhancement:

  • Add proposal strategy value fetching using Overlord service
  • Store strategy values (vp_value_by_strategy) on proposal creation
  • Implement precise decimal rounding (9 decimal places, from https://github.com/snapshot-labs/workflow/issues/618) for strategy values

🔧 Technical Improvements:

  • New Module: src/helpers/entityValue.ts - Centralized fiat value logic
  • Enhanced Proposal Creation: Fetch and store voting power values during proposal validation
  • Precision Control: Consistent 9-decimal precision for strategy values across the system
  • Error Handling: Robust error handling for Overlord service integration

⚠️ New behavior

  • Proposal creation will fail on overlord error (mainly network issues and malformed strategies, should fallback to O otherwise)

🛠️ Code Quality:

  • DRY Principle: Refactored JSON RPC request logic into reusable jsonRpcRequest utility
  • Logging: Improved error logging and debugging capabilities

🔄 Refactoring:

  • Extracted common JSON RPC patterns into shared utilities
  • Improved error message consistency

Testing

  • Create a new proposal, in a spaces with erc-20-balance-of strategies (+ other)
  • The proposal should create successfully
  • In the database, the vp_value_by_strategy column should contain an array of values: the token unit price of each strategy token, or 0 when unsupported. Array contains as many items as strategies
  • On overlord service error (edit the url), proposal creation should fail

@wa0x6e wa0x6e changed the title feat: set proposal vp value on proposal creation feat: set proposal vp value on proposal Aug 3, 2025
@wa0x6e wa0x6e changed the title feat: set proposal vp value on proposal feat: set proposal fiat value Aug 5, 2025
@wa0x6e wa0x6e changed the title feat: set proposal fiat value feat: set proposal's strategies fiat value Aug 5, 2025
fix: fix botched merge conflict

chore: remove typo

fix: fix typescript error

fix: fix lint error

fix: delete unused file
@wa0x6e wa0x6e force-pushed the feat-get-proposal-vp-value-from-overlord branch from cba84ce to ed31f78 Compare August 5, 2025 20:29
@wa0x6e wa0x6e requested a review from Copilot August 5, 2025 20:49
Copilot

This comment was marked as outdated.

@wa0x6e wa0x6e requested a review from Copilot August 6, 2025 18:08
Copilot

This comment was marked as outdated.

@wa0x6e wa0x6e requested a review from Copilot August 6, 2025 19:23
Copilot

This comment was marked as outdated.

@wa0x6e wa0x6e requested a review from Copilot August 7, 2025 16:21
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enhances proposal voting power value calculation by integrating with the Overlord service to fetch and store precise strategy valuations during proposal creation.

  • Implements fetching of strategy fiat values from Overlord service during proposal validation
  • Stores strategy values in the vp_value_by_strategy database field with 9-decimal precision
  • Refactors JSON RPC request logic into a reusable utility function

Reviewed Changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/writer/proposal.ts Adds strategy value fetching during proposal verification and stores values in database
src/helpers/entityValue.ts New module providing centralized strategy value calculation logic
src/helpers/utils.ts Adds reusable jsonRpcRequest utility function
src/helpers/shutter.ts Refactored to use new jsonRpcRequest utility
test/unit/writer/proposal.test.ts Updates test expectations and mocks for new proposal verification behavior
test/integration/writer/proposal.test.ts Updates integration tests to handle new action signature
test/integration/ingestor.test.ts Adds mocking for entityValue module
package.json Updates Node.js types dependency
.env.example Adds new environment variable and fixes typo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant