Skip to content

Commit 2a2ab2d

Browse files
authored
Merge pull request #358 from input-output-hk/whankinsiv/account-tx-count
refactor: group UTxO and address deltas by tx
2 parents 8c7590d + df09d6f commit 2a2ab2d

File tree

17 files changed

+645
-595
lines changed

17 files changed

+645
-595
lines changed

common/src/messages.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub struct GenesisUTxOsMessage {
7373
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7474
pub struct UTXODeltasMessage {
7575
/// Ordered set of deltas
76-
pub deltas: Vec<UTXODelta>,
76+
pub deltas: Vec<TxUTxODeltas>,
7777
}
7878

7979
/// Message encapsulating multiple asset deltas

common/src/queries/accounts.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub enum AccountsStateQuery {
2929
GetAccountMIRHistory { account: StakeAddress },
3030
GetAccountWithdrawalHistory { account: StakeAddress },
3131
GetAccountAssociatedAddresses { account: StakeAddress },
32+
GetAccountTotalTxCount { account: StakeAddress },
3233

3334
// Epochs-related queries
3435
GetActiveStakes {},
@@ -62,6 +63,7 @@ pub enum AccountsStateQueryResponse {
6263
AccountMIRHistory(Vec<AccountWithdrawal>),
6364
AccountWithdrawalHistory(Vec<AccountWithdrawal>),
6465
AccountAssociatedAddresses(Vec<ShelleyAddress>),
66+
AccountTotalTxCount(u32),
6567

6668
// Epochs-related responses
6769
ActiveStakes(u64),

common/src/stake_addresses.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ mod tests {
605605
stake_addresses.process_stake_delta(&StakeAddressDelta {
606606
stake_address: stake_address.clone(),
607607
addresses: Vec::new(),
608+
tx_count: 1,
608609
delta: 100,
609610
});
610611

@@ -682,6 +683,7 @@ mod tests {
682683
stake_addresses.process_stake_delta(&StakeAddressDelta {
683684
stake_address: stake_address.clone(),
684685
addresses: Vec::new(),
686+
tx_count: 1,
685687
delta: 100,
686688
});
687689

@@ -741,6 +743,7 @@ mod tests {
741743
let delta = StakeAddressDelta {
742744
stake_address: stake_address.clone(),
743745
addresses: Vec::new(),
746+
tx_count: 1,
744747
delta: 42,
745748
};
746749
stake_addresses.process_stake_delta(&delta);
@@ -760,12 +763,14 @@ mod tests {
760763
stake_addresses.process_stake_delta(&StakeAddressDelta {
761764
stake_address: stake_address.clone(),
762765
addresses: Vec::new(),
766+
tx_count: 1,
763767
delta: 100,
764768
});
765769

766770
stake_addresses.process_stake_delta(&StakeAddressDelta {
767771
stake_address: stake_address.clone(),
768772
addresses: Vec::new(),
773+
tx_count: 1,
769774
delta: -30,
770775
});
771776

@@ -782,13 +787,15 @@ mod tests {
782787
stake_addresses.process_stake_delta(&StakeAddressDelta {
783788
stake_address: stake_address.clone(),
784789
addresses: Vec::new(),
790+
tx_count: 1,
785791
delta: 50,
786792
});
787793

788794
// Try to subtract more than available
789795
stake_addresses.process_stake_delta(&StakeAddressDelta {
790796
stake_address: stake_address.clone(),
791797
addresses: Vec::new(),
798+
tx_count: 1,
792799
delta: -100,
793800
});
794801

@@ -810,6 +817,7 @@ mod tests {
810817
stake_addresses.process_stake_delta(&StakeAddressDelta {
811818
stake_address: stake_address.clone(),
812819
addresses: Vec::new(),
820+
tx_count: 1,
813821
delta: 42,
814822
});
815823
assert_eq!(stake_addresses.get(&stake_address).unwrap().utxo_value, 42);
@@ -1021,13 +1029,15 @@ mod tests {
10211029
stake_addresses.process_stake_delta(&StakeAddressDelta {
10221030
stake_address: addr1.clone(),
10231031
addresses: Vec::new(),
1032+
tx_count: 1,
10241033
delta: 1000,
10251034
});
10261035
stake_addresses.add_to_reward(&addr1, 50);
10271036

10281037
stake_addresses.process_stake_delta(&StakeAddressDelta {
10291038
stake_address: addr2.clone(),
10301039
addresses: Vec::new(),
1040+
tx_count: 1,
10311041
delta: 2000,
10321042
});
10331043
stake_addresses.add_to_reward(&addr2, 100);
@@ -1055,11 +1065,13 @@ mod tests {
10551065
stake_addresses.process_stake_delta(&StakeAddressDelta {
10561066
stake_address: addr1.clone(),
10571067
addresses: Vec::new(),
1068+
tx_count: 1,
10581069
delta: 1000,
10591070
});
10601071
stake_addresses.process_stake_delta(&StakeAddressDelta {
10611072
stake_address: addr2.clone(),
10621073
addresses: Vec::new(),
1074+
tx_count: 1,
10631075
delta: 2000,
10641076
});
10651077

@@ -1079,6 +1091,7 @@ mod tests {
10791091
stake_addresses.process_stake_delta(&StakeAddressDelta {
10801092
stake_address: addr1.clone(),
10811093
addresses: Vec::new(),
1094+
tx_count: 1,
10821095
delta: 1000,
10831096
});
10841097

@@ -1105,20 +1118,23 @@ mod tests {
11051118
stake_addresses.process_stake_delta(&StakeAddressDelta {
11061119
stake_address: addr1.clone(),
11071120
addresses: Vec::new(),
1121+
tx_count: 1,
11081122
delta: 1000,
11091123
});
11101124
stake_addresses.add_to_reward(&addr1, 50);
11111125

11121126
stake_addresses.process_stake_delta(&StakeAddressDelta {
11131127
stake_address: addr2.clone(),
11141128
addresses: Vec::new(),
1129+
tx_count: 1,
11151130
delta: 2000,
11161131
});
11171132
stake_addresses.add_to_reward(&addr2, 100);
11181133

11191134
stake_addresses.process_stake_delta(&StakeAddressDelta {
11201135
stake_address: addr3.clone(),
11211136
addresses: Vec::new(),
1137+
tx_count: 1,
11221138
delta: 3000,
11231139
});
11241140
stake_addresses.add_to_reward(&addr3, 150);
@@ -1159,13 +1175,15 @@ mod tests {
11591175
stake_addresses.process_stake_delta(&StakeAddressDelta {
11601176
stake_address: addr1.clone(),
11611177
addresses: Vec::new(),
1178+
tx_count: 1,
11621179
delta: 1000,
11631180
});
11641181
stake_addresses.add_to_reward(&addr1, 50);
11651182

11661183
stake_addresses.process_stake_delta(&StakeAddressDelta {
11671184
stake_address: addr2.clone(),
11681185
addresses: Vec::new(),
1186+
tx_count: 1,
11691187
delta: 2000,
11701188
});
11711189
stake_addresses.add_to_reward(&addr2, 100);
@@ -1192,11 +1210,13 @@ mod tests {
11921210
stake_addresses.process_stake_delta(&StakeAddressDelta {
11931211
stake_address: addr1.clone(),
11941212
addresses: Vec::new(),
1213+
tx_count: 1,
11951214
delta: 1000,
11961215
});
11971216
stake_addresses.process_stake_delta(&StakeAddressDelta {
11981217
stake_address: addr2.clone(),
11991218
addresses: Vec::new(),
1219+
tx_count: 1,
12001220
delta: 2000,
12011221
});
12021222

@@ -1221,13 +1241,15 @@ mod tests {
12211241
stake_addresses.process_stake_delta(&StakeAddressDelta {
12221242
stake_address: addr1.clone(),
12231243
addresses: Vec::new(),
1244+
tx_count: 1,
12241245
delta: 1000,
12251246
});
12261247
stake_addresses.add_to_reward(&addr1, 50);
12271248

12281249
stake_addresses.process_stake_delta(&StakeAddressDelta {
12291250
stake_address: addr2.clone(),
12301251
addresses: Vec::new(),
1252+
tx_count: 1,
12311253
delta: 2000,
12321254
});
12331255

@@ -1255,13 +1277,15 @@ mod tests {
12551277
stake_addresses.process_stake_delta(&StakeAddressDelta {
12561278
stake_address: addr1.clone(),
12571279
addresses: Vec::new(),
1280+
tx_count: 1,
12581281
delta: 1000,
12591282
});
12601283
stake_addresses.add_to_reward(&addr1, 500);
12611284

12621285
stake_addresses.process_stake_delta(&StakeAddressDelta {
12631286
stake_address: addr2.clone(),
12641287
addresses: Vec::new(),
1288+
tx_count: 1,
12651289
delta: 2000,
12661290
});
12671291

@@ -1283,6 +1307,7 @@ mod tests {
12831307
stake_addresses.process_stake_delta(&StakeAddressDelta {
12841308
stake_address: addr1.clone(),
12851309
addresses: Vec::new(),
1310+
tx_count: 1,
12861311
delta: 1000,
12871312
});
12881313

@@ -1314,13 +1339,15 @@ mod tests {
13141339
stake_addresses.process_stake_delta(&StakeAddressDelta {
13151340
stake_address: addr1.clone(),
13161341
addresses: Vec::new(),
1342+
tx_count: 1,
13171343
delta: 1000,
13181344
});
13191345
stake_addresses.add_to_reward(&addr1, 500);
13201346

13211347
stake_addresses.process_stake_delta(&StakeAddressDelta {
13221348
stake_address: addr2.clone(),
13231349
addresses: Vec::new(),
1350+
tx_count: 1,
13241351
delta: 2000,
13251352
});
13261353

@@ -1340,6 +1367,7 @@ mod tests {
13401367
stake_addresses.process_stake_delta(&StakeAddressDelta {
13411368
stake_address: addr1.clone(),
13421369
addresses: Vec::new(),
1370+
tx_count: 1,
13431371
delta: 1000,
13441372
});
13451373

@@ -1375,13 +1403,15 @@ mod tests {
13751403
stake_addresses.process_stake_delta(&StakeAddressDelta {
13761404
stake_address: addr1.clone(),
13771405
addresses: Vec::new(),
1406+
tx_count: 1,
13781407
delta: 1000,
13791408
});
13801409
stake_addresses.add_to_reward(&addr1, 100);
13811410

13821411
stake_addresses.process_stake_delta(&StakeAddressDelta {
13831412
stake_address: addr2.clone(),
13841413
addresses: Vec::new(),
1414+
tx_count: 1,
13851415
delta: 2000,
13861416
});
13871417

@@ -1403,6 +1433,7 @@ mod tests {
14031433
stake_addresses.process_stake_delta(&StakeAddressDelta {
14041434
stake_address: addr1.clone(),
14051435
addresses: Vec::new(),
1436+
tx_count: 1,
14061437
delta: 1000,
14071438
});
14081439

@@ -1434,13 +1465,15 @@ mod tests {
14341465
stake_addresses.process_stake_delta(&StakeAddressDelta {
14351466
stake_address: addr1.clone(),
14361467
addresses: Vec::new(),
1468+
tx_count: 1,
14371469
delta: 1000,
14381470
});
14391471
stake_addresses.add_to_reward(&addr1, 100);
14401472

14411473
stake_addresses.process_stake_delta(&StakeAddressDelta {
14421474
stake_address: addr2.clone(),
14431475
addresses: Vec::new(),
1476+
tx_count: 1,
14441477
delta: 2000,
14451478
});
14461479

@@ -1460,6 +1493,7 @@ mod tests {
14601493
stake_addresses.process_stake_delta(&StakeAddressDelta {
14611494
stake_address: addr1.clone(),
14621495
addresses: Vec::new(),
1496+
tx_count: 1,
14631497
delta: 1000,
14641498
});
14651499

@@ -1550,16 +1584,19 @@ mod tests {
15501584
stake_addresses.process_stake_delta(&StakeAddressDelta {
15511585
stake_address: addr1.clone(),
15521586
addresses: Vec::new(),
1587+
tx_count: 1,
15531588
delta: 1000,
15541589
});
15551590
stake_addresses.process_stake_delta(&StakeAddressDelta {
15561591
stake_address: addr2.clone(),
15571592
addresses: Vec::new(),
1593+
tx_count: 1,
15581594
delta: 2000,
15591595
});
15601596
stake_addresses.process_stake_delta(&StakeAddressDelta {
15611597
stake_address: addr3.clone(),
15621598
addresses: Vec::new(),
1599+
tx_count: 1,
15631600
delta: 3000,
15641601
});
15651602

0 commit comments

Comments
 (0)