From 6b6e42e2f8697c4f65de0122844a799309ad3f5e Mon Sep 17 00:00:00 2001 From: kayibal Date: Thu, 14 Mar 2024 00:27:52 +0000 Subject: [PATCH] Run rustfmt --- .../crates/tycho-substreams/src/balances.rs | 47 +++++++------- .../crates/tycho-substreams/src/contract.rs | 16 ++--- .../crates/tycho-substreams/src/mock_store.rs | 10 +-- substreams/ethereum-balancer/src/modules.rs | 62 ++++++++----------- .../ethereum-balancer/src/pool_factories.rs | 36 +++++++---- substreams/rustfmt.toml | 4 +- 6 files changed, 92 insertions(+), 83 deletions(-) diff --git a/substreams/crates/tycho-substreams/src/balances.rs b/substreams/crates/tycho-substreams/src/balances.rs index 74a38fa..85e1311 100644 --- a/substreams/crates/tycho-substreams/src/balances.rs +++ b/substreams/crates/tycho-substreams/src/balances.rs @@ -3,21 +3,21 @@ //! //! To aggregate relative balances changes to absolute balances the general approach is: //! -//! 1. Use a map function that will extract a `BlockBalanceDeltas` message. BalanceDeltas -//! within this message are required to have increasing ordinals so that -//! the order of relative balance changes is unambiguous. -//! 2. Store the balances changes with a store handler. You can use the -//! `store_balance_changes` library method directly for this. -//! 3. In the output module, use aggregate_balance_changes to receive an -//! aggregated map of absolute balances. -//! +//! 1. Use a map function that will extract a `BlockBalanceDeltas` message. BalanceDeltas within +//! this message are required to have increasing ordinals so that the order of relative balance +//! changes is unambiguous. +//! 2. Store the balances changes with a store handler. You can use the `store_balance_changes` +//! library method directly for this. +//! 3. In the output module, use aggregate_balance_changes to receive an aggregated map of absolute +//! balances. use crate::pb::tycho::evm::v1::{BalanceChange, BlockBalanceDeltas, Transaction}; use itertools::Itertools; -use std::collections::HashMap; -use std::str::FromStr; -use substreams::key; -use substreams::pb::substreams::StoreDeltas; -use substreams::prelude::{BigInt, StoreAdd}; +use std::{collections::HashMap, str::FromStr}; +use substreams::{ + key, + pb::substreams::StoreDeltas, + prelude::{BigInt, StoreAdd}, +}; /// Store relative balances changes in a additive manner. /// @@ -25,9 +25,9 @@ use substreams::prelude::{BigInt, StoreAdd}; /// /// ## Arguments /// -/// * `deltas` - A `BlockBalanceDeltas` message containing the relative balances changes. -/// Note: relative balance deltas must have strictly increasing ordinals per token -/// address, will panic otherwise. +/// * `deltas` - A `BlockBalanceDeltas` message containing the relative balances changes. Note: +/// relative balance deltas must have strictly increasing ordinals per token address, will panic +/// otherwise. /// * `store` - An AddStore that will add relative balance changes. /// /// This method is meant to be used in combination with `aggregate_balances_changes` @@ -68,8 +68,7 @@ type TxAggregatedBalances = HashMap, (Transaction, HashMap, Bala /// Aggregates absolute balances per transaction and token. /// /// ## Arguments -/// * `balance_store` - A `StoreDeltas` with all changes that occured in the source -/// store module. +/// * `balance_store` - A `StoreDeltas` with all changes that occured in the source store module. /// * `deltas` - A `BlockBalanceDeltas` message containing the relative balances changes. /// /// Reads absolute balance values from the additive store (see `store_balance_changes` @@ -127,10 +126,14 @@ pub fn aggregate_balances_changes( #[cfg(test)] mod tests { use super::*; - use crate::mock_store::MockStore; - use crate::pb::tycho::evm::v1::{BalanceDelta, Transaction}; - use substreams::pb::substreams::StoreDelta; - use substreams::prelude::{StoreGet, StoreNew}; + use crate::{ + mock_store::MockStore, + pb::tycho::evm::v1::{BalanceDelta, Transaction}, + }; + use substreams::{ + pb::substreams::StoreDelta, + prelude::{StoreGet, StoreNew}, + }; fn block_balance_deltas() -> BlockBalanceDeltas { let comp_id = "0x42c0ffee" diff --git a/substreams/crates/tycho-substreams/src/contract.rs b/substreams/crates/tycho-substreams/src/contract.rs index e02ba2e..a99fd60 100644 --- a/substreams/crates/tycho-substreams/src/contract.rs +++ b/substreams/crates/tycho-substreams/src/contract.rs @@ -10,9 +10,10 @@ /// more [here](https://streamingfastio.medium.com/new-block-model-to-accelerate-chain-integration-9f65126e5425) use std::collections::HashMap; -use substreams_ethereum::pb::eth; -use substreams_ethereum::pb::eth::v2::block::DetailLevel; -use substreams_ethereum::pb::eth::v2::StorageChange; +use substreams_ethereum::pb::{ + eth, + eth::v2::{block::DetailLevel, StorageChange}, +}; use crate::pb::tycho::evm::v1::{self as tycho}; @@ -78,7 +79,8 @@ impl From for tycho::ContractChange { /// ## Arguments /// /// * `block` - The block to extract changes from. Must be the extended block model. -/// * `inclusion_predicate` - A predicate function that determines if a contract address is relevant. +/// * `inclusion_predicate` - A predicate function that determines if a contract address is +/// relevant. /// * `transaction_contract_changes` - A mutable map to store the contract changes in. /// /// ## Panics @@ -189,9 +191,9 @@ pub fn extract_contract_changes bool>( .extend_from_slice(&code_change.new_code); }); - if !storage_changes.is_empty() - || !balance_changes.is_empty() - || !code_changes.is_empty() + if !storage_changes.is_empty() || + !balance_changes.is_empty() || + !code_changes.is_empty() { transaction_contract_changes .entry(block_tx.index.into()) diff --git a/substreams/crates/tycho-substreams/src/mock_store.rs b/substreams/crates/tycho-substreams/src/mock_store.rs index 6c1349f..70b252b 100644 --- a/substreams/crates/tycho-substreams/src/mock_store.rs +++ b/substreams/crates/tycho-substreams/src/mock_store.rs @@ -1,11 +1,11 @@ //! Contains a mock store for internal testing. //! //! Might make this public alter to users can test their store handlers. -use std::cell::RefCell; -use std::collections::HashMap; -use std::rc::Rc; -use substreams::prelude::{BigInt, StoreDelete, StoreGet, StoreNew}; -use substreams::store::StoreAdd; +use std::{cell::RefCell, collections::HashMap, rc::Rc}; +use substreams::{ + prelude::{BigInt, StoreDelete, StoreGet, StoreNew}, + store::StoreAdd, +}; type BigIntStore = HashMap>; diff --git a/substreams/ethereum-balancer/src/modules.rs b/substreams/ethereum-balancer/src/modules.rs index d5bf495..b1747b1 100644 --- a/substreams/ethereum-balancer/src/modules.rs +++ b/substreams/ethereum-balancer/src/modules.rs @@ -2,16 +2,15 @@ use crate::{abi, pool_factories}; use anyhow::Result; use itertools::Itertools; use std::collections::HashMap; -use substreams::hex; -use substreams::pb::substreams::StoreDeltas; -use substreams::store::{ - StoreAdd, StoreAddBigInt, StoreAddInt64, StoreGet, StoreGetInt64, StoreNew, +use substreams::{ + hex, + pb::substreams::StoreDeltas, + store::{StoreAdd, StoreAddBigInt, StoreAddInt64, StoreGet, StoreGetInt64, StoreNew}, +}; +use substreams_ethereum::{pb::eth, Event}; +use tycho_substreams::{ + balances::aggregate_balances_changes, contract::extract_contract_changes, prelude::*, }; -use substreams_ethereum::pb::eth; -use substreams_ethereum::Event; -use tycho_substreams::balances::aggregate_balances_changes; -use tycho_substreams::contract::extract_contract_changes; -use tycho_substreams::prelude::*; const VAULT_ADDRESS: &[u8] = &hex!("BA12222222228d8Ba445958a75a0704d566BF2C8"); @@ -37,10 +36,7 @@ pub fn map_pools_created(block: eth::v2::Block) -> Result>(); if !components.is_empty() { - Some(TransactionProtocolComponents { - tx: Some(tx.into()), - components, - }) + Some(TransactionProtocolComponents { tx: Some(tx.into()), components }) } else { None } @@ -63,8 +59,8 @@ pub fn store_pools_created(map: BlockTransactionProtocolComponents, store: Store ); } -/// Since the `PoolBalanceChanged` and `Swap` events administer only deltas, we need to leverage a map and a -/// store to be able to tally up final balances for tokens in a pool. +/// Since the `PoolBalanceChanged` and `Swap` events administer only deltas, we need to leverage a +/// map and a store to be able to tally up final balances for tokens in a pool. #[substreams::handlers::map] pub fn map_balance_deltas( block: eth::v2::Block, @@ -79,12 +75,10 @@ pub fn map_balance_deltas( if let Some(ev) = abi::vault::events::PoolBalanceChanged::match_and_decode(vault_log.log) { - let component_id = format!( - "0x{}", - String::from_utf8(ev.pool_id[..20].to_vec()).unwrap() - ) - .as_bytes() - .to_vec(); + let component_id = + format!("0x{}", String::from_utf8(ev.pool_id[..20].to_vec()).unwrap()) + .as_bytes() + .to_vec(); if store .get_last(format!("pool:{}", hex::encode(&component_id))) @@ -101,12 +95,10 @@ pub fn map_balance_deltas( } } } else if let Some(ev) = abi::vault::events::Swap::match_and_decode(vault_log.log) { - let component_id = format!( - "0x{}", - String::from_utf8(ev.pool_id[..20].to_vec()).unwrap() - ) - .as_bytes() - .to_vec(); + let component_id = + format!("0x{}", String::from_utf8(ev.pool_id[..20].to_vec()).unwrap()) + .as_bytes() + .to_vec(); if store .get_last(format!("pool:{}", hex::encode(&component_id))) @@ -149,8 +141,8 @@ pub fn store_balance_changes(deltas: BlockBalanceDeltas, store: StoreAddBigInt) /// Every contract change is grouped by transaction index via the `transaction_contract_changes` /// map. Each block of code will extend the `TransactionContractChanges` struct with the /// cooresponding changes (balance, component, contract), inserting a new one if it doesn't exist. -/// At the very end, the map can easily be sorted by index to ensure the final `BlockContractChanges` -/// is ordered by transactions properly. +/// At the very end, the map can easily be sorted by index to ensure the final +/// `BlockContractChanges` is ordered by transactions properly. #[substreams::handlers::map] pub fn map_changes( block: eth::v2::Block, @@ -178,9 +170,9 @@ pub fn map_changes( }); // Balance changes are gathered by the `StoreDelta` based on `PoolBalanceChanged` creating - // `BlockBalanceDeltas`. We essentially just process the changes that occurred to the `store` this - // block. Then, these balance changes are merged onto the existing map of tx contract changes, - // inserting a new one if it doesn't exist. + // `BlockBalanceDeltas`. We essentially just process the changes that occurred to the `store` + // this block. Then, these balance changes are merged onto the existing map of tx contract + // changes, inserting a new one if it doesn't exist. aggregate_balances_changes(balance_store, deltas) .into_iter() .for_each(|(_, (tx, balances))| { @@ -210,9 +202,9 @@ pub fn map_changes( .drain() .sorted_unstable_by_key(|(index, _)| *index) .filter_map(|(_, change)| { - if change.contract_changes.is_empty() - && change.component_changes.is_empty() - && change.balance_changes.is_empty() + if change.contract_changes.is_empty() && + change.component_changes.is_empty() && + change.balance_changes.is_empty() { None } else { diff --git a/substreams/ethereum-balancer/src/pool_factories.rs b/substreams/ethereum-balancer/src/pool_factories.rs index d2cfc2f..5c2cd59 100644 --- a/substreams/ethereum-balancer/src/pool_factories.rs +++ b/substreams/ethereum-balancer/src/pool_factories.rs @@ -1,8 +1,9 @@ use crate::abi; -use substreams::hex; -use substreams::scalar::BigInt; -use substreams_ethereum::pb::eth::v2::{Call, Log}; -use substreams_ethereum::{Event, Function}; +use substreams::{hex, scalar::BigInt}; +use substreams_ethereum::{ + pb::eth::v2::{Call, Log}, + Event, Function, +}; use tycho_substreams::prelude::*; /// This trait defines some helpers for serializing and deserializing `Vec { - // let create_call = abi::managed_pool_factory::functions::Create::match_and_decode(call)?; + // let create_call = + // abi::managed_pool_factory::functions::Create::match_and_decode(call)?; // let pool_created = // abi::managed_pool_factory::events::PoolCreated::match_and_decode(log)?; @@ -176,7 +184,9 @@ pub fn address_map( ("pool_type", "SiloLinearPoolFactory".as_bytes()), ( "upper_target", - &create_call.upper_target.to_signed_bytes_be(), + &create_call + .upper_target + .to_signed_bytes_be(), ), ]) .as_swap_type("balancer_pool", ImplementationType::Vm), @@ -195,7 +205,9 @@ pub fn address_map( ("pool_type", "YearnLinearPoolFactory".as_bytes()), ( "upper_target", - &create_call.upper_target.to_signed_bytes_be(), + &create_call + .upper_target + .to_signed_bytes_be(), ), ]) .as_swap_type("balancer_pool", ImplementationType::Vm), diff --git a/substreams/rustfmt.toml b/substreams/rustfmt.toml index ce9e1ec..1f27a7b 100644 --- a/substreams/rustfmt.toml +++ b/substreams/rustfmt.toml @@ -9,6 +9,6 @@ trailing_semicolon = false use_field_init_shorthand = true chain_width = 40 ignore = [ - "*/pb", - "*/abi", + "crates/tycho-substreams/src/pb", + "ethereum-balancer/src/abi", ] \ No newline at end of file