Skip to content

Commit 68a5d59

Browse files
committed
Merge branch 'main' into lowhung/unify-hash-types
# Conflicts: # modules/accounts_state/src/verifier.rs # modules/historical_accounts_state/src/immutable_historical_account_store.rs
2 parents 064e38b + dc556bf commit 68a5d59

File tree

28 files changed

+987
-888
lines changed

28 files changed

+987
-888
lines changed

.github/workflows/run-tests-on-push-to-main.yml

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,7 @@ jobs:
2424
run: cargo fmt --all -- --check
2525

2626
- name: Run Clippy
27-
run: |
28-
cargo clippy --all-targets --all-features \
29-
--package acropolis_common \
30-
--package acropolis_codec \
31-
--package acropolis_module_accounts_state \
32-
--package acropolis_module_address_state \
33-
--package acropolis_module_assets_state \
34-
--package acropolis_module_block_unpacker \
35-
--package acropolis_module_chain_store \
36-
--package acropolis_module_consensus \
37-
--package acropolis_module_drdd_state \
38-
--package acropolis_module_drep_state \
39-
--package acropolis_module_epochs_state \
40-
--package acropolis_module_genesis_bootstrapper \
41-
--package acropolis_module_governance_state \
42-
--package acropolis_module_historical_accounts_state \
43-
--package acropolis_module_mithril_snapshot_fetcher \
44-
--package acropolis_module_parameters_state \
45-
--package acropolis_module_rest_blockfrost \
46-
--package acropolis_module_snapshot_bootstrapper \
47-
--package acropolis_module_spdd_state \
48-
--package acropolis_module_spo_state \
49-
--package acropolis_module_stake_delta_filter \
50-
--package acropolis_module_tx_submitter \
51-
--package acropolis_module_tx_unpacker \
52-
--package acropolis_module_upstream_chain_fetcher \
53-
--package acropolis_module_utxo_state \
54-
--package acropolis_process_tx_submitter_cli
27+
run: cargo clippy --all-targets --all-features
5528

5629
- name: Run Build
5730
run: cargo build --verbose

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

common/src/queries/accounts.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use std::collections::HashMap;
22

3-
use crate::{DRepChoice, KeyHash, PoolId, PoolLiveStakeInfo, StakeAddress, TxIdentifier};
3+
use crate::{
4+
DRepChoice, KeyHash, PoolId, PoolLiveStakeInfo, RewardType, StakeAddress, TxIdentifier,
5+
};
46

