pub struct ConsumerAdditionProposal {Show 21 fields
pub title: String,
pub description: String,
pub chain_id: String,
pub initial_height: Option<Height>,
pub genesis_hash: Vec<u8>,
pub binary_hash: Vec<u8>,
pub spawn_time: Option<Timestamp>,
pub unbonding_period: Option<Duration>,
pub ccv_timeout_period: Option<Duration>,
pub transfer_timeout_period: Option<Duration>,
pub consumer_redistribution_fraction: String,
pub blocks_per_distribution_transmission: i64,
pub historical_entries: i64,
pub distribution_transmission_channel: 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 MsgCreateConsumer
.
ConsumerAdditionProposal is a governance proposal on the provider chain to
spawn a new consumer chain. If it passes, then all validators on the provider
chain are expected to validate the consumer chain at spawn time or get
slashed. It is recommended that spawn time occurs after the proposal end
time.
Use MsgConsumerAddition to submit this proposal type.
Fields§
§title: String
the title of the proposal
description: String
the description of the proposal
chain_id: String
the proposed chain-id of the new consumer chain, must be different from all other consumer chain ids of the executing provider chain.
initial_height: Option<Height>
the proposed initial height of new consumer chain. For a completely new chain, this will be {0,1}. However, it may be different if this is a chain that is converting to a consumer chain.
genesis_hash: Vec<u8>
The hash of the consumer chain genesis state without the consumer CCV module genesis params. It is used for off-chain confirmation of genesis.json validity by validators and other parties.
binary_hash: Vec<u8>
The hash of the consumer chain binary that should be run by validators on chain initialization. It is used for off-chain confirmation of binary validity by validators and other parties.
spawn_time: Option<Timestamp>
spawn time is the time on the provider chain at which the consumer chain genesis is finalized and all validators will be responsible for starting their consumer chain validator node.
unbonding_period: Option<Duration>
Unbonding period for the consumer, which should be smaller than that of the provider in general.
ccv_timeout_period: Option<Duration>
Sent CCV related IBC packets will timeout after this duration
transfer_timeout_period: Option<Duration>
Sent transfer related IBC packets will timeout after this duration
consumer_redistribution_fraction: String
The fraction of tokens allocated to the consumer redistribution address during distribution events. The fraction is a string representing a decimal number. For example “0.75” would represent 75%.
blocks_per_distribution_transmission: i64
BlocksPerDistributionTransmission is the number of blocks between
ibc-token-transfers from the consumer chain to the provider chain. On
sending transmission event, consumer_redistribution_fraction
of the
accumulated tokens are sent to the consumer redistribution address.
historical_entries: i64
The number of historical info entries to persist in store. This param is a part of the cosmos sdk staking module. In the case of a ccv enabled consumer chain, the ccv module acts as the staking module.
distribution_transmission_channel: String
The ID of a token transfer channel used for the Reward Distribution sub-protocol. If DistributionTransmissionChannel == “”, a new transfer channel is created on top of the same connection as the CCV channel. Note that transfer_channel_id is the ID of the channel end on the consumer chain. it is most relevant for chains performing a sovereign to consumer changeover in order to maintain the existing ibc transfer channel
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 ConsumerAdditionProposal
impl Clone for ConsumerAdditionProposal
Source§fn clone(&self) -> ConsumerAdditionProposal
fn clone(&self) -> ConsumerAdditionProposal
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ConsumerAdditionProposal
impl Debug for ConsumerAdditionProposal
Source§impl Default for ConsumerAdditionProposal
impl Default for ConsumerAdditionProposal
Source§impl Message for ConsumerAdditionProposal
impl Message for ConsumerAdditionProposal
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 ConsumerAdditionProposal
impl Name for ConsumerAdditionProposal
Source§const NAME: &'static str = "ConsumerAdditionProposal"
const NAME: &'static str = "ConsumerAdditionProposal"
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 ConsumerAdditionProposal
impl PartialEq for ConsumerAdditionProposal
impl StructuralPartialEq for ConsumerAdditionProposal
Auto Trait Implementations§
impl Freeze for ConsumerAdditionProposal
impl RefUnwindSafe for ConsumerAdditionProposal
impl Send for ConsumerAdditionProposal
impl Sync for ConsumerAdditionProposal
impl Unpin for ConsumerAdditionProposal
impl UnwindSafe for ConsumerAdditionProposal
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