pub struct BuilderAttribution { /* private fields */ }Expand description
Builder attribution of a single order: which builder submitted it and the additive fee rate that builder charges on it.
The rate is what the order requests; what a builder actually earns is
reported per fill by the builder_fee of
crate::state::OrderEventType::Filled.
A non-zero Self::builder_id does not imply a fee: attribution with a
zero fee is valid and expected on close/decrease orders.
Implementations§
Source§impl BuilderAttribution
impl BuilderAttribution
Sourcepub fn new(builder_id: BuilderId, fee: UD64) -> Self
pub fn new(builder_id: BuilderId, fee: UD64) -> Self
Attribution of an order to builder_id, charging an additive fee
fraction of the traded amount on the size the order adds.
The fee is bounded by MAX_BUILDER_FEE_PER_100K and quantized to
num::FEE_SCALE decimal places on encoding; use
Self::encode to detect an out-of-range rate before submitting.
Sourcepub fn builder_id(&self) -> BuilderId
pub fn builder_id(&self) -> BuilderId
Builder code the order is attributed to. Zero means no builder, in which case no envelope is submitted at all.
Sourcepub fn fee(&self) -> UD64
pub fn fee(&self) -> UD64
Additive builder fee rate requested by the order, as a fraction of the traded amount.
Sourcepub fn fee_per_100k(&self) -> U256
pub fn fee_per_100k(&self) -> U256
Raw Per100K fee rate as submitted on-chain.
Sourcepub fn encode(&self) -> Result<Bytes, OrderExtensionError>
pub fn encode(&self) -> Result<Bytes, OrderExtensionError>
Encodes the envelope to submit with a V2 order entrypoint, rejecting a fee rate the contract’s decoder would reject.
Mirrors OrderExtensionLib.decodeOrderExtension:
abi.encode(uint16 version, bytes payload) where the version-1 payload
is abi.encode(uint256 builderId, uint256 builderFeePer100K).
The contract reverts on an out-of-range fee on the single-order path
and skips the order (emitting OrderExtensionRejected) on the batched
and forwarded paths, so an envelope is never worth building without the
range check.
Sourcepub fn decode(extension: &[u8]) -> Result<Option<Self>, OrderExtensionError>
pub fn decode(extension: &[u8]) -> Result<Option<Self>, OrderExtensionError>
Decodes the envelope emitted with OrderRequestV2.
An empty envelope is the no-builder fast path and yields None.
Rejections mirror the contract’s decoder, so an envelope this returns an
error for is one the contract itself rejected (see
OrderExtensionError for which failures revert and which skip a
single order).
Trait Implementations§
Source§impl Clone for BuilderAttribution
impl Clone for BuilderAttribution
Source§fn clone(&self) -> BuilderAttribution
fn clone(&self) -> BuilderAttribution
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BuilderAttribution
Source§impl Debug for BuilderAttribution
impl Debug for BuilderAttribution
Source§impl Display for BuilderAttribution
impl Display for BuilderAttribution
impl Eq for BuilderAttribution
Source§impl PartialEq for BuilderAttribution
impl PartialEq for BuilderAttribution
impl StructuralPartialEq for BuilderAttribution
Auto Trait Implementations§
impl Freeze for BuilderAttribution
impl RefUnwindSafe for BuilderAttribution
impl Send for BuilderAttribution
impl Sync for BuilderAttribution
impl Unpin for BuilderAttribution
impl UnsafeUnpin for BuilderAttribution
impl UnwindSafe for BuilderAttribution
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§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> 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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.