Skip to content

Commit

Permalink
fix: count rewards with drep voting power
Browse files Browse the repository at this point in the history
  • Loading branch information
MSzalowski committed Dec 27, 2024
1 parent 840e065 commit 65d7fbe
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 @@ -17,6 +17,8 @@ changes.
### Fixed

- Fix calculating DRep live voting power [Issue 2460](https://github.com/IntersectMBO/govtool/issues/2460)
- 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 65d7fbe

Please sign in to comment.