Skip to content

Commit

Permalink
Merge pull request #2582 from IntersectMBO/fix/voting-power-with-rewards
Browse files Browse the repository at this point in the history
fix: drep and ada holder voting power adjustments
  • Loading branch information
MSzalowski authored Dec 30, 2024
2 parents 68b2d56 + 06b6780 commit a2fa857
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 27 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ changes.

- Fix calculating DRep live voting power [Issue 2460](https://github.com/IntersectMBO/govtool/issues/2460)
- Fix link and description validation [Issue 2403](https://github.com/IntersectMBO/govtool/issues/2403)
- Revert to drep_distr for providing active voting power
- Add rewards amount in the ada holder voting power

### Changed

Expand Down
52 changes: 46 additions & 6 deletions govtool/backend/sql/get-stake-key-voting-power.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,46 @@
SELECT COALESCE(SUM(utxo_view.value::numeric), 0),
encode(stake_address.hash_raw, 'hex')
FROM stake_address
JOIN utxo_view ON utxo_view.stake_address_id = stake_address.id
WHERE stake_address.hash_raw = decode(?, 'hex')
GROUP BY stake_address.hash_raw;
WITH RewardRest AS (
SELECT
SUM(amount) AS amount,
addr_id
FROM
reward_rest
GROUP BY
addr_id
),
Reward AS (
SELECT
SUM(amount) AS amount,
addr_id
FROM
reward
GROUP BY
addr_id
),
Balance AS (
SELECT
COALESCE(SUM(uv.value), 0) AS amount,
sa.id AS addr_id,
encode(sa.hash_raw, 'hex') AS addr_raw
FROM
stake_address sa
JOIN utxo_view uv ON uv.stake_address_id = sa.id
GROUP BY
addr_id,
addr_raw
)
SELECT
(COALESCE(rr.amount, 0) + COALESCE(r.amount, 0) + COALESCE(b.amount, 0)) AS total_balance,
b.addr_raw
FROM
Balance b
LEFT JOIN
RewardRest rr ON rr.addr_id = b.addr_id
LEFT JOIN
Reward r ON r.addr_id = rr.addr_id
WHERE
b.addr_id = (SELECT id FROM stake_address WHERE hash_raw = decode(?, 'hex'))
GROUP BY
b.addr_raw,
rr.amount,
r.amount,
b.amount
28 changes: 7 additions & 21 deletions govtool/backend/sql/get-voting-power.sql
Original file line number Diff line number Diff line change
@@ -1,21 +1,7 @@
WITH LatestDelegationVote AS (
SELECT
addr_id,
MAX(id) AS latest_vote_id
FROM
delegation_vote
GROUP BY
addr_id
)
SELECT
SUM(uv.value) AS total_value
FROM
utxo_view uv
JOIN
stake_address sa ON sa.id = uv.stake_address_id
JOIN
LatestDelegationVote ldv ON uv.stake_address_id = ldv.addr_id
JOIN
delegation_vote dv ON dv.id = ldv.latest_vote_id
WHERE
dv.drep_hash_id = (SELECT id FROM drep_hash WHERE raw = decode(?,'hex'))
SELECT
amount
FROM
drep_distr
WHERE
hash_id = (SELECT id FROM drep_hash WHERE raw = decode(?,'hex'))
ORDER BY epoch_no DESC LIMIT 1

0 comments on commit a2fa857

Please sign in to comment.