pub struct ConsumerModificationProposal {
pub title: String,
pub description: String,
pub chain_id: String,
pub top_n: u32,
pub validators_power_cap: u32,
pub validator_set_cap: u32,
pub allowlist: Vec<String>,
pub denylist: Vec<String>,
pub min_stake: u64,
pub allow_inactive_vals: bool,
}
Expand description
WARNING: This message is deprecated in favor of MsgUpdateConsumer
.
ConsumerModificationProposal is a governance proposal on the provider chain to modify parameters of a running
consumer chain. If it passes, the consumer chain’s state is updated to take into account the newest params.
Fields§
§title: String
the title of the proposal
description: String
the description of the proposal
chain_id: String
the chain-id of the consumer chain to be modified
top_n: u32
Corresponds to the percentage of validators that have to validate the chain under the Top N case. For example, 53 corresponds to a Top 53% chain, meaning that the top 53% provider validators by voting power have to validate the proposed consumer chain. top_N can either be 0 or any value in [50, 100]. A chain can join with top_N == 0 as an Opt In chain, or with top_N ∈ [50, 100] as a Top N chain.
validators_power_cap: u32
Corresponds to the maximum power (percentage-wise) a validator can have on the consumer chain. For instance, if
validators_power_cap
is set to 32, it means that no validator can have more than 32% of the voting power on the
consumer chain. Note that this might not be feasible. For example, think of a consumer chain with only
5 validators and with validators_power_cap
set to 10%. In such a scenario, at least one validator would need
to have more than 20% of the total voting power. Therefore, validators_power_cap
operates on a best-effort basis.
validator_set_cap: u32
Corresponds to the maximum number of validators that can validate a consumer chain.
Only applicable to Opt In chains. Setting validator_set_cap
on a Top N chain is a no-op.
allowlist: Vec<String>
Corresponds to a list of provider consensus addresses of validators that are the ONLY ones that can validate the consumer chain.
denylist: Vec<String>
Corresponds to a list of provider consensus addresses of validators that CANNOT validate the consumer chain.
min_stake: u64
Corresponds to the minimal amount of (provider chain) stake required to validate on the consumer chain.
allow_inactive_vals: bool
Corresponds to whether inactive validators are allowed to validate the consumer chain.
Trait Implementations§
Source§impl Clone for ConsumerModificationProposal
impl Clone for ConsumerModificationProposal
Source§fn clone(&self) -> ConsumerModificationProposal
fn clone(&self) -> ConsumerModificationProposal
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ConsumerModificationProposal
impl Debug for ConsumerModificationProposal
Source§impl Message for ConsumerModificationProposal
impl Message for ConsumerModificationProposal
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl Name for ConsumerModificationProposal
impl Name for ConsumerModificationProposal
Source§const NAME: &'static str = "ConsumerModificationProposal"
const NAME: &'static str = "ConsumerModificationProposal"
Message
.
This name is the same as it appears in the source .proto file, e.g. FooBar
.Source§const PACKAGE: &'static str = "interchain_security.ccv.provider.v1"
const PACKAGE: &'static str = "interchain_security.ccv.provider.v1"
.
, e.g. google.protobuf
.Source§fn full_name() -> String
fn full_name() -> String
Message
.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation
.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.Source§impl PartialEq for ConsumerModificationProposal
impl PartialEq for ConsumerModificationProposal
Source§fn eq(&self, other: &ConsumerModificationProposal) -> bool
fn eq(&self, other: &ConsumerModificationProposal) -> bool
self
and other
values to be equal, and is used by ==
.impl StructuralPartialEq for ConsumerModificationProposal
Auto Trait Implementations§
impl Freeze for ConsumerModificationProposal
impl RefUnwindSafe for ConsumerModificationProposal
impl Send for ConsumerModificationProposal
impl Sync for ConsumerModificationProposal
impl Unpin for ConsumerModificationProposal
impl UnwindSafe for ConsumerModificationProposal
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<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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request