pub struct AggregateFills { /* private fields */ }Expand description
The aggregate fills, to be populated via block extracts. Generally used to hold a running total of fills for a given user and asset across a block or set of transactions.
We use the following terminology:
- Add: push outputs from
RollupOrders::Filledinto the context.Self::add_fillis called when the filler transfers assets to the recipient specified in an order. - Remove: pull outputs from
RollupOrders::Orderfrom the context. These are called when an order event is emitted by the rollup orders contract. AllOrdersshould be aggregated into a singleAggregateOrdersbefore callingSelf::checked_remove_aggregateorSelf::unchecked_remove_aggregate.
§Example
let mut context = AggregateFills::default();
// The first argument is the chain ID of the chain that emitted the event
// in this case, Ethereum.
context.add_fill(1, &fill);
context.checked_remove_order(&order)?;Implementations§
Source§impl AggregateFills
impl AggregateFills
Sourcepub fn filled(&self, output_asset: &(u64, Address), recipient: Address) -> U256
pub fn filled(&self, output_asset: &(u64, Address), recipient: Address) -> U256
Get the fill balance a specific asset for a specific user.
Sourcepub fn check_filled(
&self,
output_asset: &(u64, Address),
recipient: Address,
amount: U256,
) -> Result<(), MarketError>
pub fn check_filled( &self, output_asset: &(u64, Address), recipient: Address, amount: U256, ) -> Result<(), MarketError>
Check if the context has enough filled for the asset, recipient, and amount.
Sourcepub fn add_raw_fill(
&mut self,
chain_id: u64,
asset: Address,
recipient: Address,
amount: U256,
)
pub fn add_raw_fill( &mut self, chain_id: u64, asset: Address, recipient: Address, amount: U256, )
Add an unstructured fill to the context. The chain_id is the ID of
of the chain on which the fill occurred.
Sourcepub fn add_signed_fill(&mut self, chain_id: u64, fill: &SignedFill)
pub fn add_signed_fill(&mut self, chain_id: u64, fill: &SignedFill)
Ingest a SignedFill into the aggregate. The chain_id is the ID
of the chain which emitted the event.
§Note:
This uses saturating arithmetic to avoid panics. If filling more than
U256::MAX, re-examine life choices and don’t do that.
Sourcepub fn unchecked_unabsorb(&mut self, other: &Self) -> Result<(), MarketError>
pub fn unchecked_unabsorb(&mut self, other: &Self) -> Result<(), MarketError>
Unabsorb the fills from another context.
Sourcepub fn check_aggregate(
&self,
aggregate: &AggregateOrders,
) -> Result<(), MarketError>
pub fn check_aggregate( &self, aggregate: &AggregateOrders, ) -> Result<(), MarketError>
Check that the context can remove the aggregate.
Sourcepub fn unchecked_remove_aggregate(
&mut self,
aggregate: &AggregateOrders,
) -> Result<(), MarketError>
pub fn unchecked_remove_aggregate( &mut self, aggregate: &AggregateOrders, ) -> Result<(), MarketError>
Take the aggregate of some orders from the context, without checking in advance whether the context has sufficient fills to remove the aggregate. If the context does not have sufficient fills, the context will be left in a bad state after returning an error.
Sourcepub fn checked_remove_aggregate(
&mut self,
aggregate: &AggregateOrders,
) -> Result<(), MarketError>
pub fn checked_remove_aggregate( &mut self, aggregate: &AggregateOrders, ) -> Result<(), MarketError>
Remove the aggregate of some orders from the context, checking in advance that the context has sufficient fills to remove the aggregate.
Sourcepub fn check_order(&self, order: &Order) -> Result<(), MarketError>
pub fn check_order(&self, order: &Order) -> Result<(), MarketError>
Check that the context can take the order.
Sourcepub fn checked_remove_order(&mut self, order: &Order) -> Result<(), MarketError>
pub fn checked_remove_order(&mut self, order: &Order) -> Result<(), MarketError>
Take the order from the context, checking in advance that the context has sufficient fills to remove the order.
Sourcepub fn unchecked_remove_order(
&mut self,
order: &Order,
) -> Result<(), MarketError>
pub fn unchecked_remove_order( &mut self, order: &Order, ) -> Result<(), MarketError>
Take the order from the context, without checking in advance that the context has sufficient fills to remove the order. If the context does not have sufficient fills, the context will be left in a bad state after returning an error.
Sourcepub const fn fills(&self) -> &HashMap<(u64, Address), HashMap<Address, U256>>
pub const fn fills(&self) -> &HashMap<(u64, Address), HashMap<Address, U256>>
Borrow the current fill mapping.
Sourcepub const fn fills_mut(
&mut self,
) -> &mut HashMap<(u64, Address), HashMap<Address, U256>>
pub const fn fills_mut( &mut self, ) -> &mut HashMap<(u64, Address), HashMap<Address, U256>>
Mutably borrow the current fill mapping
Sourcepub fn check_ru_tx_events(
&self,
fills: &AggregateFills,
orders: &AggregateOrders,
) -> Result<(), MarketError>
pub fn check_ru_tx_events( &self, fills: &AggregateFills, orders: &AggregateOrders, ) -> Result<(), MarketError>
Check the events emitted by a rollup transaction against the context.
This will process all fills first, and all orders second.
Sourcepub fn checked_remove_ru_tx_events(
&mut self,
fills: &AggregateFills,
orders: &AggregateOrders,
) -> Result<(), MarketError>
pub fn checked_remove_ru_tx_events( &mut self, fills: &AggregateFills, orders: &AggregateOrders, ) -> Result<(), MarketError>
Check and remove the events emitted by a rollup transaction. This function allows atomic ingestion of multiple Fills and Orders. If the check fails, the aggregate will not be mutated.
This will process all fills first, and all orders second.
Sourcepub fn unchecked_remove_ru_tx_events(
&mut self,
fills: &AggregateFills,
orders: &AggregateOrders,
) -> Result<(), MarketError>
pub fn unchecked_remove_ru_tx_events( &mut self, fills: &AggregateFills, orders: &AggregateOrders, ) -> Result<(), MarketError>
Check and remove the events emitted by a rollup transaction. This function allows atomic ingestion of multiple Fills and Orders. If the check fails, the aggregate may be mutated.
Trait Implementations§
Source§impl Clone for AggregateFills
impl Clone for AggregateFills
Source§fn clone(&self) -> AggregateFills
fn clone(&self) -> AggregateFills
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AggregateFills
impl Debug for AggregateFills
Source§impl Default for AggregateFills
impl Default for AggregateFills
Source§fn default() -> AggregateFills
fn default() -> AggregateFills
Source§impl<'de> Deserialize<'de> for AggregateFills
impl<'de> Deserialize<'de> for AggregateFills
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for AggregateFills
impl PartialEq for AggregateFills
Source§impl Serialize for AggregateFills
impl Serialize for AggregateFills
impl Eq for AggregateFills
impl StructuralPartialEq for AggregateFills
Auto Trait Implementations§
impl Freeze for AggregateFills
impl RefUnwindSafe for AggregateFills
impl Send for AggregateFills
impl Sync for AggregateFills
impl Unpin for AggregateFills
impl UnwindSafe for AggregateFills
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.