57
pub const DEFAULT_ACCOUNTS_QUERY_TOPIC: (&str, &str) =
68
("accounts-state-query-topic", "cardano.query.accounts");
@@ -12,8 +14,8 @@ pub const DEFAULT_HISTORICAL_ACCOUNTS_QUERY_TOPIC: (&str, &str) = (
1214

1315
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
1416
pub enum AccountsStateQuery {
15-
GetAccountInfo { stake_address: StakeAddress },
16-
GetAccountRewardHistory { stake_key: Vec<u8> },
17+
GetAccountInfo { account: StakeAddress },
18+
GetAccountRewardHistory { account: StakeAddress },
1719
GetAccountHistory { stake_key: Vec<u8> },
1820
GetAccountRegistrationHistory { account: StakeAddress },
1921
GetAccountDelegationHistory { account: StakeAddress },
@@ -47,7 +49,7 @@ pub enum AccountsStateQuery {
4749
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
4850
pub enum AccountsStateQueryResponse {
4951
AccountInfo(AccountInfo),
50-
AccountRewardHistory(AccountRewardHistory),
52+
AccountRewardHistory(Vec<AccountReward>),
5153
AccountHistory(AccountHistory),
5254
AccountRegistrationHistory(Vec<RegistrationUpdate>),
5355
AccountDelegationHistory(Vec<DelegationUpdate>),
@@ -91,9 +93,6 @@ pub struct AccountInfo {
9193
pub delegated_drep: Option<DRepChoice>,
9294
}
9395

94-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
95-
pub struct AccountRewardHistory {}
96-
9796
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
9897
pub struct AccountHistory {}
9998

@@ -150,6 +149,20 @@ pub struct AccountWithdrawal {
150149
pub amount: u64,
151150
}
152151

152+
#[derive(
153+
Debug, Clone, minicbor::Decode, minicbor::Encode, serde::Serialize, serde::Deserialize,
154+
)]
155+
pub struct AccountReward {
156+
#[n(0)]
157+
pub epoch: u32,
158+
#[n(1)]
159+
pub amount: u64,
160+
#[n(2)]
161+
pub pool: PoolId,
162+
#[n(3)]
163+
pub reward_type: RewardType,
164+
}
165+
153166
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
154167
pub struct AccountWithdrawalHistory {}
155168

common/src/stake_addresses.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,13 @@ impl StakeAddressMap {
537537
update_value_with_delta(&mut sas.rewards, delta)
538538
}
539539

540+
pub fn pay_reward(&mut self, stake_address: &StakeAddress, delta: u64) -> Result<()> {
541+
let sas = self.entry(stake_address.clone()).or_default();
542+
sas.rewards =
543+
sas.rewards.checked_add(delta).ok_or_else(|| anyhow::anyhow!("reward overflow"))?;
544+
Ok(())
545+
}
546+
540547
/// Update utxo value with delta
541548
pub fn update_utxo_value(&mut self, stake_address: &StakeAddress, delta: i64) -> Result<()> {
542549
let sas = self.entry(stake_address.clone()).or_default();

common/src/types.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,38 @@ pub struct StakeAddressDelta {
213213
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
214214
pub struct StakeRewardDelta {
215215
pub stake_address: StakeAddress,
216-
pub delta: i64,
216+
pub delta: u64,
217+
pub reward_type: RewardType,
218+
pub pool: PoolId,
219+
}
220+
221+
/// Type of reward being given
222+
#[derive(
223+
Debug,
224+
Clone,
225+
PartialEq,
226+
minicbor::Encode,
227+
minicbor::Decode,
228+
serde::Serialize,
229+
serde::Deserialize,
230+
)]
231+
pub enum RewardType {
232+
#[n(0)]
233+
Leader,
234+
#[n(1)]
235+
Member,
236+
#[n(2)]
237+
PoolRefund,
238+
}
239+
240+
impl fmt::Display for RewardType {
241+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
242+
match self {
243+
RewardType::Leader => write!(f, "leader"),
244+
RewardType::Member => write!(f, "member"),
245+
RewardType::PoolRefund => write!(f, "pool_deposit_refund"),
246+
}
247+
}
217248
}
218249

219250
pub type PolicyId = [u8; 28];

modules/accounts_state/src/accounts_state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,8 +505,8 @@ impl AccountsState {
505505
};
506506

507507
let response = match query {
508-
AccountsStateQuery::GetAccountInfo { stake_address } => {
509-
if let Some(account) = state.get_stake_state(stake_address) {
508+
AccountsStateQuery::GetAccountInfo { account } => {
509+
if let Some(account) = state.get_stake_state(account) {
510510
AccountsStateQueryResponse::AccountInfo(AccountInfo {
511511
utxo_value: account.utxo_value,
512512
rewards: account.rewards,

modules/accounts_state/src/rewards.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use acropolis_common::{
55
protocol_params::ShelleyParams, rational_number::RationalNumber, Lovelace, PoolId, SPORewards,
66
StakeAddress,
77
};
8+
use acropolis_common::{PoolId, RewardType};
89
use anyhow::{bail, Result};
910
use bigdecimal::{BigDecimal, One, ToPrimitive, Zero};
1011
use std::cmp::min;
@@ -13,13 +14,6 @@ use std::collections::{BTreeMap, HashSet};
1314
use std::sync::Arc;
1415
use tracing::{debug, info, warn};
1516

16-
/// Type of reward being given
17-
#[derive(Debug, Clone, PartialEq)]
18-
pub enum RewardType {
19-
Leader,
20-
Member,
21-
}
22-
2317
/// Reward Detail
2418
#[derive(Debug, Clone)]
2519
pub struct RewardDetail {
@@ -31,6 +25,9 @@ pub struct RewardDetail {
3125

3226
/// Reward amount
3327
pub amount: Lovelace,
28+
29+
// Pool that reward came from
30+
pub pool: PoolId,
3431
}
3532

3633
/// Result of a rewards calculation
@@ -211,6 +208,7 @@ pub fn calculate_rewards(
211208
num_delegators_paid += 1;
212209
total_paid_to_delegators += reward.amount;
213210
}
211+
RewardType::PoolRefund => {}
214212
}
215213
spo_rewards.total_rewards += reward.amount;
216214
result.total_paid += reward.amount;
@@ -391,6 +389,7 @@ fn calculate_spo_rewards(
391389
account: delegator_stake_address.clone(),
392390
rtype: RewardType::Member,
393391
amount: to_pay,
392+
pool: operator_id.to_vec(),
394393
});
395394
total_paid += to_pay;
396395
delegators_paid += 1;
@@ -408,6 +407,7 @@ fn calculate_spo_rewards(
408407
account: spo.reward_account.clone(),
409408
rtype: RewardType::Leader,
410409
amount: spo_benefit,
410+
pool: operator_id.to_vec(),
411411
});
412412
} else {
413413
info!(

0 commit comments

Comments
 (0)