From 29930bb3392f895060500b45163b4b29caada088 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Wed, 8 Nov 2023 17:46:20 +0100 Subject: [PATCH 1/5] Fixes double mint in pgf --- apps/src/lib/node/ledger/shell/finalize_block.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/src/lib/node/ledger/shell/finalize_block.rs b/apps/src/lib/node/ledger/shell/finalize_block.rs index 2202f7a157..546f6359d4 100644 --- a/apps/src/lib/node/ledger/shell/finalize_block.rs +++ b/apps/src/lib/node/ledger/shell/finalize_block.rs @@ -830,22 +830,23 @@ where pgf_fundings.sort_by(|a, b| a.id.cmp(&b.id)); for funding in pgf_fundings { - if credit_tokens( + if storage_api::token::transfer( &mut self.wl_storage, &staking_token, + &pgf_address, &funding.detail.target, funding.detail.amount, ) .is_ok() { tracing::info!( - "Minted {} tokens for {} project.", + "Paying {} tokens for {} project.", funding.detail.amount.to_string_native(), &funding.detail.target, ); } else { tracing::warn!( - "Failed Minting {} tokens for {} project.", + "Failed to pay {} tokens for {} project.", funding.detail.amount.to_string_native(), &funding.detail.target, ); From 693b5609fdfa4e4f18f6e80a5548dfea1ddcaa65 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Wed, 8 Nov 2023 19:17:39 +0100 Subject: [PATCH 2/5] Fixes `is_delegator` in governance vp --- proof_of_stake/src/lib.rs | 2 +- shared/src/ledger/governance/mod.rs | 18 +++++------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/proof_of_stake/src/lib.rs b/proof_of_stake/src/lib.rs index f977ff4a0c..66227f87af 100644 --- a/proof_of_stake/src/lib.rs +++ b/proof_of_stake/src/lib.rs @@ -734,7 +734,7 @@ pub fn is_delegator( epoch: Option, ) -> storage_api::Result where - S: StorageRead + StorageWrite, + S: StorageRead, { let prefix = bonds_for_source_prefix(address); match epoch { diff --git a/shared/src/ledger/governance/mod.rs b/shared/src/ledger/governance/mod.rs index f932a06896..f385779a44 100644 --- a/shared/src/ledger/governance/mod.rs +++ b/shared/src/ledger/governance/mod.rs @@ -669,21 +669,13 @@ where epoch: Epoch, verifiers: &BTreeSet
, address: &Address, - delegation_address: &Address, + _delegation_address: &Address, ) -> Result { - let bond_handle = pos::namada_proof_of_stake::bond_handle( + Ok(pos::namada_proof_of_stake::is_delegator( + &self.ctx.pre(), address, - delegation_address, - ); - let params = - pos::namada_proof_of_stake::read_pos_params(&self.ctx.pre())?; - let bond = bond_handle.get_sum(&self.ctx.pre(), epoch, ¶ms)?; - - if bond.is_some() && verifiers.contains(address) { - Ok(true) - } else { - Ok(false) - } + Some(epoch), + )? && verifiers.contains(address)) } } From 475ef0e58c71173602e3f34721597f968bceee66 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 9 Nov 2023 10:11:56 +0100 Subject: [PATCH 3/5] Short circuits `is_delegator` --- shared/src/ledger/governance/mod.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/shared/src/ledger/governance/mod.rs b/shared/src/ledger/governance/mod.rs index f385779a44..fe02257a50 100644 --- a/shared/src/ledger/governance/mod.rs +++ b/shared/src/ledger/governance/mod.rs @@ -669,13 +669,15 @@ where epoch: Epoch, verifiers: &BTreeSet
, address: &Address, - _delegation_address: &Address, + delegation_address: &Address, ) -> Result { - Ok(pos::namada_proof_of_stake::is_delegator( - &self.ctx.pre(), - address, - Some(epoch), - )? && verifiers.contains(address)) + Ok(address != delegation_address + && verifiers.contains(address) + && pos::namada_proof_of_stake::is_delegator( + &self.ctx.pre(), + address, + Some(epoch), + )?) } } From 035de7dd200657997388f09235329a37a67d0627 Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 9 Nov 2023 10:14:58 +0100 Subject: [PATCH 4/5] Fixes pgf stewards rewards minting --- .../lib/node/ledger/shell/finalize_block.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/apps/src/lib/node/ledger/shell/finalize_block.rs b/apps/src/lib/node/ledger/shell/finalize_block.rs index 546f6359d4..45d5d57767 100644 --- a/apps/src/lib/node/ledger/shell/finalize_block.rs +++ b/apps/src/lib/node/ledger/shell/finalize_block.rs @@ -800,17 +800,7 @@ where let pgf_pd_rate = pgf_parameters.pgf_inflation_rate / Dec::from(epochs_per_year); let pgf_inflation = Dec::from(total_tokens) * pgf_pd_rate; - - let stewards = pgf::get_stewards(&self.wl_storage)?; - let pgf_stewards_pd_rate = - pgf_parameters.stewards_inflation_rate / Dec::from(epochs_per_year); - let pgf_steward_inflation = - Dec::from(total_tokens) * pgf_stewards_pd_rate; - let total_pgf_stewards_inflation = - pgf_steward_inflation * Dec::from(stewards.len()); - - let pgf_inflation_amount = - token::Amount::from(pgf_inflation + total_pgf_stewards_inflation); + let pgf_inflation_amount = token::Amount::from(pgf_inflation); credit_tokens( &mut self.wl_storage, @@ -854,6 +844,12 @@ where } // Pgf steward inflation + let stewards = pgf::get_stewards(&self.wl_storage)?; + let pgf_stewards_pd_rate = + pgf_parameters.stewards_inflation_rate / Dec::from(epochs_per_year); + let pgf_steward_inflation = + Dec::from(total_tokens) * pgf_stewards_pd_rate; + for steward in stewards { for (address, percentage) in steward.reward_distribution { let pgf_steward_reward = pgf_steward_inflation From 201a8368421ae86aedbc5d3ceb192ead6080410d Mon Sep 17 00:00:00 2001 From: Marco Granelli Date: Thu, 9 Nov 2023 10:56:03 +0100 Subject: [PATCH 5/5] Changelog #2133 --- .changelog/unreleased/bug-fixes/2133-fix-governance-bugs.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .changelog/unreleased/bug-fixes/2133-fix-governance-bugs.md diff --git a/.changelog/unreleased/bug-fixes/2133-fix-governance-bugs.md b/.changelog/unreleased/bug-fixes/2133-fix-governance-bugs.md new file mode 100644 index 0000000000..23ea101757 --- /dev/null +++ b/.changelog/unreleased/bug-fixes/2133-fix-governance-bugs.md @@ -0,0 +1,2 @@ +- Fixed bugs in the governance VP and in the PGF inflation mechanism. + ([\#2133](https://github.com/anoma/namada/pull/2133)) \ No newline at end of file