Skip to content

Commit

Permalink
Merge pull request #109 from multiversx/more-events-price-aggregator
Browse files Browse the repository at this point in the history
price aggregator changes from mx-sdk-rs
  • Loading branch information
alyn509 authored Oct 4, 2024
2 parents 9acd488 + a75fc56 commit 12274ab
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 8 deletions.
26 changes: 22 additions & 4 deletions contracts/price-aggregator/src/events.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use multiversx_sc::derive_imports::*;
use multiversx_sc::imports::*;
multiversx_sc::imports!();
multiversx_sc::derive_imports!();

use crate::price_aggregator_data::{TimestampedPrice, TokenPair};

Expand All @@ -18,13 +18,14 @@ pub trait EventsModule {
fn emit_new_round_event(
&self,
token_pair: &TokenPair<Self::Api>,
round_id: usize,
price_feed: &TimestampedPrice<Self::Api>,
) {
let epoch = self.blockchain().get_block_epoch();
self.new_round_event(
&token_pair.from.clone(),
&token_pair.to.clone(),
epoch,
round_id,
&NewRoundEvent {
price: price_feed.price.clone(),
timestamp: price_feed.timestamp,
Expand All @@ -40,7 +41,24 @@ pub trait EventsModule {
&self,
#[indexed] from: &ManagedBuffer,
#[indexed] to: &ManagedBuffer,
#[indexed] epoch: u64,
#[indexed] round: usize,
new_round_event: &NewRoundEvent<Self::Api>,
);

#[event("discard_round")]
fn discard_round_event(
&self,
#[indexed] from: &ManagedBuffer,
#[indexed] to: &ManagedBuffer,
#[indexed] round: usize,
);

#[event("add_submission")]
fn add_submission_event(
&self,
#[indexed] from: &ManagedBuffer,
#[indexed] to: &ManagedBuffer,
#[indexed] round: usize,
price: &BigUint,
);
}
22 changes: 18 additions & 4 deletions contracts/price-aggregator/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#![no_std]

use multiversx_sc::imports::*;
multiversx_sc::imports!();

mod events;
pub mod median;
Expand Down Expand Up @@ -183,10 +183,21 @@ pub trait PriceAggregator:
let accepted = !submissions.contains_key(&caller)
&& (is_first_submission || submission_timestamp >= first_submission_timestamp);
if accepted {
submissions.insert(caller, price);
submissions.insert(caller.clone(), price.clone());
last_sub_time_mapper.set(current_timestamp);

self.create_new_round(token_pair, submissions, decimals);
let mut round_id = 0;
let wrapped_rounds = self.rounds().get(&token_pair);
if wrapped_rounds.is_some() {
round_id = wrapped_rounds.unwrap().len() + 1;
}
self.create_new_round(token_pair.clone(), round_id, submissions, decimals);
self.add_submission_event(
&token_pair.from.clone(),
&token_pair.to.clone(),
round_id,
&price,
);
}

self.oracle_status()
Expand Down Expand Up @@ -248,6 +259,7 @@ pub trait PriceAggregator:
fn create_new_round(
&self,
token_pair: TokenPair<Self::Api>,
round_id: usize,
mut submissions: MapMapper<ManagedAddress, BigUint>,
decimals: u8,
) {
Expand Down Expand Up @@ -281,7 +293,9 @@ pub trait PriceAggregator:
.or_default()
.get()
.push(&price_feed);
self.emit_new_round_event(&token_pair, &price_feed);
self.emit_new_round_event(&token_pair, round_id, &price_feed);
} else {
self.discard_round_event(&token_pair.from.clone(), &token_pair.to.clone(), round_id);
}
}

Expand Down

0 comments on commit 12274ab

Please sign in to comment.