Skip to content

Commit

Permalink
Remove increase pledge functions
Browse files Browse the repository at this point in the history
  • Loading branch information
azarovh committed Jan 11, 2024
1 parent f1e14be commit 7725a93
Show file tree
Hide file tree
Showing 10 changed files with 17 additions and 156 deletions.
8 changes: 0 additions & 8 deletions api-server/scanner-lib/src/blockchain_state/adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,14 +148,6 @@ impl PoSAccountingOperations<()> for PoSAdapter {
unimplemented!()
}

fn increase_pool_pledge_amount(
&mut self,
_pool_id: PoolId,
_amount_to_add: Amount,
) -> Result<(), pos_accounting::Error> {
unimplemented!()
}

fn increase_staker_rewards(
&mut self,
pool_id: PoolId,
Expand Down
3 changes: 1 addition & 2 deletions chainstate/src/detail/ban_score.rs
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,7 @@ impl BanScore for pos_accounting::Error {
E::InvariantErrorDelegationUndoFailedDataNotFound => 100,
E::DuplicatesInDeltaAndUndo => 100,
E::ViewFail => 0,
E::IncreasePledgeAmountOfNonexistingPool => 100,
E::PledgeAmountAdditionError => 100,
E::IncreaseStakerRewardsOfNonexistingPool => 100,
E::StakerBalanceOverflow => 100,
E::InvariantErrorIncreasePledgeUndoFailedPoolBalanceNotFound => 100,
E::InvariantErrorIncreaseStakerRewardUndoFailedPoolBalanceNotFound => 100,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,20 +180,6 @@ impl<'a, P: PoSAccountingView> PoSAccountingOperations<PoSAccountingUndo>
Ok(undo)
}

fn increase_pool_pledge_amount(
&mut self,
pool_id: PoolId,
amount_to_add: Amount,
) -> Result<PoSAccountingUndo, pos_accounting::Error> {
let mut delta = PoSAccountingDelta::new(&self.adapter.accounting_delta);

let undo = delta.increase_pool_pledge_amount(pool_id, amount_to_add)?;

self.merge_delta(delta.consume())?;

Ok(undo)
}

fn increase_staker_rewards(
&mut self,
pool_id: PoolId,
Expand Down
3 changes: 1 addition & 2 deletions mempool/src/error/ban_score.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ impl MempoolBanScore for pos_accounting::Error {
E::DelegationDeletionFailedPoolStillExists => 0,
E::DelegateToNonexistingId => 0,
E::DelegateToNonexistingPool => 0,
E::IncreasePledgeAmountOfNonexistingPool => 0,
E::IncreaseStakerRewardsOfNonexistingPool => 0,

// Accounting error has to be inspected further
E::AccountingError(err) => err.mempool_ban_score(),
Expand All @@ -291,7 +291,6 @@ impl MempoolBanScore for pos_accounting::Error {
E::DelegationSharesAdditionError => 100,
E::DelegationSharesSubtractionError => 100,
E::PledgeValueToSignedError => 100,
E::PledgeAmountAdditionError => 100,
E::StakerBalanceOverflow => 100,

// Not undo-ing in mempool
Expand Down
6 changes: 2 additions & 4 deletions pos_accounting/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,8 @@ pub enum Error {
InvariantErrorDelegationUndoFailedDataNotFound,
#[error("Delta reverts merge failed due to duplicates")]
DuplicatesInDeltaAndUndo,
#[error("Increase pledge amount of nonexisting pool")]
IncreasePledgeAmountOfNonexistingPool,
#[error("Pledge amount addition error")]
PledgeAmountAdditionError,
#[error("Increase staker rewards of nonexisting pool")]
IncreaseStakerRewardsOfNonexistingPool,
#[error("Staker balance addition error")]
StakerBalanceOverflow,
#[error("Undo of increase pledge amount failed as pool balance is not in storage")]
Expand Down
46 changes: 3 additions & 43 deletions pos_accounting/src/pool/delta/operator_impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ use crate::{
helpers::make_delegation_id,
operations::{
CreateDelegationIdUndo, CreatePoolUndo, DecommissionPoolUndo, DelegateStakingUndo,
DelegationDataUndo, DeleteDelegationIdUndo, IncreasePledgeAmountUndo,
IncreaseStakerRewardsUndo, PoSAccountingOperations, PoSAccountingUndo, PoolDataUndo,
SpendFromShareUndo,
DelegationDataUndo, DeleteDelegationIdUndo, IncreaseStakerRewardsUndo,
PoSAccountingOperations, PoSAccountingUndo, PoolDataUndo, SpendFromShareUndo,
},
pool_data::PoolData,
view::PoSAccountingView,
Expand Down Expand Up @@ -91,40 +90,14 @@ impl<P: PoSAccountingView> PoSAccountingOperations<PoSAccountingUndo> for PoSAcc
}))
}

fn increase_pool_pledge_amount(
&mut self,
pool_id: PoolId,
amount_to_add: Amount,
) -> Result<PoSAccountingUndo, Error> {
let pool_data = self
.get_pool_data(pool_id)?
.ok_or(Error::IncreasePledgeAmountOfNonexistingPool)?;

self.add_balance_to_pool(pool_id, amount_to_add)?;

let new_pool_data = pool_data.clone().increase_pledge_amount(amount_to_add)?;
let data_undo = self.data.pool_data.merge_delta_data_element(
pool_id,
DataDelta::new(Some(pool_data), Some(new_pool_data)),
)?;

Ok(PoSAccountingUndo::IncreasePledgeAmount(
IncreasePledgeAmountUndo {
pool_id,
amount_added: amount_to_add,
data_undo: PoolDataUndo::DataDelta(Box::new(data_undo)),
},
))
}

fn increase_staker_rewards(
&mut self,
pool_id: PoolId,
amount_to_add: Amount,
) -> Result<PoSAccountingUndo, Error> {
let pool_data = self
.get_pool_data(pool_id)?
.ok_or(Error::IncreasePledgeAmountOfNonexistingPool)?;
.ok_or(Error::IncreaseStakerRewardsOfNonexistingPool)?;

self.add_balance_to_pool(pool_id, amount_to_add)?;

Expand Down Expand Up @@ -270,7 +243,6 @@ impl<P: PoSAccountingView> PoSAccountingOperations<PoSAccountingUndo> for PoSAcc
PoSAccountingUndo::SpendFromShare(undo) => {
self.undo_spend_share_from_delegation_id(undo)
}
PoSAccountingUndo::IncreasePledgeAmount(undo) => self.undo_increase_pledge_amount(undo),
PoSAccountingUndo::IncreaseStakerRewards(undo) => {
self.undo_increase_staker_balance(undo)
}
Expand Down Expand Up @@ -400,18 +372,6 @@ impl<P: PoSAccountingView> PoSAccountingDelta<P> {
Ok(())
}

fn undo_increase_pledge_amount(&mut self, undo: IncreasePledgeAmountUndo) -> Result<(), Error> {
let undo_data = match undo.data_undo {
PoolDataUndo::DataDelta(v) => *v,
PoolDataUndo::Data(_) => panic!("incompatible PoolDataUndo supplied"),
};

self.data.pool_data.undo_merge_delta_data_element(undo.pool_id, undo_data)?;
self.sub_balance_from_pool(undo.pool_id, undo.amount_added)?;

Ok(())
}

fn undo_increase_staker_balance(
&mut self,
undo: IncreaseStakerRewardsUndo,
Expand Down
14 changes: 0 additions & 14 deletions pos_accounting/src/pool/operations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,6 @@ pub struct SpendFromShareUndo {
pub(crate) amount: Amount,
}

#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode)]
pub struct IncreasePledgeAmountUndo {
pub(crate) pool_id: PoolId,
pub(crate) amount_added: Amount,
pub(crate) data_undo: PoolDataUndo,
}

#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode)]
pub struct IncreaseStakerRewardsUndo {
pub(crate) pool_id: PoolId,
Expand All @@ -96,7 +89,6 @@ pub enum PoSAccountingUndo {
DeleteDelegationId(DeleteDelegationIdUndo),
DelegateStaking(DelegateStakingUndo),
SpendFromShare(SpendFromShareUndo),
IncreasePledgeAmount(IncreasePledgeAmountUndo),
IncreaseStakerRewards(IncreaseStakerRewardsUndo),
}

Expand All @@ -107,12 +99,6 @@ pub trait PoSAccountingOperations<U> {

fn decommission_pool(&mut self, pool_id: PoolId) -> Result<U, Error>;

fn increase_pool_pledge_amount(
&mut self,
pool_id: PoolId,
amount_to_add: Amount,
) -> Result<U, Error>;

fn increase_staker_rewards(
&mut self,
pool_id: PoolId,
Expand Down
9 changes: 1 addition & 8 deletions pos_accounting/src/pool/pool_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,8 @@ impl PoolData {
self
}

pub fn increase_pledge_amount(mut self, reward: Amount) -> Result<Self, Error> {
self.pledge_amount =
(self.pledge_amount + reward).ok_or(Error::PledgeAmountAdditionError)?;
Ok(self)
}

pub fn increase_staker_rewards(mut self, reward: Amount) -> Result<Self, Error> {
self.staker_rewards =
(self.staker_rewards + reward).ok_or(Error::PledgeAmountAdditionError)?;
self.staker_rewards = (self.staker_rewards + reward).ok_or(Error::StakerBalanceOverflow)?;
Ok(self)
}
}
Expand Down
53 changes: 5 additions & 48 deletions pos_accounting/src/pool/storage/operator_impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,8 @@ use crate::{
helpers::make_delegation_id,
operations::{
CreateDelegationIdUndo, CreatePoolUndo, DecommissionPoolUndo, DelegateStakingUndo,
DelegationDataUndo, DeleteDelegationIdUndo, IncreasePledgeAmountUndo,
IncreaseStakerRewardsUndo, PoSAccountingOperations, PoSAccountingUndo, PoolDataUndo,
SpendFromShareUndo,
DelegationDataUndo, DeleteDelegationIdUndo, IncreaseStakerRewardsUndo,
PoSAccountingOperations, PoSAccountingUndo, PoolDataUndo, SpendFromShareUndo,
},
pool_data::PoolData,
view::PoSAccountingView,
Expand Down Expand Up @@ -85,30 +84,6 @@ impl<S: PoSAccountingStorageWrite<T>, T: StorageTag> PoSAccountingOperations<PoS
}))
}

fn increase_pool_pledge_amount(
&mut self,
pool_id: PoolId,
amount_to_add: Amount,
) -> Result<PoSAccountingUndo, Error> {
let pool_data = self
.store
.get_pool_data(pool_id)?
.ok_or(Error::IncreasePledgeAmountOfNonexistingPool)?;

let new_pool_data = pool_data.clone().increase_pledge_amount(amount_to_add)?;
self.store.set_pool_data(pool_id, &new_pool_data)?;

self.add_balance_to_pool(pool_id, amount_to_add)?;

Ok(PoSAccountingUndo::IncreasePledgeAmount(
IncreasePledgeAmountUndo {
pool_id,
amount_added: amount_to_add,
data_undo: PoolDataUndo::Data(Box::new(pool_data)),
},
))
}

fn increase_staker_rewards(
&mut self,
pool_id: PoolId,
Expand All @@ -117,7 +92,7 @@ impl<S: PoSAccountingStorageWrite<T>, T: StorageTag> PoSAccountingOperations<PoS
let pool_data = self
.store
.get_pool_data(pool_id)?
.ok_or(Error::IncreasePledgeAmountOfNonexistingPool)?;
.ok_or(Error::IncreaseStakerRewardsOfNonexistingPool)?;

let new_pool_data = pool_data.clone().increase_staker_rewards(amount_to_add)?;
self.store.set_pool_data(pool_id, &new_pool_data)?;
Expand Down Expand Up @@ -255,9 +230,8 @@ impl<S: PoSAccountingStorageWrite<T>, T: StorageTag> PoSAccountingOperations<PoS
PoSAccountingUndo::SpendFromShare(undo) => {
self.undo_spend_share_from_delegation_id(undo)
}
PoSAccountingUndo::IncreasePledgeAmount(undo) => self.undo_increase_pledge_amount(undo),
PoSAccountingUndo::IncreaseStakerRewards(undo) => {
self.undo_increase_staker_reward(undo)
self.undo_increase_staker_rewards(undo)
}
}
}
Expand Down Expand Up @@ -391,24 +365,7 @@ impl<S: PoSAccountingStorageWrite<T>, T: StorageTag> PoSAccountingDB<S, T> {
Ok(())
}

fn undo_increase_pledge_amount(&mut self, undo: IncreasePledgeAmountUndo) -> Result<(), Error> {
let data_undo = match undo.data_undo {
PoolDataUndo::Data(v) => v,
PoolDataUndo::DataDelta(_) => panic!("incompatible PoolDataUndo supplied"),
};

if self.store.get_pool_balance(undo.pool_id)?.is_none() {
return Err(Error::InvariantErrorIncreasePledgeUndoFailedPoolBalanceNotFound);
}

self.sub_balance_from_pool(undo.pool_id, undo.amount_added)?;

self.store.set_pool_data(undo.pool_id, &data_undo)?;

Ok(())
}

fn undo_increase_staker_reward(
fn undo_increase_staker_rewards(
&mut self,
undo: IncreaseStakerRewardsUndo,
) -> Result<(), Error> {
Expand Down
17 changes: 4 additions & 13 deletions pos_accounting/src/pool/tests/simulation_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ fn perform_random_operation(
) {
// If it fires it means that number of actions in PoSAccountingOperations has changed
// and the following match needs to be updated
assert_eq!(PoSAccountingUndo::VARIANT_COUNT, 8);
assert_eq!(PoSAccountingUndo::VARIANT_COUNT, 7);

match rng.gen_range(0..11) {
// create new pool
Expand Down Expand Up @@ -195,17 +195,8 @@ fn perform_random_operation(
undos.push(undo);
}
}
// increase pool pledge
8..=9 => {
if let Some(pool_id) = random_pool {
let amount_to_add = Amount::from_atoms(rng.gen_range(1000..10_000));

let undo = op.increase_pool_pledge_amount(pool_id, amount_to_add).unwrap();
undos.push(undo);
}
}
// increase staker reward
10..=11 => {
8..=9 => {
if let Some(pool_id) = random_pool {
let amount_to_add = Amount::from_atoms(rng.gen_range(1000..10_000));

Expand All @@ -214,7 +205,7 @@ fn perform_random_operation(
}
}
// delete delegation
12 => {
10 => {
if let Some((delegation_id, delegation_data)) = random_delegation {
if !op.pool_exists(*delegation_data.source_pool()).unwrap()
&& op.get_delegation_balance(delegation_id).unwrap().unwrap_or(Amount::ZERO)
Expand All @@ -226,7 +217,7 @@ fn perform_random_operation(
}
}
// undo
13 => {
11 => {
if let Some(undo) = undos.pop() {
op.undo(undo).unwrap();
}
Expand Down

0 comments on commit 7725a93

Please sign in to comment.