#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FeatureSet {
#[prost(fixed64, repeated, tag = "1")]
pub features: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AcctState {
#[prost(bytes = "vec", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub lamports: u64,
#[prost(bytes = "vec", tag = "3")]
pub data: ::prost::alloc::vec::Vec<u8>,
#[prost(bool, tag = "4")]
pub executable: bool,
#[prost(bytes = "vec", tag = "6")]
pub owner: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FeeRateGovernor {
#[prost(uint64, tag = "1")]
pub target_lamports_per_signature: u64,
#[prost(uint64, tag = "2")]
pub target_signatures_per_slot: u64,
#[prost(uint64, tag = "3")]
pub min_lamports_per_signature: u64,
#[prost(uint64, tag = "4")]
pub max_lamports_per_signature: u64,
#[prost(uint32, tag = "5")]
pub burn_percent: u32,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EpochSchedule {
#[prost(uint64, tag = "1")]
pub slots_per_epoch: u64,
#[prost(uint64, tag = "2")]
pub leader_schedule_slot_offset: u64,
#[prost(bool, tag = "3")]
pub warmup: bool,
#[prost(uint64, tag = "4")]
pub first_normal_epoch: u64,
#[prost(uint64, tag = "5")]
pub first_normal_slot: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockhashQueueEntry {
#[prost(bytes = "vec", tag = "1")]
pub blockhash: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub lamports_per_signature: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FixtureMetadata {
#[prost(string, tag = "1")]
pub fn_entrypoint: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MessageHeader {
#[prost(uint32, tag = "1")]
pub num_required_signatures: u32,
#[prost(uint32, tag = "2")]
pub num_readonly_signed_accounts: u32,
#[prost(uint32, tag = "3")]
pub num_readonly_unsigned_accounts: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CompiledInstruction {
#[prost(uint32, tag = "1")]
pub program_id_index: u32,
#[prost(uint32, repeated, tag = "2")]
pub accounts: ::prost::alloc::vec::Vec<u32>,
#[prost(bytes = "vec", tag = "3")]
pub data: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MessageAddressTableLookup {
#[prost(bytes = "vec", tag = "1")]
pub account_key: ::prost::alloc::vec::Vec<u8>,
#[prost(uint32, repeated, tag = "2")]
pub writable_indexes: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "3")]
pub readonly_indexes: ::prost::alloc::vec::Vec<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TransactionMessage {
#[prost(bool, tag = "1")]
pub is_legacy: bool,
#[prost(message, optional, tag = "2")]
pub header: ::core::option::Option<MessageHeader>,
#[prost(bytes = "vec", repeated, tag = "3")]
pub account_keys: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
#[prost(bytes = "vec", tag = "5")]
pub recent_blockhash: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "6")]
pub instructions: ::prost::alloc::vec::Vec<CompiledInstruction>,
#[prost(message, repeated, tag = "7")]
pub address_table_lookups: ::prost::alloc::vec::Vec<MessageAddressTableLookup>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SanitizedTransaction {
#[prost(message, optional, tag = "1")]
pub message: ::core::option::Option<TransactionMessage>,
#[prost(bytes = "vec", tag = "2")]
pub message_hash: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", repeated, tag = "4")]
pub signatures: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TxnBank {
#[prost(message, repeated, tag = "1")]
pub blockhash_queue: ::prost::alloc::vec::Vec<BlockhashQueueEntry>,
#[prost(uint32, tag = "2")]
pub rbh_lamports_per_signature: u32,
#[prost(message, optional, tag = "3")]
pub fee_rate_governor: ::core::option::Option<FeeRateGovernor>,
#[prost(uint64, tag = "4")]
pub total_epoch_stake: u64,
#[prost(message, optional, tag = "5")]
pub epoch_schedule: ::core::option::Option<EpochSchedule>,
#[prost(message, optional, tag = "7")]
pub features: ::core::option::Option<FeatureSet>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TxnContext {
#[prost(message, optional, tag = "1")]
pub tx: ::core::option::Option<SanitizedTransaction>,
#[prost(message, repeated, tag = "2")]
pub account_shared_data: ::prost::alloc::vec::Vec<AcctState>,
#[prost(message, optional, tag = "6")]
pub bank: ::core::option::Option<TxnBank>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FeeDetails {
#[prost(uint64, tag = "1")]
pub transaction_fee: u64,
#[prost(uint64, tag = "2")]
pub prioritization_fee: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TxnResult {
#[prost(bool, tag = "1")]
pub executed: bool,
#[prost(bool, tag = "2")]
pub sanitization_error: bool,
#[prost(bool, tag = "5")]
pub is_ok: bool,
#[prost(uint32, tag = "6")]
pub status: u32,
#[prost(uint32, tag = "7")]
pub instruction_error: u32,
#[prost(uint32, tag = "8")]
pub instruction_error_index: u32,
#[prost(uint32, tag = "9")]
pub custom_error: u32,
#[prost(bytes = "vec", tag = "10")]
pub return_data: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "11")]
pub executed_units: u64,
#[prost(message, optional, tag = "12")]
pub fee_details: ::core::option::Option<FeeDetails>,
#[prost(uint64, tag = "13")]
pub loaded_accounts_data_size: u64,
#[prost(message, repeated, tag = "14")]
pub modified_accounts: ::prost::alloc::vec::Vec<AcctState>,
#[prost(message, repeated, tag = "15")]
pub rollback_accounts: ::prost::alloc::vec::Vec<AcctState>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TxnFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<TxnContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<TxnResult>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CostTracker {
#[prost(uint64, tag = "1")]
pub block_cost: u64,
#[prost(uint64, tag = "2")]
pub vote_cost: u64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Inflation {
#[prost(double, tag = "1")]
pub initial: f64,
#[prost(double, tag = "2")]
pub terminal: f64,
#[prost(double, tag = "3")]
pub taper: f64,
#[prost(double, tag = "4")]
pub foundation: f64,
#[prost(double, tag = "5")]
pub foundation_term: f64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EpochCredit {
#[prost(uint64, tag = "1")]
pub epoch: u64,
#[prost(uint64, tag = "2")]
pub credits: u64,
#[prost(uint64, tag = "3")]
pub prev_credits: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PrevVoteAccount {
#[prost(bytes = "vec", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "2")]
pub node_pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub stake: u64,
#[prost(uint32, tag = "4")]
pub commission: u32,
#[prost(message, repeated, tag = "5")]
pub epoch_credits: ::prost::alloc::vec::Vec<EpochCredit>,
#[prost(enumeration = "VoteAccountVersion", tag = "6")]
pub version: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBank {
#[prost(message, repeated, tag = "1")]
pub blockhash_queue: ::prost::alloc::vec::Vec<BlockhashQueueEntry>,
#[prost(uint32, tag = "2")]
pub rbh_lamports_per_signature: u32,
#[prost(message, optional, tag = "3")]
pub fee_rate_governor: ::core::option::Option<FeeRateGovernor>,
#[prost(uint64, tag = "4")]
pub slot: u64,
#[prost(uint64, tag = "5")]
pub parent_slot: u64,
#[prost(uint64, tag = "6")]
pub capitalization: u64,
#[prost(bytes = "vec", tag = "7")]
pub ns_per_slot: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "8")]
pub inflation: ::core::option::Option<Inflation>,
#[prost(uint64, tag = "9")]
pub block_height: u64,
#[prost(bytes = "vec", tag = "10")]
pub poh: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "11")]
pub parent_bank_hash: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "12")]
pub parent_lt_hash: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "13")]
pub parent_signature_count: u64,
#[prost(message, optional, tag = "14")]
pub epoch_schedule: ::core::option::Option<EpochSchedule>,
#[prost(message, optional, tag = "16")]
pub features: ::core::option::Option<FeatureSet>,
#[prost(message, repeated, tag = "17")]
pub vote_accounts_t_1: ::prost::alloc::vec::Vec<PrevVoteAccount>,
#[prost(message, repeated, tag = "18")]
pub vote_accounts_t_2: ::prost::alloc::vec::Vec<PrevVoteAccount>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockContext {
#[prost(message, repeated, tag = "1")]
pub txns: ::prost::alloc::vec::Vec<SanitizedTransaction>,
#[prost(message, repeated, tag = "2")]
pub acct_states: ::prost::alloc::vec::Vec<AcctState>,
#[prost(message, optional, tag = "6")]
pub bank: ::core::option::Option<BlockBank>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LeaderScheduleEffects {
#[prost(uint64, tag = "1")]
pub leaders_epoch: u64,
#[prost(uint64, tag = "2")]
pub leaders_slot0: u64,
#[prost(uint64, tag = "3")]
pub leaders_slot_cnt: u64,
#[prost(uint64, tag = "4")]
pub leader_pub_cnt: u64,
#[prost(uint64, tag = "5")]
pub leaders_sched_cnt: u64,
#[prost(bytes = "vec", tag = "6")]
pub leader_schedule_hash: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockEffects {
#[prost(bool, tag = "1")]
pub has_error: bool,
#[prost(uint64, tag = "2")]
pub slot_capitalization: u64,
#[prost(bytes = "vec", tag = "3")]
pub bank_hash: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "4")]
pub cost_tracker: ::core::option::Option<CostTracker>,
#[prost(message, optional, tag = "5")]
pub leader_schedule: ::core::option::Option<LeaderScheduleEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<BlockContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<BlockEffects>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum VoteAccountVersion {
V11411 = 0,
V3 = 1,
V4 = 2,
}
impl VoteAccountVersion {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::V11411 => "V1_14_11",
Self::V3 => "V3",
Self::V4 => "V4",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"V1_14_11" => Some(Self::V11411),
"V3" => Some(Self::V3),
"V4" => Some(Self::V4),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum WarmupCooldownRate {
Rate025 = 0,
Rate009 = 1,
}
impl WarmupCooldownRate {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Rate025 => "RATE_025",
Self::Rate009 => "RATE_009",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"RATE_025" => Some(Self::Rate025),
"RATE_009" => Some(Self::Rate009),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StakeDelta {
#[prost(bytes = "vec", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub delta: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VoteUpdate {
#[prost(bytes = "vec", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub last_vote_slot: u64,
#[prost(uint64, tag = "3")]
pub last_vote_timestamp: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NewVote {
#[prost(bytes = "vec", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u8>,
#[prost(bool, tag = "2")]
pub is_tombstone: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BundleContext {
#[prost(message, repeated, tag = "1")]
pub txns: ::prost::alloc::vec::Vec<SanitizedTransaction>,
#[prost(message, repeated, tag = "2")]
pub account_shared_data: ::prost::alloc::vec::Vec<AcctState>,
#[prost(message, optional, tag = "3")]
pub bank: ::core::option::Option<TxnBank>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BundleEffects {
#[prost(bool, tag = "1")]
pub has_error: bool,
#[prost(message, repeated, tag = "2")]
pub txn_results: ::prost::alloc::vec::Vec<TxnResult>,
#[prost(message, repeated, tag = "3")]
pub stake_deltas: ::prost::alloc::vec::Vec<StakeDelta>,
#[prost(message, repeated, tag = "4")]
pub vote_updates: ::prost::alloc::vec::Vec<VoteUpdate>,
#[prost(message, repeated, tag = "5")]
pub new_votes: ::prost::alloc::vec::Vec<NewVote>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BundleFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<BundleContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<BundleEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CostContext {
#[prost(message, optional, tag = "1")]
pub tx: ::core::option::Option<SanitizedTransaction>,
#[prost(message, optional, tag = "2")]
pub features: ::core::option::Option<FeatureSet>,
#[prost(enumeration = "TxnCostMode", tag = "3")]
pub mode: i32,
#[prost(uint64, tag = "4")]
pub actual_programs_execution_cost: u64,
#[prost(uint64, tag = "5")]
pub actual_loaded_accounts_data_size_bytes: u64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CostResult {
#[prost(bool, tag = "1")]
pub has_cost: bool,
#[prost(uint64, tag = "2")]
pub signature_cost: u64,
#[prost(uint64, tag = "3")]
pub write_lock_cost: u64,
#[prost(uint64, tag = "4")]
pub data_bytes_cost: u64,
#[prost(uint64, tag = "5")]
pub programs_execution_cost: u64,
#[prost(uint64, tag = "6")]
pub loaded_accounts_data_size_cost: u64,
#[prost(uint64, tag = "7")]
pub allocated_accounts_data_size: u64,
#[prost(uint64, tag = "8")]
pub total_cost: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CostFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<CostContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<CostResult>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TxnCostMode {
Estimate = 0,
Actual = 1,
}
impl TxnCostMode {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Estimate => "ESTIMATE",
Self::Actual => "ACTUAL",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ESTIMATE" => Some(Self::Estimate),
"ACTUAL" => Some(Self::Actual),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ElfLoaderCtx {
#[prost(bytes = "vec", tag = "1")]
pub elf_data: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "2")]
pub features: ::core::option::Option<FeatureSet>,
#[prost(bool, tag = "3")]
pub deploy_checks: bool,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ElfLoaderEffects {
#[prost(uint32, tag = "1")]
pub err_code: u32,
#[prost(fixed64, tag = "2")]
pub rodata_hash: u64,
#[prost(uint64, tag = "3")]
pub text_cnt: u64,
#[prost(uint64, tag = "4")]
pub text_off: u64,
#[prost(uint64, tag = "5")]
pub entry_pc: u64,
#[prost(fixed64, tag = "6")]
pub calldests_hash: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ElfLoaderFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<ElfLoaderCtx>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<ElfLoaderEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(bytes = "vec", tag = "2")]
pub input: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<GossipEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipEffects {
#[prost(bool, tag = "1")]
pub valid: bool,
#[prost(message, optional, tag = "2")]
pub msg: ::core::option::Option<GossipMsg>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipMsg {
#[prost(oneof = "gossip_msg::Msg", tags = "1, 2, 3, 4, 5, 6")]
pub msg: ::core::option::Option<gossip_msg::Msg>,
}
pub mod gossip_msg {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Msg {
#[prost(message, tag = "1")]
Ping(super::GossipPing),
#[prost(message, tag = "2")]
Pong(super::GossipPong),
#[prost(message, tag = "3")]
PullRequest(super::GossipPullRequest),
#[prost(message, tag = "4")]
PullResponse(super::GossipPullResponse),
#[prost(message, tag = "5")]
PushMessage(super::GossipPushMessage),
#[prost(message, tag = "6")]
PruneMessage(super::GossipPruneMessage),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPing {
#[prost(bytes = "vec", tag = "1")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "2")]
pub token: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "3")]
pub signature: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPong {
#[prost(bytes = "vec", tag = "1")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "2")]
pub hash: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "3")]
pub signature: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPullRequest {
#[prost(message, optional, tag = "1")]
pub filter: ::core::option::Option<GossipCrdsFilter>,
#[prost(message, optional, tag = "2")]
pub value: ::core::option::Option<GossipCrdsValue>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPullResponse {
#[prost(bytes = "vec", tag = "1")]
pub pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "2")]
pub values: ::prost::alloc::vec::Vec<GossipCrdsValue>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPushMessage {
#[prost(bytes = "vec", tag = "1")]
pub pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "2")]
pub values: ::prost::alloc::vec::Vec<GossipCrdsValue>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPruneMessage {
#[prost(bytes = "vec", tag = "1")]
pub pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "2")]
pub data: ::core::option::Option<GossipPruneData>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipPruneData {
#[prost(bytes = "vec", tag = "1")]
pub pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", repeated, tag = "2")]
pub prunes: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
#[prost(bytes = "vec", tag = "3")]
pub signature: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "4")]
pub destination: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "5")]
pub wallclock: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipCrdsFilter {
#[prost(message, optional, tag = "1")]
pub filter: ::core::option::Option<GossipBloom>,
#[prost(uint64, tag = "2")]
pub mask: u64,
#[prost(uint32, tag = "3")]
pub mask_bits: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipBloom {
#[prost(uint64, repeated, tag = "1")]
pub keys: ::prost::alloc::vec::Vec<u64>,
#[prost(bytes = "vec", tag = "2")]
pub bits: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub num_bits_set: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipCrdsValue {
#[prost(bytes = "vec", tag = "1")]
pub signature: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "2")]
pub data: ::core::option::Option<GossipCrdsData>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipCrdsData {
#[prost(oneof = "gossip_crds_data::Data", tags = "1, 2, 3, 4, 5, 6")]
pub data: ::core::option::Option<gossip_crds_data::Data>,
}
pub mod gossip_crds_data {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Data {
#[prost(message, tag = "1")]
ContactInfo(super::GossipContactInfo),
#[prost(message, tag = "2")]
Vote(super::GossipVote),
#[prost(message, tag = "3")]
LowestSlot(super::GossipLowestSlot),
#[prost(message, tag = "4")]
EpochSlots(super::GossipEpochSlots),
#[prost(message, tag = "5")]
SnapshotHashes(super::GossipSnapshotHashes),
#[prost(message, tag = "6")]
DuplicateShred(super::GossipDuplicateShred),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipContactInfo {
#[prost(bytes = "vec", tag = "1")]
pub pubkey: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub wallclock: u64,
#[prost(uint64, tag = "3")]
pub outset: u64,
#[prost(uint32, tag = "4")]
pub shred_version: u32,
#[prost(uint32, tag = "5")]
pub version_major: u32,
#[prost(uint32, tag = "6")]
pub version_minor: u32,
#[prost(uint32, tag = "7")]
pub version_patch: u32,
#[prost(uint32, tag = "8")]
pub version_commit: u32,
#[prost(uint32, tag = "9")]
pub version_feature_set: u32,
#[prost(uint32, tag = "10")]
pub version_client: u32,
#[prost(message, repeated, tag = "11")]
pub addrs: ::prost::alloc::vec::Vec<GossipIpAddr>,
#[prost(message, repeated, tag = "12")]
pub sockets: ::prost::alloc::vec::Vec<GossipSocketEntry>,
#[prost(bytes = "vec", tag = "13")]
pub extensions: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GossipIpAddr {
#[prost(oneof = "gossip_ip_addr::Addr", tags = "1, 2")]
pub addr: ::core::option::Option<gossip_ip_addr::Addr>,
}
pub mod gossip_ip_addr {
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Addr {
#[prost(fixed32, tag = "1")]
Ipv4(u32),
#[prost(message, tag = "2")]
Ipv6(super::GossipIpv6Addr),
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GossipIpv6Addr {
#[prost(fixed64, tag = "1")]
pub hi: u64,
#[prost(fixed64, tag = "2")]
pub lo: u64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GossipSocketEntry {
#[prost(uint32, tag = "1")]
pub key: u32,
#[prost(uint32, tag = "2")]
pub index: u32,
#[prost(uint32, tag = "3")]
pub offset: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipVote {
#[prost(uint32, tag = "1")]
pub index: u32,
#[prost(bytes = "vec", tag = "2")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub wallclock: u64,
#[prost(bytes = "vec", tag = "4")]
pub transaction: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipLowestSlot {
#[prost(uint32, tag = "1")]
pub index: u32,
#[prost(bytes = "vec", tag = "2")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub lowest: u64,
#[prost(uint64, tag = "4")]
pub wallclock: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipEpochSlots {
#[prost(uint32, tag = "1")]
pub index: u32,
#[prost(bytes = "vec", tag = "2")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub wallclock: u64,
#[prost(message, repeated, tag = "4")]
pub slots: ::prost::alloc::vec::Vec<GossipCompressedSlots>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipCompressedSlots {
#[prost(uint64, tag = "1")]
pub first_slot: u64,
#[prost(uint64, tag = "2")]
pub num: u64,
#[prost(oneof = "gossip_compressed_slots::Data", tags = "3, 4")]
pub data: ::core::option::Option<gossip_compressed_slots::Data>,
}
pub mod gossip_compressed_slots {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Data {
#[prost(bytes, tag = "3")]
Uncompressed(::prost::alloc::vec::Vec<u8>),
#[prost(bytes, tag = "4")]
Flate2(::prost::alloc::vec::Vec<u8>),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipSnapshotHashes {
#[prost(bytes = "vec", tag = "1")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "2")]
pub full_slot: u64,
#[prost(bytes = "vec", tag = "3")]
pub full_hash: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "4")]
pub incremental: ::prost::alloc::vec::Vec<GossipIncrementalHash>,
#[prost(uint64, tag = "5")]
pub wallclock: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipIncrementalHash {
#[prost(uint64, tag = "1")]
pub slot: u64,
#[prost(bytes = "vec", tag = "2")]
pub hash: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GossipDuplicateShred {
#[prost(uint32, tag = "1")]
pub index: u32,
#[prost(bytes = "vec", tag = "2")]
pub from: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "3")]
pub wallclock: u64,
#[prost(uint64, tag = "4")]
pub slot: u64,
#[prost(uint32, tag = "5")]
pub shred_index: u32,
#[prost(uint32, tag = "6")]
pub shred_type: u32,
#[prost(uint32, tag = "7")]
pub num_chunks: u32,
#[prost(uint32, tag = "8")]
pub chunk_index: u32,
#[prost(bytes = "vec", tag = "9")]
pub chunk: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InstrAcct {
#[prost(uint32, tag = "1")]
pub index: u32,
#[prost(bool, tag = "2")]
pub is_writable: bool,
#[prost(bool, tag = "3")]
pub is_signer: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InstrContext {
#[prost(bytes = "vec", tag = "1")]
pub program_id: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "3")]
pub accounts: ::prost::alloc::vec::Vec<AcctState>,
#[prost(message, repeated, tag = "4")]
pub instr_accounts: ::prost::alloc::vec::Vec<InstrAcct>,
#[prost(bytes = "vec", tag = "5")]
pub data: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "6")]
pub cu_avail: u64,
#[prost(message, optional, tag = "10")]
pub features: ::core::option::Option<FeatureSet>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InstrEffects {
#[prost(int32, tag = "1")]
pub result: i32,
#[prost(uint32, tag = "2")]
pub custom_err: u32,
#[prost(message, repeated, tag = "3")]
pub modified_accounts: ::prost::alloc::vec::Vec<AcctState>,
#[prost(uint64, tag = "4")]
pub cu_avail: u64,
#[prost(bytes = "vec", tag = "5")]
pub return_data: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InstrFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<InstrContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<InstrEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VmMemRegion {
#[prost(uint64, tag = "1")]
pub vm_addr: u64,
#[prost(bytes = "vec", tag = "2")]
pub content: ::prost::alloc::vec::Vec<u8>,
#[prost(bool, tag = "3")]
pub is_writable: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InstrSerializeResult {
#[prost(int32, tag = "1")]
pub result: i32,
#[prost(message, repeated, tag = "2")]
pub regions: ::prost::alloc::vec::Vec<VmMemRegion>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InputDataRegion {
#[prost(uint64, tag = "1")]
pub offset: u64,
#[prost(bytes = "vec", tag = "2")]
pub content: ::prost::alloc::vec::Vec<u8>,
#[prost(bool, tag = "3")]
pub is_writable: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VmContext {
#[prost(uint64, tag = "1")]
pub heap_max: u64,
#[prost(bytes = "vec", tag = "2")]
pub rodata: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "6")]
pub r0: u64,
#[prost(uint64, tag = "7")]
pub r1: u64,
#[prost(uint64, tag = "8")]
pub r2: u64,
#[prost(uint64, tag = "9")]
pub r3: u64,
#[prost(uint64, tag = "10")]
pub r4: u64,
#[prost(uint64, tag = "11")]
pub r5: u64,
#[prost(uint64, tag = "12")]
pub r6: u64,
#[prost(uint64, tag = "13")]
pub r7: u64,
#[prost(uint64, tag = "14")]
pub r8: u64,
#[prost(uint64, tag = "15")]
pub r9: u64,
#[prost(uint64, tag = "16")]
pub r10: u64,
#[prost(uint64, tag = "17")]
pub r11: u64,
#[prost(uint64, tag = "20")]
pub entry_pc: u64,
#[prost(bytes = "vec", tag = "21")]
pub call_whitelist: ::prost::alloc::vec::Vec<u8>,
#[prost(message, optional, tag = "23")]
pub return_data: ::core::option::Option<ReturnData>,
#[prost(uint32, tag = "24")]
pub sbpf_version: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyscallInvocation {
#[prost(bytes = "vec", tag = "1")]
pub function_name: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "2")]
pub heap_prefix: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "3")]
pub stack_prefix: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyscallContext {
#[prost(message, optional, tag = "1")]
pub vm_ctx: ::core::option::Option<VmContext>,
#[prost(message, optional, tag = "2")]
pub instr_ctx: ::core::option::Option<InstrContext>,
#[prost(message, optional, tag = "3")]
pub syscall_invocation: ::core::option::Option<SyscallInvocation>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyscallEffects {
#[prost(int64, tag = "1")]
pub error: i64,
#[prost(enumeration = "ErrKind", tag = "12")]
pub error_kind: i32,
#[prost(uint64, tag = "2")]
pub r0: u64,
#[prost(uint64, tag = "3")]
pub cu_avail: u64,
#[prost(bytes = "vec", tag = "4")]
pub heap: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "5")]
pub stack: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "11")]
pub input_data_regions: ::prost::alloc::vec::Vec<InputDataRegion>,
#[prost(uint64, tag = "7")]
pub frame_count: u64,
#[prost(bytes = "vec", tag = "8")]
pub log: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "9")]
pub rodata: ::prost::alloc::vec::Vec<u8>,
#[prost(uint64, tag = "10")]
pub pc: u64,
#[prost(uint64, tag = "107")]
pub r1: u64,
#[prost(uint64, tag = "108")]
pub r2: u64,
#[prost(uint64, tag = "109")]
pub r3: u64,
#[prost(uint64, tag = "110")]
pub r4: u64,
#[prost(uint64, tag = "111")]
pub r5: u64,
#[prost(uint64, tag = "112")]
pub r6: u64,
#[prost(uint64, tag = "113")]
pub r7: u64,
#[prost(uint64, tag = "114")]
pub r8: u64,
#[prost(uint64, tag = "115")]
pub r9: u64,
#[prost(uint64, tag = "116")]
pub r10: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyscallFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<SyscallContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<SyscallEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FullVmContext {
#[prost(message, optional, tag = "1")]
pub vm_ctx: ::core::option::Option<VmContext>,
#[prost(message, optional, tag = "3")]
pub features: ::core::option::Option<FeatureSet>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ValidateVmEffects {
#[prost(int32, tag = "1")]
pub result: i32,
#[prost(bool, tag = "2")]
pub success: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ValidateVmFixture {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<FixtureMetadata>,
#[prost(message, optional, tag = "2")]
pub input: ::core::option::Option<FullVmContext>,
#[prost(message, optional, tag = "3")]
pub output: ::core::option::Option<ValidateVmEffects>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ReturnData {
#[prost(bytes = "vec", tag = "1")]
pub program_id: ::prost::alloc::vec::Vec<u8>,
#[prost(bytes = "vec", tag = "2")]
pub data: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ErrKind {
Unspecified = 0,
Ebpf = 1,
Syscall = 2,
Instruction = 3,
}
impl ErrKind {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::Ebpf => "EBPF",
Self::Syscall => "SYSCALL",
Self::Instruction => "INSTRUCTION",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"EBPF" => Some(Self::Ebpf),
"SYSCALL" => Some(Self::Syscall),
"INSTRUCTION" => Some(Self::Instruction),
_ => None,
}
}
}