protosol 2.0.0

Protobuf definitions for the SVM fuzzing project.
Documentation
syntax = "proto3";
package org.solana.sealevel.v1;

import "context.proto";
import "txn.proto";
import "metadata.proto";

message CostTracker {
    uint64 block_cost = 1;
    uint64 vote_cost = 2;
}

message BlockContext {
    // All transactions in this microblock (can be 0)
    repeated SanitizedTransaction txns = 1;

    // Input account states
    repeated AcctState acct_states = 2;

    // The blockhash queue
    repeated bytes blockhash_queue = 3;

    // Slot context (contains slot number)
    SlotContext slot_ctx = 4;

    // Epoch context (contains feature info)
    EpochContext epoch_ctx = 5;
}

message LeaderScheduleEffects {
    // Epoch number for which this leader schedule applies
    uint64 leaders_epoch = 1;

    // First slot number covered by this leader schedule
    uint64 leaders_slot0 = 2;

    // Total number of slots covered by this leader schedule
    uint64 leaders_slot_cnt = 3;

    // Number of unique validator public keys in the leader schedule
    uint64 leader_pub_cnt = 4;

    // Number of entries in the leader schedule (slots with assigned leaders)
    uint64 leaders_sched_cnt = 5;

    // Hash of the leader schedule
    bytes leader_schedule_hash = 6;
}

message BlockEffects {
    // If block execution failed
    bool has_error = 1;

    // Slot capitalization
    uint64 slot_capitalization = 2;

    // Bank hash
    bytes bank_hash = 3;

    // The cost tracker
    CostTracker cost_tracker = 4;

    // Leader schedule
    LeaderScheduleEffects leader_schedule = 5;
}

message BlockFixture {
    FixtureMetadata metadata = 1;

    // The block input
    BlockContext input = 2;

    // The output
    BlockEffects output = 3;
}