Trait pallet_broker::CoretimeInterface
source · pub trait CoretimeInterface {
type AccountId: Parameter;
type Balance: AtLeast32BitUnsigned;
type BlockNumber: AtLeast32BitUnsigned + Copy + TypeInfo + Encode + Decode + MaxEncodedLen + Debug;
// Required methods
fn latest() -> Self::BlockNumber;
fn request_core_count(count: CoreIndex);
fn request_revenue_info_at(when: Self::BlockNumber);
fn credit_account(who: Self::AccountId, amount: Self::Balance);
fn assign_core(
core: CoreIndex,
begin: Self::BlockNumber,
assignment: Vec<(CoreAssignment, PartsOf57600)>,
end_hint: Option<Self::BlockNumber>
);
fn check_notify_core_count() -> Option<u16>;
fn check_notify_revenue_info() -> Option<(Self::BlockNumber, Self::Balance)>;
fn ensure_notify_core_count(count: u16);
fn ensure_notify_revenue_info(
when: Self::BlockNumber,
revenue: Self::Balance
);
}
Expand description
Type able to accept Coretime scheduling instructions and provide certain usage information. Generally implemented by the Relay-chain or some means of communicating with it.
The trait representation of RFC#5 <https://github.com/polkadot-fellows/RFCs/pull/5>
.
Required Associated Types§
sourcetype Balance: AtLeast32BitUnsigned
type Balance: AtLeast32BitUnsigned
A (Relay-chain-side) balance.
sourcetype BlockNumber: AtLeast32BitUnsigned + Copy + TypeInfo + Encode + Decode + MaxEncodedLen + Debug
type BlockNumber: AtLeast32BitUnsigned + Copy + TypeInfo + Encode + Decode + MaxEncodedLen + Debug
A (Relay-chain-side) block number.
Required Methods§
sourcefn latest() -> Self::BlockNumber
fn latest() -> Self::BlockNumber
Return the latest block number on the Relay-chain.
sourcefn request_core_count(count: CoreIndex)
fn request_core_count(count: CoreIndex)
Requests the Relay-chain to alter the number of schedulable cores to count
. Under normal
operation, the Relay-chain SHOULD send a notify_core_count(count)
message back.
sourcefn request_revenue_info_at(when: Self::BlockNumber)
fn request_revenue_info_at(when: Self::BlockNumber)
Requests that the Relay-chain send a notify_revenue
message back at or soon after
Relay-chain block number when
whose until
parameter is equal to when
.
when
may never be greater than the result of Self::latest()
.
The period in to the past which when
is allowed to be may be limited; if so the limit
should be understood on a channel outside of this proposal. In the case that the request
cannot be serviced because when
is too old a block then a notify_revenue
message must
still be returned, but its revenue
field may be None
.
sourcefn credit_account(who: Self::AccountId, amount: Self::Balance)
fn credit_account(who: Self::AccountId, amount: Self::Balance)
Instructs the Relay-chain to add the amount
of DOT to the Instantaneous Coretime Market
Credit account of who
.
It is expected that Instantaneous Coretime Market Credit on the Relay-chain is NOT transferrable and only redeemable when used to assign cores in the Instantaneous Coretime Pool.
sourcefn assign_core(
core: CoreIndex,
begin: Self::BlockNumber,
assignment: Vec<(CoreAssignment, PartsOf57600)>,
end_hint: Option<Self::BlockNumber>
)
fn assign_core( core: CoreIndex, begin: Self::BlockNumber, assignment: Vec<(CoreAssignment, PartsOf57600)>, end_hint: Option<Self::BlockNumber> )
Instructs the Relay-chain to ensure that the core indexed as core
is utilised for a number
of assignments in specific ratios given by assignment
starting as soon after begin
as
possible. Core assignments take the form of a CoreAssignment
value which can either task
the core to a ParaId
value or indicate that the core should be used in the Instantaneous
Pool. Each assignment comes with a ratio value, represented as the numerator of the fraction
with a denominator of 57,600.
If end_hint
is Some
and the inner is greater than the current block number, then the
Relay-chain should optimize in the expectation of receiving a new assign_core(core, ...)
message at or prior to the block number of the inner value. Specific functionality should
remain unchanged regardless of the end_hint
value.
sourcefn check_notify_core_count() -> Option<u16>
fn check_notify_core_count() -> Option<u16>
Indicate that from this block onwards, the range of acceptable values of the core
parameter of assign_core
message is [0, count)
. assign_core
will be a no-op if
provided with a value for core
outside of this range.
sourcefn check_notify_revenue_info() -> Option<(Self::BlockNumber, Self::Balance)>
fn check_notify_revenue_info() -> Option<(Self::BlockNumber, Self::Balance)>
Provide the amount of revenue accumulated from Instantaneous Coretime Sales from Relay-chain
block number last_until
to until
, not including until
itself. last_until
is defined
as being the until
argument of the last notify_revenue
message sent, or zero for the
first call. If revenue
is None
, this indicates that the information is no longer
available.
This explicitly disregards the possibility of multiple parachains requesting and being notified of revenue information. The Relay-chain must be configured to ensure that only a single revenue information destination exists.
sourcefn ensure_notify_core_count(count: u16)
fn ensure_notify_core_count(count: u16)
Ensure that core count is updated to the provided value.
This is only used for benchmarking.
sourcefn ensure_notify_revenue_info(when: Self::BlockNumber, revenue: Self::Balance)
fn ensure_notify_revenue_info(when: Self::BlockNumber, revenue: Self::Balance)
Ensure that revenue information is updated to the provided value.
This is only used for benchmarking.