Skip to main content

NetworkCommissionRates

Struct NetworkCommissionRates 

Source
pub struct NetworkCommissionRates {
    pub inference_commission_bps: u32,
    pub tee_commission_bps: u32,
    pub custody_commission_bps: u32,
    pub model_hosting_commission_bps: u32,
}
Expand description

Network commission rates for provider payments (in basis points, 100 = 1%)

These commissions are taken as a percentage of payments to AI inference providers, TEE enclave providers, key management services, and model hosting providers. The commission flows to the network treasury for protocol development and governance.

§Examples

use tenzro_types::NetworkCommissionRates;

let rates = NetworkCommissionRates::default();
assert_eq!(rates.inference_commission_bps, 500); // 5%

// Calculate commission on a 100 TNZO payment
let payment = 100_000_000_000_000_000_000u128; // 100 TNZO
let commission = rates.calculate_inference_commission(payment).unwrap();
assert_eq!(commission, 5_000_000_000_000_000_000u128); // 5 TNZO

Fields§

§inference_commission_bps: u32

Commission on AI inference payments (basis points)

Default: 500 bps (5%)

§tee_commission_bps: u32

Commission on TEE enclave usage payments (basis points)

Default: 500 bps (5%)

§custody_commission_bps: u32

Commission on key management/custody payments (basis points)

Default: 500 bps (5%)

§model_hosting_commission_bps: u32

Commission on model hosting payments (basis points)

Default: 500 bps (5%)

Implementations§

Source§

impl NetworkCommissionRates

Source

pub fn new( inference_commission_bps: u32, tee_commission_bps: u32, custody_commission_bps: u32, model_hosting_commission_bps: u32, ) -> Self

Creates a new commission rate structure with custom values

Source

pub fn calculate_inference_commission( &self, payment_amount: u128, ) -> Option<u128>

Calculates the commission amount for an inference payment

Returns None if the calculation would overflow.

Source

pub fn calculate_tee_commission(&self, payment_amount: u128) -> Option<u128>

Calculates the commission amount for a TEE enclave payment

Returns None if the calculation would overflow.

Source

pub fn calculate_custody_commission(&self, payment_amount: u128) -> Option<u128>

Calculates the commission amount for a key custody payment

Returns None if the calculation would overflow.

Source

pub fn calculate_model_hosting_commission( &self, payment_amount: u128, ) -> Option<u128>

Calculates the commission amount for a model hosting payment

Returns None if the calculation would overflow.

Source

pub fn validate(&self) -> Result<(), &'static str>

Validates that all commission rates are within reasonable bounds (0-10000 bps = 0-100%)

Trait Implementations§

Source§

impl Clone for NetworkCommissionRates

Source§

fn clone(&self) -> NetworkCommissionRates

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NetworkCommissionRates

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for NetworkCommissionRates

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for NetworkCommissionRates

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for NetworkCommissionRates

Source§

impl PartialEq for NetworkCommissionRates

Source§

fn eq(&self, other: &NetworkCommissionRates) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for NetworkCommissionRates

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for NetworkCommissionRates

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.