You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
pindexer: insights: correct calculation of total value shielded (#4932)
## Describe your changes
This corrects the calculation of the total value shielded. Previously,
were were adding the absolute value of outbound transfers, as well as
refunds to the total. Instead, we just need to consider deposits.
To test, we should look at current mainnet data, and make sure that the
total for USDC is changing appropriately.
## Issue ticket number and link
Closes#4925
## Checklist before requesting a review
- [x] I have added guiding text to explain how a reviewer should test
these changes.
- [x] If this code contains consensus-breaking changes, I have added the
"consensus-breaking" label. Otherwise, I declare my belief that there
are not consensus-breaking changes, for the following reason:
> REPLACE THIS TEXT WITH RATIONALE (CAN BE BRIEF)
Copy file name to clipboardexpand all lines: crates/bin/pindexer/src/insights/mod.rs
+21-4
Original file line number
Diff line number
Diff line change
@@ -151,6 +151,7 @@ async fn asset_flow(
151
151
asset_id: asset::Id,
152
152
height:u64,
153
153
flow:i128,
154
+
refund:bool,
154
155
depositor_existed:DepositorExisted,
155
156
) -> anyhow::Result<()>{
156
157
let asset_pool:Option<(String,String,i32)> = sqlx::query_as("SELECT total_value, current_value, unique_depositors FROM insights_shielded_pool WHERE asset_id = $1 ORDER BY height DESC LIMIT 1").bind(asset_id.to_bytes()).fetch_optional(dbtx.as_mut()).await?;
@@ -164,7 +165,7 @@ async fn asset_flow(
164
165
})
165
166
.transpose()?
166
167
.unwrap_or((0i128,0i128,0i32));
167
-
asset_pool.0 += flow.abs();
168
+
asset_pool.0 += if refund {0}else{flow.max(0)};
168
169
asset_pool.1 += flow;
169
170
asset_pool.2 += match depositor_existed {
170
171
DepositorExisted::Yes => 0,
@@ -431,19 +432,35 @@ impl Component {
431
432
if e.value.asset_id != *STAKING_TOKEN_ASSET_ID{
432
433
let existed = register_depositor(dbtx, e.value.asset_id,&e.sender).await?;
433
434
let flow = i128::try_from(e.value.amount.value())?;
0 commit comments