valdiate: 3pool and steth-eth

This commit is contained in:
0xMochan
2024-05-08 15:56:41 -05:00
parent 7c49d3e813
commit ec07703090
6 changed files with 259 additions and 757 deletions

View File

@@ -1,4 +1,5 @@
use substreams::{
hex,
scalar::BigInt,
store::{StoreGet, StoreGetInt64, StoreGetString},
};
@@ -37,9 +38,10 @@ pub fn emit_deltas(
.collect::<Vec<_>>();
if let Some(event) = abi::pool::events::TokenExchange::match_and_decode(log) {
token_change_deltas(event, log)
token_change_deltas(tokens, event, log)
} else if let Some(event) = abi::pool_3pool::events::TokenExchange::match_and_decode(log) {
token_change_deltas(
tokens,
abi::pool::events::TokenExchange {
sold_id: event.sold_id,
bought_id: event.bought_id,
@@ -51,6 +53,7 @@ pub fn emit_deltas(
)
} else if let Some(event) = abi::pool_steth::events::TokenExchange::match_and_decode(log) {
token_change_deltas(
tokens,
abi::pool::events::TokenExchange {
sold_id: event.sold_id,
bought_id: event.bought_id,
@@ -62,6 +65,7 @@ pub fn emit_deltas(
)
} else if let Some(event) = abi::pool_tricrypto::events::TokenExchange::match_and_decode(log) {
token_change_deltas(
tokens,
abi::pool::events::TokenExchange {
sold_id: event.sold_id,
bought_id: event.bought_id,
@@ -94,24 +98,27 @@ pub fn emit_deltas(
}
fn token_change_deltas(
tokens: Vec<String>,
event: abi::pool::events::TokenExchange,
log: LogView<'_>,
) -> Option<Vec<BalanceDelta>> {
let tokens_bought_delta: BigInt = event.tokens_bought * -1;
let sold_token_id = &tokens[event.sold_id.to_u64() as usize];
let bought_token_id = &tokens[event.bought_id.to_u64() as usize];
Some(vec![
BalanceDelta {
ord: log.log.ordinal,
tx: Some(tx_from_log(&log)),
token: event.sold_id.to_signed_bytes_be(),
token: hex::decode(sold_token_id.clone()).unwrap(),
delta: event.tokens_sold.to_signed_bytes_be(),
component_id: log.address().into(),
component_id: hex::encode(log.address()).into(),
},
BalanceDelta {
ord: log.log.ordinal,
tx: Some(tx_from_log(&log)),
token: event.bought_id.to_signed_bytes_be(),
token: hex::decode(bought_token_id.clone()).unwrap(),
delta: tokens_bought_delta.to_signed_bytes_be(),
component_id: log.address().into(),
component_id: hex::encode(log.address()).into(),
},
])
}
@@ -128,9 +135,9 @@ fn add_liquidity_deltas(
.map(move |(token_amount, token_id)| BalanceDelta {
ord: log.log.ordinal,
tx: Some(tx_from_log(&log)),
token: token_id.as_str().into(),
token: hex::decode(token_id).unwrap(),
delta: token_amount.to_signed_bytes_be(),
component_id: log.address().into(),
component_id: hex::encode(log.address()).into(),
})
.collect::<Vec<_>>(),
)
@@ -148,9 +155,9 @@ fn remove_liquidity_deltas(
.map(move |(token_amount, token_id)| BalanceDelta {
ord: log.log.ordinal,
tx: Some(tx_from_log(&log)),
token: token_id.as_str().into(),
token: hex::decode(token_id).unwrap(),
delta: token_amount.to_signed_bytes_be(),
component_id: log.address().into(),
component_id: hex::encode(log.address()).into(),
})
.collect::<Vec<_>>(),
)