solana/svm/proto/context.proto

68 lines
1.7 KiB
Protocol Buffer

syntax = "proto3";
package org.solana.sealevel.v1;
import "sysvar.proto";
// A set of feature flags.
message FeatureSet {
// Every item in this list marks an enabled feature. The value of
// each item is the first 8 bytes of the feature ID as a little-
// endian integer.
repeated fixed64 features = 1;
}
// A seed address. This is not a PDA.
message SeedAddress {
// The seed address base. (32 bytes)
bytes base = 1;
// The seed path (<= 32 bytes)
bytes seed = 2;
// The seed address owner. (32 bytes)
bytes owner = 3;
}
// The complete state of an account excluding its public key.
message AcctState {
// The account address. (32 bytes)
bytes address = 1;
uint64 lamports = 2;
// Account data is limited to 10 MiB on Solana mainnet as of 2024-Feb.
bytes data = 3;
bool executable = 4;
// The rent epoch is deprecated on Solana mainnet as of 2024-Feb.
// If ommitted, implies a value of UINT64_MAX.
uint64 rent_epoch = 5;
// Address of the program that owns this account. (32 bytes)
bytes owner = 6;
// The account address, but derived as a seed address. Overrides
// `address` if present.
// TODO: This is a solfuzz specific extension and is not compliant
// with the org.solana.sealevel.v1 API.
SeedAddress seed_addr = 7;
}
// EpochContext includes context scoped to an epoch.
// On "real" ledgers, it is created during the epoch boundary.
message EpochContext {
FeatureSet features = 1;
}
// SlotContext includes context scoped to a block.
// On "real" ledgers, it is created during the slot boundary.
message SlotContext {
repeated bytes recent_block_hashes = 1;
// public key for the leader
bytes leader = 2;
// Slot number
fixed64 slot = 3;
SysvarCache sysvar_cache = 4;
}